Bibliothèque de fonctions
Cette page décrit les fonctions arithmétiques, trigonométriques et spéciales incorporées dans ATARI BASIC. Une fonction effectue un calcul et renvoie le résultat (généralement un nombre) pour un affichage ou une utilisation informatique supplémentaire. Les fonctions trigonométriques comprennent deux instructions, les radians (RAD) et les degrés (DEG), étant fréquemment utilisées avec les fonctions trigonométriques. Chaque fonction décrite dans cette page peut être utilisée en mode Direct ou Différé. Plusieurs fonctions sont parfaitement légales.
Les fonctions et instructions suivantes sont décrites dans cette page :
Fonctions arithmétiques
ABS
Format : ABS(aexp)
Exemple : 100 AB = ABS(-190)
Renvoie la valeur absolue d'un nombre, qu'il soit positif ou négatif. La valeur renvoyée est toujours positive.
CLOG
Format : CLOG(aexp)
Exemple : 100 C=CLOG(83)
Renvoie le logarithme en base 10 de la variable ou de l'expression entre parenthèses. CLOG(0) donne une erreur et CLOG(1) est égal à 0.
EXP
Format : EXP(aexp)
Exemple : 100 PRINT EXP(3)
Renvoie la valeur de e (environ 2,71828283), élevée à la puissance spécifiée par l'expression entre parenthèses. Dans l'exemple donné ci-dessus, le nombre renvoyé est 20,0855365. Dans certains cas, EXP n'a une précision qu'à six chiffres significatifs.
INT
Format : INT(aexp)
Exemples : 100 I=INT(3445) (3 serait entreposé dans I)
100 X=INT(-14.66778) (-15 serait entreposé dans X)
Renvoie le plus grand entier inférieur ou égal à la valeur de l'expression. Ceci est vrai que l'expression évalue un nombre positif ou négatif. Ainsi, dans notre premier exemple ci-dessus, I est utilisé pour entreposer le nombre 3 Dans le deuxième exemple, X est utilisé pour entreposer le nombre -15 (le premier nombre entier inférieur ou égal à -14.66778). Cette fonction INT ne doit pas être confondue avec la fonction utilisée sur les calculatrices tronquant (coupe) simplement toutes les décimales.
LOG
Format : LOG(aexp)
Exemple : 100 L=LOG(67.89/2.57)
Renvoie le logarithme népérien du nombre ou de l'expression entre parenthèses. LOG(0) donne une erreur et LOG(1) est égal à 0.
RND
Format : RND(aexp)
Exemple : 10 A=RND(0)
Renvoie un nombre aléatoire généré par le matériel entre 0 et 1, mais ne renvoie jamais 1. La variable ou l'expression entre parenthèses suivant RND est factice et n'a aucun effet sur les nombres renvoyés. Cependant, la variable factice doit être utilisée. Généralement, la fonction RND est utilisée en combinaison avec d'autres instructions ou fonctions BASIC pour renvoyer un nombre pour les jeux, la prise de décision,... Ce qui suit est une routine simple renvoyant un nombre aléatoire compris entre 0 et 999.
(0 est la variable muette)
SGN
Format : SGN(aexp)
Exemple : 100 X=SGN(-199) (-1 sera retourné)
Renvoie un -1 si aexp est évalué à un nombre négatif, un 0 si aexp est évalué à 0 ou un I si aexp est évalué à un nombre positif.
SQR
Format : SQR(aexp)
Exemple : 100 PRINT SQR(100) (10 seraient affichés)
Renvoie la racine carrée de l'aexp devant être positive.
Fonctions trigonométriques
ATN
Format : ATN(aexp)
Exemple : 100 X = ATN(65)
Renvoie l'arctangente de la variable ou de l'expression entre parenthèses.
COS
Format : COS(aexp)
Exemple : 100 C=COS(X+Y+Z)
Remarque : Nous supposons que X, Y, Z est précédemment définis.
Renvoie le cosinus trigonométrique de l'expression entre parenthèses.
SIN
Format : SIN(aexp)
Exemple : 100 X=SIN(Y)
Remarque : suppose que Y est défini précédemment.
Renvoie le sinus trigonométrique de l'expression entre parenthèses.
DEG/RAD
Format : DEG
RAD
Exemple : 100 DEG
100 RAD
Ces deux instructions permettent au programmeur de spécifier des degrés ou des radians pour les calculs de fonctions trigonométriques. L'ordinateur utilise par défaut les radians, sauf si DEG est spécifié. Une fois l'instruction DEG exécutée, RAD doit être utilisé pour revenir aux radians.
Fonctions spéciales
ADR
Format : ADR(svar)
Exemple : ADR(A$)
Renvoie l'adresse mémoire décimale de la chaîne de caractères spécifiée par l'expression entre parenthèses. Connaître l'adresse permet au programmeur de transmettre les informations aux routines USR,... Voir USR.
FRE
Format : FRE(aexp)
Exemples :
Cette fonction renvoie le nombre d'octets de RAM utilisateur restants. Son utilisation principale est en mode Direct avec une variable factice(0) pour informer le programmeur de la quantité d'espace mémoire restant pour terminer un programme. Bien entendu, FRE peut également être utilisé au sein d'un programme BASIC en mode Différé.
PEEK
Format : PEEK(aexp)
Exemples : 1000 IF PEEK(4000) = 255 THEN PRINT "255"
100 PRINT "LA MARGE GAUCHE EST", PEEK(82)
Renvoie le contenu d'un emplacement d'adresse mémoire spécifié (aexp). L'adresse spécifiée doit être un entier ou une expression arithmétique donnANT un entier compris entre 0 et 65 535 et représente l'adresse mémoire en notation décimale (et non hexadécimale). Le nombre renvoyé sera également un entier décimal compris entre 0 et 255. Cette fonction permet à l'utilisateur d'examiner les emplacements de la RAM ou de la ROM. Dans le premier exemple ci-dessus, le PEEK est utilisé pour déterminer si l'emplacement 4000 (décimal) contient le nombre 255. Dans le deuxième exemple, la fonction PEEK est utilisée pour examiner la marge gauche.
POKE
Format : POKE aexp1, aexp2
Exemples : POKE 82, 10
100 POKE 82, 20
Bien qu'il ne s'agisse pas d'une fonction, elle est incluse dans cette section car elle est étroitement associée à la fonction PEEK. La commande POKE insère des données dans l'emplacement mémoire ou modifie les données déjà entreposées là-bas. Dans le format ci-dessus, aexp1 est l'adresse décimale de l'emplacement à fouiller et aexp2 est les données à fouiller. Notez que ce nombre est un nombre décimal compris entre 0 et 255. POKE ne peut pas être utilisé pour modifier les emplacements de la ROM. Pour vous familiariser avec cette commande, il est conseillé de regarder l'emplacement mémoire avec un PEEK et d'écrire le contenu de l'emplacement. Ensuite, si le POKE ne fonctionne pas comme prévu, le contenu original peut être inséré dans l'emplacement.
L'exemple du mode Direct ci-dessus change la marge gauche de l'écran de sa position par défaut de 2 à une nouvelle position de 10. En d'autres termes, la nouvelle marge sera de 8 espaces vers la droite. Pour restaurer la marge à sa position normale par défaut, appuyez sur SYSTEM RESET.
USR
Format : USR(aexp1 [,aexp2] [,aexp3])
Exemple : 100 RESULT=USR(ADD1,A*2)
Cette fonction renvoie les résultats d'un sous-programme en langage machine. La première expression, aexp1, doit être un entier ou une expression arithmétique s'évaluant en un entier représentant l'adresse mémoire décimale de la routine en langage machine à exécuter. Les paramètres d'entrée aexp2, aexp3,..., sont facultatifs. Il doit s'agir d'expressions arithmétiques comprises dans une plage décimale de 0 à 65 535. Une valeur non entière peut être utilisée, cependant, elle sera arrondie à l'entier le plus proche.
Ces valeurs seront converties du format de nombre à virgule flottante BCD (Binary Coded Decimal) de BASIC en un nombre binaire de deux octets, puis placées sur la pile matérielle, composée d'un groupe d'emplacements de mémoire RAM sous le contrôle direct de la puce du microprocesseur 6502.
Définition de la pile matérielle
N (Le nombre de paramètres sur la pile peut être 0) X, (Octet de poids fort du paramètre X) X, (Octet faible du paramètre X) Y, (Octet de poids fort du paramètre Y) Y, (Octet faible du paramètre Y) Z, (Octet de poids fort du paramètre Z) Z, (Octet faible du paramètre Z) R, (Octet faible de l'adresse de retour) R, (Octet de poids fort de l'adresse de retour) |
Remarque : X est le paramètre suivant l'adresse de la routine. Y est le deuxième, Z est le troisième,... Il y a N paires d'octets.