Les funcions són un dels conceptes fonamentals en la programació en C. Permeten dividir el codi en blocs més petits i manejables, facilitant la seva reutilització i manteniment. En aquest tema, aprendrem què són les funcions, com es defineixen i com s'utilitzen en C.
Què és una Funció?
Una funció és un bloc de codi que realitza una tasca específica. Les funcions poden rebre dades d'entrada (arguments) i retornar un valor com a resultat. L'ús de funcions permet:
- Modularitat: Dividir el codi en parts més petites i manejables.
- Reutilització: Utilitzar el mateix codi en diferents parts del programa.
- Claredat: Millorar la llegibilitat i mantenibilitat del codi.
Definició d'una Funció
Una funció en C es defineix amb la següent estructura:
retorn_tipus nom_funció(tipus_argument1 nom_argument1, tipus_argument2 nom_argument2, ...) { // Cos de la funció instruccions; return valor_de_retorn; }
Parts d'una Funció
- retorn_tipus: El tipus de dada que la funció retorna. Si la funció no retorna cap valor, es fa servir
void
. - nom_funció: El nom de la funció, que ha de ser únic dins del programa.
- tipus_argument: El tipus de cada argument que la funció rep.
- nom_argument: El nom de cada argument.
- cos de la funció: El conjunt d'instruccions que defineixen el que fa la funció.
- return: La instrucció que retorna un valor des de la funció (opcional si el tipus de retorn és
void
).
Exemple de Funció
A continuació, es mostra un exemple d'una funció que suma dos nombres enters i retorna el resultat:
#include <stdio.h> // Definició de la funció int suma(int a, int b) { int resultat = a + b; return resultat; } int main() { int num1 = 5, num2 = 10; int resultat = suma(num1, num2); // Crida a la funció printf("La suma de %d i %d és %d\n", num1, num2, resultat); return 0; }
Explicació del Codi
-
Definició de la funció
suma
:int suma(int a, int b)
: La funciósuma
rep dos arguments de tipusint
i retorna un valor de tipusint
.int resultat = a + b;
: Es calcula la suma dels dos arguments i es guarda en la variableresultat
.return resultat;
: Es retorna el valor deresultat
.
-
Crida a la funció
suma
:int resultat = suma(num1, num2);
: Es crida a la funciósuma
amb els argumentsnum1
inum2
, i es guarda el resultat en la variableresultat
.printf("La suma de %d i %d és %d\n", num1, num2, resultat);
: Es mostra el resultat per pantalla.
Exercicis Pràctics
Exercici 1: Funció de Multiplicació
Escriu una funció que multipliqui dos nombres enters i retorni el resultat.
#include <stdio.h> // Definició de la funció int multiplica(int a, int b) { // Escriu el cos de la funció aquí } int main() { int num1 = 3, num2 = 4; int resultat = multiplica(num1, num2); // Crida a la funció printf("La multiplicació de %d i %d és %d\n", num1, num2, resultat); return 0; }
Solució
#include <stdio.h> // Definició de la funció int multiplica(int a, int b) { int resultat = a * b; return resultat; } int main() { int num1 = 3, num2 = 4; int resultat = multiplica(num1, num2); // Crida a la funció printf("La multiplicació de %d i %d és %d\n", num1, num2, resultat); return 0; }
Exercici 2: Funció de Divisió
Escriu una funció que divideixi dos nombres enters i retorni el resultat. Tingues en compte que la divisió per zero no està permesa.
#include <stdio.h> // Definició de la funció float divideix(int a, int b) { // Escriu el cos de la funció aquí } int main() { int num1 = 10, num2 = 2; float resultat = divideix(num1, num2); // Crida a la funció printf("La divisió de %d per %d és %.2f\n", num1, num2, resultat); return 0; }
Solució
#include <stdio.h> // Definició de la funció float divideix(int a, int b) { if (b == 0) { printf("Error: Divisió per zero\n"); return 0.0; } float resultat = (float)a / b; return resultat; } int main() { int num1 = 10, num2 = 2; float resultat = divideix(num1, num2); // Crida a la funció printf("La divisió de %d per %d és %.2f\n", num1, num2, resultat); return 0; }
Resum
En aquest tema, hem après què són les funcions, com es defineixen i com s'utilitzen en C. Les funcions són essencials per a la modularitat, reutilització i claredat del codi. Hem vist exemples pràctics de funcions que sumen, multipliquen i divideixen nombres enters. En els següents temes, aprofundirem en els arguments de funció, els valors de retorn, l'àmbit i la durada de les variables, i les funcions recursives.
Curs de Programació en C
Mòdul 1: Introducció al C
- Introducció a la Programació
- Configuració de l'Entorn de Desenvolupament
- Programa Hello World
- Sintaxi i Estructura Bàsiques
Mòdul 2: Tipus de Dades i Variables
Mòdul 3: Flux de Control
Mòdul 4: Funcions
- Introducció a les Funcions
- Arguments de Funció i Valors de Retorn
- Àmbit i Durada de les Variables
- Funcions Recursives
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
- Introducció a la Gestió d'Arxius
- Lectura i Escriptura d'Arxius
- Posicionament d'Arxius
- Gestió d'Errors en Operacions d'Arxius
Mòdul 10: Temes Avançats
- Directives del Preprocessador
- Arguments de Línia de Comandes
- Llistes d'Arguments Variables
- Multifil en C
Mòdul 11: Millors Pràctiques i Optimització
- Llegibilitat del Codi i Documentació
- Tècniques de Depuració
- Optimització del Rendiment
- Consideracions de Seguretat