Files
programmationc/fonctions.md
2026-01-06 07:36:50 +01:00

219 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 dune fonction
Une fonction en C se compose de :
1. Un **type de retour**
2. Un **nom**
3. Une liste de **paramètres** (éventuellement vide)
4. Un **corps**, délimité par des accolades `{}`
```c
type_retour nom_fonction(type1 param1, type2 param2)
{
instructions;
return valeur;
}
```
Exemple simple :
```c
int addition(int a, int b)
{
return a + b;
}
```
## La fonction `main`
Le point dentrée dun programme C est la fonction `main`.
Exemple minimal :
```c
#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 sest terminé correctement
---
## Déclaration et définition dune fonction
### Définition
La **définition** contient le code réel de la fonction.
```c
int carre(int x)
{
return x * x;
}
```
### Déclaration (prototype)
La **déclaration** informe le compilateur de lexistence de la fonction.
```c
int carre(int x);
```
Elle est généralement placée :
* en haut du fichier
* ou dans un fichier den-tête (`.h`)
### Exemple complet
```c
#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 lappel à la fonction
```c
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
Lorsquune variable est passée à une fonction, une **copie** est utilisée.
```c
void incrementer(int x)
{
x = x + 1;
}
int main(void)
{
int a = 5;
incrementer(a);
printf("%d\n", a); // affiche 5
}
```
La variable originale nest pas modifiée.
### Fonctions sans paramètres et/ou sans retour
#### Sans paramètre
```c
void afficher_message(void)
{
printf("Bienvenue !\n");
}
```
#### Sans valeur de retour
Le type `void` indique quaucune valeur nest retournée.
```c
void dire_bonjour(void)
{
printf("Bonjour\n");
}
```
---
## 8. La directive `return`
* Termine **immédiatement** lexécution de la fonction
* Peut retourner une valeur (sauf pour `void`)
```c
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
* `main` est une fonction comme les autres
* Les paramètres sont passés par valeur
* `void` signifie "aucun"