Les mots
Si vous avez consulter d'autres pages, vous avez découvert que les micro-ordinateurs peuvent manipuler n'importe quelle collection de symboles, pas seulement des nombres. Pour que l'ORIC sache que les symboles doivent être considérés comme tels et ne les confondent pas avec des variables, ils doivent être placés entre guillemets.
Donc si vous tapez :
- PRINT A
entraînera l'affichage d'un zéro, car il est considéré comme une variable.
- PRINT "A"
entraînera l'affichage de A, car il est entre guillemets.
Les variables de chaîne de caractères sont identifiées par un signe dollar à la fin. Par exemple, A$ ou A3$. N'oubliez pas qu'ORIC ne lit que les deux premiers caractères d'un nom de variable, donc BIG$ est identique à BIKE$.
Les chaînes de caractères sont attribuées à l'aide de LET, bien que cela soit facultatif :
- LET A$ = "BONJOUR"
est le même instruction que celle-ci :
- A$ = "BONJOUR"
Le seul opérateur mathématique simple pouvant être utilisé avec des chaînes de caractères est «+». Donc :
- 10 A$="BONJOUR"
- 20 B$=A$+A$
- 30 PRINT B$
affichera BONJOURBONJOUR.
La ligne 20 ne pouvait pas être écrite sous la forme B$=2*A$. La longueur totale d'une chaîne de caractères ne doit pas dépasser 255 caractères. Pour trouver la longueur d'une chaîne de caractères, il existe une fonction appelée LEN :
affichera 7. Cette valeur peut être affectée à une variable.
Bien qu'une chaîne de caractères ne puisse pas être utilisée directement comme nombre, il est possible de la convertir en nombre à l'aide de la fonction VAL :
Étant donné que V n'est pas une variable de chaîne de caractères, il peut être manipulé comme un nombre et PRINT 2*V renverra une valeur de 112. Si le premier caractère de la chaîne de caractères est un caractère alphabétique, la valeur zéro est renvoyée.
Il existe une fonction fonctionnant dans le sens opposé. STR$ convertit une expression numérique en chaîne de caractères :
Vous ne pouvez pas faire la différence entre PRINT A et PRINT A$ - les résultats semblent identiques. Cependant, PRINT A + A produira 256, alors que PRINT A$ + A$ produira 128 128 car ORIC les traite différemment.
L'utilisation de la fonction ASC renverra le code pour n'importe quel caractère du clavier. La fonction CHR$ fonctionne dans le sens inverse et convertit un nombre compris entre 32 et 128 dans le caractère correspondant. Pour les lister tous, lancez ce programme :
Étant donné que tous les caractères ont des codes ASCII, ils peuvent être triés dans l'ordre. Comme vous pouvez le voir, l'ordre numérique est le même que l'ordre alphabétique, donc Z, ayant la valeur 90, est supérieur à A ayant la valeur 65.
Vous pouvez utiliser les signes supérieur à (>) et inférieur à (<) pour comparer des chaînes de caractères, ainsi que des nombres. Des précautions doivent être prises, cependant, pour éviter de mélanger majuscules et minuscules, et toutes les lettres minuscules ont des valeurs supérieures à celles des majuscules, donc bien que "apple" soit inférieur à "zebra", "apple" est supérieur à "Zebra".
Pour vous aider à manipuler les chaînes de caractères, il existe 3 autres fonctions très utiles - RIGHT$, LEFT$ et MID$. RIGHT$ renvoie la partie droite d'une chaîne de caractères comme suit :
affichera "IN". Le nombre 2 est la quantité de caractères à retourner. LEFT$ renvoie la proportion de la main gauche d'une chaîne de caractères comme suit :
affichera "AB". Le MID$ a juste besoin d'un peu plus d'informations.
affichera «EF». L'exemple signifie - renvoie les 2 caractères de la chaîne de caractères A$, en commençant à la position 5. Le deuxième nombre peut être omis, auquel cas tous les caractères à droite et y compris le premier nombre sont renvoyés.
affichera "EFGHIJ". Voici un court programme illustrant ces fonctions :
Il est souvent plus facile d'avoir des informations entreposées dans un programme. Tout comme il est possible de conserver des nombres dans les instructions DATA, les chaînes de caractères peuvent être conservées de la même manière.
Les données (DATA) sont lues (READ) un nom à la fois et entreposées dans le tableau, NAME$. NAME$(0) est alors TOM, NAME$(1) est TERESE, NAME$(2) est DENIS et NAME$(3) est MARTIN.
Les tableaux de chaînes de caractères sont similaires aux tableaux numériques. ORIC réserve automatiquement de l'espace pour jusqu'à 11 éléments (numérotés de 0 à 10). Si vous en voulez plus, vous devez entrer une déclaration DIM pour le numéro dont vous avez besoin, par exemple DIM A$(19) créerait un espace pour 20 éléments.
Il y a une chose spéciale à noter concernant les chaînes de caractères contenues dans les lignes DATA. Si vous insérez des espaces au début, ils seront ignorés par ORIC. par exemple :
- DATA AB, C,DE
perdra l'espace avant le C. Si vous voulez que l'espace soit inclus, vous devez entourer tout l'élément de guillemets. par exemple :
- DATA AB," C",DE
Lorsque vous exécutez un programme, le pointeur DATA va au premier élément de la première ligne DATA et lit à partir de là. Si vous exécutez (RUN) le programme de nom, le pointeur de données READ 4 éléments, puis reste à la fin. Si vous saisissez ensuite :
- GOTO 10
le pointeur ne trouve plus d'éléments, donc le message d'erreur :
OUT OF DATA IN 20 |
apparaît. Pour renvoyer le pointeur dans un programme, utilisez la commande RESTORE. Si vous ajoutez cette ligne au programme, vous constaterez que vous pouvez utiliser GOTO 10 sans recevoir de message d'erreur.
- 35 RESTORE
Comme il est dans la boucle, le pointeur sera réinitialisé à chaque fois et TOM sera chargé dans tous les éléments du tableau.
Tri
Pour compléter cette page, voici un programme démontrant certaines des techniques de manipulation de chaînes de caractères d'ORIC, en particulier l'utilisation de tableaux de chaînes de caractères et la comparaison de chaînes de caractères.
Il existe de nombreux types de méthodes de tri que les ordinateurs peuvent utiliser. Tous fonctionnent sur le principe que les mots commençant par des lettres ayant des codes ASCII bas termineront la routine au début d'un tableau, ceux avec des codes ASCII élevés à la fin, et le reste classé par ordre numérique et donc alphabétique entre les deux.
Cet exemple de programme charge les mots à trier dans un tableau A$ et utilise U$ comme mémoire temporaire pendant que la liste est traitée. A$ est mélangé jusqu'à ce que les mots soient correctement ordonnés, lorsqu'ils sont affichés dans les lignes 150 à 170.
Vous pouvez utiliser ce programme comme sous-programme de tri dans vos propres programmes et le renuméroter à partir de, disons, 2000 :
- 5 REM *** TRI ***
- 10 INPUT "NOMBRE DE MOTS";N
- 15 DIM A$(N+1)
- 20 FOR X=0 TO N-1
- 30 INPUT A$(X)
- 40 NEXT
- 50 FOR X=0 TO N-1
- 60 PRINT A$(X):NEXT
- 70 FOR K=0 TO N-1
- 80 FOR L=K+1 TO N
- 90 IF A$(L)>=A$(K)THEN 130
- 100 U$=A$(L)
- 110 A$(L)=A$(K)
- 120 A$(K)=U$
- 130 NEXT L
- 140 NEXT K
- 150 FOR X=0 TO N
- 160 PRINT A$(X)
- 170 NEXT