Accueil        Lexique        Unités        Algorithmes        TUTORIEL   

Sommaire Tutoriel

Comment écrire à l'écran en Langage Pascal ?

  1. Ecrire du texte avec write et writeln
  2. Ecrire des nombres avec write et writeln
  3. Récaputilatif de ce cour

  1. Ecrire du texte en Pascal

    En langage Pascal, la sortie écran de texte se fait par une seule et même fonction write. Cette fonction est dite Polymorphique, du fait qu'elle peut contenir différentes valeurs, paramètres et types de valeurs.

    Pour indiquer un simple texte, on délimite, en Pascal, ce texte entre guillements simples '...'. Nous admetrons, pour des raisons de compatibilité que c'est le seul moyen de définit une chaine de caractère en Pascal, même si, avouons-le le double guillemet aurait été un choix plus judicieux.

    La fonction Write écrit du texte en continue en décalant le curseur (point de position du texte à l'écran) à droite à chaque nouveau caractère écrit à l'écran. A la fin de l'affichage d'un texte, le curseur se trouvera à la droite du texte affiché.

    Exemple

    write('Bonjour, comment allez-vous ?');
    
    L'exécution de cette fonction affichera :
    Bonjour, comment allez-vous ?

    Si vous répondez 'Je vais bien, merci', vous pouvez être tenté d'écrire le code suivant :

    write('Bonjour, comment allez-vous ?');
    write('Je vais bien, merci');
    
    Le résultat à l'écran sera :
    Bonjour, comment allez-vous ?Je vais bien, merci
    Pourquoi ? Simplement parce que, comme notifié auparavant, le curseur se positionnera à la droite du texte affiché! Ce code est ainsi équivalent à
    write('Bonjour, comment allez-vous ?Je vais bien, merci');
    
    Pour écrire du texte avec saut de ligne, il existe une autre fonction qui est writeln. Cette fonction fait la même chose que write à part qu'elle renvoie le curseur au début de la ligne suivante après avoir affiché le texte. Ainsi, pour reprendre l'exemple précédent, il faudrait écrire :
    writeln('Bonjour, comment allez-vous ?');
    writeln('Je vais bien, merci');
    
    Le programme Pascal complet à exécuter sera :
    Program MonTexte
    Begin
        writeln('Bonjour, comment allez-vous ?');
        writeln('Je vais bien, merci');
    End.
    

    Le petit truc de l'expert

    Writeln équivaut à écrire un texte en ajoutant 2 caractères "invisibles" sous environnement MS-DOS ou CP-M, qui sont la descente du curseur d'une ligne chr(10) et le positionnement en début de ligne chr(13) (Appelé "CARRIER RETURN" ou CR). Sous Unix, chr(13) fait les 2 à la fois (descente d'une ligne et positionnement en début de ligne).
    Ainsi, le programme précédent est équivalent à :
    Program MonTexte
    Begin
        write('Bonjour, comment allez-vous ?'+chr(10)+chr(13)+'Je vais bien, merci'+chr(10)+chr(13));
    End.
    
    Remarque : Nous verrons plus tard ce qu'est une fonction (tel chr()) et les codes ASCI pour les caractères..

    Ecrire des guillemets simples

    Avec write et writeln vous pouvez écrire n'importe quel caractère alphanumérique (a à z, A à Z, chiffres, et tout caractère), y compris le double guillemet. Le code suivant :
    write('La bonne couleur est "Rouge"');
    
    affichera
    La bonne couleur est "Rouge"
    Cependant, un problème survient pour l'affichage de guillemets simples. Si on écrit le code suivant :
    write('La bonne couleur est 'Rouge'.');
    
    Il y aura une erreur dans l'exécution du programme.
    Fort heureusement, il y a une solution à cela, qui est de doubler le guillemet simple. En écrivant le code suivant, vous obtiendrez la sortie souhaitée:
    writeln('La bonne couleur est ''Rouge''.');
    
    affichera :
    La bonne couleur est 'Rouge'.
    .

    Le petit truc de l'expert

    Un autre moyen d'afficher le guillement simple, moins simple à coder, est de réutiliser la fonction chr(), précédemment vue, avec le code 39 :
    writeln('La bonne couleur est ' + chr(39) + 'Rouge' + chr(39) + '.');
    

    Exercice

    • Codez la fonction write pour afficher la phrase suivante :
      D'habitude, l'artiste arrive à l'heure
      .

    Texte trop long ?

    La fonction write (et writeln) ne tient pas compte des limites de l'écran. Lorsque vous souhaitez afficher un texte dont la longueur dépasse les limites de l'écran en largeur, seuls les caractères de début s'afficheront. Dans d'autres langages de programmation, tel le BASIC, la fonction d'écriture (PRINT) tient compte de la largeur de l'écran et positionne la suite du texte à la ligne.
    Ainsi pour le code suivant
    writeln('Bonjour, comment allez-vous ? Je vais bien, merci. La cigale ayant chanté tout l''été se trouva fort dépourvue quand la bise fut venue. Elle alla crier famine chez la fourmi sa voisine.');
    
    L'exécution de cette fonction entrainera cet affichage :
    Bonjour, comment allez-vous ? Je vais bien, merci. La cigale ayant chanté tout
    .
  2. ... le reste de la phrase étant en dehors de l'écran (pour un écran de 80 caractères de large) il ne sera pas affiché. La résolution de ce problème sortant du cadre d'initiation de ce chapitre, nous ne nous y attarderons pas.

    Attention : En langage pascal, vous ne pouvez pas couper en plusieurs lignes un texte entre guillemets à afficher avec la fonction write. En revanche, vous pouvez séparer la chaine en plusieurs sous-chaines avec des VIRGULES.. Ainsi le code précédent pourra s'écrire :

    writeln('Bonjour, comment allez-vous ? Je vais bien, merci. ' ,
            'La cigale ayant chanté tout l''été se trouva fort dépourvue ' ,
            'quand la bise fut venue. ', 
            'Elle alla crier famine chez la fourmi sa voisine.');
    
    sans que cela ne provoque d'erreurs. Rappelons que, suivant les compilateurs Pascal, la taille maximale de chaque ligne de code peut compter jusqu'à 255 caractères.

    Formattage de texte

    Avec la fonction write/writeln, vous pouvez vouloir que le texte ait une longueur minimale. Pour cela, il suffit d'ajouter un ":" suivit du nombre de caractères minimal souhaité. Si le nombre de caractères du texte est inférieur à ce nombre, il sera complété par des caractères ESPACES à gauche de l'affichage. Cet attribut permet par exemple, d'aligner du texte à droite. Si vous exécutez le code suivant:
    writeln('Texte court':20);
    writeln('Texte plus long':20);
    writeln('Texte un peu plus long':20);
    
    l'écran affichera
             Texte court
         Texte plus long
    Texte un peu plus long
    . On voit que quand la taille du texte dépasse les 20 caractères, il déborde sur la droite comparé aux 2 textes précédents (car plus long que 20 caractères).

    Qu'est ce que le code ASCII ? (Pour les initiés)

    Le code ASCII est une norme internationale indiquant que chaque caractère (lettre majuscule ou minuscules de l'alphabet latin, chiffres, signes diverses tels +, -, *, /, ! £ etc) a un code ASCII le différenciant des autres. Il existe différents codes ASCII au niveau international, mais quelle que soit ce code ASCII, les caractères correspondant aux nombres compris entre 32 et 127 sont identiques :
    CodeCaractèreCodeCaractèreCodeCaractère CodeCaractèreCodeCaractèreCodeCaractère
    32 48064@80P96`112p
    33!49165A81Q97a113q
    34"50266B82R98b114r
    35#51367C83S99c115s
    36$52468D84T100d116t
    37%53569E85U101e117u
    38&54670F86V102f118v
    39'55771G87W103g119w
    40(56872H88X104h120x
    41)57973I89Y105i121y
    42*58:74J90Z106j122z
    43+59;75K91[107k123{
    44,60<76L92\108l124|
    45-61=77M93]109m125}
    46.62>78N94^110n126~
    47/63?79O95_111o127
    Pour les codes ASCII situés entre 128 et 255, les caractères diffèrent suivant le type de code ASCI... En général, ce code ASCII est lié à une synthaxe linguistique. Dans ces codes se trouvent des lettres accentuées, le ç par exemple.

    Ce code ASCII n'est évidemment pas utilisable pour les langues utilisant une autre graphie, un autre alphabet (chinois, thaïlandais, Japonais, Birman etc)... Pour cela, on utilise ce qu'on appelle l'UNICODE (ou UTF-16), mais cette notion sort du cadre de ce chapitre.

    Exercice


  3. Ecrire des nombres avec write et writeln

    En dehors du texte, vous pouvez également afficher des nombres, définis en temps que Nombres. Si vous tapez le code suivant:
    writeln('Je m''appelle Hubert et j''ai 28 ans');
    writeln('Je m''appelle Hubert et j''ai ', 28 ,' ans');
    
    L'écran affichera
    Je m''appelle Hubert et j'ai 28 ans
    Je m''appelle Hubert et j'ai 28 ans
    .
  4. Ces 2 sorties paraissent identiques MAIS le langage Pascal (et tout langage informatique) traitera ces 2 informations de nombre différemment! Dans le premier cas, '28' est une chaine de caractères (avec les codes ASCII de 2 et de 8) alors que dans le second cas, le programme le traitera en tant que NOMBRE ENTIER. Ceci introduit la notion de TYPE de données. Il y a une différence notable entre la chaine de caractère '28' (sur laquelle on ne peut produire AUCUNE opération numérique) et le Nombre 28 qui est vu comme un nombre et sur lequel on peut effectuer des opérations!

    Comme on le voit dans cet exemple, on peut séparer différentes valeurs (chacun ayant un type) avec des virgules, dans la fonction write (ou writeln)
    Note: La fonction write est nettement plus simple d'emploi (et intuitive) qu'en langage C (et ses dérivés comme le PHP) qui, non seulement utilise différentes fonctions (putc, putl, putw etc) pour les opérations d'affichage mais, de plus, avec l'équivalent de "write" (printf) demande en plus de préciser le type de variable donnée dans une chaine de caractère, sur les variables données dans les paramètres de printf... Alors qu'en Pascal, chaque valeur (ou variable) a un type connu et défini une fois pour toute!

    Affichage de nombres à virgules (réels)

    Par défaut en langage Pascal (turbo Pascal), un nombre réel sera affiché en écriture scientifique avec 16 chiffres pour les décimaux et l'exposant en puissance de 10. Ceci est dû au fait que le langage Pascal a longtemps été le langage de programmation scientifique par excellence. La notation scientifique affiche le nombre avec une valeur incluse entre 0 et 10 (non inclus) et la puissance de 10 associée. Ainsi le code suivant
    writeln('Affichage d''un nombre réel : ',1.5);
    
    Affichera :
    1.5000000000000000E+0000
    . Dans cet exemple, vous voyez que l'on écrit la virgule des nombres réels AVEC un POINT et ce, QUELLE QUE SOIT le langage de programmation que vous utilisez.

    Formatage de l'écriture de nombres

    Pour changer la manière dont on affiche un nombre, on utilise un duo de paramètres à la suite, séparés par ":". Le premier paramètre, tout comme vu précédemment, indique le nombre minimal de caractères d'affichage du nombre (Si on indique 10 pour le nombre 32.45, il sera ajouté 5 espaces à la gauche du nombre). Le second nombre indique le nombre de chiffres après la virgule à afficher, et ce même pour un nombre entier
    Ainsi, pour afficher le nombre PI avec 10 caractères minimum, dont 5 décimales, vous écrirez
    writeln('Pi avec 5 chiffres après la virgule = ',Pi:10:5 );
    
    L'exécution de ce code affichera :
       3.14159
    . Note : : Pi est, ici, une CONSTANTE PREDEFINIE dans le langage Pascal. Le compilateur remplacera le mot "Pi" par le nombre à virgule correspondant.
  5. Notions vues dans ce cours

    • Fonctions write et writeln
    • Texte entre guillements simple
    • Ecrire des guillemets simples
    • Utilisation de la fonction chr()
    • Formatage de texte dans write
    • Séparation des champs de write avec la virgule
    • Notion de type
    • Code ASCII
    • Ecrire un nombre entier
    • Nombres à virgule (réels)
    • Ecriture scientifique
    • Formattage de nombres à virgule (réel)

Sommaire Tutoriel


Copyright © 2021 par Albatros Concept (Bruno Aubin)