Section courante

A propos

Section administrative du site

 Langage  Elément  Tutoriel  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Introduction
Référence de commandes et fonctions
Les commandes
Bibliothèque de fonctions
Les chaînes de caractères
Raccourci clavier (Shortcut Keys)
Emplacements mémoire
Table des modes et des formats d'écran
Police de caractères ATASCII
Préface
Notes légal
Dictionnaire
Recherche

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.



PARTAGER CETTE PAGE SUR
Dernière mise à jour : Dimanche, le 10 mars 2024