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ósumarep dos arguments de tipusinti 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ósumaamb els argumentsnum1inum2, 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
