Section courante

A propos

Section administrative du site

Constantes, variables, expressions et opérateurs

Le GWBASIC vous permet d'utiliser des constantes, des variables, des expressions et des opérateurs, et les utiliser pour développer des programmes plus sophistiqués.

Constantes

Les constantes sont des valeurs statiques que l'interpréteur GWBASIC utilisent lors de l'exécution de votre programme. Il existe deux types de constantes : chaîne de caractères et numérique.

Une constante de chaîne de caractères est une séquence de 0 à 255 caractères alphanumériques entre guillemets doubles. Voici des exemples de constantes de chaîne de caractères :

BONJOUR
$25,000.00
Nombre d'employes

Les constantes numériques peuvent être positives ou négatives. Lorsque vous entrez une constante numérique dans GWBASIC, vous ne devez pas taper les virgules. Par exemple, si le nombre 10,000 devait être saisi en tant que constante, il serait saisi sous la forme 10000. Il existe cinq types de constantes numériques : nombre entier, nombre à virgule fixe, nombre à virgule flottante, nombre hexadécimal et nombre octal :

Constante Description
Entier Nombres entiers entre -32768 et +32767. Ils ne contiennent pas de points décimaux.
Virgule fixe Nombres réels positifs ou négatifs contenant des décimales.
Constantes à virgule flottante Nombres positifs ou négatifs représentés sous forme exponentielle (similaire à la notation scientifique). Une constante à virgule flottante est constituée d'un entier éventuellement signé ou d'un nombre à virgule fixe (la mantisse), suivi de la lettre E et d'un entier éventuellement signé (l'exposant). L'intervalle autorisée pour les constantes à virgule flottante est de 3,0×10-39 à 1,7×1038. Par exemple :

235.988E-7=.0000235988
2359E6=2359000000
Hexadécimal Nombres hexadécimaux avec préfixe &H. Par exemple :
&H76 &H32F
Octal Nombres octaux avec le préfixe &O ou &. Par exemple :
&O347
&1234

Format réel de simple et double précision pour les constantes numériques

Les constantes numériques peuvent être des entiers, des nombres réels de simple précision ou de double précision. Les constantes entières sont entreposées sous forme de nombres entiers uniquement. Les constantes numériques simple précision sont entreposées avec 7 chiffres (bien que seulement 6 puissent être précis). Les constantes numériques à double précision sont entreposées avec une précision de 17 chiffres et affichées avec jusqu'à 16 chiffres.

Une constante de simple précision est une constante numérique avec soit :

Une constante de double précision est une constante numérique avec soit :

Voici des exemples de constantes numériques de simple et de double précision :

Constantes de simple précision Constantes de double précision
46.8 345692811
-1.09E-06 -1.09432D-06
3489.0 3490.0#
22.5! 7654321.1234

Variables

Les variables sont les noms que vous avez choisis pour représenter les valeurs utilisées dans un programme GW-BASIC. La valeur d'une variable peut être attribuée spécifiquement ou peut être le résultat de calculs dans votre programme. Si aucune valeur n'est attribuée à une variable, le GW-BASIC suppose que la valeur de la variable est zéro.

Noms et déclarations des variables

Les noms de variables GWBASIC peuvent avoir n'importe quelle longueur ; jusqu'à 40 caractères sont significatifs. Les caractères autorisés dans un nom de variable sont les lettres, les chiffres et le point décimal. Le premier caractère du nom de la variable doit être une lettre. Les caractères spéciaux de déclaration de type sont également autorisés.

Les mots réservés (tous les mots utilisés comme commandes, instructions, fonctions et opérateurs GWBASIC) ne peuvent pas être utilisés comme noms de variable. Cependant, si le mot réservé est intégré dans le nom de la variable, il sera autorisé.

Les variables peuvent représenter des valeurs numériques ou des chaînes de caractères.

Caractères de déclaration de type

Les caractères de déclaration de type indiquent ce qu'une variable représente. Les caractères de déclaration de type suivants sont reconnus :

Caractère Type de variables
$ Variable de chaîne de caractères
% Variable entière
! Variable réel de simple précision
# Variable réel de double précision

Voici des exemples de noms de variables pour chaque type :

Type de variables Nom de l'échantillon
Variable de chaîne de caractères N$
Variable entière LIMIT%
Variable simple précision MINIMUM!
Variable de double précision Pl#

Le type par défaut d'un nom de variable numérique est de simple précision. La double précision, bien que très précise, utilise plus d'espace mémoire et plus de temps de calcul. La simple précision est suffisamment précise pour la plupart des applications. Cependant, le septième chiffre significatif (s'il est affiché) ne sera pas toujours exact. Vous devez être très prudent lorsque vous effectuez des conversions entre des variables entières, simple précision et double précision.

La variable suivante est une valeur de simple précision par défaut :

ABC

Les variables commençant par FN sont supposées être des appels à une fonction définie par l'utilisateur.

Les instructions DEFINT, DEFSTR, DEFSNG et DEFDBL de GWBASIC peuvent être incluses dans un programme pour déclarer les types de valeurs pour certains noms de variables.

Variables de tableau

Un tableau est un groupe ou un tableau de valeurs référencées par le même nom de variable. Chaque élément d'un tableau est référencé par une variable de tableau étant un entier en indice ou une expression d'entier. L'indice est entre parenthèses. Un nom de variable de tableau a autant d'indices qu'il y a de dimensions dans le tableau.

Par exemple :

  1. V(10)

fait référence à une valeur dans un tableau unidimensionnel, tandis que :

  1. T(1,4)     

fait référence à une valeur dans un tableau à deux dimensions.

Le nombre maximal de dimensions pour un tableau dans GWBASIC est de 255. Le nombre maximal d'éléments par dimension est de 32767.

Si vous utilisez un tableau avec une valeur d'indice supérieure à 10, vous devez utiliser l'instruction DIM. Si un indice supérieur au maximum spécifié est utilisé, vous recevrez le message d'erreur :

Subscript out of range

Les tableaux multidimensionnels (plusieurs indices séparés par des virgules) sont utiles pour entreposer des données tabulaires. Par exemple, A(1,4) peut être utilisé pour représenter un tableau à deux lignes et cinq colonnes tel que le suivant :

Colonne 0
1 2 3 4
Ligne 0 10 20 30 40 50
Ligne 1 60 70 80 90 100

Dans cet exemple, élément A(1,2)=80 et A(0,3)=40. Les lignes et les colonnes commencent par 0 et non par 1, sauf indication contraire.

Espace mémoire requis pour l'entreposage variable

Les différents types de variables nécessitent différentes quantités d'entreposage. Selon la capacité d'entreposage et de mémoire de votre ordinateur et la taille du programme que vous développez, ces considérations peuvent être importantes.

Variable Octets d'entreposage requis
Entier 2
Simple précision 4
Double précision 8
Tableaux Octets d'entreposage requis
Entier 2 par élément
Simple précision 4 par élément
Double précision 8 par élément

Chaînes de caractères : Surdébit de trois octets, plus le contenu actuel de la chaîne de caractères sous la forme d'un octet pour chaque caractère de la chaîne de caractères. Les guillemets marquant le début et la fin de chaque chaîne de caractères ne sont pas comptés.

Conversion des types

Si nécessaire, le GWBASIC convertit une constante numérique d'un type de variable à un autre, selon les règles suivantes :

Expressions et opérateurs

Une expression peut être simplement une chaîne de caractères ou une constante numérique, une variable, ou elle peut combiner des constantes et des variables avec des opérateurs pour produire une valeur unique.

Les opérateurs effectuent des opérations mathématiques ou logiques sur les valeurs. Les opérateurs fournis par GWBASIC est divisés en quatre catégories :

Opérateurs arithmétiques

Voici les opérateurs arithmétiques reconnus par GWBASIC. Ils apparaissent par ordre de priorité :

Opérateur Opération
^ Exponentiation
- Négation
* Multiplication
/ Division en virgule flottante
+ Addition
- Soustraction

Les opérations entre parenthèses sont effectuées en premier. À l'intérieur des parenthèses, l'ordre de priorité habituel est maintenu. Voici des exemples d'expressions algébriques et leurs équivalents GWBASIC :

Expression algébrique Expression de BASIC
X-Z/Y (X-Y)/Z
XY/Z X*Y/Z
X+Y/Z (X+Y)/Z
(X2)Y (X^2)^Y
XYZ X^(Y^Z)
X(-Y) X*(-Y)

Deux opérateurs consécutifs doivent être séparés par des parenthèses.

Division entière et arithmétique du module

Deux opérateurs arithmétiques supplémentaires sont disponibles : la division entière et l'arithmétique du module.

La division entière est indiquée par la barre oblique inverse (\). Les opérandes sont arrondis à des nombres entiers (doit être compris entre -32768 et 32767) avant que la division ne soit effectuée, et le quotient est tronqué à un nombre entier.

Voici des exemples de division entière :

  1. 10\4 = 2
  2. 25.68\6.99 = 3 

Dans l'ordre d'apparition dans GWBASIC, la division entière sera effectuée juste après la division en virgule flottante.

L'arithmétique du module est désignée par l'opérateur MOD. Il donne la valeur entière étant le reste d'une division entière.

Voici des exemples d'arithmétique de module :

10.4 MOD 4 = 2 (10/4=2 avec un reste 2)
25.68 MOD 6.99 = 5 (26/7=3 avec un reste 5)

Dans l'ordre d'apparition dans GWBASIC, l'arithmétique du module suit la division entière. Les fonctions INT et FIX, sont également utiles dans l'arithmétique de module.

Débordement et division par zéro

Si, lors de l'évaluation d'une expression, une division par zéro est rencontrée, le message d'erreur :

Division by zero

apparaît, l'infini machine avec le signe du numérateur est fourni comme résultat de la division, et l'exécution continue.

Si l'évaluation d'une exponentiation entraîne l'élévation de zéro à une puissance négative, le message d'erreur 

Division by zero

apparaît, l'infini positif de la machine est fourni comme résultat de l'exponentiation et l'exécution se poursuit.

Si un débordement se produit, le message d'erreur

Overflow

apparaît, l'infini machine avec le signe algébriquement correct est fourni comme résultat et l'exécution continue. Les erreurs se produisant en cas de débordement et de division par zéro ne seront pas interceptées par la fonction d'interception d'erreurs.

Opérateurs relationnels

Les opérateurs relationnels vous permettent de comparer deux valeurs. Le résultat de la comparaison est soit vrai (-1) soit faux (0). Ce résultat peut ensuite être utilisé pour prendre une décision concernant le déroulement du programme. Le tableau suivant affiche les opérateurs relationnels :

Opérateur Relation testée Expression
= Égalité X=Y
<> Inégalité X<>Y
< Moins que X<Y
> Plus grand que X>Y
<= Inférieur ou égal à X<=Y
>= Plus grand ou égal à X>=Y

Le signe égal est également utilisé pour attribuer une valeur à une variable. Voir l'instruction LET.

Lorsque des opérateurs arithmétiques et relationnels sont combinés dans une même expression, l'arithmétique est toujours effectuée en premier :

  1. X+Y < (T-1)/Z 

Cette expression est vraie si la valeur de X plus Y est inférieure à la valeur de T-1 divisée par Z.

Opérateurs logiques

Les opérateurs logiques effectuent des tests sur plusieurs relations, des manipulations de bits ou des opérations booléennes. L'opérateur logique renvoie un résultat au niveau du bit étant soit vrai (non nul) soit faux (zéro). Dans une expression, les opérations logiques sont effectuées après les opérations arithmétiques et relationnelles. Le résultat d'une opération logique est déterminé comme indiqué dans le tableau suivant. Les opérateurs sont classés par ordre de priorité.

Résultats renvoyés par les opérations logiques :

Opération Valeur Valeur Résultat
NOT X   NOT X
V   F
F   V
AND X Y X AND Y
V V V
V F F
F V F
F F F
OR X Y X OR Y
V V V
V F V
F V V
F F F
XOR X Y X XOR Y
V V F
V F V
F V V
F F F
EQV X Y X EQV Y
V V V
V F F
F V F
F F V
IMP X Y X IMP Y
V V V
T F F
F V V
F F V

Tout comme les opérateurs relationnels peuvent être utilisés pour prendre des décisions concernant le déroulement du programme, les opérateurs logiques peuvent connecter deux relations ou plus et renvoyer une valeur vraie ou fausse à utiliser dans une décision. Par exemple :

  1. IF D<200 AND F<4 THEN 80
  2. IF I>10 OR K<0 THEN 50
  3. IF NOT P THEN 100

Les opérateurs logiques convertissent leurs opérandes en entiers 16 bits, signés, complément à deux dans la plage de -32768 à +32767 (si les opérandes ne sont pas dans cette intervalle, une erreur se produit). Si les deux opérandes sont fournis sous la forme 0 ou -1, les opérateurs logiques renvoient 0 ou -1. L'opération donnée est effectuée sur ces entiers en bits ; c'est-à-dire que chaque bit du résultat est déterminé par les bits correspondants dans les deux opérandes.

Ainsi, il est possible d'utiliser des opérateurs logiques pour tester des octets pour une configuration binaire particulière. Par exemple, l'opérateur AND peut être utilisé pour masquer tous les bits sauf un d'un octet d'état au niveau d'un port d'entrée/sortie de machine. L'opérateur OR peut être utilisé pour fusionner deux octets afin de créer une valeur binaire particulière. Les exemples suivants illustrent le fonctionnement des opérateurs logiques :

Exemple Explication
63 AND 16=16 63 = binaire 111111 et 16 = binaire 10000, donc 63 ET 16 = 16
15 AND 14=14 15 = binaire 1111 et 14 = binaire 1110, donc 15 ET 14 = 14 (binaire 1110)
-1 AND 8=8 -1 = binaire 1111111111111111 et 8 = binaire 1000, donc -1 ET 8 = 8
4 OR 2=6 4 = binaire 100 et 2 = binaire 10, donc 4 OU 2 = 6 (binaire 110)
10 OR 10=10 10 = binaire 1010, donc 1010 OU 1010 =1010 (10)
-1 OR -2=-1 -1 = binaire 1111111111111111 et -2 = binaire 1111111111111110, donc -1 OU -2 = -1. Le complément binaire de 16 zéros est de 16 uns, étant la représentation du complément à deux de -1.
NOT X=-(X+1) Le complément à deux de tout entier est le complément de bit plus un.

Opérateurs fonctionnels

Une fonction est utilisée dans une expression pour appeler une opération prédéterminée devant être effectuée sur un opérande. Le GWBASIC a des fonctions intrinsèques résidant dans le système, telles que SQR (racine carrée) ou SIN (sinus).

Le GWBASIC permet également des fonctions définies par l'utilisateur écrites par le programmeur. Voir l'instruction DEF FN.

Opérateurs de chaîne de caractères

Pour comparer des chaînes de caractères, utilisez les mêmes opérateurs relationnels que ceux utilisés avec les nombres :

Opérateur Description
= Égal à
<> Inégale
< Moins que
> Plus grand que
<= Inférieur ou égal à
>= Plus grand ou égal à

L'interpréteur GWBASIC compare les chaînes de caractères en prenant un caractère à la fois de chaque chaîne de caractères et en comparant leurs codes ASCII. Si les codes ASCII de chaque chaîne sont identiques, les chaînes de caractères sont égales. Si les codes ASCII diffèrent, le numéro de code inférieur précédera le code supérieur. Si l'interpréteur atteint la fin d'une chaîne lors de la comparaison de chaînes de caractères, la chaîne de caractères la plus courte est dite plus petite, à condition que les deux chaînes de caractères soient identiques jusqu'à ce point. Les blancs de début et de fin sont significatifs.

Par exemple :

  1. "AA" < "AB"
  2. "FILENAME" = "FILENAME"
  3. "X&" > "X#"
  4. "CL " > "CL"
  5. "kg" > "KG"
  6. "SMYTH" < "SMYTHE"
  7. B$ < "9/12/78" où B$ = "8/12/78"

Les comparaisons de chaînes de caractères peuvent également être utilisées pour tester des valeurs de chaîne de caractères ou pour classer les chaînes de caractères par ordre alphabétique. Toutes les constantes de chaîne de caractères utilisées dans les expressions de comparaison doivent être placées entre guillemets.

Les chaînes de caractères peuvent être concaténées à l'aide du signe plus (+). Par exemple :

  1. 10 A$="FILE":B$="NAME"
  2. 20 PRINT A$+B$
  3. 30 PRINT "NEW " + A$+B$
  4. RUN

on obtiendra :

FILENAME
NEW FILENAME


Dernière mise à jour : Vendredi, le 15 avril 2022