www.facultedegenie.net |
|
* Guest-Book * f = w + g |
Informatique : PASCAL (Chapitre VI) AFFECTATIONS,
TESTS, BOUCLES This
text copyright = www.ziade.net (VI.1) Commentaires (dans un programme) - Les commentaires (ou remarques) sont des phrases (ou des suites de caractères) qui ne sont pas compilées, donc elles ne sont pas exécutés. Les commentaires sont utiles aux programmeurs, par exemple pour faire évoluer un programme qui a été écrit (parfois par soi-même) il y a quelques mois. En Pascal les commentaires sont
placés entre accolades (sans de ; après), par exemple: Les commentaires peuvent être
placés entre (* et *), comme par exemple: (VI.2) Affectations - L'affectation permet de
stocker une valeur dans une variable. La syntaxe est la
suivante: L'identificateur est le nom de la variable, et l'expression est: un nombre, ou une constante, ou une variable, ou le résultat d'une fonction, ou le résultat d'un calcul. Voici les exemples respectifs: X := 2.5 ; { le nombre 2.5 est affecté à X } Il est évident que les ''affectations''
suivantes sont impossibles: Attention: un résultat de type réel ne peut pas être affecté à une variable de type entier. En particulier: si N entier, et X réel alors N := X est impossible (quelle que soit la valeur de X). Autres exemples impossibles: Revoir le Chapitre III, §1 à §3, pour plus de détails. (VI.3) Séquence ou bloc (d'instructions) Un bloc ou une séquence est une suite d'instructions commençant par le mot réservé BEGIN et se terminant par le mot réservé END; (il y a un ; après le END mais pas après le BEGIN). Exemple:
(Remarque: la séquence ''vide'' c.-à-d. '' BEGIN END; '' sans aucune instruction est autorisée) (VI.4) Test conditionnel (if … then … else …) Voici un exemple simple d'un test conditionnel (si… alors… sinon…) :
Remarque: le dernier WRITELN ne fait pas partie du ''IF…THEN…ELSE…''. Attention: il n'y a pas de ; (point virgule) avant le ELSE. * Remarque: la séquence ELSE est facultative (non obligatoire), par exemple:
(VI.5) Choix multiples (case … of …) Voici un exemple simple de choix multiple (N étant de type entier) :
Attention: le dernier END est nécessaire car il fait partie de l'instruction ''CASE…OF…''. Le compilateur n'exécute que les instructions situées entre le BEGIN et le END du seul cas qui correspond à la valeur de la variable écrite entre le CASE et le OF. Dans l'exemple ci-dessus, l'instruction X:=0 sera exécutée seulement si N=0 ou 6 ou 7. DONC les différents cas (ou choix situés entre le CASE et son END) doivent être mutuellement exclusifs (c.-à-d. indépendants). La variable (parfois appelée index) en fonction de laquelle agit le CASE doit être de type entier (integer, byte, word, shortint, longint). Elle peut aussi être de type caractère, comme par exemple:
Attention: il est impossible que la variable écrite entre le CASE et le OF soit de type réel (real, single, double, comp, extended). Remarque: en TurboPascal, la variable du CASE…OF peut être de type booléen ou de type énuméré. (VI.6) Boucles itératives (for … to … do) Voici un exemple simple d'une boucle, pour N entier de 2 à 7, il affiche la valeur de N et son carré:
Par définition, la variable qui suit le FOR s'appelle indice de la boucle. * Le compilateur exécute les étapes suivantes: - étape 1: initialiser l'indice (exécute l'affectation écrite entre FOR et TO), - étape 2: comparer l'indice à la limite (valeur écrite entre TO et DO), - si l'indice est supérieur à la limite alors aller à l'étape 5 (sinon aller à l'étape 3), - étape 3: exécuter la séquence d'instructions (BEGIN…END; correspondants à la boucle), - étape 4: augmenter l'indice d'une unité puis aller à l'étape 2, - étape 5: exécuter l'instruction qui suit la boucle (après le END de la boucle). * Attention: en Pascal, l'indice d'une boucle itérative est obligatoirement de type entier. Et seul un pas (saut) de +1 ou -1 est valable. Voici une boucle décroissante
(de pas -1) Conseil: un bon programmeur ne modifie pas la valeur de l'indice dans une boucle itérative. (VI.7) Boucles ''répéter … jusqu'à ce que …'' (repeat … until …) Voici un exemple simple d'une boucle ''répéter … jusqu'à ce que …'' :
Le compilateur répète l'exécution de la suite d'instructions écrites entre REPEAT et UNTIL jusqu'à ce que la condition qui suit le UNTIL soit vraie. Le programmeur peut utiliser un
''indice'' quelconque avec les boucles REPEAT…UNTIL…
,
Comparer cet exemple avec l'exemple du paragraphe VI.4 (ci-dessus). La boucle REPEAT…UNTIL… est
toujours exécutée au moins une fois car la condition
est à la fin. (VI.8) Boucles ''tant que … faire …'' (while … do …) Voici un exemple (à comparer à l'exemple précédent):
Le compilateur teste la
condition écrite entre le WHILE et le DO, si cette
condition est vraie alors il exécute la séquence
d'instruction qui suit (le DO), sinon cette séquence
n'est pas exécutée. (VI.9) Conseil important Le programmeur doit toujours vérifier que le programme est écrit de façon à ce que toutes les boucles finissent par se terminer. En particulier (II) Erreurs ou Limites des Calculs Numériques et informatiques ***** (III) Types, Opérateurs, Fonctions et Procédures prédéfinis (IV) Partie Déclarative d'un programme (VI) Affectations, Tests, Boucles (VII) Fonctions, Procédures, Récursivité |