| ASC (< Chaîne Alphanumérique > ) Donne la valeur ASCII du premier caractère d'une chaîne alphanumérique. |
| Utilisation | Vous voulez mettre une majuscule sur la première lettre d'un mot. Soit un mot « MOT$ » qui représente un nom propre, et prend donc une majuscule. Si ce mot a été entré par l'opérateur, il peut automatiquement prendre une majuscule de la façon suivante :1000 A = ASC(MOT$) 1010 IF A> 96 THEN MOT$ = CHR$(A-32) + RIGHT$(MOT$, LEN(MOT $) - 1 ) 2000 PRINT MOT $A>96 indique que la lettre est une minuscule, CHR$(A-32) transforme une minuscule en majuscule, RIGHT$(MOT$, LEN(M0T$)- 1 ) est égal à MOT$, la première lettre exclue.De même, on peut imaginer dans un traitement de textes une telle option qui met automatiquement des majuscules après les points, les supprime après les points-virgules, les virgules, ou met un blanc après les virgules, points-virgules et points. Analyse du problème : Le fichier texte étant stocké en mémoire sous forme ASCII, il suffit de le décrire du début à la fin en recherchant les caractères point, virgule et point-virgule. Ce qui se traduit par l'organigramme suivant : 
|
| CHR$(< Nombre entier >) Inverse de la fonction ASC. Transforme un code ASCII en un caractère alphanumérique correspondant. |
| Utilisation | CHR$ permet, par exemple, d'insérer des codes de contrôles dans la redéfinition d'une touche. Par exemple, le « 0 » du pavé numérique peut être redéfini en « RUN + CR » de la façon suivante : KEY 138, "RUN" + CHR$(13), ce qui provoquera l'exécution de la commande RUN. |
| Autre utilisation | Permet de définir des chaînes de caractères complexes (de longueur inférieure à 255 caractères) pour afficher avec un seul ordre tout un écran. Soit l'écran suivant : 
Appelons A$ la chaîne de caractères qui représentera l'écran. Cette chaîne aura la structure suivante : A$ = SPACE$(12) + "TITRE" + CHR$(13) + CHR$(13) + CHR$(13) + CHR$(13) + CHR$(13) A$ = A$ + SPACE$(3) + "C01 " + etc.L'ordre « PRINT A$ » affichera l'écran que l'on vient de définir. |
| |
| INSTR([< Nombre entier n >, ]< Chaîne 1>, < Chaîne 2 >) Cherche si une sous-chaîne (Chaîne 2) appartient à une chaîne (Chaîne 1) en commençant la scrutation à partir du caractère indiqué « n » ou du premier caractère si rien n'est indiqué. Si « Chaîne 1 » contient « Chaîne 2 », INSTR donne la première occurrence de « Chaîne 2 » dans « Chaîne 1 » ; sinon INSTR donne 0. |
| Utilisation | Par exemple, dans le jeu du pendu, l'instruction INSTR peut être utilisée pour voir si la lettre proposée fait partie du mot à découvrir. Soit M$ le mot à découvrir, et L$ la lettre proposée : INSTR (M$, L$)= 0 si la lettre ne fait pas partie de M$, INSTR (M$, L$) = Position de la première lettre L$ dans M$ sinon. |
| Autres utilisations | a) Dans un environnement industriel bruité¹, cette commande peut servir à la reconnaissance de données transitant sur une ligne de communications entre deux ordinateurs.- ¹) Un environnement industriel bruité est un local dans lequel des parasites électriques peuvent parvenir sur un ordinateur (parasites liés à des champs électrostatiques ou magnétiques, ou à des ruptures de courant de haute intensité).
Soit D$ l'ensemble des mots reconnus par l'ordinateur récepteur, appelé dictionnaire par la suite.Soit M$ un message reçu par l'ordinateur récepteur, émis par l'émetteur, tel que M$ appartienne au dictionnaire. Le vocabulaire émis étant limité, l'ordre INSTR peut servir à identifier un mot émis qui a été plus ou moins bien reçu, et dont une partie seulement est identique à un des mots du dictionnaire. Supposons que le mot reçu soit composé de n caractères, nous allons comparer ce mot à tous les mots du dictionnaire, pour essayer de le reconnaître, puis une partie du mot, jusqu'à ce que INSTR (d$, M$) < >0 (où d$ est un mot de D$). Nous aurons alors probablement identifié le mot émis. b) Analyse syntaxique dans un jeu d'aventures : Dans les jeux d'aventures, une grande partie du jeu est basée sur un analyseur syntaxique qui « comprend » les phrases que vous entrez au clavier. Comment fonctionne cet analyseur ? Prenons un cas très simple : il ne peut reconnaître que les phrases constituées d'un verbe et d'un sujet. (Par exemple : « PRENDRE HACHE »). 
Les verbes sont définis dans un dictionnaire de verbes qui rassemble tous les verbes « compréhensibles » par la machine. Soit V$ ce dictionnaire. De même pour les sujets. Soit S$ le dictionnaire des sujets. Nous appellerons v$ un élément de V$, et s$ un élément de S$. Soit enfin une phrase P$ entrée par le joueur. L'extraction des verbe et sujet de P$ se fera de la manière suivante : (voir organigramme p. 33). De même pour les sujets. |
| |
| LEFT$(< Chaîne >, < Entier n >) Extrait les n caractères les plus à gauche de la chaîne soumise. |
| Utilisation | Reprenons l'exemple précédent : l'analyseur syntaxique. Il peut paraître lassant au joueur de taper les mots-clés verbes et sujets en entier à chaque commande, et une bonne amélioration du jeu pourra consister à taper les quatre premières lettres (par exemple) de chaque mot-clé pour aller plus vite. |
| Réalisation | Au lieu d'analyser INSTR(P$, v$(I)), nous analyserons : INSTR(P$, LEFT$(v$(I), 4)) donc les 4 premières lettres du mot-clé. |
| |
| LEN(< Chaîne >) Donne le nombre de caractères de la chaîne. |
| Utilisation | Une chaîne de caractères doit être stockée dans un fichier et la place maximale prévue est de 30 caractères. Si la chaîne à stocker A$ fait plus de 30 caractères (LEN(A$)>30), on stockera par exemple les 30 premiers caractères (LEFT$(A$, 30)) dans le fichier. |
| Autre utilisation | De même, on peut utiliser LEN pour tester la limite supérieure d'une chaîne alphanumérique entrée au clavier, et, par exemple, interdire de dépasser une certaine limite dans un masque de saisie. Soit N cette limite. 100 B$ = " " 'Chaine lue 110 A$ = INKEY$:IF A$ = " " THEN 110 'Attente d'un caractere 120 PRINT A$; 'Lettre lue 130 B$ = B$+A$ 140 IF LEN(B$) = N THEN 160 'Fin de lecture 150 GOTO 110 160 'Passage a un autre champLigne 110 : Acquisition au clavier Ligne 140 : Test sur la longueur de la saisie. |
| |
| LOWER$(< Chaîne alphanumérique > ) Change dans une chaîne alphanumérique tous les caractères majuscules en caractères minuscules. |
| Utilisation | Soit un ensemble de mots M$, et un mot m$ entre au clavier. Nous voulons savoir si m$ appartient à M$ en considérant que seul compte l'ordre des lettres du mot, et pas le fait qu'il soit écrit en majuscules ou en minuscules. Si les mots de M$ sont écrits en minuscules, nous pourrons tester l'appartenance de m$ à M$ de la façon suivante : 
Ainsi, l'utilisateur pourra taper son texte en CAPS LOCK (Majuscules) ou en CAPS UNLOCK (Minuscules) ; la comparaison n'en sera pas affectée. |
| Autre utilisation | L'ordre LOWER facilite les tests du genre :100 INPUT "Voulez-vous continuer (O/N) ";R$ 110 IF R$ = "O" OR R$ = "o" THEN SUITE 120 IF R$="N" OR R$ = "n" THEN FIN 130 PRINT "Je ne comprends pas":GOTO 100Ligne 110 : Test de la touche "O" avec et sans SHIFT. Ligne 120 : Test de la touche "N" avec et sans SHIFT.qui sera remplacé par : 100 INPUT "Voulez-vous continuer (O/N) ";R$ 110 IF LOWER$(R$) = "o" THEN SUITE 120 IF LOWER$(R$) = "n" THEN FIN 130 PRINT "Je ne comprends pas": GOTO 100Ligne 110 : Test de la touche « O ». Ligne 120 : Test de la touche « N ». |
| |
| MID$(< Chaîne >, < Nombre entier n1 >[, < Nombre entier n2>]). Extrait une portion de chaîne à partir du caractère n1 jusqu'au caractère n2. Remarque : Cette fonction englobe les fonctions LEFT$ et RIGHT$. En effet : MID$ (A$, 1, N) = LEFT$ (A$, N), et MID$ (A$, LEN (A$)-N,N) = RIGHT$ (A$, N). |
| Utilisation | Extraction d'une sous-chaîne B$ d'une chaîne A$. Supposons que B$ soit encadrée d'astérisques. Le programme suivant réalise l'extraction de B$: 100 P1 = INSTR(A$,"*") 'Limite inférieure de B$ 110 P2 = INSTR(P1 + 1, A$, "*") 'Limite supérieure de B$ 120 C$ = MID$(A$, P1 +1, P2-P1 -1) 'Chaîne extraiteLigne 120 : C$ est la première chaîne entre trouvée dans A$. |
| Autre utilisation | Extraction de données numériques d'une chaîne alphanumérique du type : « La hausse du pouvoir d'achat aura été de 0,4 % en septembre ». 100 FOR I=1 TO LEN(A$) 110 B$ = MID$(A$, I, 1 ) 120 IF B$ = OR (B$ < AND B$> "/") THEN PRINT B$; 130 NEXT ILigne 120 : les caractères « : » et « / » encadrent les chiffres 0 et 9 dans la table des caractères ASCII. |
| |
| RIGHT$(< Chaîne alphanumérique >, < Nombre entier N >) Extrait les N caractères les plus à droite d'une chaîne alphanumérique.
|
| Utilisation | Extraction du dernier mot d'une chaîne. Par exemple dans la saisie d'un fichier du personnel travaillant dans une société, les articles « Nom » et « Prénom » ne sont pas forcément dissociés. Pour accéder au nom d'une personne, il faudra alors dissocier nom et prénom. Par exemple, pour l'article A$ « Prénom Nom », il faudra faire : 100 N = INSTR(A$, " ") 110 N$ = RIGHT$(A$, N + 1, LEN(A$)-N-1) 'Extraction |
| |
| SPACE$(< Nombre entier N) Permet d'afficher N blancs dans une instruction PRINT ou d'affecter N blancs à une chaîne de caractères complexe (Voir l'exemple donné dans CHR$). Remarque : Utiliser « SPACE$ » au-delà de 6 caractères pour optimiser la mémoire occupée par cet ordre. |
| Utilisation | Vous désirez centrer un titre sur la largeur de l'écran :100 MODE 2:L = 80 'en MODE 2, 40 en MODE 1 et 20 en MODE 0 110 A$= "Texte a centrer" 120 LE = LEN(A$) 'Longueur du texte a centrer 130 PRINT SPACE$ ((80-LE)/2);A$ 'Affichage centreLigne 130 : Calcul du nombre d'espaces à afficher pour centrer le texte et affichage. |
| |
| STR$( < Expression numérique > ) Convertit une donnée hexadécimale ou binaire en la même donnée exprimée en décimal. |
| Utilisation | Dans un utilitaire de mise au point de programmes assembleur (DEBUGGER), il peut être intéressant d'avoir de telles fonctions. Par exemple, dans le menu général, il peut y avoir une option « Changement de base ». Cette option activera le programme suivant :1000 PRINT "Entrez le nombre Hexa. ou Bin. a convertir en Décimal" 1010 PRINT "sous la forme &nnnn en Hexa. et & x nnnnnnnn en Bin." 1020 INPUT "Nombre a convertir";N 1030 PRINT STR$(N); "en décimal. "Ligne 1020 : Lecture du nombre à convertir. Ligne 1030 : Conversion et affichage. |
| |
| STRING$(< Nombre entier >, < Caractère >) Affiche N fois le même caractère. Cette fonction est une extension de « SPACE$ » qui se contente d'afficher N blancs. Effectivement, on a : STRING$(N,32) = SPACE$(N). |
| Utilisation | Par exemple pour tracer un tableau, les lignes de commentaires et de valeurs pourront être séparées par «_» en utilisant PRINT STR$(Longueur tableau, "_"). |
| |
| UPPER$(< Chaîne Alphanumérique >) Transforme les caractères minuscules d'une chaîne alphanumérique en caractères majuscules. Remarque : Cette fonction est l'inverse de LOWER$. |
| Utilisation | Voir LOWER$. |
| |
| VAL(< Chaîne de caractères >) Fournit la valeur numérique des premiers caractères de la chaîne indiquée. Si le premier caractère de la chaîne n'est pas un chiffre, cette fonction renvoie 0. Remarque : Si le signe « - » ou « . » suivi d'un caractère non numérique apparaît en début de chaîne, le message d'erreur « Type Mismach » sera affiché à l'écran. Exemples : VAL("12 fois 10=120") = 12 et VAL(".12") produit une erreur « Type Mismach ». |