Section courante

A propos

Section administrative du site

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.

  1. 10 X=RND(0)
  2. 20 RX=INT(1000*X)
  3. 30 PRINT RX

(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 :

  1. PRINT FRE(0)
  2. 100 IF FRE(0) < 1000 THEN PRINT "MEMOIRE CRITIQUE"

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.



Dernière mise à jour : Dimanche, le 10 mars 2024