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