Aller au menu - Aller au contenu

Icône Le texte

Avatar
Mise à jour : 22/08/2008
1 010 visites depuis 7 jours, dont 37 sur ce chapitre classé 126/786
Dans les premiers chapitres de ce tuto,la commande Disp vous a permis d'afficher du texte à l'écran. Mais ce n'est pas la seule commande ! :D

Et il vous manque un truc indispensable : demander une valeur à l'utilisateur !
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Afficher du texte

Effacer



La première chose que je vais vous apprendre à faire en fait, ce n'est pas afficher du texte, mais l'effacer. o_O
En effet, quand vous lancez votre programme, il y a souvent pas mal de texte qui traîne à l'écran, comme des calculs, ou même simplement la ligne "prgmSDZ". Donc : prenez la bonne habitude d'effacer votre écran en tout début de programme et à chaque fois que c'est nécessaire. ^^

Pour cela, utilisez la commande située dans le menu [PRGM] I/O ligne 3 :
Code : Pascal
1
:ClrHome


Disp



Vous connaissez déja bien cette commande, mais pas encore sur le bout des doigts. Quel est son principe de fonctionnement ?

Quand on lui demande d'afficher un texte, elle va voir l'écran, et lui demande quelles sont les lignes disponibles. En fait, elle écrit le texte demandé à la première ligne totalement vierge.
Donc si vous avez déja écrit un calcul à l'écran, il l'affichera juste après (d'où l'intérêt d'effacer l'écran au préalable). Si l'écran est totalement plein, il décale tout d'une ligne vers le haut et écrit le texte.

Autre point important : n'écrivez pas plus de 16 caractères, sinon une partie du texte ne sera pas affiché, le retour à la ligne n'étant pas possible. Ce serait dommage, non ? :lol:

Image utilisateur


Je vous rappelle la syntaxe.
entre " " : le texte brut
sans " " : la valeur du calcul ou de la variable
Code : Pascal
1
2
3
4
5
6
:Disp "ABC" // Affiche ABC
:Disp "(4*5)+2" // Affiche (4*5)+2
:Disp (4*5)+2  // Là, on affiche 22
:5->A
:Disp A // on affiche la valeur de A soit 5
:Disp A+1 // Et A+1 soit 5


Si vous essayez, vous avez dû vous rendre compte que les textes s'alignent à gauche et les valeurs à droite. C'est normal et on ne peut rien y faire. :(
Code : Pascal
1
2
:Disp "RESULTAT:"
:Disp 5*6

Image utilisateur


Vous pouvez par contre "condenser" les commandes Disp en les séparant par une virgule. Par exemple, avec le code précédent.
Code : Pascal
1
:Disp "RESULTAT:",5*6


Un autre exemple pour bien comprendre. :)
Code : Pascal
1
2
3
4
5
:Disp "ABC"
:Disp "DEF"
:Disp "HIJ"
// Cela revient au même que...
:Disp "ABC","DEF","HIJ"

Le code s'écrira quand même sur 3 lignes.

Cette commande est assez simple à utiliser, mais elle devient obsolète pour des questions de mise en page. C'est pourquoi nous allons voir une deuxième commande pour afficher du texte.

Output(



Cette nouvelle commande permet d'afficher du texte là où vous voulez sur l'écran, sans vous soucier de ce qui est déja affiché. Elle prend en compte 3 paramètres (séparés par des virgules) :
  • le numéro de la ligne sur laquelle elle se situe
  • le numéro de la colonne sur laquelle elle se situe
  • le texte ou la variable à afficher
(Rappelez-vous, l'écran peut accueillir 8x16 caractères.)

Un exemple vaut mieux qu'un long discours :
Code : Pascal
1
2
3
:ClrHome
:Output(4,5,"D")
:Output(1,1,"A

(Les deux syntaxes sont équivalentes, la deuxième occupant moins d'octets.)


Image utilisateur


Les lignes sont numérotées de 1 à 8. La 1 étant la plus haute, et la 8 la plus basse.
Les colonnes sont numérotées de 1 à 16. La 1 étant la plus à gauche, et la 16 la plus à droite.
Evitez de mettre des valeurs qui ne soient pas situées dans ces plages. Vous n'aurez le droit qu'à un joli message d'erreur. :lol:

Vous avez tout à fait le droit à des variables (c'est là que ça devient marrant pour faire des petits jeux) :
Code : Pascal
1
2
3
4
5
6
:ClrHome
:1->X
:2->Y
:Output(X,Y,"A"
:4->B:5->C // Cette syntaxe est possible. Elle est équivalente à 2 lignes.
:Output(B,C,"E"


Bien sûr, on peut afficher des textes un peu plus longs, les coordonnées étant celles du premier caractère. On peut afficher aussi les valeurs des variables comme pour Disp.
Code : Pascal
1
2
3
4
:Output(1,1,"BLA BLA"
:5->A
:Output(2,3,A
:Output(4,3,A-2


On ne peut pas condenser les Output, et le retour à la ligne n'est pas géré.

Conclusion



Pour afficher du texte , on a deux commandes :
  • Disp : simple d'utilisation, mais mise en page médiocre.
  • Output : plus compliqué à gérer, mais permet de faire des programmes un peu plus complexes.

N'oubliez pas de bien utiliser la commande "ClrHome" pour effacer l'écran, sans quoi vous vous retrouverez avec des écrans totalement couverts de caractères.

Demander une valeur

Vous savez afficher du texte, mais un programme se doit quand même d'être interactif, de communiquer avec l'utilisateur. On peut par exemple lui demander d'entrer une valeur. :)
Nous allons voir pour ça deux nouvelles commandes.

Prompt



La syntaxe n'est pas très compliquée à retenir.
Code : Pascal
1
:Prompt A

La commande Prompt se situe dans [PRGM], I/C, ligne 2.
Vous écrivez ensuite le nom de la variable à laquelle vous voulez affecter la valeur entrée par l'utilisateur. Rien d'autre ! Et voilà le résultat !

Image utilisateur


Le programme affiche le nom de la variable, un = et un ?. A partir de ce moment, elle attend qu'une valeur soit rentrée pour continuer. Le programme n'exécute donc plus aucune opération.

C'est bien joli, mais c'est pas très beau ce A=?.
C'est vrai ! C'est pour cela que j'utilise quasiment tout le temps la deuxième commande. :D

Input



Essayez ce code. (Input se trouve dans [PRGM], I/C, ligne 1)
Code : Pascal
1
:Input A


Image utilisateur


Pas bien plus joli, me direz vous.
Mais essayez plutôt ce code là, en fait.
Code : Pascal
1
:Input "ENTER A: ",A


Image utilisateur


C'est mieux comme ça, non ?
Il suffit d'abord d'écrire un texte entre guillemets, une virgule, puis la variable qui doit être modifiée.
Ça permet une meilleure présentation de votre programme.

Le retour à la ligne n'est toujours pas géré. Donc : pas plus de 16 caractères pour les deux commandes.


Les commandes Disp, Input et Prompt ne font pas attention aux lignes qui ont été écrites par Output(. Elles auront tendance à se superposer. Faites bien attention en codant !


Voilà. Je n'ai pas à m'étendre davantage là-dessus.

Exercice

Bon, c'est bien beau tout ça. Vous avez appris plein de trucs, mais il va falloir mettre tout ça en pratique. ^^

Je vous propose de créer un petit programme tout simple : calculer la surface d'un rectangle. Pas compliqué !
Je rappelle quand même la formule, pour ceux qui auraient un trou de mémoire :
Surface = Longueur x Largeur.

Je vous laisse réfléchir. En-dessous, je vous propose deux solutions, pour bien vous montrer qu'on peut coder de différentes manières plus ou moins bonnes.

Secret (cliquez pour afficher)

Code : Pascal
1
2
3
4
5
:ClrHome
:Input "LONGUEUR ",A
:Input "LARGEUR ",B
:A*B->C
:Disp "SURFACE",C

Pas très compliqué ! C'est simple, ça marche, mais on pourrait quand même faire quelque chose de plus joli ! :p

Secret (cliquez pour afficher)
Code : Pascal
1
2
3
4
5
6
7
8
:ClrHome
:Disp "RECTANGLE:"
:Disp "----------"
:Disp " "
:Input "LONGUEUR :",A
:Input "LARGEUR :",B
:Output(6,1,"S="
:Output(6,4,A*B

Cette fois-ci le résultat est aligné avec le =, c'est en fait à vous de jouer avec les Output et les Disp pour trouver la meilleure solution. Petit détail, je n'ai pas utilisé de variable C, j'ai directement fait le calcul dans le Output.

A vous de trouver la solution pour créer un programme rapide, joli à regarder et pas trop lourd en place ! :D

Ah ! Un dernier conseil : lire des tutoriaux c'est bien, mais il faut surtout tester.
Chapitre suivant : Les conditions. Suivez le guide ! ^^
Chapitre précédent Sommaire Chapitre suivant

Partager

13 commentaires pour "Le texte"
Note moyenne : 3.82 / 4 (60 votes)
Pseudo Commentaire
Hors ligne Kurnyx # Posté le 19/12/2008 à 21:03:36
à l'opposé du Spleen

Vraiment très bien ! Moi qui avait appris par moi-même, j'ai pu compléter mes connaissances !
Une petite erreur de rien du tout :

Code : Pascal
1
2
3
4
5
6
:Disp "ABC" // Affiche ABC
:Disp "(4*5)+2" // Affiche (4*5)+2
:Disp (4*5)+2  // Là, on affiche 22
:5->A
:Disp A // on affiche la valeur de A soit 5
:Disp A+1 // Et A+1 soit >>>6<<< ;)


Voilà ! :p

18 ans, Prépa PCSI à Ste Geneviève.
Connaissances approfondies du Basic et de Blender, ainsi que des images 3D et autres stéréogrammes.
 
Hors ligne Kev2a # Posté le 01/03/2009 à 22:14:21
Demacia !
Avatar

Ville : Ajaccio
Pays : France métropolitaine
Études : EPITA

Merci beaucoup ! J'ai appris des trucs très utiles ;)

Epita Promo 2014
ING1
Projet de Sup : Team Deity Crew - aMAZEing Escape
Image utilisateur
 
Hors ligne zakc # Posté le 26/09/2010 à 17:44:37
Avatar

Merci beaucoup pour ce tuto très bien expliqué ;)
j'aurai voulu savoir s'il était possible de faire donner plusieurs résultats a un programme en ce basant sur les résultats précédents???
merci ...

Citation
l'intelligence ce n'est pas ce que l'on sais mais ce que l'on fais quand on ne sais pas...
 
Hors ligne jacque # Posté le 15/04/2011 à 02:34:21
And there will be cake
Avatar

Avis : Très bon

Ville : Sherbrooke
Pays : Canada

Que veux-tu dire ? Quand tu fais un calcul, tu stockes le résultat dans une variable. Tu peux ensuite faire d'autres calculs avec ce résultat, puis stocker le nouveau résultat dans la même variable à la place.
Code : Pascal
1
2
3
1+3 > A
A+2 > A
A/5 > A

Le programme fait donc
1+3=4
4+2=6
6/5=1.2

Sinon, très bon tuto. Le manuel de la calculatrice était pas très clair, et j'avais l'air étrange quand on me voyait le lire à la récréation :)

Ah, pratique, je ne savais pas qu'on pouvait remplacer le ? dans un input. Bien ! J'ai passé environ 4 heures pour faire un programme qui calcule la formule quadratique à partir des valeurs A, B et C. Pour les matheux qui sont intrigués...
(-b+racine(b^2-4ac))/(2a)=x_1
(-b-racine(b^2-4ac))/(2a)=x_2
Comme le calcul est long, on a tendance à faire des fautes (oublier des parenthèses par exemple !), alors mon programme utilise des input pour demander la valeur de A, B et C.
Si b^2-4ac est négatif, on ne peut faire de calcul, alors on donne un message d'erreur "RACINE NÉGATIVE", si A=0, on donne un message "DIVISION PAR ZERO". Sinon, on affiche la ou les réponses possibles, et le résultat en fraction.

Je me demande si il serait possible de déterminer si une valeur est une fraction ou un nombre entier... un genre de (si valeur_arrondie = valeur, faire...) et (si fraction_impossible, faire...)

L'autre phrase de ma signature est vraie. L'autre phrase de ma signature est fausse.
 
Hors ligne BIzOX # Posté le 20/01/2012 à 22:28:22
Ruffneck Bass
Avatar

J'ai même fais encore plus court pour le programme de calcul de l'air :)

Code : Autre
1
2
3
4
EffEcr
Input "LONGUEUR :",A
Input "LARGEUR :",B
Disp A*B


:p

Voir tous les commentaires