| code | commentaire |
/* prog10a.c */ |
Les fonctions sont définies sur le même principe que la fonction
main.estpositif :Entiers relatif → Booléens, e → e est-il positif ? puissance :Réels × Entiers naturels → Réels, (r,e) → re. N.B. Cette fonction est robuste car elle retourne une valeur même si l'entier e n'est pas positif.
|
/* prog10b.c */n) {n>=0);x,
int n) {y=1;n>0) {y=y*x;n--;y; |
Une fonction doit être définie avant toute autre fonction qui l'utilise. Il peut y avoir plusieurs fois l'instruction return dans une
fonction, mais une seule sera exécutée et mettra fin à la fonction.Contrairement à la version précédente, les mêmes noms de variables ont été choisis ici pour des paramètres de fonction (variables locales) et pour des variables globales du programme. Les variables globales n,
x, et y, ainsi que la variable locale n
de la fonction estpositif, seront donc inaccessibles à
l'intérieur de la fonction puissance (notion de portée des
variables).N.B. On préfèrera donner des noms différents et explicites aux paramètres des fonctions. |
/* prog10c.c */ |
En C, une procédure est une fonction qui ne retourne rien. On s'est servi ici des procédures pour structurer lisiblement le programme. |
/* prog10d.c */ |
Une fonction (et donc aussi une procédure) peut prendre en paramètre
l'adresse d'une variable.
Ici, saisir(&n) prend en paramètre l'adresse de la variable
globale n (passage par adresse) qui sera modifiée
par effet de bord (side effect) ; par contre
afficherfois(int fois) ne cherche pas à modifier la variable
fois (passage par valeur).N.B. A partir du C99, on peut déclarer une variable au niveau très local d'un for.
|
/* prog10d.c */ |
saisirtaille:void → Entiers → e∈[0..taillemax] effet de bord : saisie au clavier d'une valeur entière. saisirtableau:Tableaux d'entiers × Entiers → void Tableau[] × taille → effet de bord : Tableau[] rempli de taille valeurs (avec un maximum de taillemax). affichertableau:Tableaux d'entiers × Entiers → void Tableau[] × taille → Effet de bord : Affichage des taille éléments de Tableau[] (dans la limite de taillemax éléments). N.B. Comme les fonctions de C ne peuvent renvoyer que des types simples, il faut utiliser un effet de bord pour modifier un tableau passé en paramètre dans une fonction. (Un tableau T est en C un pointeur sur son premier élément T[0] et c'est ce pointeur qu'on passe en paramètre.) Les fonctions de saisie et d'affichage du tableau contrôlent la taille du tableau afin qu'elle reste dans l'intervalle autorisé [0..taillemax]. |