QBasic – Le texte
- QBasic – Introduction au QBasic
- QBasic – Ecrire sur l’écran
- QBasic – Mathématiques élémentaires
- QBasic – La ponctuation (syntaxe)
- QBasic – Les variables
- QBasic – Les commentaires
- QBasic – Les constantes
- QBasic – Entrée de données
- QBasic – Les boucles inconditionnelles
- QBasic – Les boucles conditionnelles
- QBasic – Structure conditionnelle
- QBasic – Les cas
- QBasic – Maths, logique et divers
- QBasic – Le texte
- QBasic – Le son
- QBasic – Dessiner
- QBasic – Sous-programmes, fonctions et procedures
- QBasic – Les types de variables
- QBasic – Les tableaux
- QBasic – Les types personalisés
- QBasic – L’organisation des données
- QBasic – QBasic et le système d’exploitation
- QBasic – L’accès aux fichiers
- QBasic – Le traitement des erreurs
- QBasic – La manette de jeu
- QBasic – Encore plus loin dans le graphisme
- QBasic – La mémoire
- QBasic – Le langage machine et la souris
- QBasic – L’heure, la date, le temps
- QBasic – Le clavier
- LOCATE
- CSRLIN
- POS
- VIEW PRINT
- PRINT USING
- LEN, LEFT$, RIGHT$, MID$
- La table de caractères ASCII
- Espaces et tabulations
- L’instruction STRING$
- LTRIM$ et RTRIM$
- 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 :
| 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 $$ |
| 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 instructionPRINT. - 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 del’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
nd’espaces. Et ce nombre
n peut varier. Le programme suivant écrit ‘Robert‘ puis ‘Dupont‘ 5espaces 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 « 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é.
Categories: QBasic
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.
(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.
(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.
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
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.
Very nice and informative website.
j’ai aimé