Bonjour à tous,
Je débute en Pascal et je ne comprends pas le comportement de ce petit programme:
Quand le caractère introduit est correct, ça fonctionne,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 PROGRAM menu; TYPE EnsReponses = SET OF CHAR; VAR Reponses : EnsReponses; reponse: CHAR; BEGIN Reponses := ['A','B','C']; WRITELN('Introduisez un caractère puis ENTER.'); WRITE('A,B ou C: '); READ(reponse); WHILE NOT (reponse IN Reponses) DO BEGIN WRITE('[',reponse,'] Réponse erronée, recommencez: '); READ(reponse); END; WRITELN('ok') END.
mais quand il est incorrect, je ne comprends pas pourquoi il répète 2x la boucle. C'est pour essayer de comprendre que j'ai introduit la variable reponse dans l'affichage au sein de la boucle, et c'est ainsi que je vois qu'apparaît un saut de ligne entre les crochets.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 gv@spirou:~$ ./menu Introduisez un caractère puis ENTER A,B ou C: A ok
Remarquez qu'au 2ème essai, j'ai tapé ENTER directement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 gv@spirou:~$ ./menu Introduisez un caractère puis ENTER A,B ou C: a [a] Réponse erronée, recommencez: [ ] Réponse erronée, recommencez: [ ] Réponse erronée, recommencez: A ok
Je travaille avec freepascal 2.4.0-2 sous Debian.
Pourrait-on m'expliquer ce comportement ?
Merci d'avance,
Gauthier
Partager