ABS - DEF

Dictionnaire des mots-clés BASIC, C64

Du Commodore 64

ABS

Type : Fonction numérique
Syntaxe : ABS(expression numérique)
Modes : les modes direct et programme sont tous deux valides.
Jeton : $B6 (182)
Entrée abrégée : A SHIFT-B

ABS renvoie la valeur absolue de l'expression numérique entre parenthèses. En d'autres termes, ABS rend un nombre négatif ou une expression positive.

Exemples:

1. 50 IF ABS(TARGET-X) <.01 THEN PRINT "DONE": END

Ceci montre comment vérifier l'égalité approximative; lorsque TARGET vaut 6, le programme ne se termine que si X est compris entre 5,99 et 6,01. Ce type de texte est généralement utilisé dans les calculs itératifs dans lesquels une valeur calculée est censée converger vers une valeur donnée.

2. 100 IF ABS(X1-X2)<3 AND ABS(Y1-Y2)<3 GOTO 90

À partir d'un programme de jeu, cela recalcule les positions de départ à l'écran pour deux joueurs si les positions de départ générées aléatoirement sont trop proches.

10 REM 'ABS' PROGRAMME DE TEST D'OPERATION MATHEMATIQUE
20 A=18
30 B=58
40 PRINT "LA VALEUR ABSOLUE DE ";(A-B)/2;" EST ";ABS((A-B)/2)
99 END

il peut être facilement simulé par le sous-programme suivant :

10 REM 'ABS' PROGRAMME DE TEST DE SOUS-ROUTINE
20 PRINT "ENTRER UN NOMBRE NEGATIF ";
30 INPUT X
40 GOSUB 30010
50 PRINT "LA VALEUR ABSOLUE DE ";X;" est ";Y
60 PRINT "ENTRER O POUR UN AUTRE NOMBRE ";
70 INPUT R$
80 IF R$ = "O" THEN GOTO 20
90 END
30010 REM * ABS(X) SOUS-ROUTINE * INPUT X, OUTPUT Y
30012 Y=X
30014 IF X>=0 THEN 30018
30016 Y=-X
30018 RETURN
30993 END

AND

Type : Opérateur logique
Syntaxe : Expression logique ou numérique AND expression logique ou numérique
Modes : les modes direct et programme sont tous deux valides.
Jeton : $ AF (175)
Entrée abrégée : A SHIFT-N

AND applique l'opérateur AND logique à deux expressions. Pour les besoins de la comparaison AND, les expressions numériques sont évaluées comme des entiers signés 16 bits, de sorte que chaque opérande doit être compris entre -32768 et 32767. Les valeurs en dehors de cette plage entraînent une erreur ILLEGAL QUANTITY ERROR.

Chacun des 16 bits du premier opérande est combiné avec le bit correspondant du deuxième opérande, ce qui donne un entier de 16 bits sur deux octets. Les quatre combinaisons possibles de bits individuels correspondants sont :

0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1

Le résultat devient 1 uniquement si les deux bits sont à 1.

ET a deux utilisations distinctes en BASIC. Premièrement, il permet de calculer ensemble la valeur de vérité de plusieurs expressions logiques, comme dans :

IF X>2 AND X<3

où X doit être compris entre 2 et 3 pour que la condition soit vraie. Deuxièmement, AND désactive les bits sélectionnés, comme dans :

POKE 1, PEEK(l) AND 254

Cela force le bit 1 de l'emplacement 1 à 0, quelle que soit sa valeur précédente (qui bascule dans la RAM à la place de la ROM BASIC).

Bien que ces utilisations semblent différentes, AND se comporte de manière identique dans chacune. Une expression logique est considérée comme fausse lorsque 0 (tous les bits du résultat sont nuls) et est considérée comme vraie lorsque — 1 (tous les bits du résultat sont 1) ou non nuls.

Exemples:

1. 100 IF PEEK(J) AND 128=128 GOTO 200

La ligne 200 sera exécutée si le bit 7 de l'emplacement PEEKed est activé ; les autres valeurs de bit sont ignorées.

2. X=X AND 248

Cela convertit X en X moins son reste lors de la division par 8, donc 0-7 devient 0, 8-15 devient 8, et ainsi de suite. C'est nettement plus rapide que X= INT(X/8)*8. Cela fonctionne (pour X jusqu'à 256) car 248 = %11111000. Par conséquent, X AND 248 efface les trois bits les plus à droite à 0.

3.  OK= YR>84 AND YR<90 AND MN>0 AND MN<13 AND OK

Partie d'une routine de validation de date, cela utilise OK comme variable pour valider plusieurs entrées sur plusieurs lignes de BASIC.

Utilisation:

IF NOT OK THEN numéro de ligne à brancher pour une nouvelle saisie si les données étaient inacceptables.

10 REM PROGRAMME DE TEST LOGIQUE 'AND'
20 A = 8
30 B = 6
40 IF A=8 AND B=6 THEN 70
50 PRINT "AND A ECHOUER LE TEST EN TANT QU'OPERATEUR LOGIQUE"
B0 GOTO 99
70 PRINT "AND A PASSER LE TEST EN TANT QU'OPERATEUR LOGIQUE"
99 END

ASC

Type : Fonction numérique

Syntaxe : ASC(expression de chaîne d'au moins un caractère)

Modes : Les modes direct et programme sont tous deux valides.

Jeton : $C6 (198)

Entrée abrégée : A SHIFTS

Utilisation :

Cette fonction renvoie un nombre compris entre 0 et 255 correspondant à la valeur ASCII du premier caractère de l'expression de chaîne.

Elle est généralement utilisée lorsque ce nombre est plus facile à manipuler que le caractère lui-même.

Notez que la fonction inverse de ASC est CHR$, donc ASC(CHR$(N)) est équivalent à N, et CHR$(ASC(//P//)) correspond au caractère P.

Toutes les touches, à l'exception de RUN/STOP, SHIFT, CTRL, la touche Commodore et RESTORE, peuvent être détectées avec GET et ASC.

Exemples :

1. X = ASC(X$+CHR$(0))

Calcule la valeur ASCII de n'importe quel caractère X$.

L'ajout de CHR$(0) permet la détection du caractère nul, qui sinon provoque l'erreur

« ILLEGAL QUANTITY ERROR. ».

2. X = ASC(X$)-192

Convertit les lettres majuscules (avec la touche MAJUSCULE) A-Z en chiffres de 1 à 26. Utile pour le calcul des sommes de contrôle, où chaque lettre doit être convertie en un nombre.

3. 1000 IF PEEK(L)=ASC("*") THEN PRINT "FOUND AT" L

Illustre comment l'utilisation de l'ASC peut améliorer la lisibilité de vos programmes ; cet exemple fait partie d'une routine de recherche d'un astérisque en mémoire.

ATN

Type : Fonction numérique

Syntaxe : ATN(expression numérique)

Modes : Les modes direct et programme sont tous deux valides.

Jeton : $C1 (193)

Entrée abrégée : A SHIFT-T

Fonction : Il s’agit de la fonction arc tangente, ou tangente inverse. Cette fonction renvoie,

en radians dans l’intervalle -π/2 à +π/2, l’angle dont la tangente est l’expression numérique.

L’expression peut prendre n’importe quelle valeur dans la plage valide des nombres à virgule flottante, approximativement ±1,7E38.

Pour convertir les radians en degrés, multipliez par 180/π. Cela modifie la plage de valeurs de ATN de -π/2 à +π/2 à -90° à 90°.

Dans certains cas, ATN(X) est une transformation utile à appliquer, car elle condense
presque toute la plage de nombres en un ensemble fini d’environ -1,57 à +1,57.

Exemples :

1. R=ATN((E2-E1)/(N2-N1))

Extrait d’un programme destiné aux géomètres, ceci calcule un relèvement à partir des distances est nord.

2. DEF FN AS(X)=ATN(X/SQR(1-X*X))

DEF FN AC(X)=π//2-ATN(X/SQR(1-X*X))

Ces définitions de fonctions évaluent respectivement l'arcsinus et l'arccosinus.

N'oubliez pas que l'arc tangente ne peut jamais être exactement de 90 degrés ; si nécessaire, vérifiez cette valeur extrême pour éviter les erreurs.

CHR$

Type : Fonction de chaîne de caractères

Syntaxe : CHR$(expression numérique)

Modes : Les modes direct et programme sont tous deux valides.

Jeton : $C7 (199)

Saisie abrégée : C + MAJ + H (incluant le $)

Utilisation : CHR$ convertit une expression numérique (qui doit être évaluée et tronquée à un entier compris entre 0 et 255) en son caractère ASCII correspondant.

Cette fonction est utile pour manipuler les caractères spéciaux tels que la touche Entrée et les guillemets, qui correspondent respectivement à CHR$(13) et CHR$(34).

Consultez  Notez que ASC est la fonction inverse de CHR$.

Exemples :

1. A$ = CHR$(18) + NAME$ + CHR$(146)

Ceci ajoute {RVS} et {OFF} autour de NAME$, donc PRINT A$ affiche NAME$ à l'envers.

2. FOR J=833 TO 848: PRINT CHR$(PEEK(J));:NEXT

Cette commande affiche le nom du programme sur bande le plus récemment chargé, en lisant les caractères du tampon de bande, à condition que ce tampon n'ait pas été modifié par un programme.

3. PRINT#4, CHR$(27)"E08"

La commande ci-dessus envoie le caractère d'échappement ASCII ESC, suivi d'une commande,
à une imprimante. Les fonctions spéciales des imprimantes sont souvent contrôlées de cette manière, et les codes varient d'une marque d'imprimante à l'autre.

4. OPEN 2,2,0,CHR$(38)+CHR$(60)

Cette commande ouvre un fichier sur un modem.

Les deux paramètres CHR$ sont requis dans ce format par BASIC.

CHR$(0) représente le caractère nul, mais, contrairement à la chaîne vide "", il a une longueur de un et peut être ajouté aux chaînes.

Voir ASC pour une application.

Les caractères nuls imbriqués, comme dans Y$="12"+CHR$(0)+"34", peuvent produire des résultats inattendus.

CLOSE

Type : Instruction d'entrée/sortie

Syntaxe : expression numérique FERMER

Modes : les modes direct et programme sont tous deux valides.

Jeton : $A0 (160)

Entrée abrégée : CL SHIFT-0

Objectif :

CLOSE termine le traitement du fichier spécifié et supprime son fichier numéro, numéro de périphérique et adresse secondaire à partir des tables de fichiers.

Une expression numérique peut être utilisée comme numéro de fichier logique ; il doit s'évaluer à un nombre compris entre 0 et 255.

Aucun message d'erreur n'est donné si le fichier n'est pas ouvert.

(En fait, CLOSE partage la vérification de la syntaxe d'OPEN, donc quatre paramètres sont valides après CLOSE, mais seul le premier est utilisé.)

Remarques :

1. Les fichiers ouverts en lecture ne doivent pas nécessairement être fermés, mais les fichiers ouverts pour être enregistrés sur la bande ou le disque doit toujours être fermé, sinon les fichiers sur bande perdront la dernière partie des données conservés dans le tampon, alors que les disques peuvent être corrompus.

OPEN 15,8,15 : CLOSE 15 est un moyen simple de fermer correctement les fichiers disque, peut-être après qu'un programme s'arrête avec ?SYNTAX ERROR lors de l'écriture sur le disque.

2. CLOSE est une commande simple, mais elle est rendue plus compliquée par le comportement de CMD, qui doit être suivi d'une commande PRINT# pour remettre l'appareil hors tension sur le téléviseur ou le moniteur.

Exemple :

OPEN 4,4: PRINT#4"HELLO": CLOSE 4

La ligne ci-dessus ouvre un fichier, envoie des données à une imprimante via le fichier, puis ferme le fichier.

Le deuxième numéro de la commande OPEN est un numéro de périphérique, qui sélectionne l’imprimante (appareil 4).

CLR

Type : Déclaration

Syntaxe : CLR

Modes : les modes direct et programme sont tous deux valides.

Jeton : 9 C$ (156)

Entrée abrégée : C SHIFT-L

Objectif :

CLR efface la zone mémoire actuellement allouée aux variables, laissant le programme BASIC, s'il y en a un, inchangé.

Toutes les routines de langage machine dans la RAM restent inchangées. Des effets supplémentaires sont indiqués ci-dessous.

Remarque : CLR fait en fait partie de NEW et fait la plupart des choses que NEW fait, tout en gardant le programme actuel intact.

CLR fonctionne en réinitialisant les pointeurs et n'efface pas réellement les variables, donc en principe celles-ci pourraient être récupérées.

Il a également d'autres fonctions.

Voici la liste complète :

• Le pointeur de chaîne est défini sur top-of-memqjy et les pointeurs de fin de variables et de fin de tableaux sont définis sur end-of-BASIC. Toutes les variables et tableaux sont ainsi effectivement perdus.

• Le pointeur de pile est réinitialisé, mais l'adresse précédente est conservée ; par conséquent, toutes les références FOR-NEXT et GOSUB-RETURN sont perdues et, si CLR s'exécute dans un programme, ce programme continue au même endroit.

• Le pointeur DATA est défini pour démarrer.

• L'activité d'entrée/sortie est interrompue.

• Les fichiers sont abandonnés (mais pas fermés) et le clavier et l'écran deviennent les périphériques d'entrée/sortie.

Exemples:

1. POKE 55,0: POKE 56,48: CLR

Définit le haut de la zone de stockage du programme BASIC sur 48*256=3 000 $, généralement pour réserver de l'espace pour les graphiques dans la banque VIC 0.

2. 1000 CLR: GOTO 10

Ce type d'opération est utile dans certains programmes de simulation ; toutes les variables existantes sont effacées et le programme continue. RUN 10 a un effet similaire.

CMD

Type : Instruction de sortie

Syntaxe : CMD expression numérique [, toute expression]

L'expression numérique, un numéro de fichier, doit être comprise entre 1 et 255.

L'expression optionnelle ne comprend pas les crochets indiqués ci-dessus, mais doit suivre une virgule ; elle est imprimée dans le fichier spécifié et peut servir à ajouter un en-tête à une impression.

Modes : Les modes Direct et Programme sont tous deux valides.

Jeton : $9D (157)

Entrée abrégée : C SHIFT-M

Fonction : CMD est identique à PRINT#, à la différence que le périphérique de sortie reste à l'écoute.

Ainsi, une instruction CMD suivie d'un numéro de périphérique redirige la sortie imprimée du téléviseur vers le périphérique spécifié. Cet effet dure généralement jusqu'à ce que PRINT# désactive l'écoute du périphérique.

Remarques :

1. CMD est un moyen pratique de rediriger la sortie d'un programme contenant de nombreuses instructions PRINT vers une imprimante.

C'est plus simple que de remplacer toutes les instructions PRINT par des instructions PRINT#.

Cependant, CMD présente des bogues ; Les commandes GET et parfois GOSUB redirigent la sortie vers l'écran. Si cela pose problème, utilisez PRINT#.

2. La commande CMD est nécessaire pour lister les programmes à imprimer.

Exemples :

1. OPEN 4,4: CMD4,"TITLE":LIST

Cette commande affichera le programme en cours (ou le fichier de répertoire disque, s'il est présent en mémoire) destiné à une imprimante.

Poursuivez avec :

PRINT#4: CLOSE4

pour afficher le résultat à l'écran.

2. 100 INPUT "DEVICE NUMBERED: OPEN D,D: CMD D

Permet à PRINT de diriger la sortie soit vers le périphérique 3 (écran), soit vers le périphérique 4 (imprimante), soit vers un autre périphérique.

CONT

Type : Commande

Syntaxe : CONT

Modes : Seul le mode direct est disponible.

En mode programme, CONT entre dans une boucle infinie.

Jeton : $9A (154)

Saisie abrégée : C + MAJ + O

Fonction :

CONT reprend l'exécution d'un programme BASIC arrêté par une instruction STOP ou END, ou par la touche RUN/STOP.

CONT ne peut pas être utilisé pour redémarrer un programme arrêté suite à une erreur.

De plus, CONT ne peut pas être utilisé si vous modifiez des lignes de programme après l'arrêt du programme.

À des fins de débogage, des instructions STOP peuvent être insérées à des points stratégiques du programme, et des variables peuvent être affichées et modifiées après l'arrêt du programme.

CONT continuera, à condition qu'aucune erreur ne soit commise.

L'erreur « CAN'T CONTINUE » peut avoir plusieurs causes.

Dans ce cas, l'instruction GOTO vers un numéro de ligne remplit une fonction similaire à celle de CONT.

Remarque : Étant donné que STOP interrompt l'exécution des fichiers, CONT peut être accepté, mais ne pas reprendre l'exécution comme avant.

Par exemple, les données destinées à l'impression peuvent être affichées à l'écran après la commande CONT.

Exemple :

10 PRINT J: J=J + 1: GOTO 10

Exécutez ce programme, puis appuyez sur la touche EXÉCUTER/ARRÊTER.

La commande BASIC CONT permettra au programme de continuer son exécution.

Vous pouvez modifier la valeur de J en saisissant par exemple J=10000 en mode direct ; CONT reprendra alors son exécution (avec la nouvelle valeur).

COS

Type : Fonction numérique

Syntaxe : COS(expression numérique)

Modes : Les modes direct et programmé sont tous deux valides.

Jeton : $BE (190)

Entrée abrégée : Aucune

Usage : COS renvoie le cosinus de l’expression numérique, supposée être un angle exprimé en radians.

Exemples :

1. PRINT COS(45*π/180)

L'instruction ci-dessus affiche le cosinus de 45 degrés (la conversion des radians en degrés s'effectue en multipliant la valeur en radians par π et en divisant par 180).

2. FOR J=0 TO 1000 STEP π/10: PRINT COS(J): NEXT

Ceci illustre la nature cyclique de COS. Les grandes valeurs de l'argument n'introduisent pas d'erreur significative, car COS n'utilise que le reste dans l'intervalle [0, 2π].

DATA

Type : Instruction

Syntaxe : DATA liste de données séparées par des virgules

Modes : Seul le mode programme est disponible.

Jeton : $83 (131)

Saisie abrégée : D SHIFT-A

Fonction : DATA permet de stocker des données numériques ou textuelles dans un programme.

L'instruction READ récupère les données des instructions DATA dans le même ordre que celui de leur stockage dans le programme.

Remarques :

1. Les instructions DATA permettant de stocker des programmes ML peuvent être générées automatiquement.

2. Une erreur de syntaxe (?SYNTAX ERROR) dans une ligne d'instruction DATA valide signifie que les instructions READ et DATA ne correspondent pas.

3. Des virgules oubliées ou non détectées peuvent provoquer des bogues difficiles à interpréter :

DATA R,O,Y,G,,B,P, contient huit éléments de données, dont deux (entre G et B, et après P) sont des caractères nuls.

4. Les instructions DATA étant traitées séquentiellement (RESTORE relance la séquence), soyez vigilant lors de l'ajout de données (par exemple, en ajoutant une sous-routine) afin d'éviter la lecture de données provenant d'une routine incorrecte.

Exemples :

1. 100 DATA "7975, LAZY RIVER ROAD"

Cela montre que les guillemets permettent d'inclure des virgules, des deux-points, des espaces en début de chaîne et d'autres caractères spéciaux dans les chaînes de caractères.

2. 1000 DATA CU,COPPER,136.2,FE,IRON,25.1

Ceci illustre comment des ensembles de données peuvent être stockés.

Typiquement, une boucle contenant l'instruction READ A$,M$,W peut être utilisée pour lire chaque ensemble de trois éléments.

3. 10000 DATA SUB1 :REM MARKS START OF SUB1's DATA

Voici une astuce permettant de s'assurer que les données lues sont correctes.

Utilisez la ligne suivante pour localiser SUB1 :

1000 READX$: IF X$<> "SUB1" GOTO 1000

DEFFN

Type : DEF FN, instruction ; FN, fonction numérique

Syntaxe : DEF FN nom de variable valide (variable réelle) = expression arithmétique

Modes : Seul le mode programme est disponible.

Jeton : DEF : $96 (150) ; FN : $A5 (165)

Entrée abrégée : DEF : D SHIFT-E (FN n'a pas de forme abrégée)

Utilisation : DEF FN définit une fonction numérique (et non une chaîne de caractères), avec une variable dépendante, qui peut être appelée par FN.

Les définitions de fonctions permettent de gagner de la place lorsqu'une expression doit être évaluée fréquemment.

Cependant, leur principal avantage est d'améliorer la lisibilité du BASIC.

Remarques :

1. Le mode direct est interdit, mais les définitions de fonctions sont stockées avec les variables ordinaires. Une fois définies, les fonctions peuvent être appelées par FN en mode direct.

2. L'erreur « ?UNDEF'D FUNCTION ERROR  » se produit si DEF FN n'a pas été rencontré avant l'utilisation de FN. L'erreur « ?SYNTAX ERROR, », lorsqu'elle est causée par une définition, fait référence à la ligne utilisant FN, même si cette ligne est valide.

3. Après avoir chargé un nouveau programme depuis BASIC, redéfinissez toutes les fonctions ; sinon, elles risquent de ne pas fonctionner.

4. Les définitions de fonctions fonctionnent en appelant une routine pour évaluer des expressions.

Par conséquent, chaque définition doit tenir sur une seule ligne de BASIC ; les instructions IF-THEN ne sont pas autorisées dans la définition de fonction, des expressions logiques peuvent donc être nécessaires (voir les exemples). L'appel d'une autre définition de fonction est cependant valide.

5. La variable dépendante n'a pas besoin d'être utilisée dans la définition ; si elle ne l'est pas, on l'appelle une variable fictive.

Exemples :

1. 100 DEF FN DEEK(X) = PEEK(X)+256*PEEK(X+1) 110 PRINT FN DEEK(50)

Ces lignes affichent la valeur décimale de la quantité de deux octets stockée aux emplacements mémoire 50 et 51. (DEEK est un PEEK à deux octets.)

2. 100 DEF FN MIN(X) = -(A>B)*B-(B>A)*A

Cette fonction renverra la plus petite valeur entre A et B.

Notez que X est une variable fictive dans ce cas ; n’importe quelle autre variable pourrait être utilisée. La forme inhabituelle de l’expression est nécessaire pour l’intégrer dans une seule instruction.

3. 100 DEF FN PV(I) = 100/(1+I/100)

Il établit une fonction de valeur actuelle, où I est un taux d'intérêt annuel.

4. 1000 DEF FN E(X) = 1 + X +X*X/2 + X*X*X/6 + FN E1(X)

1010 DEF FN E1(X)=X*X*X*X/24 + X*X*X*X*X/120

Les lignes ci-dessus montrent brièvement comment une expression très longue peut être répartie sur plusieurs lignes de BASIC.