Visibilité de variables Paramètres de fonction premier auteur : Agata Savary
Sommaire Niveau d’une variable Visibilité de variables Paramètres formels et paramètres effectifs d’une fonction
Niveau d’une variable (1) Bloc : liste d’instructions incluse entre “parenthèses” (en C entre accolades) ; des blocs peuvent s’emboîter les uns dans les autres ; en C une fonction est un bloc du niveau 1, les blocs qu’elle contient sont du niveau 2, etc. Variable de niveau zéro : déclarée à l’extérieur de tout bloc (variable globale) Variable de niveau n (n 1) : déclarée à l’intérieur d’un bloc de niveau n (variable locale)
variable : a : entier a 1 fonction calcul(donnée f : réel) réel variable : c : caractère début … fin procédure principale() variable : cond : booléen début … si (cond ) variable : b : réel b 5.5 a calcul(b) fin si fin Niveau d’une variable (2) bloc du niveau 0 blocs du niveau 1 bloc du niveau 2 variable globale variables locales du niveau 1 variable locale du niveau 2
Visibilité d’une variable (1) Une variable du niveau N (N 0) est visible uniquement dans le bloc dans lequel elle est déclarée, et dans tous ses sous-blocs Deux variables déclarées dans deux blocs différents peuvent porter le même nom Une variable V déclarée dans un bloc B au niveau N masque toute autre variable portant le même nom déclarée dans un bloc qui englobe B (donc de niveau n < N).
variable : a : entier; a 1 procédure f1() variable : b : entier début b 2 écrire(“b=”,b) écrire(“a=”,a) fin procédure principale() variable : a : entier début a 3 ; f1() écrire (“a=”,a) si (a > 0) variable : a : entier a 4; écrire (“a=”,a) //écrire (“b=”,b) fin si fin affiche “a = 1” affiche “a = 3” (la variable locale a masque la variable globale a) affiche “b = 2” si pas de “//” alors programme incorrect syntaxiquement (b invisible dans la partie principale()) affiche “a = 4” (la variable locale a cache une variable locale a et une variable globale a)
Paramètres formels et réels (1) Les paramètres d’une fonction apparaissant dans la définition de cette fonction s’appellent des paramètres formels. Les paramètres d’une fonction apparaissant dans l’appel de cette fonction s’appellent des paramètres réels. Au moment de l’exécution le paramètre formel est “rempli” par la valeur du paramètre réel correspondant Les paramètres formels d’une fonction ont la même visibilité que les variables locales de cette fonction
procédure affiche(donnée : f : réel) //variable : f : entier début écrire(f) fin procédure main() variables : e, f : réels début e 0.0 f 1.5 affiche(f) affiche(e) affiche(5.7) fin Paramètres formels et réels (2) paramètre formel paramètres réels si pas de “//” alors programme syntaxiquement incorrect (variable et paramètre portant le même nom) Qu’affiche ce programme ?
variables : a, b, compteur : entiers a 0 b 1 fonction fonc1(donnée a : entier) résultat : entier début le résultat est a + 1 fin fonction fonc2(donnée : a : entier) résultat : entier variable b : entier début b fonc1(a+1) + 1 le résultat est b fin procédure main() variable : compteur : entier début pour compteur 1 jusqu’à 5 par pas de 1 faire b b + fonc2(a+1) + 1 écrire(b) fin pour fin Qu’affiche ce programme ?