readln; sans argument
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

readln; sans argument



  1. #1
    orpheu48

    readln; sans argument


    ------

    Bonjour,
    Un tuto de pascal sur l'Internet termine régulièrement des procédures ou des programmes par readln;
    sans argument.
    Je ne comprends pas bien quel en est la conséquence attendue, càd quel en est l'intérêt.
    Merci pour toute explication.

    -----

  2. #2
    Ikhar84
    Animateur Informatique

    Re : readln; sans argument

    C'est sûrement de la console et donc pour faire "patienter" la fenêtre de la console, on impose d'attendre une saisie utilisateur (entrée clavier) en fin de programme...

    Sinon, au lancement du programme, la console se lance, le programme se déroule en une fraction de seconde, et la console se ferme...

    Tu n'as le temps de ne rien voir d'autre qu'une fenêtre noir qui s'ouvre puis se ferme...

    Edit: essaies avec et sans, avec un programme qui ne fait que des "print" dans la console... tu comprendras vite l'interêt...
    Dernière modification par Ikhar84 ; 19/06/2020 à 12h00.
    J'ai glissé Chef !

  3. #3
    Jack
    Modérateur

    Re : readln; sans argument

    Citation Envoyé par Ikhar84 Voir le message
    Edit: essaies avec et sans, avec un programme qui ne fait que des "print" dans la console... tu comprendras vite l'interêt...
    C'est en effet étonnant de poser ce genre de question sans avoir essayé.

  4. #4
    orpheu48

    Re : readln; sans argument

    Merci à tous,
    y compris à Jack le modérateur.

    En toute rigueur, essayer et comparer les résultats est une démarche efficace, mais je n'avais pas de Pascal: je me renseignais pour voir si ça pourrait plaire à un copain de programmer en Pascal et de l'apprendre sur l'Internet.

    Cela dit, j'ai 72 ans, j'ai pratiqué, soigné et enseigné dans plusieurs champs du savoir, et je sais par expérience qu'une méthode essais-erreurs n'est pas une méthode rigoureuse dans le fond. Il y a beaucoup de domaines où un "truc qui marche" n'est pas une preuve de bonne formulation de la question, ni de bien-fondé de la réponse. Essayer un médicament pour voir si ça marche ou voir ce que ça fait... !

    Merci toutefois de la suggestion "essaie pour voir". Mais la réponse "fait patienter l'ordi" d'Ikhar84 m'apparait la mieux fondée et la plus rigoureuse, en disant que si l'ordi attend une entrée il ne passe pas à la suite sans que cette entrée ait lieu. Cette réponse est épistémologiquement bien construite. Et du coup, ça se conçoit même sans avoir de Pascal sous la main.

    Cela dit, où va ce que l'utilisateur aura entré, puisqu'il n'y aura pas eu d'affectation de variable? C'est par la méthode des essais et erreurs qu'on peut le savoir? ou bien pouvez-vous me le dire, ça m'apprendra vraiment quelque chose.

    Cher Jack, un peu donneur de leçons dirait-on... Vous êtes probablement un bon et vrai programmeur si vous êtes modo sur ce site; et dans ce cas, c'est que vous ne vous êtes pas contenté, dans votre formation et dans la formation que vous vous êtes construite à partir de votre expérience, du "essayez pour voir". En mathématiques par ailleurs, ce qu'on voit et ce qu'on "intuite" peuvent être trompeurs. Il suffit par exemple pour s'en apercevoir de passer de la géométrie plane à la géométrie dans l'espace, où la forme apparente d'un triangle comme triangle rectangle ne garantit nullement que c'en est un. Et une démonstration peut tout à fait infirmer ce que l'on croit pouvoir conclure d'une remarque de visu.

    J'ai même fait du Pascal autrefois, et développé un petit traitement de texte. Mais c'est bien loin (40 ans !), et j'avais juste envie récemment de voir si ça pourrait aider un ami de suivre un tuto sous Youtube. Réponse "oui sous réserve de compléments, et en prenant de vrais cours pour continuer, ou au moins avec les bouquins adéquats". Cela dit, j'ai eu en informatique des formateurs un peu donneurs de leçons aussi, càd qui ne donnaient pas seulement des cours d'informatique. mais y ajoutaient parfois des réflexions, du genre par exemple "il faut lire un peu, les gars!" (à quoi ça sert de balancer ça, à moins de donner de vraies infos bibliographiques?). Mais leurs "réflexions" supplémentaires étaient rarement épistémologiquement intéressantes.

    Merci toutefois pour votre attention à vous aussi.
    Salut bien à tous, et bon été,
    Orph
    Dernière modification par orpheu48 ; 20/06/2020 à 19h10.

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : readln; sans argument

    Bonjour orpheu48,

    comme ma réponse n'est apparemment pas bien passée mais que votre réaction a été plutôt courtoise, je vais prendre le temps de te répondre.
    Je ne pense pas être un bon programmeur, en tout cas ce n'est pas mon métier. Je serais donc mal placé pour être donneur de leçon sur ce plan.

    Cependant, l'expérience fait que sur ce forum et d'autres, on rencontre tellement de personnes trouvant moins fatigant de poser une question plutôt que d'essayer de passer un peu de temps pour essayer de résoudre leur problème que ça déclenche parfois quelques réaction épidermiques. Je constate que ça n'est pas le cas. En conséquence, je vous présente mes excuses pour mon intervention précédente.

    Sur le fond, si la réponse d'Ikhar84 est en effet tout à fait fondée (et exacte en passant), je ne vois pas trop en quoi elle est rigoureuse comme vous le dites. Où est la démonstration?
    Essayer un médicament pour voir si ça marche ou voir ce que ça fait... !
    Ca n'est pas comparable. L'avantage avec la programmation sur ordinateur, c'est qu'une erreur est sans conséquence irréversible.
    L'expérimentation est incontournable si on veut écrire un peu de code. En l'occurrence, essayer un programme avec et sans le "readln" permet d'obtenir la réponse en quelques minutes.
    En tout cas, puisque ce genre de question est classiquement posé par des étudiants, c'est ce que je leur aurais répondu, de manière à les inviter à apprendre de résoudre à leur problème de manière autonome. C'est très formateur.

    Cela dit, où va ce que l'utilisateur aura entré, puisqu'il n'y aura pas eu d'affectation de variable?
    ce qu'on entre au clavier est mémorisé dans le "buffer clavier", une mémoire qui est lue par la fonction readln. Comme on n'a pas besoin d'exploiter ce qui a été entré, point besoin de l'affecter à une variable.
    C'est par la méthode des essais et erreurs qu'on peut le savoir?
    Alors là, je vais à nouveau vous décevoir: c'est par la lecture de la documentation. Comme vous semblez apprécier la rigueur, seule la documentation fait foi pour obtenir la bonne réponse à la question précédente.

    PS: après relecture de votre message original, je vais compléter la réponse d'Ikhar84 car sa réponse portait sur la présence de readln en fin de programme alors que vous avez relevé également sa présence en fin de procédure. Pour ce dernier cas, je suppose (hé oui, aucune démonstration n'est possible) que cela doit permettre de faire des pause à la fin de laisser le temps à l'utilisateur du programme de lire les affichages précédents à son rythme.
    Si le programme est bien écrit, la fonction readln devrait être précédée d'un appel à write ou writeln permettant d'afficher un petit texte explicatif tel que "Appuyez sur une touche pour continuer", ou "Appuyez sur une touche pour terminer".

    Bonne soirée

  7. #6
    orpheu48

    Re : readln; sans argument

    Merci Jack pour votre réponse longue parce qu'élaborée.

    Je traduis ainsi la réponse d''Ikhar84: L'instruction Readln sans argument met l'ordi en attente d'une entrée par l'utilisateur, qui n'ira pas plus loin si une entrée n'est pas faite. Même si ce n'est pas des maths de doctorat, ça a le mérite d'expliquer la logique du truc. Merci donc à 'Ikhar84, pour la logique de sa réponse, qui rend cette dernière compréhensible.
    Ladite réponse devient rigoureuse si on y ajoute votre suggestion de placer avant le readln un write ou writeln qui dit à l'utilisateur ce qui est attendu de lui pour que soit exécutée la suite du programma (y compris le retour à l'EDI s'il n'y a pas d'autres instructions) l'entrée de l'utilisateur affectant une case mémoire dans le buffer clavier. La réponse d''Ikhar84, que je remercie, complétée par la vôtre, voilà qui constitue une réponse "rigoureuse" en tant que logique et assez complète.

    Bien d'accord pour dire que le must est de se référer au manuel, qui renseigne sur le lexique et la syntaxe, càd sur ce que le concepteur du langage entend par telle ou telle instruction ("ceci et pas autre chose, pas de spéculation possible").

    Je me mets en quête du manuel, parce que j'ai de gros trous dans ma ram neurologique pour ce qui est du lexique et de la syntaxe du Pascal. Ça revient certes petit à petit, mais ayant perdu les bouquins (plusieurs déménagements en ayant fait tout autre chose, ça vous fait des trous dans la bibliothèque!), j'ai quand-même bien besoin du manuel de référence adéquat ! Cela dit, si je pense à ne pas oublier les parenthèses et les points-virgules, ça ira déjà mieux - le compilateur m'a déjà bien châtié sur ce point

    Salut à tous et merci Jack pour votre attention.
    Orph
    Dernière modification par orpheu48 ; 21/06/2020 à 23h28.

  8. #7
    Jack
    Modérateur

    Re : readln; sans argument

    Ravi que la somme de ces explications ait répondu à vos attente. Mes souvenirs du langage Pascal sont également lointains (et pleins de nostalgie).
    Ce principe de placer une instruction de lecture clavier pour effectuer une pause est récurrent dans les langages permettant le fonctionnement dans un terminal.

Discussions similaires

  1. Argument de z :
    Par topmath dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 20/07/2013, 19h02
  2. Argument
    Par invite4927ec0e dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 02/11/2005, 07h58