Skip to content
Snippets Groups Projects
base_2.md 2.23 KiB
Newer Older
% Programmation séquentielle en C
% Base II - Inspirés des slides de F. Glück
% 25 septembre 2019


# 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;
        }
    }
    ```

# La fonction `main()` (1/N)
## Généralités

- 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. 

# La fonction `main()` (2/N)

## Exemple

```C
int main() {
    // ...
    if (error)
	    return EXIT_FAILURE;
    else
	    return EXIT_SUCCESS;
}
```

- Le code d'erreur est lu dans le shell avec `$?`{.bash}

```bash
$ ./prog
$ echo $?
0 # tout s'est bien passé par exemple
$ if [ $? -eq 0 ]; then echo "OK" ; else echo "ERROR"; fi
ERROR # si tout s'est mal passé
```