3.5 KiB
Les fonctions
En langage C, une fonction est un bloc de code nommé qui réalise une tâche précise. Les fonctions permettent de :
- Découper un programme en parties plus simples
- Réutiliser du code sans duplication
- Rendre le code plus lisible et plus facile à maintenir
- Faciliter les tests et le débogage
Tout programme C contient au minimum une fonction : main.
Structure générale d’une fonction
Une fonction en C se compose de :
- Un type de retour
- Un nom
- Une liste de paramètres (éventuellement vide)
- Un corps, délimité par des accolades
{}
type_retour nom_fonction(type1 param1, type2 param2)
{
instructions;
return valeur;
}
Exemple simple :
int addition(int a, int b)
{
return a + b;
}
La fonction main
Le point d’entrée d’un programme C est la fonction main.
Exemple minimal :
#include <stdio.h>
int main(void)
{
printf("Bonjour le monde !\n");
return 0;
}
int: type de retour (code de sortie du programme)return 0: indique que le programme s’est terminé correctement
Déclaration et définition d’une fonction
Définition
La définition contient le code réel de la fonction.
int carre(int x)
{
return x * x;
}
Déclaration (prototype)
La déclaration informe le compilateur de l’existence de la fonction.
int carre(int x);
Elle est généralement placée :
- en haut du fichier
- ou dans un fichier d’en-tête (
.h)
Exemple complet
#include <stdio.h>
int carre(int x);
int main(void)
{
printf("%d\n", carre(4));
return 0;
}
int carre(int x)
{
return x * x;
}
Les paramètres et arguments
- Paramètres : variables définies en entrée de la fonction
- Arguments : valeurs ou varaibles passées lors de l’appel à la fonction
int multiplier(int a, int b)
{
return a * b;
}
int resultat = multiplier(3, 5);
En C, les paramètres sont passés par valeur.
Passage par valeur
Lorsqu’une variable est passée à une fonction, une copie est utilisée.
void incrementer(int x)
{
x = x + 1;
}
int main(void)
{
int a = 5;
incrementer(a);
printf("%d\n", a); // affiche 5
}
La variable originale n’est pas modifiée.
Fonctions sans paramètres et/ou sans retour
Sans paramètre
void afficher_message(void)
{
printf("Bienvenue !\n");
}
Sans valeur de retour
Le type void indique qu’aucune valeur n’est retournée.
void dire_bonjour(void)
{
printf("Bonjour\n");
}
8. La directive return
- Termine immédiatement l’exécution de la fonction
- Peut retourner une valeur (sauf pour
void)
int signe(int x)
{
if (x > 0)
return 1;
if (x < 0)
return -1;
return 0;
}
9. Bonnes pratiques
- Donner des noms explicites aux fonctions
- Une fonction = une responsabilité
- Limiter la taille des fonctions
- Déclarer les fonctions avant leur utilisation
Exercices
Exercice 1
Écrire une fonction max(int a, int b) qui retourne le plus grand des deux nombres.
Exercice 2
Écrire une fonction est_pair(int n) qui retourne 1 si le nombre est pair, 0 sinon.
Exercice 3
Écrire une fonction afficher_carre(int n) qui affiche les carrés des nombres de 1 à n.
À retenir
- Une fonction est un bloc de code réutilisable
mainest une fonction comme les autres- Les paramètres sont passés par valeur
voidsignifie "aucun"