Problème avec les procédures en Pascal

Résolu/Fermé
Utilisateur anonyme - 31 juil. 2012 à 23:16
 Utilisateur anonyme - 1 août 2012 à 14:13
Bonsoir,
S'il vous plait, je suis bloqué sur un tout petit problème concernant les procédures sous Pascal , ici y a un exemple qui démontre comment appeler une procédure via une autre procédure.

une procédure ne peut appeler qu'une procédure qui la précède (exemple ici: la procédure A ne peut pas appeler C --> "ILLEGAL", mais peut appeler E --> "LEGAL") jusque là ça va, (de même pour C, elle peut appeler les précédentes E, A, B).

le problème est que je comprend pas pourquoi à la fin, D ne peut pas appeler B et C ! (alors que B et C sont antérieures à D ) et pourquoi alors elle (D) peut appeler A, D, et E?!

merci d'avance.




Procedure E;
Begin
...
End;
Procedure A;
Procedure B;
Begin
C; {ILLEGAL}
E; {LEGAL}
End;
Procedure C;
Begin
B; {LEGAL}
E; {LEGAL}
End;
Begin
...
B; {LEGAL}
C; {LEGAL}
E; {LEGAL}
End;
Procedure D;
Begin
...
B; {ILLEGAL}
C; {ILLEGAL}
A; {LEGAL}
E; {LEGAL}
End;
Begin
...
B; {ILLEGAL}
C; {ILLEGAL}
A; {LEGAL}
D; {LEGAL}
E; {LEGAL}
End.


A voir également:

5 réponses

Utilisateur anonyme
31 juil. 2012 à 23:30
Bonjour

Sans être spécialiste du pascal, il me semble normal qu'on ne puisse pas appeler B ni C depuis D. B et C sont déclarées à l'intérieur de A. Donc elles sont invisibles pour tout ce qui est à l'extérieur de A. D étant à l'extérieur de A, ne peut pas avoir directement accès à l'intérieur de A
0
Utilisateur anonyme
31 juil. 2012 à 23:36
je crois que c'est ça!! je vous le dis, vous êtes spécialiste ^^

merci beaucoup.
0
Utilisateur anonyme
1 août 2012 à 00:09
re-salut,

je me demande si dans l'exemple ci-dessus, B et C qui sont déclarée dans A, donc si l'on cherche à appeler A dans B ou C ça renvoie à quoi?
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
Modifié par heyquem le 1/08/2012 à 10:57
Je ne connais pas Pascal
Mais si B et C sont déclarées dans A,
faire appeler A dans B, cela veut dire qu'on appelle A dans A.
C'est ce qu'on appelle de la récursion.

Or j'ai regardé: Pascal est un langage avec récursion
Donc l'appel de A dans B définie dans A devrait marcher

Mais à condition que l'appel de A dans B soit capable de trouver A à partir de l'intérieur de B, ce que je ne sais pas concernant Pascal, ça dépend des règles de portée dans Pascal



Par exemple, en Python que je connais mieux,

- si Q est une fonction définie dans une fonction P, on peut faire appeler P de l'intérieur de Q

- mais si S est une fonction définie dans une classe R, on ne peut pas faire appeler R de l'intérieur de S parce que l'espace de noms de la classe R (dans lequel R est connu) n'est pas accessible de l'intérieur de la fonction S:
la portée de la classe R ne s'étend pas à l'intérieur des fonction définies dans la classe, il faut passer explicitement les objets extérieurs aux fonctions définies dans la classe pour que les objets extérieurs aux fonctions de la clase soient connus à l'intérieur de ces fonctions
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
1 août 2012 à 14:13
ok, merci heyquem^^
0