En aquest tema, explorarem com les funcions en C poden rebre dades a través d'arguments i retornar valors. Aquest concepte és fonamental per a la programació modular i reutilitzable.

Continguts

Introducció als Arguments de Funció

Els arguments de funció són valors que es passen a una funció quan aquesta és cridada. Aquests valors permeten que la funció treballi amb dades específiques proporcionades en el moment de la crida.

Sintaxi Bàsica

retorn_tipus nom_funció(tipus argument1, tipus argument2, ...) {
    // Cos de la funció
}

Exemple

#include <stdio.h>

// Definició de la funció amb arguments
int suma(int a, int b) {
    return a + b;
}

int main() {
    int resultat = suma(5, 3); // Crida a la funció amb arguments
    printf("La suma és: %d\n", resultat);
    return 0;
}

Tipus d'Arguments

Arguments per Valor

Quan es passen arguments per valor, es passa una còpia del valor a la funció. Això significa que els canvis fets a l'argument dins de la funció no afecten la variable original.

void incrementa(int x) {
    x = x + 1;
}

int main() {
    int a = 5;
    incrementa(a);
    printf("El valor de a és: %d\n", a); // a segueix sent 5
    return 0;
}

Arguments per Referència

En C, els arguments es poden passar per referència utilitzant punteres. Això permet que la funció modifiqui la variable original.

void incrementa(int *x) {
    *x = *x + 1;
}

int main() {
    int a = 5;
    incrementa(&a);
    printf("El valor de a és: %d\n", a); // a ara és 6
    return 0;
}

Valors de Retorn

Les funcions en C poden retornar un valor al programa que les ha cridat. El tipus de valor retornat es defineix en la declaració de la funció.

Sintaxi Bàsica

retorn_tipus nom_funció(tipus argument1, tipus argument2, ...) {
    // Cos de la funció
    return valor;
}

Exemple

#include <stdio.h>

int multiplica(int a, int b) {
    return a * b;
}

int main() {
    int resultat = multiplica(4, 7);
    printf("El producte és: %d\n", resultat);
    return 0;
}

Exemples Pràctics

Exemple 1: Funció que Calcula el Factorial

#include <stdio.h>

int factorial(int n) {
    if (n == 0) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}

int main() {
    int num = 5;
    printf("El factorial de %d és: %d\n", num, factorial(num));
    return 0;
}

Exemple 2: Funció que Intercanvia Dos Valors

#include <stdio.h>

void intercanvia(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

int main() {
    int x = 10, y = 20;
    printf("Abans de l'intercanvi: x = %d, y = %d\n", x, y);
    intercanvia(&x, &y);
    printf("Després de l'intercanvi: x = %d, y = %d\n", x, y);
    return 0;
}

Exercicis Pràctics

Exercici 1: Funció que Calcula la Mitjana de Tres Nombres

Descripció: Escriu una funció que prengui tres nombres com arguments i retorni la seva mitjana.

#include <stdio.h>

float mitjana(int a, int b, int c) {
    // Escriu el teu codi aquí
}

int main() {
    int x = 5, y = 10, z = 15;
    printf("La mitjana és: %.2f\n", mitjana(x, y, z));
    return 0;
}

Solució:

#include <stdio.h>

float mitjana(int a, int b, int c) {
    return (a + b + c) / 3.0;
}

int main() {
    int x = 5, y = 10, z = 15;
    printf("La mitjana és: %.2f\n", mitjana(x, y, z));
    return 0;
}

Exercici 2: Funció que Troba el Màxim de Dos Nombres

Descripció: Escriu una funció que prengui dos nombres com arguments i retorni el més gran.

#include <stdio.h>

int maxim(int a, int b) {
    // Escriu el teu codi aquí
}

int main() {
    int x = 5, y = 10;
    printf("El màxim és: %d\n", maxim(x, y));
    return 0;
}

Solució:

#include <stdio.h>

int maxim(int a, int b) {
    if (a > b) {
        return a;
    } else {
        return b;
    }
}

int main() {
    int x = 5, y = 10;
    printf("El màxim és: %d\n", maxim(x, y));
    return 0;
}

Conclusió

En aquest tema, hem après com passar arguments a les funcions i com retornar valors. Hem vist la diferència entre passar arguments per valor i per referència, i hem practicat amb exemples i exercicis. Aquests conceptes són essencials per escriure codi modular i reutilitzable en C. En el següent tema, explorarem l'àmbit i la durada de les variables dins de les funcions.

Curs de Programació en C

Mòdul 1: Introducció al C

Mòdul 2: Tipus de Dades i Variables

Mòdul 3: Flux de Control

Mòdul 4: Funcions

Mòdul 5: Arrays i Strings

Mòdul 6: Punteres

Mòdul 7: Estructures i Unions

Mòdul 8: Assignació Dinàmica de Memòria

Mòdul 9: Gestió d'Arxius

Mòdul 10: Temes Avançats

Mòdul 11: Millors Pràctiques i Optimització

Mòdul 12: Projecte i Avaluació Final

© Copyright 2024. Tots els drets reservats