Sign in Join
Wiki copytemporary

Basic Pascal Tutorial/Chapter 4/Scope/fr: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11[[Basic Pascal Tutorial/fr|Tutoriel de Pascal Objet]] : Sous-programmes / **Portée**
22
33La *portée* indique où sont visibles certaines variables. Vous avez des procédures à l'intérieur des procédures, des variables à l'intérieur des procédures et votre travail est d'arriver à comprendre où chaque variable peut être vue par la procédure.
44
55Une variable globale est une variable définie dans le programme principal. Tout sous-programme peut la voir et la modifier. Tous les sous-programmes peuvent s'appeler eux-mêmes et tous les autres sous-programmes définis avant eux.
66
77Le point principal est ici : à l'intérieur de tout bloc de code (procédure, fonction, peu importe), les seuls identificateurs qui sont visibles sont ceux définis avant le bloc, soit dans ce bloc soit hors de ce bloc.
88
99``` pascal
1010program ScopeDemo;
1111var A : integer;
1212
1313 procedure ScopeInner;
1414 var A : integer;
1515 begin
1616 A := 10;
1717 writeln (A)
1818 end;
1919
2020begin (* Main *)
2121 A := 20;
2222 writeln (A);
2323 ScopeInner;
2424 writeln (A);
2525end. (* Main *)
2626```
2727
2828La sortie du programme ci-dessus est :
2929
30-```
30+```text
313120
323210
333320
3434```
3535
3636La raison est : si deux variables sont déclarées avec le même identificateur dans un sous-programme et dans le programme principal, le programme principal voit la sienne et le sous-programme voit la sienne propre (pas celle du programme principal). La définition la plus locale est utilisée quand un identificateur est défini deux fois dans différents endroits.
3737
3838Voici un tableau de portée qui revient essentiellement à une copie indentée d'un programme avec seulement les variables et moins la logique. En enlevant la logique de l'application et enfermant des blocs dans des boîtes, il est parfois plus facile de voir où certaines variables sont disponibles. ![centre](/wiki-images/4/47/Scope.gif)
3939
4040- Tous peuvent voir les variables globales `A`, `B` et `C`.
4141- Néanmoins, dans la procédure `Alpha` la définition globale de `A` est remplacée par la définition locale.
4242- `Beta1` et `Beta2` peuvent voir les variables `VCR, Betamax` et `cassette`.
4343- `Beta1` ne peut pas voir la variable `FailureToo` et `Beta2` ne peut pas voir `Failure`.
4444- Aucun sous-programme sauf `Alpha` ne peuvent avoir accès à `F` et `G`.
4545- La procédure `Beta` peut appeler `Alpha` et `Beta`.
4646- La fonction `Beta2` peut appeler tous les sous-programmes, y compris elle-même (le programme principal n'est pas un sous-programme).
4747
4848NDT :
4949
5050- La procédure `Alpha` ne peut pas appeler les procédures `Beta`, `Beta1` et `Beta2`.
5151- La procédure `Beta` peut aussi appeler `Beta1` et `Beta2`.
5252
5353---
5454*From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 4/Scope/fr", as it stood on 2022-08-20 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history