# Les fonctions (1/N) - Chaque partie indépendante d'un programme se met dans une fonction. - Syntaxe: ```C type identificateur(paramètres) { // variables optionnelles instructions; return expression; // type donne le type d'expression } ``` - Exemple: ```C int max(int a, int b) { if (a > b) { return a; } else { return b; } } int main() { int c = max(4, 5); } ``` # Les fonctions (2/N) - Il existe un type `void`{.C}, "sans type", en C. - Il peut être utilisé pour signifier qu'une fonction ne retourne rien, ou qu'elle n'a pas d'arguments. - `return`{.C} utilisé pour sortir de la fonction. - Exemple: ```C void show_text(void) { // second void optionnel printf("Aucun argument et pas de retour.\n"); return; // optionnel } void show_text_again() { // c'est pareil printf("Aucun argument et pas de retour.\n"); } ``` # Les fonctions (3/N) ## Prototypes de fonctions - Le prototype donne la **signature** de la fonction, avant qu'on connaisse son implémentation. - L'appel d'une fonction doit être fait **après** la déclaration du prototype. ```C int max(int a, int b); // prototype int max(int a, int b) { // implémentation if (a > b) { return a; } else { return b; } } ``` # Les fonctions (4/N) ## La fonction `main` - Point d'entrée du programme. - Retourne le code d'erreur du programme: - 0: tout s'est bien passé. - Pas zéro: problème. - La valeur de retour peut être lue par le shell qui a exécuté le programme. - `EXIT_SUCCESS`{.C} et `EXIT_FAILURE`{.C} (de `stdlib.h`) sont des valeurs de retour **portables** de programmes C.