Les chaînes de caractères
GW-BASIC (PC-BASIC)
Plus tôt, nous avons
longuement discuté de la chaîne. C'est maintenant le temps pour plus
d'informations sur les fonctions de chaîne de caractères de GW-BASIC.
STRING$
Zing devient STRING$ ... et lorsque vous l'utilisez pour créer une chaîne de caractères, vous pouvez produire des graphiques, des tableaux et tout autre affichage textuel.
La syntaxe de STRING$ est la suivante :
STRING$ (longueur,caractère)
longueur est un nombre compris entre 0 et 255.
caractère est soit une
expression de chaîne pour un caractère, soit une expression numérique pour un
code ASCII. Si vous utilisez une constante de chaîne, placez-la entre
guillemets.
Le nombre de caractères
affichés dépend du nombre que vous spécifiez en longueur. Les caractères
utilisés dépendent du caractère ou du code ASCII que vous spécifiez.
Par exemple:
5 CLS
10 X$ = STRING$(13,"*")
20 PRINT X$; "LIGNES"; X$
30 FOR X = 1 TO 1000: NEXT X
40 SCREEN 7
50 LINE (0,0)-(255,191)
60 LINE (0,191)-(255,0)
70 GOTO 70
La ligne 10 attribue à X$ la valeur STRINGS (13,"*") - une chaîne de 13 astérisques.
La ligne 20 indique à l'ordinateur d'afficher X$, puis le mot LIGNES, suivi à nouveau de X$. Puisque X$ est égal à 13 astérisques ("*"). ces caractères sont imprimés avant et après LIGNES.
Quoi? Vous voulez embellir encore plus le titre! Très bien, ajoutez cette ligne:
15 Y$ = STRING$(31,42): PRINT Y$
Cette fois, vous dites à l'ordinateur d'afficher le caractère représenté par le code ASCII 42. Et, comme vous l'avez probablement deviné, le code ASCII 42 représente un astérisque.
Programme faites-le vous
même
Avez-vous déjà rédigé des listes pour cocher les tâches que vous
ou d'autres personnes devez effectuer ?
En utilisant STRINGS, écrivez un
programme qui crée une liste de vérification.
5 CLS
10 X$ =
STRING$(30,"-")
20 PRINT TAB(7) "MATH" TAB(14) "ORAL" TAB(22) "LECTURE"
30
PRINT X$
40 PRINT "BILL" TAB(8) "X"
50 PRINT X$
60 PRINT
"SUE" TAB(16) "X"
70 PRINT X$
80 PRINT "JON" TAB(8) "X"
90
PRINT X$
100 PRINT "MARY" TAB(24) "X"
110 PRINT X$
120 GOTO
120
Je pense que je vois
quelques cordes devant !
(INSTR)
Si vous souhaitez rechercher une deuxième chaîne dans une chaîne, utilisez INSTR.
La syntaxe d'INSTR est :
INSTR (Position, recherche-chaîne, cible)
position spécifie la position dans la chaîne de recherche à laquelle la recherche doit commencer (0 à 255). Si vous omettez la position, l'ordinateur commence automatiquement au premier caractère.
recherche-chaîne est la chaîne à rechercher.
cible est la chaîne à
rechercher.
INSTR renvoie un 0 si l'une des conditions suivantes est
vraie :
La position est supérieure au
nombre de caractères dans la recherche-géniteur.
recherche-chaîne est nulle.
Il ne peut pas trouver la cible.
Regardez comment STR fonctionne dans le
programme suivant :
5 CLEAR 500
10 CLS
15
INPUT "TEXTE A RECHERCHER";S$
20 INPUT "TESTE CIBLE";T$
25 C=0: P=1 'P =
POSITION
30 F = INSTR(P,S$,T$)
35 IF F=0 THEN 60
40 C=C+1
45 PRINT
LEFT$ (S$ ,F-1 )+STRING$(LEN(T$), CHR$(42)) + RIGHT$(S$,LEN(S$) -F- LEN(T$)+1 )
50 P=F+LEN (T$)
55 IF P<=LEN(S$)-LEN(T$)+1 THEN 30
60 PRINT "TROUVER";
C;"OCCURRENCES"
Ce qui suit est un exemple d'exécution. Cependant, vous pouvez saisir le texte dont vous avez besoin.
TEXTE A RECHERCHER? ALLO LA
MONDE
TESTE CIBLE? LA
ALLO ** MONDE
TROUVER 1 OCCURRENCES
Ok
Écrivez un programme qui renvoie la première et la seconde occurrences du B dans ABCDEB.
5 CLS
10 X$ = "ABCDEB"
20
Y$="B"
30 PRINT INSTR(X$,Y$) ; INSTR(4,X$,Y$)
Le programme de stockage de données suivant contient une liste de diffusion de noms et d'adresses. C'est un moyen simple de stocker des informations. Notez que nous avons économisé de l'espace de stockage en ne mettant pas d'espaces entre les mots.
Cela rend la lecture difficile pour vous, mais pas pour l'ordinateur.
Notez également que nous attribuons un astérisque ("") aux codes postaux afin que l'ordinateur ne les confond pas avec les numéros de rue.
Dans ce cas, nous recherchons les noms et adresses de toutes les personnes qui vivent dans la zone spécifiée par le code postal 650. Par conséquent, *650 est la cible (A$).
10 A$ = "*650"
15 X = 1
20 X$ = "JAMES SMITH,6550HARISON,DALLASTX*75002:SUE SIM,RT3.GRAVIOSMO*65084;
LYDIA LONG,3445SMITHST,ASBURYNJ*32004:BOB STRONG,BOX 60,EDMONTONALBERTACA:TIMMY
DUNTON, PIERMONTMO*67078"
50 P = INSTR(X$,A$): PRINT P
Exécutez le programme. Votre
écran affiche :
61
OK
Cela vous indique que la chaîne contient un nom et une adresse dont vous avez besoin.
Ne changez jamais de cheval
dans la corde médiane
(MID$)
L'instruction MID$ vous offre une puissante capacité d'édition de chaînes en vous permettant de remplacer une partie d'une chaîne par une autre. La syntaxe de MID$ est la suivante :
MID$ (ancienne chaîne, position, longueur) = nouvelle chaîne
ancienne chaîne est le nom de variable de la chaîne à remplacer.
position est le numéro de la position du premier caractère à être changé.
longueur est un nombre de caractères à remplacer.
Si vous omettez longueur, l'ordinateur remplace tout ancienne chaîne, nouvelle chaîne est la chaîne qui remplace la partie spécifiée de ancienne chaîne.
Remarque : Si nouvelle chaîne contient moins de caractères que la longueur spécifiée, l'ordinateur remplace la totalité de nouvelle chaîne. nouvelle chaîne a toujours la même longueur que ancienne chaîne.
Pour voir ce que nous voulons dire, exécutez ce programme :
5 CLS
10 A$ = "KANSAS CITY.
MO"
20 MID$(A$,14)="KS"
30 PRINT A$
La ligne 10 attribue à A$ la valeur KANSAS CITY, MO. Ensuite, la ligne 20 indique à l'ordinateur d'utiliser MID$ pour remplacer une partie de l'ancienne chaîne (A$) par KS, à partir de la position 14.
Changez la position 14 en 8 et exécutez le programme. Le résultat est:
KANSAS CITY. MO
Ajoutez maintenant l'option de longueur à la ligne 20 :
20 MID$(A$,14,2)="KS"
Notez que cela n'affecte pas le résultat puisque nouvelle chaîne et ancienne chaîne contiennent tous les deux deux caractères.
Changez la longueur en 1:
20 MID$(A$,14,1)="KS"
L'ordinateur remplace un seul caractère dans ancienne chaîne, en utilisant le premier caractère dans KS.
Vous constaterez que MID$ est doublement efficace lorsqu'il est utilisé avec INSTR. En utilisant les deux, vous pouvez "rechercher et détruire" du texte. recherches INSTR ; MID$ modifie ou "détruit".
Le programme suivant illustre cela :
5 CLS
10 INPUT "ENTRER UN
MOIS ET UN JOUR (MM/DD) ";X$
20 P = INSTR(X$,"/")
30 IF P = 0 THEN 10
40 MID$(X$,P,1)= "-"
50 PRINT X$ " EST PLUS FACILE À LIRE. N'EST-CE PAS? "
Dans ce programme, IN5TR
recherche une barre oblique (/). Lorsqu'il en trouve une, MID$ la remplace par
un trait d'union (-).
Imaginez que vous travailliez dans une compagnie de
téléphone à l'époque où les centraux téléphoniques passaient de caractères alpha
à 10 caractères numériques.
Écrivez un programme qui utilise MID$ pour remplacer tous les échanges alpha par des nombres. Assurez-vous de libérer suffisamment d'espace pour les chaînes ou vous obtiendrez une ERREUR.
5 CLS
10 DIM TBL$(26)
20
FOR I=0 TO 25
30 READ TBL$ (I) : NEXT I
40 PRINT "ENTRER LE NUMÉRO DE
TÉLÉPHONE À L'ANCIENNE"
50 INPUT N$
60 IF N$=" " THEN 40
70 FOR I=1 TO
LEN(N$)
80 C$=MID$(N$,I,1)
90 IF C$< "A" OR C$ >"Z" THEN 120
100 C$=TBL$(ASC(C$)-65)
110 MID$(N$,I)=-C$
120 NEXT I
130 PRINT "LE NOUVEAU STYLE = ";N$
140
REM A B C D E F
150 DATA "2" ,"2" ,"2" ,"3" ,"3" ,"3"
160 REM G H I J K L
170 DATA "4" ,"4" ,"4" ,"5" ,"5" ,"5"
180 REM M N 0 P Q R
190 DATA "6"
,"6" ,"6" ,"7" ,"Q" ,"7"
200 REM S T U V W X
210 DATA "7" ,"8" ,"8" ,"8"
,"9" ,"9"
220 REM Y Z
230 DATA "9" ,"Z"