fonctions

This commit is contained in:
2026-01-06 07:36:50 +01:00
parent d16dbda7e9
commit 614925cf68
3 changed files with 225 additions and 5 deletions

View File

@@ -37,14 +37,16 @@ Sa syntaxe de base a inspiré de nombreux langages plus récents dont C++, Java
- [Anatomie d'un programme](anatomie.md) - [Anatomie d'un programme](anatomie.md)
- [La compilation](compilation.md) - [La compilation](compilation.md)
- [Les variables](variables.md) - [Les variables](variables.md)
- [Les fonctions](fonctions.md)
### Opérateurs ### Opérateurs
- [Opérateurs d'affectation](opérateurs/affectation.md) - [Opérateurs d'affectation](opérateurs/affectation.md)
- [Opérateurs arithmétiques](opérateurs/arithmétiques.md) - [Opérateurs arithmétiques](opérateurs/arithmétiques.md)
- [Opérateurs logiques](opérateurs/logique.md) - [Opérateurs logiques](opérateurs/logique.md)
- [Opérateurs de comparaison](opérateurs/compataison.md) - [Opérateurs relationnels](opérateurs/comparaison.md)
- [Opérateurs bit à bit](opérateurs/bit.md) - [Opérateurs bit à bit](opérateurs/bit.md)
- [Priorité des opérations](opérateurs/priorite.md)
### Les instructions ### Les instructions

218
fonctions.md Normal file
View File

@@ -0,0 +1,218 @@
# 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"

View File

@@ -8,8 +8,8 @@ Les opérateurs avec la plus haute priorité apparaissent en haut du tableau, ce
Categorie | Opérateurs | Associativité Categorie | Opérateurs | Associativité
--- |---|--- --- |---|---
Préfixe | () [] `->` `.` `++` `--` | → Préfixe | `()` `[]` `->` `.` `++` `--` | →
Unaire | `+` `-` `!` `~` `++` `--` (type)* & sizeof | ← Unaire | `+` `-` `!` `~` `++` `--` `(type)` `*` `&` `sizeof` | ←
Multiplicative | `*` `/` `%` | → Multiplicative | `*` `/` `%` | →
Additive | `+` `-` | → Additive | `+` `-` | →
Décallage | `<<` `>>` | → Décallage | `<<` `>>` | →
@@ -21,5 +21,5 @@ Ou binaire | `\|` | →
Et logique | `&&` | → Et logique | `&&` | →
Ou logique | `\|\|` | → Ou logique | `\|\|` | →
Ternaire | `?:` | ← Ternaire | `?:` | ←
Assignation | = += -= *= /= %=>>= <<= &= ^= \|= |← Assignation | `=` `+=` `-=` `*=` `/=` `%=` `>>=` `<<=` `&=` `^=` `\|=` |←
Séquence | , | → Séquence | `,` | →