IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Pascal Discussion :

Read vs ReadLn


Sujet :

Langage Pascal

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Read vs ReadLn
    Bonjour tout le monde,
    c'est ma première participation à ce forum.
    Voilà ce qui me tourmente :

    J'ai essayé de faire un programme Pascal où l'on doit choisir l'opération qu'on veut effectuer (+,-,* ou bien /) et ceci en tapant le signe sur le clavier, et voici mon programme :
    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
    18
    19
    20
    program operation;
    uses wincrt;
    var a,b,c:real;ope: char;
    begin
    write('doner deux nombres a et b : ');
    read(a,b); { <------ }
    if b=0 then begin write('b ne doit pas être nul, veuillez introduire une autre valeur b = ');
    read(b) end; { <------ }
    writeln('Tapez le signe de l''opération que vous voulez effectuer :');
    writeln('+ : pour l''addition de a et b.');
    writeln('- : pour la soustraction de b de a.');
    writeln('* : pour la multiplication de a et b.');
    writeln('/ : pour la division de a par b.');
    readln(ope);
    if ope='+' then begin c:=a+b; writeln(a,' + ',b,' = ',c) end
    	 else if ope='-' then begin c:=a-b; writeln(a,' - ',b,' = ',c) end
             	       else if ope='*' then begin c:=a*b; writeln(a,' * ',b,' = ',c) end
                           		     else if ope='/' then begin c:=a/b; writeln(a,' / ',b,' = ',c) end
                                         		   else writeln('Pas d''opérateur');
    end.
    Le problème c'est que ça ne marchait pas jusqu'à ce qu'un des mes amis me conseille de mettre 'Readln' au lieu de 'Read', et le résultat est spectaculaire : ça marche !

    Ma question est pourquoi ça marche ? Quelle est la différence entre''Read' et 'Readln' ?

    MERCI.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 169
    Points : 251
    Points
    251
    Par défaut
    Grosso modo, Read sert à lire dans les fichiers, et ReadLn au clavier. Mais comme la console (écran + clavier) peut parfois être considéré comme un fichier...
    Mais utilise toujours ReadLn pour le clavier !

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Peut-tu expliquer un peu plus?

  4. #4
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 930
    Points : 59 398
    Points
    59 398
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Read n'interprète tout simplement pas le return tapé au clavier.
    Si tu fais suivre l'instruction par un simple tout devrait fonctionner.

    Tu peux d'ailleurs faire l'expérience de taper tes valeurs a et b simplement séparées par un espace (au lieu de taper return après la 1ère valeur), cela marchera.


    Autre chose : pour tester l'opérateur tapé au clavier, tu pourrais avantageusement remplacer ta cascade de if...then...else par un case...of :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    case ope of
      '+' : ...
      '-' : ...
      '*' : ...
      '/' : ...
    else
      WriteLn('Pas d''opérateur')
    end;
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  5. #5
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci pour cette réponse,
    Avec un rajout de la ligne:
    ça marche.
    Mais en rajoutant seulement un espace au moment d'entrer les variables ça ne marche pas.

    Je voulais aussi savoir comment agit l'interprétation du 'Return' tapé au clavier sur la lecture des données? Interprétation qui n'est pas effectuée par :
    MERCI énormément.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/03/2012, 08h34
  2. Read vs ReadLn
    Par Younes Ch dans le forum Langage
    Réponses: 2
    Dernier message: 15/06/2011, 20h43
  3. Réponses: 1
    Dernier message: 28/09/2007, 22h05
  4. [TP] Read/ReadLn ?
    Par svince dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 11/09/2007, 17h20
  5. [LG]problème de read / readln
    Par jeremie60 dans le forum Langage
    Réponses: 7
    Dernier message: 09/06/2003, 00h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo