Accueil > QBasic > QBasic – Le texte

QBasic – Le texte

This entry is part 14 of 30 in the series QBasic - Tutoriel
  1. LOCATE
  2. CSRLIN
  3. POS
  4. VIEW PRINT
  5. PRINT USING
  6. LEN, LEFT$, RIGHT$, MID$
  7. La table de caractères ASCII
  8. Espaces et tabulations
  9. L’instruction STRING$
  10. LTRIM$ et RTRIM$
  11. La casse…

Vous savez déjà qu’il est très aisé d’afficher du texte avec QBasic, grâce à l’instruction
PRINT. Mais vous êtes bien loin d’imaginer les fabuleuses possibilités de traiter le texte avec
Basic.


LOCATE


L’instruction LOCATE permet de positionnez le curseur à un endroit choisi par le programmeur.
Curieusement, lorsqu’on l’utilise, il faut spécifier d’abord les Y, puis les X. Par exemple,
pour écrire ‘Hello, It’s me !‘ à la 5 ligne et à la 15 colonne, il faudra écrire :

LOCATE 15, 5
PRINT « Hello, It’s me ! »

Si on veut, on peut afficher ou pas le curseur en écrivant 1 ou 0 en troisième argumant :

LOCATE 15, 5, 1′ Appuyez sur une touche pour continuer_
PRINT « Hello, It’s me ! »

On peut aussi définir la hauteur de ce curseur (très peut utilisé) grâce au quatrième et
cinquième argument.

LOCATE 15, 5, 1, 0, 31′ Le curseur est un carré
PRINT « Hello, It’s me ! »


CSRLIN


Cette instruction retourne le numéro de la ligne où se trouve le curseur :

LOCATE 15, 5, 1, 0, 31′ Le curseur est un carré
PRINT « Hello, It’s me ! »
PRINT « Le curseur est sur la ligne « ; CSRLIN


POS


POS renvoi le numéro de la colonne où se trouve le curseur. Curieusement, il faut
écrire un nombre quelconque dans les parenthèses suivant POS.

LOCATE 15, 5, 1, 0, 31′ Le curseur est un carré
PRINT « Hello, It’s me ! »
PRINT « Le curseur est sur la ligne « ; CSRLIN
PRINT « Le curseur est sur la colonne « ; POS(0)’ On a écrit 0, mais on aurrait pu
‘ écrire 666


VIEW PRINT


VIEW PRINT permet de redimensionner la fenêtre texte. On indique la première ligne,
puis la deuxième, avec TO entre les deux :

CLS
VIEW PRINT 5 TO 15
PRINT « Ce texte est écrit sur la première ligne de la fenêtre texte »


PRINT USING


PRINT USING affiche un texte (ou un nombre) suivant un format spécifié. Il vous faut
pour cela vous référer au tableau suivant :













































FORMATAGE D’UNE EXPRESSION NUMERIQUE
Caractères Effet
# Position d’un chiffre
. Positon du point décimal
, Doit être placée à gauche du point décimal. Il affiche une virgule tous les trois chiffres
+ Affiche le signe du nombre
^^^^ Ecriture scientifique (format exponentiel)
- Placé après la chaine. Affiche – après les nombres négatifs.
$$ Affiche $ à la gauche du nombre
** Remplace les espace de tête pas *
**$ Applique ** et $$
























FORMATAGE D’UNE EXPRESSION CHAÎNE DE CARACTÈRES
Caractères Effet
& affiche toute la chaîne
! Affiche seulement le premier caractère de la chaîne
\   \ Affiche les n + 2 premiers caractères de la chaîne, où n est le nombre d’espaces entre les deux barres.
_ Affiche le caractère suivant




Concrétement, qu’est ce que ça donne? Observez l’exemple suivant :

a = 3.14159265458#
a$ = « Hello, It’s me ! »
CLS
PRINT USING « #.## »; a
PRINT USING « ############^^^^ »; a
PRINT USING « +##.## »; a
PRINT USING « & »; a$
PRINT USING « ! »; a$
PRINT USING « \\ »; a$
PRINT USING « \ \ »; a$


LEN, LEFT$, RIGHT$, MID$


LEN, LEFT$, RIGHT$ et MID$ permettent de traiter facilement les chaînes de caractères.

  • LEN renvoi le nombre de caractère que contient une châine :

    CLS
    INPUT « Entrez du texte, n’importe quoi : « , Texte$
    PRINT « Vous avez écrit « ; LEN(Texte$);  » caractères. »

  • LEFT$ renvoi n caractères de la chaîne en partant de la gauche :

    CLS
    INPUT « Entrez du texte, n’importe quoi : « , Texte$
    INPUT « Combien de caractère de la gauche voulez-vous « ; C
    PRINT LEFT$(Texte$, C)

  • RIGHT$ renvoi n caractères de la chaîne en partant de la droite :

    CLS
    INPUT « Entrez du texte, n’importe quoi : « , Texte$
    INPUT « Combien de caractère de la droite voulez-vous « ; C
    PRINT RIGHT$(Texte$, C)

  • MID$ renvoi n caractères à un endroit spécifié de la chaîne :

    CLS
    INPUT « Entrez du texte, n’importe quoi : « , Texte$
    FOR i = 1 TO LEN(Texte$)
    PRINT « Caractère « ; i;  » : « ; MID$(Texte$,i ,1)
    NEXT i


La table de caractères ASCII


La table de caractères ASCII est une table qui regroupe 256 caractères spéciaux, numérotés de
0 à 255. Cette table est accéssible à tout moment par le biais de l’aide en ligne de QBasic:
Appuyez sur Shift + F1, double cliquez sur ‘Table des matières‘, puis sur ‘Codes de caractères
ASCII
‘ dans le cadre Référence.

Pour afficher ces caractères, on peut procéder de plusieurs façons:

  • De cette page d’aide, on peut copier le caractère désiré dans le presse papier grâce au
    menu ‘Edition’, puis le coller entre guillemets dans une instruction PRINT.

  • On peut afficher la plupart (je dis bien la plupart) de ces caractères directement en
    maintenant la touche ‘ALT’ enfoncée, puis en tapant le code correspondant au caractère.

  • On peut utiliser l’instruction CHR$


Pour utiliser l’instruction CHR$, il suffit d’écrire le code du caractère entre parenthèses
à la suite de CHR$. Le code suivant affiche tous les caractères de la table l’un à la suite de
l’autre:

CLS
FOR i = 0 TO 255
PRINT CHR$(i);
NEXT i

Au contraire, pour retrouver le code d’un caractère, il faut utiliser l’instruction ASC.
La programme suivant retourne le code du caractère écrit. Remarquer l’utilisation de LEFT$ :

INPUT « Entrez un caractère (seul le premier est pris en compte!) : « , Char$
Char$ = LEFT$(Char$, 1)
PRINT ASC(Char$)’ Utilisation de ASC


Espaces et tabulations


Pour afficher des espaces, le plus simple serait d’utiliser l’instruction PRINT ainsi :
PRINT  » « .

Ca marche, met admettons que le nombre d’espace varie a un moment du programme pour une raison
ou pour une autre? C’est pourquoi il existe l’instruction SPACE$ qui permet d’afficher un nombre n
d’espaces. Et ce nombre n peut varier. Le programme suivant écrit ‘Robert‘ puis ‘Dupont‘ 5
espaces plus loin :

PRINT « Robert »; SPACE$(5); « Dupont »

Dans ce cas là, on aurait pu utiliser l’instruction SPC qui a le même effet.
PRINT « Robert »; SPC(5); « Dupont » est équivalent.
Mais SPC n’est utilisable que dans une instruction PRINT. Autrement,
une erreur est provoquée. Par exemple :

Chaine$ = SPC(17)’ ATTENTION! Ce code est faut et provoque une erreur!

On lui préferera donc SPACE$.



Pour les tabulations, ont utilise l’instruction TAB, tout simplement, suivi du numéro
de la colonne. Le programme suivant illustre les possibilités de mise en page offertent par TAB :

CLS
PRINT TAB(25); « Au grand Bazar »
PRINT
PRINT « Article »; TAB(40); « PRIX »
PRINT STRING$(80, « - ») ‘ Nous détailleront l’instruction
PRINT « Ducati 916″; TAB(40); « 120 000 francs » ‘ STRING$ ci après
PRINT « Melon »; TAB(40); « 10 francs la pièce »
PRINT « L’Equipe »; TAB(40); « 4,90 francs »
PRINT « PlayStation »; TAB(40); « 790 francs. »
PRINT « Super »; TAB(40); « 8,76 francs le litre :(  »
PRINT STRING$(80, « - »)

Grâce aux tabulations, on peut créer des colonnes régulières.


L’instruction STRING$


L’instruction STRING$ permet de répeter un certain nombre de fois un caractère.
Avouez que dans l’exemple ci-dessus, il auraît tout de même fallut écrire précisément 80 fois
le caractère ‘-‘.


LTRIM$ et RTRIM$


Nous avons appris a rajouter des espaces. Ce serait bête de ne pas savoir les enlever, non ?
Les instructions LTRIM$ et RTRIM$ vont y remédier.

  • LTRIM$ (avec un L comme LEFT) supprime les espaces de gauche.

  • RTRIM$ (avec un R comme RIGHT) supprime les espaces de droite.


Exemple:

Chaine$ = SPACE$(5) + « Il y a 5 espaces de chaque cotés » + SPACE$(5)
PRINT « Au départ : »
PRINT Chaine$
Chaine$ = RTRIM$(Chaine$)
PRINT « Après RTRIM$ : »
PRINT Chaine$
Chaine$ = LTRIM$(Chaine$)
PRINT « Après LTRIM$ : »
PRINT Chaine$


La casse…


On appele casse la façon dont est écrite un texte, selon qu’il soit en MAJUSCULES (ou CAPITAL,
je ne vois pas la différence) ou en minuscules. On utilise alors LCASE$
ou UCASE$ suivant l’effet recherché.

  • LCASE$ (avec un L comme LOW) transforme la chaine en minuscules.

  • UCASE$ (avec un U comme UP) transforme la chaine en majuscule.


Exemple:

Chaine$ = « ceci EST une CHAINE où LA cAsSe EsT DIffErrEnTTe »
PRINT « Avant transformations : »
PRINT Chaine$
PRINT « Avec UCASE$ : »
PRINT UCASE$(Chaine$)
PRINT « Avec LCASE$ : »
PRINT LCASE$(Chaine$)

Remarquez que le caractère accentué (ici ù) n’a pas changé.

Series Navigation«QBasic – Maths, logique et diversQBasic – Le son»
Categories: QBasic Tags:
  1. Yves
    29/03/2002 à 15:40 | #1

    Sous le §
    La table de caractères ASCII:
    Avec…

    FOR i = 0 TO 255
    PRINT USING « ### »; i; SPC(2);
    PRINT CHR$(i),
    NEXT i

    … on se fait son petit tableau.
    Apparemment CHR$ ne peut pas être sur la
    même ligne que USING.
    Les numéros de code se suivent horizon-
    talement.

  2. Yves
    29/03/2002 à 15:52 | #2

    (suite)
    Dans le minicode précédent, il faut mettre  »  » à la place de SPC(2), puisque SPC n’est introduit qu’au § suivant.
    Par ailleurs ##### au lieu de ### ne met pas deux espaces entre le n° du code et ce qu’il code.

  3. Yves
    16/04/2002 à 17:18 | #3

    (suite(suite))
    petite correction:
    Si l’on remplace SPC(2) par  » « , il faut mettre ce dernier après un nouveau PRINT à la ligne d’après. Sinon on a le message d’erreur « Types incompatibles ».
    C’est en programmant qu’on devient programmeron.

  4. Régis
    02/10/2002 à 22:43 | #4

    Concernant caractères accentués qui apparaissent à l’écran, comment les imprimer ou les enregistrer dans un fichier « .DAT »
    Un gros merci à celui qui trouve je cherche depuis longtemps

  5. webmaster
    03/10/2002 à 15:07 | #5

    Il me semble que le seul problème qui puisse intervenir durant cette opération est que les tables de caractères entre windows et dos ne sont pas identiques. La seule solution est d’effectuer une conversion.

  6. 10
    20/03/2006 à 01:20 | #6

    Very nice and informative website.

  7. Popol
    22/01/2012 à 18:44 | #7

    j’ai aimé

  1. Pas encore de trackbacks