Précédent   Forum du club des développeurs et IT Pro > Autres langages > Pascal > Langage
Langage Vos questions sur langage Pascal en général, ses évolutions, les technologies, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 10/03/2012, 08h56   #1
mopl014
Invité de passage
 
Inscription : mars 2012
Messages : 3
Détails du profil
Informations forums :
Inscription : mars 2012
Messages : 3
Points : 0
Points : 0
Par défaut Exécution bizarre d'un programme simple : read ou readln ?

Bonjour à tous,

Comme vous allez le voir dans le code que je présente, je débute en Pascal, je viens d'avoir mes premiers cours.

Nous avons eu un programme à réaliser pour mettre en pratique le cours sur les char, et j'obtiens un résultat très bizarre à l'exécution.

Voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
program affiche;
 
var
  f : char;
  e : integer;
  a : char;
begin
 writeln('entrez un caractere');
 readln(f);
 writeln('le code ASCII de  ',f,'  est  ',ord(f) );
 writeln('entrez un rang');
 read(e);
 writeln('le caractere de rang ',e,' est ',chr(e) );
 writeln('excusez moi mais entrez encore un caractere');
 readln(a);
 writeln(a);
 f:=succ(a);
 writeln('apres ',a,' est ',f,' cest marrant non!!');
 readln;
 end.
Je compile et exécute ce code, et voici le résultat que j'obtiens :



Ce qui est encore plus bizarre, c'est que si je commente les premières lignes de code (jusqu'à writeln('excusez-moi...)), le programme se déroule comme prévu...

Pouvez-vous m'orienter ? Merci d'avance
mopl014 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2012, 09h56   #2
M.Dlb
Rédacteur/Modérateur
 
Avatar de M.Dlb
 
Inscription : avril 2002
Messages : 2 275
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : avril 2002
Messages : 2 275
Points : 3 391
Points : 3 391
Remplace le read par readln
__________________
M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal
M.Dlb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2012, 10h01   #3
mopl014
Invité de passage
 
Inscription : mars 2012
Messages : 3
Détails du profil
Informations forums :
Inscription : mars 2012
Messages : 3
Points : 0
Points : 0
OK merci bien, ça fonctionne sans problème !

Mais cependant une question... pourquoi ???

Je pensais que le fonctionnement de read et readln était identique au saut de ligne près
mopl014 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2012, 13h30   #4
droggo
Expert Confirmé
 
Inscription : août 2006
Messages : 3 417
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 417
Points : 3 772
Points : 3 772
Gie,

"le fonctionnement de read et readln était identique au saut de ligne près".

C'est exact.

Et de ce fait, quand tu fais un Read, le retour chariot que tu as entré pour valider n'est pas pris en compte, et reste dans le buffer d'entrée ...

... et à la prochaine lecture, il sera le 1er caractère lu, d'où problème.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2012, 07h34   #5
mopl014
Invité de passage
 
Inscription : mars 2012
Messages : 3
Détails du profil
Informations forums :
Inscription : mars 2012
Messages : 3
Points : 0
Points : 0
Grand merci pour la précision des réponses !

Résolu
mopl014 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h59.


 
 
 
 
Partenaires

Hébergement Web