C64, Guide de référence BASIC
Syntaxe BASIC
Il est facile d'écrire, de tester et d'éditer BASIC, et des programmes simples peuvent être écrits par des personnes ayant très peu d'expérience en informatique, ce qui est passionnant et encourageant.
BASIC est parfois décrit comme étant comme l'anglais, mais la ressemblance est ténue. Presque chaque machine a sa propre version de BASIC. Par conséquent, les expressions fonctionnent différemment sur différentes machines. Les informations s'appliquent à la version de BASIC contenue dans le Commodore 64.
Chiffres et littéraux
Les nombres et les chaînes de caractères littérales sont des constantes, par opposition aux variables.
Des exemples de nombre sont 0, 2,3 E -7, 1234,75 et -744 ; des exemples de littéraux sont "HELLO", "ABC123" et "%!£/"', où les guillemets sont des délimiteurs (ne faisant pas partie du littéral).
Les règles qui déterminent la validité de ces formulaires sont complexes ; généralement, les nombres sont valides s'ils contiennent 0-9, +, -, E ou un point décimal dans les combinaisons légales.
Ainsi, 1.2.3 n'est pas valide (un seul point décimal peut être utilisé); 2EE3 non plus (un seul E est autorisé).
Mais 0E ou un seul point décimal est accepté comme 0.
La notation exponentielle (utilisant E) peut ne pas être familière à certains; le nombre suivant E est le nombre de positions à gauche ou à droite que la virgule décimale doit être déplacée pour produire un nombre en notation ordinaire. (1.7E3 signifie 1.7 X 10 à la troisième puissance, ou 1.7 X 1000, qui est 1700. La forme 9.45E-2 est simplement une autre notation pour le nombre .0945.)
Soyez prudent lorsque vous saisissez ces nombres, car SHIFT-E n'est pas accepté.
Les valeurs en dehors des plages 0,01 à 999 999 999 et -0,01 à -999 999 999 sont imprimées sous forme exponentielle.
Les chaînes peuvent contenir n'importe lequel des caractères ASCII du Commodore 64 ; tous les caractères sont accessibles avec la fonction CHR$, y compris les guillemets, CHR$(34) et RETURN, CHR$(13). La longueur maximale d'une chaîne est de 255 caractères.
Variables
Une variable est un symbole algébrique utilisé pour représenter un nombre ou une chaîne de caractères. X, X% et X$, respectivement, sont des variables numériques (valeurs comprises entre ±2,93873588E-39 et ±1,70141183E38), entières (nombres entiers compris entre -32768 et +32767) et chaînes (jusqu'à 255 caractères).
Si les variables n'ont pas été affectées à des valeurs, les variables numériques et entières sont définies par défaut sur 0, les chaînes sur le caractère nul, une chaîne de longueur nulle. Une variable, comme son nom l'indique, peut être modifiée à volonté.
La ligne en mode direct
X=1: PRINT X: X=2: PRINT X
illustre ce propos.
Les noms de variables sont soumis à ces règles :
• Le premier caractère doit être alphabétique.
• Le caractère suivant peut être alphanumérique.
• Tout autre caractère alphanumérique est autorisé, mais n'est pas considéré comme faisant partie du nom de la variable.
• Le caractère suivant peut être % ou $, désignant respectivement des variables entières et de chaîne.
• Le caractère suivant peut être (pour désigner une variable indicée.
• Un nom ne peut pas contenir de mots réservés, car l'interpréteur BASIC les traitera comme des mots-clés. Notez que les variables réservées (TI, ST) peuvent être incorporées dans des noms (mais pas utilisées seules comme noms de variables), car ce ne sont pas des mots-clés.
Toutes ces règles suppriment l'ambigüité et rendent le stockage pratique et rapide.
Si 1A était un nom de variable valide, par exemple, la ligne 100 1A=1 nécessiterait un traitement spécial pour la distinguer de 1001 A=l.
Et si des symboles autres que des caractères alphanumériques étaient autorisés, de sorte que B= soit un nom valide, par exemple, cela causerait des problèmes.
La conversion entre différents types de variables numériques est automatique ; cependant, les conversions chaîne-numérique et numérique-chaîne nécessitent des fonctions spéciales.
Par exemple, L%=L/256 tronque automatiquement L/256 (en supprimant la partie fractionnaire, mais sans l'arrondir) et vérifie que le résultat est compris entre -32768 et +32767.
L$ = STR$(L) et L=VAL(L$) sont pour la
conversion entre les nombres et les chaînes. Deux autres fonctions de conversion
sont CHR$ et ASC, qui fonctionnent sur des octets uniques et permettent de
traiter des expressions qui seraient autrement traitées comme des cas spéciaux.
Les opérateurs
Les opérateurs binaires prennent deux éléments du même type et génèrent un nouvel élément unique du même type à partir d'eux.
Les opérateurs unaires modifient un seul élément.
Les opérateurs numériques pris en charge par BASIC sur le 64 sont standard, tout comme ceux pris en charge par d'autres langages informatiques, tandis que les opérateurs de chaîne et logiques sont moins similaires.
Lorsqu'une chaîne ou une expression arithmétique est évaluée, le résultat dépend de la priorité attribuée à chaque opérateur et de la présence ou de l'absence de parenthèses.
Dans les calculs de chaîne et arithmétiques, les parenthèses garantissent que l'expression entière entre parenthèses est évaluée comme une unité avant que les autres opérations ne soient effectuées.
Les règles d'utilisation des parenthèses dictent les niveaux de priorité, de sorte qu'une expression entre parenthèses dans un autre ensemble de parenthèses sera évaluée en premier.
En l'absence de parenthèses, la priorité est attribuée aux opérateurs dans cet ordre, en commençant par le niveau le plus élevé :
↑ (^
sur le clavier) Exposants
+ ou — Signe
unaire plus ou moins - nombre positif ou négatif
* ou /
Multiplier ou diviser
+ ou — Binaire plus ou
moins—addition ou soustraction
< = ou > Comparaisons—inférieur à, égal
à, supérieur à
NOT NON logique — opérateur unaire
AND ET logique—opérateur binaire
OR
OU logique—opérateur binaire
Les opérateurs logiques sont également appelés opérateurs booléens. Dans une expression comme A AND B, A et B sont appelés opérandes.
Les opérateurs arithmétiques fonctionnent de manière simple, mais les comparaisons de chaînes ne sont pas aussi simples. Les chaînes sont comparées caractère par caractère jusqu'à ce que la fin de la chaîne la plus courte soit atteinte.
Si les caractères des deux chaînes sont identiques jusqu'à la fin de la chaîne la plus courte, la chaîne la plus courte est considérée comme la plus petite par la logique de comparaison des chaînes. Les caractères situés plus loin dans la séquence ASCII sont considérés comme plus grands que ceux situés plus tôt dans la série.
Par conséquent, la chaîne "1" est inférieure à
la chaîne "10", mais "5" est supérieure à "449".
Les fonctions
Certains mots clés BASIC ne sont valides que s'ils sont suivis d'une expression entre parenthèses ; ils peuvent être utilisés sur les déclarations de droit d'affectation ou dans des expressions.
Ce sont des fonctions :
Elles renvoient une valeur dépendante de l'expression entre parenthèses. Les fonctions numériques renvoient des valeurs numériques et incluent SQR, LOG et EXP ; les fonctions de chaîne, qui incluent LEFT$, MID$, RIGHTS et CHR$, renvoient des valeurs de chaîne. (Le dernier caractère de toutes les fonctions de chaîne est un $, comme celui des noms de variables de chaîne.)
PEEK, bien qu'il ne s'agisse pas d'une fonction au sens mathématique, a la syntaxe d'une fonction numérique et est considéré comme tel.
Certaines fonctions (comme FRE) prennent un soi-disant argument factice : une expression requise par la routine de vérification de la syntaxe de l'interpréteur, mais ignorée par le code qui évalue la fonction.
En règle générale, le paramètre fictif est un 0,
pour plus de commodité. La ligne ci-dessous est un exemple :
PRINT FRE(0)
Expressions
Une expression numérique est un arrangement valide de nombres, de fonctions numériques, de variables réelles et entières, d'opérateurs et de parenthèses ou d'expressions logiques.
Les expressions numériques peuvent remplacer les nombres dans de nombreuses constructions BASIC, par exemple, le côté droit de l'instruction d'affectation :
X=SQR(M)+PEEK(SCREEN + J)
Une expression de chaîne est un arrangement d'un ou plusieurs littéraux, fonctions de chaîne, variables de chaîne, l'opérateur de chaîne + ou des parenthèses. Les expressions de chaîne peuvent remplacer les littéraux dans de nombreuses constructions BASIC, comme ceci :
X$=MID$("HI" + NAME$,1,L)+ CHR$(13)
Une expression logique (ou booléenne) est évaluée comme vraie ou fausse (-1 ou 0, respectivement, en BASIC) et contient généralement un ou plusieurs opérateurs relationnels (<, = ou >), des opérateurs logiques, des parenthèses, des expressions numériques ou une chaîne expressions.
Leur utilisation principale est dans les instructions IF.
IF X$="Y" OR X$="N" GOTO 100
contient des expressions logiques. BASIC ne fait pas de distinction nette entre les expressions logiques et arithmétiques ; ils sont évalués ensemble et peuvent être mélangés.
Cela permet des constructions telles que :
IF INT(YR/4)*4=YR AND MN=2 THEN PRINT "29 DAYS"
ce qui est assez simple, mais aussi des lignes plus délicates comme :
DAYS = 31 + 2*(M=2) + (M=4 OR M=6 OR M=9 OR M=11)
où la valeur - 1, générée par une déclaration vraie, est utilisée dans le calcul des jours dans un mois. (Ces lignes ne sont que des exemples, pas des routines complètes que vous devez saisir et exécuter.)
Un autre aspect des expressions logiques est que les opérateurs logiques peuvent facilement être mal programmés ; car les erreurs de frappe peuvent ne pas être détectées par BASIC, la priorité des expressions logiques est faible (elles sont exécutées en dernier) et la signification des expressions est facilement mal comprise.
Par exemple:
IF PEEK(X)=0 AND PEEK(X+1)=0 THEN END
recherche deux octets zéro, puis se termine, ce qui est le résultat souhaité, mais :
IF PEEK(X) AND PEEK(X+1)=O THEN END
se termine lorsque PEEK(X) est différent de zéro et PEEK(X+1)=0.
Vrai et faux sont en fait des expressions à deux octets comme des variables entières ; -1 (vrai) signifie que tous les bits sont 1 ; 0 (faux) signifie que tous les bits sont 0.
Chaque résultat intermédiaire dans une
expression doit être valide ; les chiffres doivent être dans la plage à virgule
flottante, les chaînes ne dépassant pas 255 caractères et les expressions
logiques dans la plage d'entiers.
Déclarations
Une instruction est une partie syntaxiquement correcte de BASIC séparée des autres instructions par un marqueur de fin de ligne ou deux-points. Toutes les instructions commencent par un mot-clé BASIC ou, si LET a été omis, par une variable. Les différents types de déclarations sont discutés ci-dessous.
• Déclarations d'affectation. Variable LET = expression. (LET est facultatif ; mais sa présence rend l'intention derrière les déclarations arithmétiquement impossibles, comme X=X+1, plus claire pour le débutant. Des langages comme Pascal indiquent les affectations avec le symbole :=, qui se lit comme "devient".)
• Expressions conditionnelles. SI expression logique ALORS instruction.
• Déclarations de contrôle du programme. Par exemple, GOTO, GOSUB, RETURN, STOP.
• Déclarations d'entrée. Récupérer les données de l'appareil ou de l'instruction DATA : INPUT, GET, INPUT #, GET #, READ.
• Instructions en boucle. Boucles FOR-NEXT, par exemple.
• Déclarations de sortie. Envoyer des données à l'écran, au disque, à la cassette ou à un autre appareil : PRINT, PRINT#.
• Déclarations REM. Ceux-ci permettent au programmeur d'inclure des commentaires pour la documentation. L'interpréteur détecte l'instruction REM et ignore le reste de la ligne lorsque le programme s'exécute. Les lignes de programme qui ne sont jamais exécutées et les lignes qui ne contiennent que des deux-points peuvent être incluses dans cette catégorie.
• Instructions de conversion. Ceux-ci convertissent entre les variables de chaîne et les littéraux, les variables réelles et les nombres, et les entiers et les chiffres. Des fonctions comme ASiC, CHR$, STR$ et VAL en sont des exemples.
Les programmes BASIC sont constitués de lignes de programme numérotées ; chaque ligne de programme est composée d'instructions, séparées les unes des autres par des deux-points lorsque deux ou plusieurs instructions sont utilisées sur la même ligne du programme. Les espaces sont généralement ignorés en dehors des guillemets, de même que plusieurs deux-points.
Voir Dictionnaire de mots-clés BASIC