Problème avec les procédures en Pascal
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
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.
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:
- Problème avec les procédures en Pascal
- Turbo pascal - Télécharger - Édition & Programmation
- My pascal - Télécharger - Édition & Programmation
- Dev pascal - Télécharger - Édition & Programmation
- Le protocole assure que la communication entre l'ordinateur de pascal et le serveur de visiodoct est car les informations seront avant d'être envoyées. - Forum Pascal
- Probleme en pascal - Forum Pascal
5 réponses
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
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
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?
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?
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question