CODINGCLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

4/1.2.12 - Fonctions à caractère mathématiqueCoding Classeurs Weka
4/0 - Langages du CPC

4/1 - Locomotive BASIC : Définitions et rappels de base

4/1.2 Version 1.0 sur CPC 464 : Mots clés et leur utilisation

XII. Fonctions à caractère mathématique
ABS (< expression numérique >)

ou « expression numérique » est une valeur entière ou réelle. Définition :

La valeur absolue d'un nombre « a » est celui des deux nombres a et -a qui est le plus grand.

La fonction « ABS » donne la valeur absolue de l'expression entre parenthèses.

Exemples :

ABS( -32.5) = 32.5
ABS(-1456) = 1456
ABS(32.5) = 32.5
ABS(3.2 E 12) = 3.2 E 12

< Argument 1> AND < Argument 2>

Exécute un « ET » logique entre tous les bits des deux arguments entiers fournis.

La table de vérité de la fonction AND au niveau bit est la suivante :
AND01
000
101

Exemple :

  1 0 1 1 1 1 0 0 &BC
AND 0 1 1 1 1 1 0 1 &7D
= 0 0 1 1 1 1 0 0 &3C

ATN (< expression numérique >)

où « expression numérique » est une valeur réelle.

Définition :

Correspondance réciproque de la fonction tangente. ATN(x) = b où b est compris entre -pi/2 et pi/2 et tel que TAN(b) = x.

Remarques :

a) Les commandes « DEG » et « RAD » peuvent être utilisées pour spécifier que le résultat doit être exprimé en degrés ou en radians.

b) Par défaut, la valeur sera calculée en radians.

BIN$ (cnombre entier sans signe>[, ])

Donne l'équivalent binaire (base 2) d'un nombre entier décimal (base 10) sur un nombre de digit (de chiffres) indiqué par le paramètre optionnel. Ce nombre peut varier entre 0 et 16. Le nombre à convertir doit être compris entre -32768 et 65535.

Exemple :

BIN$(-3,8) = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
BIN$(3,8) = 0 0 0 0 0 0 1 1
BIN$(3,16) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1

Remarque :

                         _
Le codage binaire d'un nombre négatif se fait de la façon suivante : -n = n + 1 sur 16 bits.

Exemple :

n = 3 sur 16 bits : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
_
n      1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
n + 1     1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1

Ainsi, on a BIN$(-1) : 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0  1
       = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +1

CINT (< expression numérique >)

Conversion d'une valeur numérique réelle en une valeur numérique entière arrondie entre -32768 et 32767.

UtilisationSi vous êtes un peu déconcerté devant l'abondance des instructions permettant d'extraire les parties fractionnaires ou entières d'un nombre réel, voici un programme qui pourra vous fixer les idées sur leur utilisation :

100 REM INT,CINT,CREAL,FIX,ROUND sans argument secondaire
110 :
120 MODE 2
130 PRINT "Test de INT,CINT, CREAL, FIX et ROUND sans argument secondaire" :PRINT:PRINT
140 INPUT "Entrez un nombre"; N
150 PRINT
160 PRINT 'INT ("N") = "INT(N)
170 PRINT 'CINT ("N") = "CINT(N)
180 PRINT 'CREAL ("N") = "CREAL(N)
190 PRINT 'FIX ("N") = "FIX(N)
200 PRINT 'ROUND ("N") = "ROUND(N)
210 PRINT
220 LOCATE 1,20:INPUT "Un autre essai (O/N):" ; R$
230 IF UPPER$(R$)< > "O" AND UPPER$(R$)< > "N" THEN PRINT CHR$(7):GOTO 220
240 IF UPPER$(R$) = "O" THEN 100
250 END

Ligne 130 : Saisie du nombre réel à convertir
Lignes 140 à 210 : Affichage du résultat des fonctions INT, CINT, CREAL, FIX et ROUND.
Lignes 220 à 240 : Poursuite ou arrêt du programme.
COS (< expression numérique>)

Définition :

Rapport du côté adjacent sur l'hypoténuse.

Remarques :

a) Les commandes « DEG » et « RAD » peuvent être utilisées pour spécifier que le résultat doit être exprimé en degrés ou en radians.

b) Sauf indication contraire, la valeur sera calculée en radians.

CREAL (< expression numérique >)

ou « expression numérique » est un entier ou un réel.

Convertit l'expression numérique en un nombre réel.

Reportez-vous à la fonction « CINT » pour avoir des renseignements sur l'utilisation de « CREAL ».

DEF FN < nom > [( < paramètre(s) formel (s))] =< expression >

La fonction DEF FN permet de définir simplement une fonction mathématique qui sera utilisée dans la suite du programme.

Le but de cette fonction est double :

  • Exécuter une seule fois la définition de cette formule et l'utiliser par la suite sous forme réduite (gain de place et de temps d'exécution),
  • permettre à un utilisateur non programmeur de définir simplement la fonction qui l'intéresse.
UtilisationSoit une fonction mathématique dont nous voulons connaître les minimum et maximum dans un intervalle donné.

1000 REM Recherche du minimum et du maximum
1010 REM d'une fonction sur un intervalle donne
1020 REM
1050 CLS:PRINT"Tapez 1150 DEF FNA(X) = "
1060 PRINT"suivi de la foncion a etudier"
1070 PRINT'Tapez ensuite RUN 1100"
1080 STOP
1100 REM Saisie de l'intervalle d'etude 1110 PRINT:PRINT"Entrez l'intervalle d'etude:"
1120 PRINT:INPUT "Minimum";MI
1130 PRINT:INPUT "Maximum";MA
1140 REM
1150 DEF FNA(X) = COS(X)
1160 REM
1170 U= -1E+15:V=1E + 15
1180 FOR X = MI TO MA STEP (MA - MI)/100
1190 B = FNA(X)
1200 IF B>U THEN U = B 'Maximum
1210 IF B1220 NEXT X
1230 REM
1240 REM Affichage des résultats
1250 PRINT:PRINT"Le maximum est :";U
1260 PRINT:PRINT"Le minimum est :";V
1270 END

Lignes 1050 à 1080 : Présentation,
Lignes 1100 à 1140 : Saisie de l'intervalle d'étude,
Ligne 1150 : Définition de la fonction,
Lignes 1160 à 1230 : Calcul des minimum et maximum,
Lignes 1240 à 1270 : Affichage des minimum et maximum.
DEG

Etablit le mode de calcul des fonctions trigonométriques en degrés. Par défaut, les valeurs fournies aux fonctions SIN, COS, TAN et ATN sont supposées exprimées en radians.

Remarque :

Les commandes RAD, NEW, CLEAR, LOAD, RUN, CALL 0, ... annulent l'effet de la commande « DEG ».

EXP (< expression numérique >)

Donne l'exponentielle naturelle (base e) de l'expression numérique fournie. Remarques :

a) Pour calculer la puissance dans une base autre que e, (soit a cette base), nous ferons :

a^x = e^(x * LOG(a)) où LOG est le logarithme népérien.

b) La fonction réciproque de EXP est le logarithme népérien LOG.

FIX (< expression numérique >)

Enlève la partie décimale d'un nombre réel sans l'arrondir à sa valeur la plus proche.

Reportez-vous à la fonction « CINT » pour avoir des renseignements sur l'utilisation de « CREAL ».

HEX${< nombre entier sans signe>, [,< nombre entier>])

Le 1er argument est un nombre entier compris entre - 32768 et 65535.
Le 2e argument est un nombre entier compris entre 0 et 16. Il donne le nombre de digit (chiffres) pour la conversion.

Exemples :

HEX$(250,4) = OOFA : Des « 0 » sont rajoutés à gauche du nombre exprimé en hexadécimal pour obtenir le nombre de digit demandé.

HEX$(250,1 ) = FA : Impossible à exprimer sur 1 digit.

HEX$(250,16) = 00000000000000FA

INT (< expression numérique >)

où « expression numérique » est un entier ou un réel.

Arrondit à l'entier inférieur en enlevant la partie décimale.

Le résultat est le même que pour la fonction « FIX » pour les nombres positifs, et de un inférieur à la fonction « FIX » pour les nombres négatifs.

Reportez-vous à la fonction « CINT » pour avoir des renseignements sur l'utilisation de « CREAL ».

LOG (< expression numérique >)

Définition :

Soit x un nombre strictement positif écrit sous la forme x = a^y où :

  • a est un réel différent de 1,
  • y est appelé le logarithme de x dans la base a.

Dans le BASIC de l'AMSTRAD, la base est e pour la fonction « LOG » et 10 pour la fonction « LOG 10 ».

Remarque :

L'expression numérique fournie à la fonction LOG doit être strictement positive.

LOG 10 (< expression numérique >)

D'après la définition donnée à la fonction LOG du logarithme en base a, nous avons, pour tout nombre réel x strictement positif :

x= 10^y -> y = LOGIO (x)

Remarque :

L'expression numérique fournie à la fonction LOG doit être strictement positive.

MAX (< liste d'expressions numériques >)

où « liste d'expressions numériques » représente un ensemble de variables ou de valeurs entières ou réelles.

Cette fonction donne la plus grande des expressions fournies.

Exemple :

10 A = 4
20 PRINT MAX(3*4,A,1)

affichera 12.
MIN(< liste d'expressions numériques >)

où « liste d'expressions numériques » représente un ensemble de variables ou de valeurs entières ou réelles.

Cette fonction donne la plus petite des expressions fournies.

Exemple :

10 A = 4
20 PRINT MIN(3*4,A,1)

affichera 1.
NOT < argument >

Exécute une inversion logique sur tous les bits de l'argument entier fourni. La table de vérité de la fonction NOT au niveau bit est la suivante :

A01
NOT A10

Exemple :

    1 0 1 1 1 1 0 0 &BC
NOT &BC = 0 1 0 0 0 0 1 1 &43

< Argument 1 > OR < Argument 2>

Exécute un « OU » logique entre tous les bits des deux arguments entiers fournis.

La table de vérité de la fonction OR au niveau bit est la suivante :

OR01
000
111

Exemple :

 1 0 1 1 1 1 0 0 &BC
OR 0 1 1 1 1 1 0 1 &7D
 1 1 1 1 1 1 0 1 &FD

PI

Définition :

Rapport de la longueur d'un cercle à son diamètre. C'est un nombre irrationnel transcendant.

Le nombre « PI » sur AMSTRAD donne la valeur approchée du nombre PI : 3.141592653468251.

Remarque :

Les valeurs rationnelles suivantes peuvent suffire dans beaucoup de cas : 22/7 à 2* 10^ - 3 près, et 315/113 à 3*10^ - 7 près.

RAD

Définition :

Arc dont la longueur égale le rayon du cercle (le cercle entier mesure 2 pi radians).

Cette commande établit le mode de calcul des fonctions trigonométriques en radians.

Remarque :

On a 1 radian = 180/pi degrés, et 1 degré = pi/180 radians.

RANDOMIZE [< expression numérique> ]

Cette instruction permet de fixer la séquence pseudo-aléatoire du générateur de nombres aléatoires de l'AMSTRAD.

Lorsque vous désirez utiliser le générateur aléatoire dans un programme, l'instruction « RANDOMIZE » permet d'avoir des séquences aléatoires différentes.

Si vous utilisez l'argument « expression numérique », la séquence générée sera la même si vous fournissez deux fois le même argument.

Pour fixer l'argument du « RANDOMIZE », vous pouvez demander à la personne qui exécute le programme d'entrer un nombre N, et faire RANDOMIZE N, ou utiliser l'un des programmes suivants qui vous évitera cette démarche un peu lourde.

Attente de l'appui sur une touche. Pendant l'attente, un compteur s'incré-mente. Quand une touche est actionnée, le programme génère un RANDOMIZE .

120 CLS:PRINT « Appuyez sur une touche »:PRINT
130 :
140 A$ = INKEY$
150 J = J+1
160 IF A$ = ""THEN 140
170 :
180 RANDOMIZE J
190 :
200 FOR I=1 TO 10
210 PRINT INT(RND*10) ;
220 NEXT I
230 :
240 END

Ligne 120 : Message à l'écran
Lignes 140 à 160 : Attente d'une action au clavier
Ligne 180 : RANDOMIZE
Lignes 200 à 230 : Affichage d'une séquence pseudo-aléatoire.

Utilisation de l'instruction « TIME » dans un RANDOMIZE :

L'instruction « RANDOMIZE TIME » donne d'assez mauvais résultats, et une expression un peu plus complexe a été choisie.

120 RANDOMIZE RND(TIME)* 1000
130 FOR 1=1 TO 10
140 PRINT INT(RND^10) ;
150 NEXT I
160 :
170 END

Ligne 120 : RANDOMIZE
Lignes 130 à 150 : Affichage d'une séquence pseudo-aléatoire.
RND[ < expression numérique >]

Donne un nombre tiré au hasard dans la séquence pseudo-aléatoire courante si le paramètre « expression numérique » n'existe pas ou est positif.

Si l'expression numérique est nulle, RND(0) renvoie le dernier nombre tiré.

Si l'expression numérique est négative, une nouvelle séquence aléatoire est générée.

ROUND (< expression numérique >[, < nombre de décimales >])

Arrondit l'expression numérique au nombre de décimales indiqué dans le deuxième argument.

Si le deuxième argument est négatif et de valeur absolue n, l'expression est arrondie à un entier dont les n derniers chiffres sont nuls.

Exemple :

ROUND( 12343.656, - 3) = 1 2000
ROUND(12343.656,2) = 12300
ROUND(12343.656,0) ou ROUND (12343.656) = 12344
ROUND( 125, - 4) = 0

Reportez-vous à l'ordre « CINT » pour avoir des exemples de valeurs de ROUND.
SGN(< expression numérique >)

Donne le signe de l'expression numérique :

— 1 si elle est négative, 0 si elle est nulle et 1 si elle est positive.

Exemples :

SGN( —12.5)= -1
SGN(0) = 0
SGN (1.4E30) = 1

SIN (< expression numérique >)

Définition :

Pour un angle aigu, rapport du côté opposé sur l'hypoténuse. Remarques :

a) Les commandes « DEG » et « RAD » peuvent être utilisées pour spécifier que le résultat doit être exprimé en degrés ou en radians.

b) Sauf indication contraire, la valeur sera calculée en radians.

SQR (< expression numérique >)

où « expression numérique » est un nombre entier ou réel.

Définition :

a est appelé racine d'un nombre A si a^2 = A.

Cette fonction donne la racine d'un nombre réel ou entier.

TAN (< expression numérique >)

Définition :

Rapport du sinus sur le cosinus.

SIN = BC/AC et COS = AB/AC,
d'où TAN = SIN/COS = (BC/AC)/(AB/AC) = BC/AB

Remarques :

a) Les commandes « DEG » et « RAD » peuvent être utilisées pour spécifier que le résultat doit être exprimé en degrés ou en radians.

b) Sauf indication contraire, la valeur sera calculée en radians.

UNT(< nombre hexadécimal >)

Convertit l'argument en un nombre entier signé sur 16 bits en complément à 2.

Exemples :

UNT(&FFFF) = -1
UNT(&FFFE) = -2
UNT(0) = 0

Définition du complément a 2 :
    _
on a -n = n + 1 où n est un entier positif

par exemple :
  _
-3 = 3+1

3  = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
_
3  = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0

3 + 1 = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 = &FFFD en hexadécimal

< Argument 1 > XOR < Argument 2 >

Exécute un « OU EXCLUSIF » logique entre tous les bits des deux arguments entiers fournis.

La table de vérité de la fonction XOR au niveau bit est la suivante :

XOR01
001
110

Exemple :

  1 0 1 1 1 1 0 0 &BC
XOR 0 1 1 1 1 1 0 1 &7D
= 1 1 0 0 0 0 0 1 &C1

Page précédente : 4/1.2.11 - Instructions graphiques
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.73-desktop
Page créée en 072 millisecondes et consultée 971 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.