LES CHAINES DE CARACTERES
LISTE DES MOTS CLÉS SPÉCIFIQUES.
Mots clés du BBC BASIC.
" : délimite une chaine de caractères.
$ : en tant que préfixe, écrit une chaine de caractères suivie d'un retour chariot dans la mémoire.
$ : en tant que suffixe, indique une variable de types chaîne de caractères.
$$ : écrit une chaine de caractères terminé par NUL dans la mémoire.
ASC() : retourne la valeur ASCII du premier caractère d'une chaine de caractères.
CHR$() : retourne le caractère correspondant au code ASCII donné.
INSTR() : retourne la position d'une chaine de caractères dans une autre.
LEFT$() : retourne un certain nombre de caractères à gauche d'une chaine de caractères.
LEN() : retourne le nombre de caractères dans une chaine de caractères.
MID$() : retourne la partie dune chaine de caractères comprise entre deux bornes.
RIGHT$() : retourne un certain nombre de caractères à droite d'une chaine de caractères.
STR$() : convertie une valeur numérique en chaine de caractères.
STR$~() : convertie une valeur numérique dans sa forme hexadécimal en chaine de caractères.
STRING$() : retourne une chaine de caractères contenant plusieurs fois une autre.
VDU : configure certains paramètres de la fenêtre de sortie et/ou de ses composants.
Modules de la bibliothèque du BBC BASIC
fnusing.bbc : propose des fonctions pour formater l'affichage des chaines de caractères et .
mode7lib.bbc : propose des procédures pour utiliser des jeux de caractères alternatifs dans le MODE 7.
pdflib.bbc : propose des procédures et des fonctions permettant de créer des documents au format .pdf.
script.bbc : propose des procédures permettant de prendre en charges certains alphabets non latin.
stringlib.bbc : propose des fonctions pour convertir des chaines de caractères.
utf8lib.bbc : propose des fonctions pour la gestion correcte des caractères à la normes UTF-8.
CRÉATION D'UNE CHAINE DE CARARTÉRES.
Les variables de type chaine de caractères ont un suffixe $. Leur longueur n'est limitée que par la quantité de mémoire disponible.
Pour déclarer une variable de type chaine de caractères, il suffit de lui affecter une valeur, en indiquant après le signe égal (=) une séquence de caractères ASCII et en l'encadrant d'une paire de guillemets ("). Les signes " de début et de fin ne font pas partie de la valeur de la variable.
klangage$ = "BBC BASIC"
PRINT klangage$ : REM retourne BBC BASIC
Il est possible de déclarer une chaine de caractères ne contenant aucun caractère, nommée chaine vide, en ne plaçant aucun sigle entre les guillemets.
kvide$ = "" : PRINT kvide$ : REM retourne
Si la chaine de caractères doit contenir des guillemets, il faudra doubler ce caractère pour qu'il ne soit pas considéré comme balise de limite de la chaine de caractères.
kcitation$ = "Il lui dit : ""Bonjour ! "". "
PRINT kcitation$ : REM retourne Il lui dit : ""Bonjour ! "".
Le BBC BASIC permet de fusionner deux, ou plusieurs, chaines de caractères en insérant un signe plus (+) entre chaque chaine de caractères. Cette opération se nomme concaténation.
kdebut$ = "BBC"
kcentre$ = "BASIC"
kfin$ = "SDL 2.0"
klangage$ = kdebut$ + " " + kcentre$ + " " + kfin$
PRINT klangage$ : REM retourne BBC BASIC SDL 2.0
La fonction CHR$() permet de créer une chaine d'un seul caractère en utilisant le code ASCII de celui-ci. Pour créer une chaine contenant plus d'un caractère, on pourra :
- utiliser plusieurs fonctions CHR$() et / ou ;
- utiliser une ou plusieurs fonctions CHR$() avec des chaines de caractères ;
séparées par le signe + pour les assembler.
kexemple$ = "Debut : "
FOR kcode = 33 TO 126 STEP 15
PRINT CHR$( kcode ) ; " a le code ASCII " ; kcode
kexemple$ = kexemple$ + CHR$( kcode ) + " "
NEXT kcode
kexemple$ = kexemple$ + ": Fin."
PRINT kexemple$
retourne
! a le code ASCII 33
0 a le code ASCII 48
? a le code ASCII 63
N a le code ASCII 78
] a le code ASCII 93
l a le code ASCII 108
{ a le code ASCII 123
Debut : ! 0 ? N ] l { : Fin.
La fonction STRING$() permet de créer une chaine dans laquelle un modèle est recopié un certain nombre de fois. L'appel de cette fonction doit avoir la forme STRING$( copie , modele ) est recopié copie doit être un nombre entier et modele une chaine de caractères. La fonction STRING$() retournera alors une chaine de caractères comptant copie fois modele, les uns à la suite des autres sans aucune forme de séparation entre les copies. Si modele est une variable, sa valeur ne sera pas modifiée.
klangage$ = "BBC BASIC ! "
kcopie = 3
ktitre$ = STRING$( 3 , klangage$ )
PRINT ktitre$: REM retourne BBC BASIC ! BBC BASIC ! BBC BASIC !
PRINT STRING$( 3 , klangage$ ) : REM retourne BBC BASIC ! BBC BASIC ! BBC BASIC !
PRINT STRING$( 3 , "BBC BASIC ! " ) : REM retourne BBC BASIC ! BBC BASIC ! BBC BASIC !
PRINT STRING$( kcopie , klangage$ ) : REM retourne BBC BASIC ! BBC BASIC ! BBC BASIC !
La fonction STR$() permet de créer une chaine de caractères en convertissant une valeur numérique. L'appel doit avoir la forme STR$( valeur ) où valeur doit être une valeur numérique de n'importe quel type. Même si valeur est exprimé sous une forme hexadécimale, STR$() retourne une chaine de caractères exprimé avec une forme décimale, après avoir supprimé, si nécessaire, les signes et zéros non significatifs.
PRINT STR$( 123 ) : REM retourne 123
PRINT STR$( -123 ) : REM retourne -123
PRINT STR$( +123 ) : REM retourne 123
PRINT STR$( 1.23 ) : REM retourne 1.23
PRINT STR$( 01.230 ) : REM retourne 1.23
PRINT STR$( &7B ) : REM retourne 123
La fonction STR$~() permet de créer une chaine de caractères en convertissant, sous sa forme hexadécimale, une valeur numérique. L'appel doit avoir la forme STR$~( valeur ) où valeur doit être une valeur numérique de n'importe quel type. Même si valeur est exprimé sous une forme décimale, STR$~() retourne une chaine de caractères exprimé avec une forme hexadécimale, après avoir supprimé, si nécessaire, les signes et zéros non significatifs.
PRINT STR$~( 123 ) : REM retourne 7B
PRINT STR$~( -123 ) : REM retourne FFFFFF85
PRINT STR$~( +123 ) : REM retourne 7B
PRINT STR$~( 1.23 ) : REM retourne 1
PRINT STR$~( 01.230 ) : REM retourne 1
PRINT STR$~( &7B ) : REM retourne &7B
GESTION DES CHAINES DE CARACTÈRES.
Le BBC BASIC propose plusieurs fonctions pour exploiter et analyser le contenu des chaines de caractères. À noter que les fonctions dont le nom se termine par $ retournent aussi une chaine de caractère, et que les autres retournent une valeur numérique. Il conviendra, donc, de faire attention à ce que le type de variable, recevant le résultat du traitement par une fonction, corresponde bien au type retourné.
À noter que, dans BBC BASIC, le premier caractère d'une chaine de caractères à le rang 1 dans la chaine de caractères.
La fonction LEN() permet de connaitre la longueur d'une chaine de caractères, c'est-à-dire le nombre de caractères que contient cette chaine.
kdebut$ = "BBC" : PRINT LEN( kdebut$ ) : REM retourne 3
kcentre$ = "basic" : PRINT LEN( kcentre$ ) : REM retourne 5
kfin$ = "SDL 2.0" : PRINT LEN( kfin$ ) : REM retourne 7
kvide$ = "" : PRINT LEN( kvide$ ) : REM retourne 0
La fonction ASC() retourne la valeur du code ASCII du premier caractère de la chaine de caractères passée en argument. Si la chaine de caractères est vide la fonction retournera -1.
FOR klettre = 1 TO LEN( "BBC basic" )
PRINT ASC( MID$( "BBC basic" , klettre , 1 ) ) ;
NEXT klettre
Retourne 66 66 67 32 98 97 115 105 99
La fonction INSTR() recherche si une chaine de caractères est entièrement présente dans une autre chaine de caractères. Son appel doit avoir la forme INSTR( source , modele ) où source et modele doivent être des chaines de caractères. Si modele est présente dans source, INSTR() retournera la position du caractère où débute modele dans source. Si aucune correspondance n'est trouvée, INSTR() retournera 0. Rappel : dans BBC BASIC, le premier caractère d'une chaine est à la position 1.
kslogan$ = "Le BBC BASIC est puissant."
klangage$ = "BBC BASIC"
krecherche = INSTR( "Le BBC BASIC est puissant" , "BBC BASIC" )
PRINT krecherche : REM retourne 4
PRINT INSTR( kslogan$ , klangage$ ) : REM retourne 4
PRINT INSTR( "Le BBC BASIC est puissant" , "BBC" ) : REM retourne 4
PRINT INSTR( "Le BBC BASIC est puissant" , "BASIC" ) : REM retourne 8
PRINT INSTR( "Le BBC BASIC est puissant" , "basic" ) : REM retourne 0
PRINT INSTR( "Le BBC BASIC est puissant" , "Basic" ) : REM retourne 0
PRINT INSTR( "Le BBC BASIC est puissant" , "SDL" ) : REM retourne 0
La fonction LEFT$() permet d'extraire et de retourner le début d'une chaine de caractères, ou de modifier le début d'une chaine de caractères.
Si la fonction LEFT$() est utilisée seule, par exemple avec l'instruction PRINT, ou à la droite d'un signe =, c'est-à-dire après, elle retourne une chaine de caractères depuis le début de la chaine de caractères source et d'une longueur définie. L'appel de la fonction doit avoir la forme LEFT$( source , longueur ) où :
- source est la chaine de caractères modèle et ;
- longueur un nombre entier indiquant le nombre de caractères qui doivent être retournés, si longueur est :
- absent , longueur sera égal à LEN( source ) - 1 ;
- négatif ou supérieur à LEN( source ), LEFT$() retourne source ;
- 0, LEFT$() retourne une chaine vide.
kmessage$ = "Le BBC BASIC est un langage simple mais puissant."
klangage$ = LEFT$( kmessage$ , 12 )
PRINT klangage$ : REM retourne Le BBC BASIC
PRINT LEFT$( kmessage$ , 12 ) : REM retourne Le BBC BASIC
PRINT LEFT$( kmessage$ , 123 ) : REM retourne Le BBC BASIC est un langage simple mais puissant.
PRINT LEFT$( kmessage$ , -12 ) : REM retourne Le BBC BASIC est un langage simple mais puissant.
PRINT LEFT$( kmessage$ ) : REM retourne Le BBC BASIC est un langage simple mais puissant
PRINT LEFT$( kmessage$ , 0 ) : REM retourne
Si la fonction LEFT$() est utilisée à gauche un signe =, c'est-à-dire avant, elle remplacera le début d'une chaine de caractère par d'autres caractères avec la forme LEFT$( source, longueur ) = nouveau où nouveau doit être lui aussi une chaine de caractères. Dans ce cas, les longueur premiers caractères de nouveau remplaceront les longueur premiers caractères de source. À noter qu'avec cette forme, source doit être une variable et qu'il ne doit pas y avoir d'espace entre source et la virgule qui le suit, sinon une erreur sera détectée.
kslogan$ = "Le --- ----- est puissant."
PRINT kslogan$ : REM retourne Le --- ----- est puissant.
LEFT$( kslogan$, 12 ) = "Le BBC BASIC"
PRINT kslogan$ : REM retourne Le BBC BASIC est puissant.
PRINT LEFT$( "Le --- ----- est puissant.", 12 ) = "Le BBC BASIC" : REM retourne 0
Si longueur est supérieur à LEN( nouveau ), longueur prendra la valeur de LEN( nouveau ).
kslogan$ = "Le --- ----- est puissant."
PRINT kslogan$ : REM retourne Le --- ----- est puissant.
LEFT$( kslogan$, 12 ) = "Le BBC "
PRINT kslogan$ : REM retourne Le BBC ----- est puissant.
La fonction RIGHT$() permet d'extraire et de retourner la fin d'une chaine de caractères, ou de modifier la fin d'une chaine de caractères.
Si la fonction RIGHT$() est utilisée seule, par exemple avec l'instruction PRINT, ou à la droite d'un signe =, c'est-à-dire après, elle retourne une chaine de caractères depuis la fin de la chaine de caractères source et d'une longueur définie. L'appel de la fonction doit avoir la forme RIGHT$( source , longueur ) où :
- source est la chaine de caractères modèle et ;
- longueur un nombre entier indiquant le nombre de caractères qui doivent être retournés, si longueur est :
- absent, longueur sera égal 1 ;
- négatif ou supérieur à LEN( source ), RIGHT$() retourne source ;
- 0, RIGHT$() retourne une chaine vide.
kmessage$ = "Le BBC BASIC est un langage simple mais puissant."
kadjectif$ = RIGHT$( kmessage$ , 9 )
PRINT kadjectif$ : REM retourne puissant.
PRINT RIGHT$( kmessage$ , 9 ) : REM retourne puissant.
PRINT RIGHT$( kmessage$ , 98 ) : REM retourne Le BBC BASIC est un langage simple mais puissant.
PRINT RIGHT$( kmessage$ , -9 ) : REM retourne Le BBC BASIC est un langage simple mais puissant.
PRINT RIGHT$( kmessage$ ) : REM retourne .
PRINT RIGHT$( kmessage$ , 0 ) : REM retourne
Si la fonction RIGHT$() est utilisée à gauche un signe =, c'est-à-dire avant, elle remplacera le début d'une chaine de caractère par d'autres caractères avec la forme RIGHT$( source, longueur ) = nouveau où nouveau doit être lui aussi une chaine de caractères. Dans ce cas, les longueur premiers caractères de nouveau remplaceront les longueur premiers caractères de source. À noter qu'avec cette forme, il ne doit y avoir d'espace entre source et la virgule qui le suit sinon une erreur sera détectée et que source doit être une variable.
kslogan$ = "Le BBC BASIC est --------."
PRINT kslogan$ : REM retourne Le BBC BASIC est --------.
RIGHT$( kslogan$, 9 ) = "puissant."
PRINT kslogan$ : REM retourne Le BBC BASIC est puissant.
PRINT RIGHT$( "Le BBC BASIC est --------.", 9 ) = "puissant." : REM retourne 0
Si longueur est supérieur à LEN( nouveau ), longueur prendra la valeur de LEN( nouveau ).
kslogan$ = "Le BBC BASIC est --------."
PRINT kslogan$ : REM retourne Le --- ----- est --------.
RIGHT$( kslogan$, 9 ) = "simple."
PRINT kslogan$ : REM retourne Le BBC BASIC est --simple.
La fonction MID$() permet d'extraire et de retourner, ou de modifier, une partie d'une chaine le caractères.
Si la fonction MID$() est utilisée seule, par exemple avec l'instruction PRINT, ou à la droite d'un signe =, c'est-à-dire après, elle retourne une partie d'une chaine de caractères entre deux bornes. L'appel de la fonction doit avoir la forme MID$( source , position , longueur ) ou MID$( source , position ) où :
- source est la chaine de caractères modèle et ;
- position un nombre entier indiquant le rang du premier caractères qui doit être retourné, si position est ;
- absent, une erreur est retournée et le programme s’arrête ;
- négatif ou 0, MID$() retourne source ;
supérieur à LEN( source ), MID$() retourne une chaine vide ;
- longueur un nombre entier indiquant le nombre de caractères qui doivent être retournés, si longueur est :
- absent, longueur sera égal LEN( source ) - position ;
- négatif ou supérieur à LEN( source ) - position, longueur sera égal LEN( source ) - position ;
- 0, MID$() retourne une chaine vide.
kmessage$ = "Le BBC BASIC est un langage simple mais puissant."
klangage$ = MID$( kmessage$ , 4 , 9 )
PRINT klangage$ : REM retourne BBC BASIC
PRINT MID$( kmessage$ , 4 , 9 ) : REM retourne BBC BASIC
PRINT MID$( kmessage$ , 4 , 0 ) : REM retourne
PRINT MID$( kmessage$ , 4 , 123 ) : REM retourne BBC BASIC est un langage simple mais puissant.
PRINT MID$( kmessage$ , 4 , -123 ) : REM retourne BBC BASIC est un langage simple mais puissant.
PRINT MID$( kmessage$ , 0 , 12 ) : REM retourne Le BBC BASIC
PRINT MID$( kmessage$ , -4 , 12 ) : REM retourne Le BBC BASIC
PRINT MID$( kmessage$ , 4 ) : REM retourne BBC BASIC est un langage simple mais puissant.
Si la fonction MID$() est utilisée à gauche un signe =, c'est-à-dire avant, elle remplacera la partie désignée d'une chaine de caractère par d'autres caractères avec la forme MID$( source , position , longueur ) = nouveau où nouveau doit être lui aussi une chaine de caractères. Dans ce cas, les caractères de source allant de position à position + longueur seront replacés par les longueur premiers caractères de nouveau. À noter qu'avec cette forme, il ne doit y avoir d'espace entre source et la virgule qui le suit sinon une erreur sera détectée et que source doit être une variable.
kslogan$ = "Le --- ----- est puissant."
PRINT kslogan$ : REM retourne Le --- ----- est puissant.
MID$( kslogan$, 4 , 9 ) = "BBC BASIC."
PRINT kslogan$ : REM retourne Le BBC BASIC est puissant.
PRINT MID$( "Le --- ----- est puissant.", 4 , 9 ) = "BBC BASIC" : REM retourne 0
Si longueur est supérieur à LEN( nouveau ), longueur prendra la valeur de LEN( nouveau ).
kslogan$ = "Le --- ----- est puissant."
PRINT kslogan$ : REM retourne Le --- ----- est puissant.
MID$( kslogan$, 4 , 9 ) = "BBC"
PRINT kslogan$ : REM retourne Le BBC ----- est puissant.
RUBRIQUES.
Les types de variables pour plus de détails sur la déclaration des variables et leurs différents types.
L'affichage des textes pour plus de détails sur les fonctions d'affichage de texte.
Les caractères personnalisés pour pour plus de détails sur la création de caractères personnalisés.
Les valeurs des code ASCII pour plus de détails sur la correspondance des signes et leur code ASCII.
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
avec un exemple de résolution à télécharger pour vous inspirer.