Section courante

A propos

Section administrative du site

Principes de base de la conception de programmes THINK Pascal

Le THINK Pascal permet d'effectuer de faire la conception de la manière suivante :

Instruction de déclaration

Le THINK Pascal offre la possibilité d'effectuer des affectations de valeurs à des variables. La syntaxe de la déclaration est la suivante :

variable := expression

variable représente n'importe quel nom de variable THINK Pascal, et expression représente une combinaison de variables, constantes et opérations. Le := est appelé l'opérateur d'affectation. (Bien que composé de deux symboles, ":" et "=", il est traité comme s'il s'agissait d'un seul symbole.) Le but d'une instruction d'affectation est de donner une nouvelle valeur à une variable. Chaque variable a une place particulière dans la mémoire de l'ordinateur où sa valeur est entreposée, de sorte qu'une instruction d'affectation a pour effet de entreposer une nouvelle valeur dans cet emplacement de mémoire. Nous disons que la nouvelle valeur est «affectée à la variable». Lorsque l'instruction d'affectation est exécutée, deux événements majeurs se produisent, dans cet ordre :

Déclarations d'affectation numérique

Une instruction d'affectation numérique est une instruction pour laquelle la valeur sur le côté droit de l'opérateur d'affectation est un nombre et la variable sur le côté gauche de l'opérateur d'affectation est un type numérique. Par exemple, voici des instructions d'affectation numériques (toutes les variables sont réelles) :

TaxRate := 0.06;
Balance :=- Balance + 345.68;
x := y;
Price := 1.5 * Cost;

Le premier exemple donne à la variable TaxRate une valeur de 0,06. La seconde modifie la variable Balance en ajoutant 345,68 à la valeur précédente de «Balance». Le troisième copie la valeur de la variable «Y» dans la variable «X», et le quatrième donne à la variable «Prix» le produit de la variable «Coût» multiplié par 1,5. La variable «Y» dans le troisième exemple et la variable «Cost» dans le quatrième exemple ne sont pas modifiées par l'exécution des instructions d'affectation. Seules les variables sur le côté gauche ont leurs valeurs modifiées.

Noter. L'opérateur d'affectation ":=" évoque une flèche orientée vers la gauche, ce qui nous rappelle que les valeurs circulent de droite à gauche. Il n'y a pas d'espace entre les deux points et le signe égal. Priorité. Comme vous l'avez peut-être remarqué, l'instruction d'affectation ressemble un peu à une formule algébrique. Par exemple, la formule :

d = rt

nous dit comment calculer la distance pour une valeur donnée de r (taux) et t (temps). Dans une formule comme celle-ci, tout comme dans une déclaration d'affectation, la quantité à gauche est la quantité que nous souhaitons calculer, en utilisant la formule ou l'expression à droite. Notre rendu THINK Pascal de cette formule pourrait être :

D := R * T

ou, plus clairement :

Distance := Rate * Time

Les formules impliquent généralement des combinaisons de variables et de constantes utilisant des opérateurs tels que l'addition, la soustraction, la multiplication et la division. Par exemple, la formule familière :

F = (9/5)C + 32

(pour déterminer la température Fahrenheit correspondant à une lecture Celsius donnée) implique la division (9 divisé par 5), la multiplication et l'addition. La formule inverse est :

C = (5/9) (F - 32)

implique la division, la soustraction et la multiplication. Les formules introduisent également des parenthèses pour contrôler l'ordre dans lequel les opérations doivent être effectuées. (Dans le dernier cas, ils s'assurent que la quantité "F - 32" est évaluée avant d'être multipliée par "5/9".) Les règles suivantes sont couramment utilisées comme conventions pour déterminer l'ordre des opérations dans les formules algébriques.

Voici un ensemble d'exemples illustrant ces règles :

3+4 · 7 est 31

(La multiplication a priorité sur l'addition.)

(3 + 4)7 est 49

(Les parenthèses forcent d'abord l'évaluation de l'addition.)

-5 + 9 est 4

(Le moins unaire agit en premier.)

8/4 · 2 est 4

(La division et la multiplication vont de gauche à droite.)

8/(4 · 2) est 1

(Les parenthèses forcent d'abord l'évaluation de la multiplication.)

7-4-2 est 1

(Les soustractions vont de gauche à droite.)

7-(4-2) est 5

(Les parenthèses forcent d'abord l'évaluation de la soustraction à droite.)

6 · (5 - (2 + 1)) est 12

(Les parenthèses les plus intimes sont évaluées en premier.)

Les symboles THINK Pascal pour les opérateurs arithmétiques sont :

Opérateur Description
+ Ajouter
- Soustraction (et moins unaire)
* Multiplication
/ Division

Il n'y a pas d'opérateur THINK Pascal pour l'exponentielle. En algèbre, vous vous en souvenez peut-être, un point indique une multiplication, comme dans la formule suivante :

y=a · b

Plus tard, vous avez été autorisé à laisser tomber le point, en écrivant :

y=ab

Considérez, cependant, l'instruction d'affectation THINK Pascal correspondante :

Y := AB

Parce que les noms de variables THINK Pascal peuvent être (et sont encouragés à être) de plus d'une lettre, nous ne pouvons pas être sûrs si le côté droit se réfère à une seule variable "AB" ou à la variable "A" multipliée par la variable "B". Pour clarifier la situation, nous devons toujours inclure un symbole de multiplication. Pour des raisons historiques, le symbole astérisque a été choisi pour représenter l'opérateur de multiplication en THINK Pascal. En algèbre, nous sommes habitués à voir des fractions ayant des expressions à la fois pour le numérateur et le dénominateur; par exemple :

a+2b
____

c-3d

En THINK Pascal, nous utilisons le symbole barre oblique (/) pour l'opérateur de division. Notez qu'une traduction naïve de la dernière formule dans l'instruction d'affectation THINK Pascal ressemble à ceci :

Z := A + 2 * B / C - 3 * D

donne un résultat erroné. La traduction correcte en THINK Pascal est :

Z := (A + 2 * B) / (C - 3 * D)

La raison pour laquelle la première déclaration est incorrecte est que, sans les parenthèses, la sous-expression 2 * B / C est calculée avant l'addition et la soustraction. Par exemple, supposons que les variables A, B, C et D contiennent respectivement les valeurs 4, 6, 8 et 2. La valeur correcte pour z est :

(4 + 2 * 6) / (8 - 3 * 2) =
(4 + 12) / (8 - 6) =
16 / 2 =
8

L'instruction d'affectation incorrecte donne :

4 + 2 * 6 / 8 - 3 * 2 =
4 + 12/ 8 - 6 =
4 + 1.5 - 6 =
5.5-6 =
-0.5

Les règles de précédence des opérateurs arithmétiques de THINK Pascal coïncident avec les règles algébriques :

Parce que les règles de précédence en THINK Pascal sont les mêmes que celles des formules algébriques, la plupart des formules algébriques peuvent être réécrites comme des instructions d'affectation THINK Pascal avec peu de difficulté. Nous devons cependant nous rappeler d'utiliser l'astérisque (*) pour la multiplication et la barre oblique (/) pour la division, et de regrouper les expressions du numérateur et du dénominateur entre parenthèses. Ce qui suit illustre la correspondance entre les formules algébriques et les instructions d'affectation THINK Pascal :

Formule algébrique Déclaration d'affectation THINK Pascal
y = x+t - Y := X + T
x=2y - X := 2 * Y
x = y/z + r - X := Y/Z + R
y = ax+b - Y := A * X + B
a =x(t + w) - A := X * (T+W)

Il est permis d'ajouter des parenthèses supplémentaires à une expression afin de souligner la signification des sous-expressions. Par exemple, nous pouvons écrire :

Y := (B * A) / C

au lieu de l'équivalent

Y := B * A / C

si l'on veut souligner que la multiplication précède la division. De même, on peut écrire :

Y := (40 * R) + (1.5 * R * T)

Si nous le souhaitons, bien qu'aucune parenthèse ne soit nécessaire pour obtenir la priorité souhaitée.

Expressions réelles et entières

Dans les exemples que nous venons de donner, nous supposons généralement que toutes les variables sont réelles. Comme mentionné précédemment, THINK Pascal fait une distinction entre les quantités entières et réelles. Cependant, une brève discussion s'impose ici. Heureusement, la manière dont THINK Pascal gère les expressions est ce à quoi nous nous attendrions normalement. Par exemple :

2.5 + 7 est 9.5

(L'ajout d'un réel à un entier est autorisé.)

5 * 6.43 est 32.15

(La multiplication (et la division ou la soustraction) est également autorisée.)

5 / 2 est 2.5

(La division de deux entiers donne exactement ce que nous attendons ici.)

4 / 2 est 2.0

(La réponse de l'opérateur de division "/" est toujours réelle.)

Seul le dernier exemple peut être quelque peu inattendu. En général, nous pouvons donc rédiger nos déclarations d'affectation de manière tout à fait naturelle. Par exemple, si le prix d'un élément est un réel et la quantité achetée est un entier, une affectation :

Totalcost := Price * Quantity

est acceptable (TotalCost est réel). Il y a une restriction importante à noter. Nous ne pouvons pas affecter une expression réelle à une variable entière. Par exemple, supposons que nous sachions qu'un nombre réel R est divisible par 10. Si N est un entier, une affectation telle que :

N := R / 10

générerait toujours une erreur de compilation de type incompatible car "/" renvoie toujours un résultat réel.

Pour la plupart, les instructions d'affectation en THINK Pascal sont simples. Si nous savons quelle formule ou expression est nécessaire pour calculer une nouvelle valeur pour une variable, nous plaçons l'expression à droite de l'opérateur d'affectation et la variable à gauche. Il y a cependant sept points méritant une attention particulière :

Nous vous recommandons fortement d'activer la vérification du dépassement d'entier dans tout programme incluant l'arithmétique d'entiers. Nous supposerons que l'option V a été activée dans tous les programmes d'exemple que nous donnons contenant l'arithmétique des entiers.

Déclarations d'attribution de caractère

Une variable de type char peut avoir comme valeur n'importe quel caractère unique. Certains de ces caractères correspondent aux caractères pouvant être générés sur le clavier et imprimés sur une imprimante. Les deux méthodes les plus courantes pour affecter des valeurs à une variable char sont l'utilisation d'un littéral char ou l'utilisation de la fonction intégrée Chr. Si X et Y sont des variables char, nous pouvons également affecter la valeur de Y à X en utilisant l'instruction :

X := Y

Un littéral char se compose d'exactement un caractère entre des apostrophes. Par exemple, l'instruction :

Letter := 'C'

affecte à la variable "Letter" la valeur de la majuscule "C". De la même manière, mais de manière moins évidente, la déclaration :

Blank := ' '

affecte à la variable Blank un seul espace vide. Notez que la déclaration :

Blank := ''

n'a pas l'effet souhaité car il n'y a pas d'espace vide entre les apostrophes. En fait, cela génère une erreur de compilation. Si vous souhaitez représenter l'apostrophe sous forme de variable char, saisissez-la deux fois de suite comme dans l'instruction :

Apostrophe:= '''';

La fonction standard Pascal Chr génère une valeur char à partir de l'un des nombres de 0 à 255. L'ensemble de caractères utilisé sur l'ordinateur détermine la signification de toute instance particulière de cette fonction; le Macintosh utilise l'ensemble de caractères ASCII (American Standard Code for Information Interchange) (comme le font la plupart des micro-ordinateurs et de nombreux autres types d'ordinateurs). Par exemple, la valeur de Chr(67) est la lettre majuscule "C" car "C" a le code ASCII de 67. L'instruction d'affectation :

Letter := Chr(67)

affecte le caractère «C» à la variable Lettre.



Dernière mise à jour : Jeudi, le 1 avril 2021