Arithmétique
GW-BASIC
(PC-BASIC)
Initiation au langage Basic
Résoudre rapidement et avec précision de longs problèmes mathématiques est une tâche que votre ordinateur accomplit facilement. Avant de taper des formules longues et difficiles, cependant, il y a quelques raccourcis que vous voudrez utiliser.
Un moyen simple de gérer des formules
mathématiques compliquées consiste à utiliser des "sous-routines",
Tapez et
exécutez ce programme :
10 PRINT
"EXECUTION DU PROGRAMME PRINCIPAL"
20 GOSUB 500
30 PRINT "MAINTENANT DE RETOUR DANS LE
PROGRAMME PRINCIPAL"
40 END
500 PRINT "EXECUTION DU SOUS-PROGRAMME"
510 RETURN
AX(BY + C) -
D + E(G/W) - F
GOSUB 500 indique à l'ordinateur d'aller au sous-programme qui commence à la ligne 500.
RETURN indique à l'ordinateur de renvoyer au mot BASIC qui suit immédiatement GOSUB.
Supprimez la ligne 40 et voyez ce qui se
passe lorsque vous exécutez le programme.
Si vous
l'avez fait, votre écran affiche :
EXECUTION DU PROGRAMME PRINCIPAL
EXECUTION DU SOUS-PROGRAMME
MAINTENANT DE RETOUR DANS LE PROGRAMME
PRINCIPAL
EXECUTION DU SOUS-PROGRAMME
RETURN without GOSUB in 510
Voyez-vous pourquoi la suppression de END à la ligne 40 provoque cette erreur ?
Au début, le programme fonctionne comme avant. Il passe au sous-programme de la ligne 500 puis revient à la ligne PRINT qui suit immédiatement GOSUB.
Ensuite, puisque vous avez supprimé FIN, il passe à la ligne suivante - le sous-programme de la ligne 500. Cette fois, cependant, il ne sait pas où retourner. C'est parce qu'il ne fait que "passer" dans le sous-programme ; il n'est pas envoyé au sous-programme par une ligne GOSUB.
Ce sous-programme élève un nombre à n'importe quelle puissance :
5 CLS
10 INPUT "TAPEZ UN NOMBRE "; N
20 INPUT "TAPEZ LA PUISSANCE A LAQUELLE VOUS
VOULEZ L'AUGMENTER "; P
30 GOSUB 2000
40 PRINT: PRINT N "A LA PUISSANCE" P "EST" E
50 GOTO 10
2000 REM FORMULE POUR ELEVER UN NOMBRE A LA
PUISSANCE A
2010 E = 1
2020 FOR X = 1 TO P
2030 E = E * N
2040 NEXT X
2050 IF P = 0 THEN E = 1
2060 RETURN
Avec GW-Basic vous pouvez utiliser des minuscules qui prend en charge les accents en minuscules.
5 CLS
10 INPUT "Tapez un nombre "; N
20 INPUT "Tapez la puissance à laquelle vous
voulez l'augmenter "; P
30 GOSUB 2000
40 PRINT: PRINT N "à la puissance " P "est" E
50 GOTO 10
2000 REM Formule pour élever un nombre à la
puissance A
2010 E = 1
2020 FOR X = 1 TO P
2030 E = E * N
2040 NEXT X
2050 IF P = 0 THEN E = 1
2060 RETURN
Sont également introduits dans ce programme :
Les deux-points (:), à la ligne 40.
Vous pouvez combiner des lignes de programme en utilisant les deux-points pour les séparer. La ligne 40 contient les deux lignes :
PRINT et PRINT N "à la puissance " P "est" E
REM, dans Line 2000. REM ne signifie rien pour l'ordinateur. Placez les lignes REM où vous voulez dans votre programme pour vous aider à vous souvenir de ce que fait le programme ; ils ne font aucune différence dans le fonctionnement du programme.
Pour voir par vous-même, ajoutez ces lignes et exécutez le programme :
5 REM CECI EST UN PROGRAMME PARTICULIER,
17 REM CETTE LIGNE CHANGERA-T-ELLE LE
PROGRAMME?
45 REM La ligne suivante garde le
sous-programme séparé
Vous pouvez aussi utiliser ' à la place de REM pour insérer des commentaires.
Essayez ceci:
50 GOTO 10 REM Retour à la ligne 10
50 GOTO 10 ' Retour à la ligne 10
Programme faites-le vous même
Modifiez le programme ci-dessus pour que l'ordinateur imprime un tableau de carrés (un nombre à la puissance 2) pour les nombres, disons, de 2 à 10.
5 CLS
7 PRINT "Table des carrés "
8 PRINT
10 P = 2
20 FOR N = 2 TO 10
25 GOSUB 2000
30 PRINT N "*" N "=" E,
40 NEXT N
50 END
2000 REM Formule pour élever un nombre
à la puissance A
2010 E=1
2020 FOR X = 1 TO P
2030 E = E * N
2040 NEXT X
2050 IF P = 0 THEN E = 1
2060 RETURN
Donnez un peu d'aide à l'ordinateur
À mesure que les formules mathématiques deviennent plus complexes, votre ordinateur a besoin d'aide pour les comprendre.
Par exemple, que se passe-t-il si vous voulez que l'ordinateur résolve ce problème :
Diviser la somme de 13 + 3 par 8
Vous voudrez peut-être que l'ordinateur arrive à la réponse de cette façon :
13+3 / 8=16/8=2
Mais, à la place, l'ordinateur arrive à une autre réponse.
Tapez cette ligne de commande et voyez :
PRINT 13 + 3 / 8
Ce qui donne 13.375
L'ordinateur résout les problèmes logiquement, en utilisant ses propres règles :
RÈGLES SUR L'ARITHMÉTIQUE
L'ordinateur résout les problèmes arithmétiques dans cet ordre :
1. Premièrement. il résout toutes les opérations de multiplication et de division.
2. En dernier. il résout les opérations d'addition et de soustraction.
3. S'il y a égalité (c'est-à-dire plus d'une opération de multiplication/division ou d'addition/soustraction), il résout les opérations de gauche à droite.
Dans le problème ci-dessus, l'ordinateur suit ses règles :
D'abord, il fait la division (3/8 = .375)
Ensuite, il fait l'addition (13 + .375 = 13.375)
Pour que l'ordinateur résolve le problème différemment, vous devez utiliser des parenthèses.
Tapez cette ligne :
PRINT (13 + 3) / 8
Ce qui donne 2
Chaque fois que l'ordinateur voit une opération entre parenthèses, il résout cette opération avant de résoudre les autres.
EXERCICE DE MATHÉMATIQUES POUR L'ORDINATEUR
Que pensez-vous que l'ordinateur affichera comme réponses à chacun de ces problèmes ?
PRINT 10 - (5 - 1) /2
PRINT 10 - 5 - 1 / 2
PRINT (10 - 5 - 1) /2
PRINT (10 - 5) - 1 /2
PRINT 10 - (5 - 1 /2)
Achevé? Tapez chacune des lignes de commande pour vérifier vos réponses.
Et si vous voulez que l'ordinateur résolve ce problème ?
Divisez 10 moins la différence de 5 moins 1 par 2
Vous demandez en fait à l'ordinateur de faire ceci :
(10-(5-1)) / 2
Lorsque l'ordinateur détecte un problème avec plusieurs jeux de parenthèses, il résout les parenthèses intérieures puis passe aux parenthèses extérieures. En d'autres termes, il fait ceci :
RÈGLES SUR LES PARENTHÈSES
1. L'ordinateur résout d'abord les opérations entre parenthèses, avant d'en résoudre d'autres.
2. L'ordinateur résout d'abord les parenthèses
intérieures. Ensuite, il en sort.
EXERCICE DE MATHÉMATIQUES INFORMATIQUE
Insérez des parenthèses dans le problème ci-dessous afin que l'ordinateur affiche 28 comme réponse :
PRINT 30 -9- 8 -7- 6
Réponse
PRINT 30 - (8 - (8 - (7 - 6) ) )
Le programme ci-dessous utilise deux sous-programmes. C'est pour ceux d'entre vous qui économisent en mettant la même somme d'argent à la banque chaque mois :
5 CLS
10 INPUT "Votre acompte mensuel " ; M
20 INPUT "Taux d'intérêt annuel de la banque " ; I
30 I = I/12 * 0.01
40
INPUT "Nombre de dépôts " ; NP
50 GOSUB 1000
60 PRINT "Tu vas avoir $" FV
" dans" NP "Mois"
70 END
1000 REM Formule d'intérêt mensuel composé
1010 N = 1 + I
1020 GOSUB 2000
1030 FV = M * E
1040 RETURN
2000 REM
Formule pour élever un nombre à une puissance
2010 E = 1
2020 FOR X = 1 TO
NP
2030 E = E * N
2040 NEXT X
2050 IF NP = 0 THEN E = 1
2060 RETURN
Notez qu'un sous-programme "appelle" un autre. Cela convient à l'ordinateur tant que :
Il y a un GOSUB pour envoyer l'ordinateur à chaque sous-programme, et il y a un RETURN à la fin de chaque sous-programme.
Ci-dessous, vous trouverez des sous-routines mathématiques utiles que vous pouvez ajouter à vos programmes.
Après l'exécution du programme ci-haut, l'ordinateur affiche
Tu vas avoir $ 6.740905 dans 36 Mois.
Avec la fonction PRINT USING, on l'ordinateur affiche la valeur FV arrondi à la deuxième décimal.
60 PRINT "Tu vas avoir $";USING "##.##"; FV;: PRINT " dans" NP "Mois"
On peut utiliser l'opérateur ^ pour élever un nombre à une puissance.
Ce programme donne le même résultat:
5 CLS
10 INPUT "Votre acompte mensuel " ; M
20 INPUT "Taux d'intérêt annuel de la banque " ; I
30 I = I/12 * 0.01
40
INPUT "Nombre de dépôts " ; NP
50 FV=M*(1+I)^NP
60 PRINT "Tu vas avoir $" FV
" dans" NP "Mois"
PRINT USING
Pour Afficher des chaînes ou des nombres en
utilisant un format spécifié.
Syntaxe:
PRINT USING expressions de chaîne; liste d'expressions[;]
Commentaires:
expressions de chaîne est une chaîne littérale
ou une variable composée de caractères de formatage spéciaux. Les caractères de
formatage déterminent le champ et le format des chaînes ou des nombres imprimés.
liste d'expressions se compose de la chaîne ou des expressions numériques
séparées par des points-virgules.
Champs de chaîne
Les trois caractères suivants peuvent être
utilisés pour formater le champ de chaîne :
!
Spécifie que seul le premier caractère de la chaîne doit être imprimé.
\n espaces\
Spécifie que 2+n caractères de la chaîne doivent
être imprimés.
Si les barres obliques inverses sont saisies sans espaces,
deux caractères sont imprimés ; si les barres obliques inverses sont tapées avec
un espace, trois caractères sont imprimés, et ainsi de suite.
Si la
chaîne est plus longue que le champ, les caractères supplémentaires sont
ignorés.
Si le champ est plus long que la chaîne, la chaîne est justifiée à gauche dans le champ et complétée par des espaces à droite. Par exemple:
10 A$="LOOK": B$="OUT" 30 PRINT USING "!"; A$; B$ 40 PRINT USING"\ \"; A$; B$ 50 PRINT USING"\ \"; A$; B$;"!!" RUN LO LOOKOUT LOOK OUT!!
&
Spécifie un champ de chaîne de longueur variable. Lorsque le champ est spécifié avec &, la chaîne est sortie exactement comme l'entrée.
Par exemple:
10 A$="LOOK": B$="OUT" 20 PRINT USING "!"; A$ 30 PRINT USING "&"; B$ RUN LOUT
Champs numériques
Les caractères spéciaux suivants peuvent être utilisés pour formater le champ numérique :
#
Un signe dièse est utilisé pour représenter
chaque position de chiffre. Les postes de chiffres sont toujours pourvus. Si le
nombre à imprimer comporte moins de chiffres que les positions spécifiées, le
nombre est justifié à droite (précédé d'espaces) dans le champ.
Un point
décimal peut être inséré à n'importe quelle position dans le champ. Si la chaîne
de format spécifie qu'un chiffre doit précéder la virgule décimale, le chiffre
est toujours imprimé (comme 0 si nécessaire). Les nombres sont arrondis si
nécessaire.
Par exemple:
PRINT USING "##.##";.78 0.78
PRINT USING "###.##";987.654 987.65
PRINT USING "##.##" ;10.2,5.3,66.789,.234 10.20 5.30 66.79 0.23
Dans le dernier exemple, trois espaces ont été
insérés à la fin de la chaîne de format pour séparer les valeurs imprimées sur
la ligne.
+ Un signe plus au début ou à la fin de la chaîne de format
entraîne l'impression du signe du nombre (plus ou moins) avant ou après le
nombre.
- Un signe moins à la fin du champ de format entraîne l'impression des nombres négatifs suivis d'un signe moins.
Par exemple:
PRINT USING"+##.##";-68.95,2.4,55.6,-9 -68.95 +2.40 +55.60 -0.90
PRINT USING"##.##-";-68.95,22.449,-7.01 68.95 22.45 7.01-
**
Un double astérisque au début de la chaîne
de format entraîne le remplissage des espaces de début du champ numérique par
des astérisques. Le ** spécifie également deux positions de chiffres
supplémentaires.
Par exemple:
PRINT USING "**#.#";12.39,-0.9,765.1 *12.4* -09765.1
$$
Un signe de dollar double au début de la chaîne de format entraîne l'impression d'un signe dollar immédiatement à gauche du nombre formaté. Le $$ spécifie deux positions de chiffres supplémentaires, dont l'une est le signe dollar.
Le format exponentiel ne peut pas être utilisé avec $$.
Les nombres négatifs ne peuvent pas être utilisés à moins que le signe moins ne soit à la droite.
Par exemple:
PRINT USING "$$###.##";456.78 $456.78
**$
Le **$ au début d'une chaîne de format combine les effets des deux symboles ci-dessus. Les espaces de début sont remplis d'astérisques et un signe dollar est imprimé avant le nombre. **$ spécifie trois positions de chiffres supplémentaires, dont l'une est le signe dollar.
Par exemple:
PRINT USING "**$##.##";2.34 ***$2.34
,
Une virgule à gauche du point décimal dans la chaîne de format entraîne l'impression d'une virgule à gauche de chaque troisième chiffre à gauche du point décimal. Une virgule à la fin de la chaîne de format est imprimée dans le cadre de la chaîne.
PRINT USING "####,.##";1234.5 1,234.50
^^^^
Quatre carets peuvent être placés après les caractères de position des chiffres pour spécifier le format exponentiel.
Les quatre carets permettent d'imprimer E+xx. Toute position de la virgule décimale peut être spécifiée. Les chiffres significatifs sont justifiés à gauche et l'exposant est ajusté. À moins qu'un signe + ou un signe + ou - à la fin ne soit spécifié, une position de chiffre est utilisée à gauche de la virgule décimale pour imprimer un espace ou un signe moins.
Par exemple:
PRINT USING "##.##^^^^";234.56 2.35E+02
PRINT USING ".####^^^^-";888888 OK
PRINT USING "+.##^^^^";123 +.12E+03
_
Un trait de soulignement dans la chaîne de format entraîne la sortie du caractère suivant sous forme de caractère littéral.
Par exemple:
PRINT USING "_!##.##_!";12.34
!12.34!
Le caractère littéral lui-même peut être un trait de soulignement en plaçant "_" dans la chaîne de format.
%
Un signe de
pourcentage est imprimé devant le nombre si le nombre à imprimer est supérieur
au champ numérique spécifié.
Si l'arrondi fait que le nombre dépasse le champ, un signe de pourcentage est imprimé devant le nombre arrondi.
Par exemple:
PRINT USING "##.##";111.22 %111.22
PRINT USING ".##"';.999 %1.00
Si le nombre de chiffres spécifié dépasse 24, une erreur "Illegal function call" se produit.
Opérateurs et fonctions Mathématiques
Code
Opération
Résultat
x ^ y
Exponentiation
x élevé à la puissance y
x * y
Multiplication
Produit de x et y
x / y
Division
Quotient de x et y
x \ y
Division tronquée à
l'entier
Quotient entier de x et y
x MOD y
Modulo
Reste entier de x par y
(avec le signe de x)
x + y
Addition
Somme de x et y
x - y
Soustraction
Différence de x et y
+ y
Unaire Plus
Valeur de y
- y
Négation
Valeur négative de y
Fonction
ABS
Valeur absolue
ATN
Arc
tangente
COS
Cosinus
EXP
Exponentiel
FIX
Troncature
INT
Sol
LOG
Un
algorithme naturel
SIN
Sinus
SGN
Signe
SQR
Racine carrée
TAN
Tangente
Pour plus de détails voir Guide de langage
Pour convertir les degrés en radians
radians = degrés × PI / 180°
Tableau de conversion des degrés en radians
Dégrées (°) | Radians (rad) | Radians (rad) |
---|---|---|
0° | 0 rad | 0 rad |
30° | π/6 rad | 0.5235987756 rad |
45° | π/4 rad | 0.7853981634 rad |
60° | π/3 rad | 1.0471975512 rad |
90° | π/2 rad | 1.5707963268 rad |
120° | 2π/3 rad | 2.0943951024 rad |
135° | 3π/4 rad | 2.3561944902 rad |
150° | 5π/6 rad | 2.6179938780 rad |
180° | π rad | 3.1415926536 rad |
270° | 3π/2 rad | 4.7123889804 rad |
360° | 2π rad | 6.2831853072 rad |