Chapitre 3 - Variables, formats et maths▲
Déclaration▲
Toutes les variables doivent êtres préalablement déclarées avant d'être utilisées dans le programme, c'est-à -dire qu'on leur affecte un type (voir les types de variables).
Elles peuvent être déclarées :
-
Au tout début du programme, avec la syntaxe VAR nom_de_la_variable : type;.
Elles seront alors valables pour le programme dans son intégralité (sous-programmes, fonctions, procédures...).
On les appellera variables globales. -
Au début d'une procédure ou fonction, avec la syntaxe précédente.
Elles ne seront valables que dans la procédure.
On les appellera variables locales.
Prise de valeurs▲
Les variables sont faites pour varier, il faut donc pouvoir leur donner différentes valeurs au moyen de l'opérateur d'affectation := (deux points égale) ou de certaines fonctions.
Il faut bien sûr que la valeur donnée soit compatible avec le type utilisé.
Ainsi, on ne peut donner la valeur 'bonjour' Ã un nombre entier (Integer).
Exemples :
Y := 2009
;
On donne ainsi la valeur 2009 à la variable Y (déclarée préalablement en Integer).
Lettre := 'a'
;
On affecte la valeur 'a' à la variable Lettre (déclarée préalablement en Char).
Continuer := true
;
On donne la valeur true (vrai) à la variable Continuer (déclarée préalablement en Boolean).
Nombre := Y + 103
;
Il est également possible d'utiliser les valeurs d'autres variables, du moment qu'elles sont de même type; sinon, il faut faire des conversions au préalable.
Delta := Sqr(b) - 4
* (a * c);
On peut donc également utiliser une expression littérale mathématique dans l'affectation de variables.
Mais attention à la priorité des opérateurs (voir opérateurs).
Phrase := 'Bonjour'
+ Chr(32
) + Nom;
On peut aussi concaténer (ajouter) des variables String (voir chapitre 13 sur les chaînes de caractères).
Fonctions▲
Fonctions mathématiques Pascal de base :
Syntaxe | Fonction |
---|---|
Sin(a) | sinus |
Cos(a) | cosinus |
ArcTan(a) | arctangente |
Abs(a) | valeur absolue |
Sqr(a) | carré |
Sqrt(a) | racine carrée |
Exp(a) | exponentielle |
Ln(a) | logarithme népérien |
L'argument des fonctions trigonométriques doit être exprimé en radians (Real), à vous donc de faire une conversion si nécessaire.
De plus, on peut voir que les fonctions tangente, factorielle n'existent pas : il faudra donc créer de toutes pièces les fonctions désirées (voir fonctions).
Emplois▲
Les variables peuvent êtres utilisées dans de nombreux emplois :
- Pour des comparaisons dans une structure conditionnelle (voir chapitre 5 sur les conditions);
- Pour l'affichage de résultats (voir chapitre 1 sur l'affichage);
- Pour le dialogue avec l'utilisateur du programme (voir chapitre 1 sur les entrées au clavier);
- Pour exécuter des boucles (voir chapitre 6 sur les structures répétitives);
- ...
Opérations▲
Syntaxe | Utilisation | Type des variables | Description |
---|---|---|---|
Inc(a); | Procédure | Tout scalaire | Le nombre a est incrémenté de 1 |
Inc(a,n); | Procédure | Tout scalaire | Le nombre a est incrémenté de n |
Dec(a); | Procédure | Tout scalaire | Le nombre a est décrémenté de 1 |
Dec(a,n); | Procédure | Tout scalaire | Le nombre a est décrémenté de n |
Trunc(a); | Fonction | Tout réel | Prise de la partie entière du nombre a sans arrondis |
Int(a); | Fonction |
a : tout réel Int(a) : Longint |
Prise de la partie entière du nombre a sans arrondis |
Frac(a); | Fonction | Tout réel | Prise de la partie fractionnaire du nombre a |
Round(a); | Fonction |
a : tout réel Round(a) : Longint |
Prise de la partie entière du nombre a avec arrondi à l'unité la plus proche |
Pred(x); | Fonction | Tout scalaire | Renvoie le prédécesseur de la variable x dans un ensemble ordonné |
Succ(x); | Fonction | Tout scalaire | Renvoie le successeur de la variable x dans un ensemble ordonné |
High(x); | Fonction | Tout scalaire | Renvoie la plus grande valeur possible que peut prendre de la variable x |
Low(x); | Fonction | Tout scalaire | Renvoie la plus petite valeur possible que peut prendre de la variable x |
Odd(a); | Fonction |
a : entier Odd(a) : Boolean |
Renvoie true si le nombre a est impair et false si a est pair |
SizeOf(x); | Fonction |
x : tous SizeOf(x) : Integer |
Renvoie le nombre d'octets occupés par la variable x |
Format▲
Sachez encore que le format (le nombre de signes) d'une variable de type réel peut être modifié lors de son affichage.
Exemples :
WriteLn(nombre:5
);
Cela signifie : afficher nombre en utilisant une largeur minimale de 5 caractères, en ajoutant si nécessaire des espaces à gauche pour atteindre cette largeur minimale (cadrage 'à droite').
S'il faut plus de 5 caractères pour afficher nombre, alors la largeur utilisée sera augmentée en conséquence.
- Pour un entier :
Var
n : Integer
;
...
n := 56
;
WriteLn(n:3
);
...
donnera pour affichage ([ et ] montrent les limites du champ affiché) :
[ 56]
soit 1 espace + 2 caractères pour n.
Alors que :
Var
n : Integer
;
...
n := 35767
;
WriteLn(n:3
);
...
donnera
[35767]
soit plus large que ce qu'on a demandé, car on ne peut pas afficher la valeur avec la largeur demandée.
- Pour un réel :
Si on n'a pas précisé le nombre de chiffres pour la partie décimale, il y aura affichage au format "exponentiel", c'est-à -dire quelque chose comme 5.6E+002.
Var
n : Real
;
...
n := 56
;
WriteLn(n:3
);
...
donnera pour affichage :
[ 5.6E+02]
alors que si la largeur demandée excède la longueur le nombre de caractères nécessités pour l'affichage comme ci dessus, on va compléter la partie décimale par des 0 (zéro), ceci tant qu'on n'a pas affiché un nombre de caractères maximum, variant selon le type de réel utilisé (real, single, ...).
Si ce nombre maximal est dépassé, alors on complète avec des espaces à gauche.
Ainsi :
Var
n : Real
;
...
n := 56
;
WriteLn(n:17
);
...
donnera (on est au max de chiffres pour real) :
[ 5.6000000000E+01]
alors que
WriteLn(n:20
);
donnera
[ 5.6000000000E+01]
Autre syntaxe :
WriteLn(Nombre:0
:5
);
Cela signifie : afficher nombre (réel) sans espace avant, et en affichant 5 chiffres de la partie décimale, en complétant ces décimales par des 0 (zéro) si nécessaire.
A la longueur 5 des chiffres décimaux, s'ajoutent les chiffres de la partie entière, + le point décimal.
Exemples :
Var
r : Real
;
...
r := 10
.1245214
;
WriteLn(r:0
:5
);
...
donnera pour affichage ([ et ] montrent les limites du champ affiché) :
[10.12452]
alors que
Var
r : Real
;
...
r := 10
.12
;
WriteLn(r:0
:5
);
...
donnera
[10.12000]
Dans la définition du Pascal (Jensen et Wirth), l'affichage d'un type réel commence toujours par au moins un espace, ce qui n'est pas le cas pour tous les autres types.
Pour pouvez appliquer un format pour tous les autres types de variable de manière générale, si vous ne stipulez que le nombre d'espaces à afficher devant votre texte ou valeur.
Exemple :
WriteLn('Coucou'
:20
);
Cela signifie : comme pour un nombre, on demande une largeur minimale pour l'affichage, donc ici 20 caractères, en ajoutant si nécessaire des espaces à gauche pour atteindre cette largeur minimale (cadrage "à droite").
L'affichage sera donc :
[ Coucou]
soit 14 espaces, puis la chaîne qui fait 6 caractères = 20 au total.