Section courante

A propos

Section administrative du site

Les chaînes de caractères

Cette page décrit les chaînes de caractères et les fonctions associées à la gestion des chaînes de caractères. Chaque chaîne de caractères doit être dimensionnée (voir instruction DIM) et chaque variable de chaîne de caractères doit se terminer par un $. Une chaîne de caractères elle-même est un groupe de caractères «enchaînés» ensemble. Les caractères individuels peuvent être des lettres, des chiffres ou des symboles (y compris les symboles spéciaux du clavier ATARI). Une sous-chaîne de caractères fait partie d'une chaîne de caractères plus longue et toute sous-chaîne de caractères est accessible dans ATARI BASIC si la chaîne de caractères a été correctement dimensionnée. Les caractères d'une chaîne de caractères sont indexés de 1 à la longueur actuelle de la chaîne de caractères, étant inférieure ou égale à la longueur dimensionnée de la chaîne de caractères.

Les fonctions de chaîne de caractères décrites dans cette page sont :

ASC

Format : ASC(sexp)

Exemples : 100 A = ASC(AS)

Cette fonction renvoie le numéro de code ATASCII pour le premier caractère de l'expression de chaîne de caractères (sexp). Cette fonction peut être utilisée en mode direct ou différé. Le code source suivant est un court programme illustrant la fonction ASC :

  1. 10 DIM A$(3)
  2. 20 A$="E"
  3. 30 A=ASC(A$)
  4. 40 PRINT A

Une fois exécuté. Ce programme affiche un 69 étant le code ATASCII pour la lettre "E". Notez que lorsque la chaîne de caractères elle-même est utilisée, elle doit être placée entre guillemets.

CHR$

Format : CHR$(aexp)

Exemples : 100 PRINT CHR$(65)
                100 A$=CHR$(65)

Cette fonction de chaîne de caractères renvoie le caractère, au format chaîne de caractères, représenté par le numéro de code ATASCII entre parenthèses. Un seul caractère est renvoyé dans les exemples ci-dessus, la lettre A est renvoyée. À l'aide des fonctions ASC et CHR$, le programme du code source suivant permet d'afficher les lettres majuscules de l'alphabet :

  1. 10 FOR I=0 TO 25
  2. 20 PRINT CHR$(ASC("A")+I)
  3. 30 NEXT I

Remarque : Il ne peut y avoir qu'un seul STR$ et un seul CHR$ dans une comparaison logique. Par exemple, A=CHR$(1) (CHR$(2) n'est pas une opération valide.

LEN

Format : LEN(sexp)

Exemple : 100 PRINT LEN(A$)

Cette fonction renvoie la longueur en octets de la chaîne de caractères désignée. Cette information peut ensuite être affichée ou utilisée ultérieurement dans un programme. La longueur d'une variable chaîne de caractères est simplement l'index du caractère se trouvant actuellement à la fin de la chaîne de caractères. Les chaînes de caractères ont une longueur de 0 jusqu'à ce que des caractères y soient entreposés. Il est possible d'entreposer au milieu de la chaîne de caractères en utilisant des index. Cependant, le début de la chaîne de caractères contiendra des déchets à moins que quelque chose n'y ait été entreposé auparavant.

La routine du code source suivant illustre une utilisation de la fonction LEN :

  1. 10 DIM A$(10)
  2. 20 A$="ATARI"
  3. 30 PRINT LEN(A$)

Le résultat de l'exécution du programme ci-dessus serait 5.

STR$

Format : STR$(aexp)

Exemple : A$=STR$(65)

Cette fonction numérique sous forme de chaîne de caractères renvoie la forme chaîne de caractères du nombre entre parenthèses. L'exemple ci-dessus renverrait le nombre réel 65, mais il serait reconnu par l'ordinateur comme une chaîne de caractères.

Remarque : Il ne peut y avoir qu'un seul STR$ dans une comparaison logique. Par exemple, A=STR$(1) > STR$(2) n'est pas valide et ne fonctionnera pas correctement.

VAL

Format : VAL(sexp)

Exemple : 100 A=VAL(A$)

Cette fonction renvoie un nombre de même valeur que le nombre entreposé sous forme de chaîne de caractères. C'est l'opposé d'une fonction STR$. En utilisant cette fonction, l'ordinateur peut effectuer des opérations arithmétiques sur des chaînes de caractères comme indiqué dans l'exemple de programme du code source suivant :

  1. 10 DIM B$(5)
  2. 20 B$="10000"
  3. 30 B=SQR(VAL(B$))
  4. 40 ? "LA RACINE CARREE DE ";B$;" EST ";B"

Lors de l'exécution, l'écran affiche LA RACINE CARREE DE 10000 EST 100.

Il n'est pas possible d'utiliser la fonction VAL avec une chaîne de caractères ne commençant pas par un nombre ou ne pouvant pas être interprétée par l'ordinateur comme un nombre. Elle peut cependant interpréter des nombres à virgule flottante, par exemple VAL("1E9") renvoie le nombre 1000000000.

Seul le champ numérique sera traduit, tandis que le texte sera ignoré. Par exemple :

  1. A$="5 SUM"
  2. VAL(A$)=5

Manipulations de chaînes de caractères

Les chaînes de caractères peuvent être manipulées de différentes manières. Elles peuvent être divisées, concaténées, réorganisées et triés. Les paragraphes suivants décrivent les différentes manipulations.

Concaténation de chaînes

La concaténation signifie rassembler deux ou plusieurs chaînes de caractères pour former une seule grande chaîne de caractères. Chaque chaîne de caractères à inclure dans une chaîne de caractères plus grande est appelée une sous-chaîne de caractères. Chaque sous-chaîne de caractères doit être dimensionnée (voir DIM). Dans ATARI BASIC, une sous-chaîne de caractères peut contenir jusqu'à 99 caractères (espaces compris). Après la concaténation, les sous-chaînes de caractères peuvent être entreposées dans une autre variable de chaîne de caractères, affichées ou utilisées dans des sections ultérieures du programme. Le code source suivant est un exemple de programme illustrant la concaténation de chaînes de caractères. Dans ce programme, A$, B$ et C$ sont concaténés et placés dans A$ :

  1. 10 DIM A$(100),B$(100),C$(100)
  2. 20 A$="CHAINE DE CARACTERES/SOUS-CHAINE DE CARACTERES SONT DISCUTES"
  3. 30 B$="DANS ATARI BASIC-UN GUIDE D'APPRENTISSAGE"
  4. 40 C$="----LES CHAINES DE CARACTERES"
  5. 50 A$(LEN(A$)+1)=B$
  6. 60 A$(LEN(A$)+1)=C$
  7. 70 PRINT A$

Fractionnement des chaînes de caractères

Le format d'une variable de chaîne de caractères d'index est le suivant :

svar(aexp1[.aexp2])

Le svar est utilisé pour indiquer le nom de la variable chaîne de caractères sans index (avec $). aexp1 indique l'emplacement de début de la sous-chaîne de caractères et aexp2 (si utilisé) indique l'emplacement de fin de la sous-chaîne de caractères. Si aucun aexp2 n'est spécifié, alors la fin de la sous-chaîne de caractères est la fin actuelle de la chaîne de caractères. L'emplacement de départ ne peut pas être supérieur à la longueur actuelle de la chaîne de caractères. Les deux exemples de programmes du code source suivant illustrent une chaîne de caractères divisée sans emplacement de fin indiqué et une chaîne de caractères divisée avec un emplacement de fin indiqué :

  1. 10 DIM S$(5)
  2. 20 S$="ABCD#"     
  3. 30 PRINT S2(2)
  4. 40 END

Le résultat est BCD# (sans emplacement de fin)

  1. 10 DIM S$(20)
  2. 20 S$="ATARI 800 BASIC"     
  3. 30 PRINT S$(7,8)
  4. 40 END

Le résultat est 80 (avec emplacement de fin)

Comparaisons et tris de chaînes de caractères

Dans les comparaisons de chaînes de caractères, les opérateurs logiques sont utilisés exactement de la même manière qu'ils le sont avec les nombres.

Lorsque vous utilisez des opérateurs logiques, n'oubliez pas que chaque lettre, chiffre et le symbole reçoit un numéro de code ATASCII. Quelques règles générales s'appliquent à ces codes :

Remarque : le système de gestion de la mémoire d'ATARI BASIC déplace les chaînes de caractères dans la mémoire pour faire de la place à de nouvelles instructions. Cela fait varier l'adresse de la chaîne de caractères si un programme est modifié ou si le mode Direct est utilisé.



Dernière mise à jour : Dimanche, le 10 mars 2024