Section courante

A propos

Section administrative du site

Les instructions

Les instructions sont constituées d'expressions combinées à certains mots réservés. Les instructions décrivent des algorithmes et sont exécutables. Ils effectuent le travail réel du programme Pascal, en effectuant des tâches telles que donner une valeur à une variable ou fournir une exécution conditionnelle d'autres instructions.

Le MPW Pascal a 13 instructions :

Ces instructions sont discutées dans cette page.

Instructions d'affectation

L'instruction d'affectation définit la valeur d'une variable. Le symbole := peut être lu comme "fixer à". La déclaration est écrite :

La référence de variable du côté gauche identifie une variable de n'importe quel type à l'exception d'un type de fichier. Pour la plupart des variables, il s'agit simplement d'un nom d'identification, mais dans quatre cas, il s'agit d'un nom suivi d'une qualification :

Lorsque vous écrivez des associations, gardez ces règles à l'esprit :

Voici quelques exemples d'énoncés d'affectation :

  1. x:=y+z;
  2. p:=(1<=i) AND (i<100);
  3. i:=Sqr(k)-(i*j);
  4. hue1:=[blue,succ(c)];

Instructions composées

Lors de l'écriture de programmes Pascal, vous devez souvent traiter plusieurs instructions comme si elles n'en formaient qu'une seule, par exemple lorsqu'elles sont toutes exécutées par une seule instruction de contrôle. Pour ce faire, vous utilisez l'instruction composée.

Le corps de chaque procédure, fonction et programme principal Pascal est constitué d'une seule instruction composée. Pour créer une seule instruction composée à partir d'une séquence d'instructions, faites précéder la séquence par BEGIN et terminez-la par END, en séparant les instructions internes par des points-virgules.

La flèche revenant sur le point-virgule indique que de nombreuses instructions peuvent être placées entre BEGIN et END, aussi longtemps qu'elles sont séparées par des points-virgules.

Vous pouvez imbriquer n'importe quel nombre d'instructions BEGIN ... END. Dans n'importe quel bloc, le compilateur associera le dernier BEGIN au premier END, l'avant-dernier BEGIN au deuxième END, et ainsi de suite. Si vous avez écrit plus de BEGIN que de END, le compilateur s'arrêtera et affichera un message d'erreur.

Voici un exemple d'instruction composée :

  1. BEGIN
  2.  z:=x;
  3.  x:=y;
  4.  y:=z;
  5. END

Instructions de procédure

Une procédure est appelée en écrivant son identifiant dans le texte source, suivi de sa liste de paramètres réelle (si elle en a une) entre parenthèses. Les paramètres d'une liste de paramètres sont séparés par des virgules.

L'identificateur doit être le même que l'identificateur utilisé dans la déclaration de procédure ou de fonction.

La liste de paramètres dans un appel de procédure ou de fonction contient le même nombre de paramètres formels que ceux répertoriés dans la déclaration de procédure ou de fonction. Ceux de la déclaration sont appelés paramètres formels; ceux de l'instruction appelante, les paramètres réels (ou source). Les valeurs des paramètres réels sont censées être transmises aux paramètres formels dans le cadre de l'appel.

L'ordre et le nombre de paramètres réels dans l'appel doivent correspondre à l'ordre et au nombre de paramètres formels dans la déclaration. Chaque paramètre réel doit avoir le même type que le paramètre formel correspondant, avec ces exceptions :

De plus, les paramètres actuelles spécifiés dans tout appel de procédure ou de fonction doivent suivre ces règles :

Voici quelques exemples d'instructions de procédure :

  1. printheading;
  2. transpose(a, n, m);
  3. bisect(fct, -1.0, +1.0, x);

Instructions de répétition

Pascal propose trois manières d'exécuter la même section de programme de manière répétée : le processus appelé bouclage. Mais Pascal configure les routines de boucle et de sortie pour vous; il suffit de lui indiquer les conditions de répétition. Les instructions de répétition sont les suivantes :

Les instructions FOR

L'instruction FOR nécessite une variable locale de type scalaire préalablement déclarée. Il incrémente ou décrémente à plusieurs reprises la valeur de la variable, exécutant à chaque fois une section de votre programme. Vous définissez les valeurs scalaires de début et de fin (pouvant être constantes ou calculées) et si l'instruction FOR doit compter vers le haut ou vers le bas.

La variable de contrôle est le nom d'une variable scalaire : Integer, Char, Boolean, sous-intervalle ou définie par l'utilisateur. Il ne peut pas s'agir d'un élément de tableau ou de chaîne de caractères, d'un champ d'enregistrement ou d'une variable dynamique. Il doit être déclaré dans le bloc contenant l'instruction FOR. L'instruction FOR lui donne une valeur avant chaque passage dans la section du programme qu'elle contrôle. A noter que la valeur de cette variable est accessible dans la section contrôlée.

Les expressions de valeur initiale et finale doivent avoir le même type scalaire que la variable. Il peut s'agir de simples constantes ou variables, ou d'expressions complexes contenant des opérateurs et des fonctions.

Vous écrivez TO ou DOWNTO, selon que l'ordinanalité de la valeur de la deuxième expression est supérieure ou inférieure à l'ordinanalité de la valeur de la première expression. L'instruction contrôlée par l'instruction FOR peut être une autre instruction unique (telle qu'une affectation ou un appel de procédure) ou une instruction composée contenant de nombreuses autres instructions.

Respectez ces règles et mises en garde lorsque vous rédigez une instruction FOR :

Voici quelques exemples d'instructions FOR :

  1. For i:=2 To 63 do If a[i]>max Then max:=a[i];
  2. For i:=1 To n do For j:= 1 TO n do Begin
  3.  x:=0;
  4.  For k:=1 To n do x:=x+m1[i,k]*m2[k,j];
  5.  m[i,j]:=x;
  6. End;
  7. FOR c:=red To blue do q(c);

Instructions WHILE

L'instruction WHILE évalue une expression booléenne puis exécute une instruction si l'expression est vraie. Il répète l'exécution, en évaluant l'expression avant chaque passage, jusqu'à ce que l'expression devienne fausse. L'instruction WHILE s'écrit comme suit :

L'expression de contrôle doit être de type booléen; il est généralement formé d'opérateurs relationnels et logiques.

L'instruction contrôlée par WHILE ... DO peut être soit une instruction unique, soit une construction composée BEGIN ... END contenant d'autres instructions.

Voici quelques exemples d'instructions WHILE :

  1. While a[i]<>x do i:=i+1;
  2. While i>0 do Begin
  3.  If odd(i) Then z:=z*x;
  4.  i:=i div 2;
  5.  x:=Sqr(x)
  6. End;
  7. While not Eof(f) do Begin
  8.  process(f^);
  9.  get(f);
  10. End;

Instructions REPEAT

L'instruction REPEAT se comporte de manière similaire à l'instruction WHILE, mais elle évalue son expression booléenne après avoir exécuté les instructions qu'elle contrôle. Il est écrit ainsi :

REPEAT et UNTIL créent leur propre composé à partir des instructions qu'ils contrôlent ; vous n'avez pas besoin d'utiliser BEGIN et END.

L'expression de contrôle doit être de type Boolean ; il est généralement formé d'opérateurs relationnels et logiques.

Remarque : avec WHILE et REPEAT, veillez à ce que les instructions de programme qu'elles contrôlent incluent des moyens pratiques pour modifier l'expression, ou pour s'échapper au moyen d'une instruction GOTO ou Leave ou d'un appel Exit. Sinon, votre programme ne pourra jamais se terminer.

Voici quelques exemples d'instructions REPEAT :

  1. REPEAT
  2.  k:=i MOD j;
  3.  i:=j;
  4.  j:=k
  5. UNTIL j=0;
  6. REPEAT
  7.  process(f^);
  8.  get(f)
  9. UNTIL Eof(f);

Contrôle de boucle : une comparaison

Les trois instructions de répétition présentent chacune des avantages et des inconvénients spécifiques dans une situation de programmation donnée. En voici quelques uns.

L'instruction FOR garde automatiquement une trace de la répétition qu'elle exécute, en modifiant la valeur de sa variable de contrôle à la fin de chaque passe. Ainsi, vous pouvez utiliser la valeur de contrôle pour modifier ce que fait votre programme à chaque fois. Par exemple, la valeur de contrôle peut amener la section répétée à :

L'instruction FOR est cependant quelque peu rigide. Vous pouvez modifier son nombre de répétitions uniquement en le terminant par une instruction GOTO ou Leave.

Les instructions WHILE et REPEAT permettent un meilleur contrôle des conditions dans lesquelles elles arrêtent de s'exécuter. La principale différence entre eux est que l'instruction WHILE n'a pas besoin d'être exécutée du tout, alors que l'instruction REPEAT s'exécute au moins une fois. Ainsi, l'instruction WHILE est plus utile lorsque la condition contrôlant son exécution a déjà été satisfaite ; l'instruction REPEAT est particulièrement utile lorsque la condition ne peut être satisfaite qu'en exécutant l'instruction.

L'instruction WHILE doit également être utilisée dans les cas où son exécution dans de mauvaises conditions pourrait être préjudiciable, car elle évalue son contrôle avant chaque passage.

Expressions conditionnelles

Le Pascal propose à votre programme deux manières de choisir ce qu'il doit faire ensuite : le processus parfois appelé branchement :

Instructions IF

L'instruction IF exécute une seule instruction contrôlée (qui peut être une construction composée BEGIN ... END) si une expression booléenne est vraie. Vous pouvez ajouter une partie ELSE facultative à la fin qui exécute une autre instruction (éventuellement composée) si elle est fausse :

L'expression de contrôle entre IF et THEN doit être de type booléen ; il est généralement formé d'opérateurs relationnels et logiques.

L'une ou les deux instructions contrôlées peuvent être des instructions uniques ou des constructions composées BEGIN ... END contenant d'autres instructions. Le seul endroit où vous devez mettre un point-virgule dans une instruction IF est dans une construction composée BEGIN ... END.

Lors de l'exécution d'une instruction IF, Pascal effectue ces étapes :

  1. Il évalue l'expression booléenne.
  2. Si sa valeur est vraie, Pascal exécute l'instruction suivant THEN et quitte l'instruction IF.
  3. Si sa valeur est fausse et qu'il y a une instruction après ELSE, Pascal l'exécute ; sinon, il quitte les instructions IF.

Voici quelques exemples d'instructions IF :

  1. If x<l.5 Then z:=x+y Else z:=1.5;
  2. If p1<>NIL Then p1:=p1^.father;

Instructions IF imbriquées

Dans toute instruction IF, l'instruction suivant le mot ELSE peut également être une instruction IF et contenir sa propre clause ELSE. Ainsi, une instruction IF peut être écrite pour entreprendre différentes actions pour chacune de plusieurs conditions mutuellement exclusives.

Pascal évaluera les expressions booléennes uniquement jusqu'à ce qu'une vraie soit trouvée. Vous obtenez une vitesse d'exécution maximale si vous donnez la priorité aux conditions les plus probables.

L'instruction suivant le mot THEN peut également être une instruction IF imbriquée, mais cela peut créer une confusion dans le texte source. S'il devient difficile de savoir lequel ELSE correspond à quel THEN ; clarifiez la situation en utilisant une construction composée BEGIN ... END ou une indentation appropriée.

Instructions CASE

L'instruction CASE vous permet d'écrire une liste d'instructions alternatives à exécuter, en associant à chacune une constante scalaire. Lors de l'exécution de l'instruction CASE, Pascal évalue une expression scalaire de contrôle; si sa valeur correspond à l'une des constantes, Pascal exécute l'instruction correspondante. Vous pouvez ajouter une partie facultative OTHERWISE à la fin qui exécute une instruction supplémentaire si rien n'a été sélectionné dans la liste. L'instruction CASE suit cette syntaxe :

Les clauses présentées dans le diagramme ont le format suivant :

L'expression de contrôle peut avoir n'importe quel type scalaire : integer, char, boolean, sous-intervalle ou défini par l'utilisateur. Il doit être capable de renvoyer la valeur de n'importe laquelle des constantes de la clause CASE.

Les expressions constantes de la clause CASE doivent avoir le même type scalaire que l'expression de contrôle.

N'importe laquelle des instructions contrôlées dans la clause CASE ou l'instruction par défaut suivant OTHERWISE peut être des instructions simples ou des constructions composées BEGIN ... END contenant d'autres instructions.

Voici deux exemples d'instructions CASE :

  1. Case operator of
  2.  plus:x:=x+y;
  3.  minus:x:=x-y;
  4.  times:x:=x*y;
  5. End;
  6. Case i of
  7.  1:x:=Sin(x);
  8.  2:x:=Cos(x);
  9.  3,4,5:x:=Exp(x);
  10.  Otherwise x:=Ln(x);
  11. End;

Instructions de contrôle

Les trois instructions de répétition et les deux instructions conditionnelles décrites dans cette page, ainsi que les affectations et les appels de procédure, sont suffisamment flexibles pour gérer presque tous les travaux de programmation. Parfois, cependant, vous pouvez encourager une situation exigeant un transfert immédiat ou une suspension de l'exécution du programme. Pour ces cas, Pascal propose cinq outils supplémentaires :

Les instructions GOTO, Cycle et Leave sont décrites ci-dessous.

Instructions i

L'instruction GOTO transfère l'exécution du programme au début de toute instruction se trouvant dans la même procédure, fonction ou programme principal. Avant de pouvoir utiliser une instruction GOTO, vous devez effectuer deux choses :

L'instruction GOTO s'écrit :

L'entier non signé est l'étiquette de destination ; il ne doit pas dépasser quatre chiffres décimaux.

Deux autres précautions s'appliquent aux instructions GOTO :

Ainsi, chaque destination GOTO doit être le début d'une instruction se trouvant au niveau supérieur d'imbrication dans un bloc de programme.

Voici un exemple illustrant l'utilisation d'une instruction GOTO :

  1. BEGIN
  2.  1234:Write('Donnez-moi un nombre : ');
  3.  ReadLn(n);
  4.  IF n=0 THEN GOTO 1234
  5. END

Instructions Cycle

L'instruction Cycle transmet le contrôle du programme à la fin de la partie en boucle de la plus petite instruction WHILE, REPEAT ou FOR l'entourant. C'est similaire à l'instruction continue du langage de programmation C.

Voici un exemple illustrant l'utilisation d'une instruction cycle. Elle appelle la procédure f pour toutes les valeurs positives de a[i] :

  1. For i:=1 To n do Begin
  2.  If a[il<=0 Then Cycle;
  3.  f(a[i])
  4. End

Remarque : Le mot Cycle n'est pas un mot réservé. Si vous le redéfinissez, vous ne pouvez pas utiliser les instructions Cycle dans le cadre de votre définition.

Instructions Leave

L'instruction Leave termine la plus petite instruction WHILE, REPEAT ou FOR la contenant, en passant le contrôle à l'instruction suivante. Cela ressemble à l'instruction break en C.

Voici un exemple illustrant l'utilisation d'une instruction Leave ; dans celui-ci, l'instruction WHILE se termine lorsque la première valeur x d'un [i] est trouvée :

  1. While i<63 do Begin
  2.  If a[i]=x Then Leave;
  3.  i:=i+1
  4. End

Remarque : Le mot Leave n'est pas un mot réservé. Si vous le redéfinissez, vous ne pouvez pas utiliser les instructions Leave dans le cadre de votre définition.

Instructions WITH

L'instruction WITH ... DO fournit un moyen par lequel les champs des enregistrements spécifiés peuvent être référencés en utilisant uniquement leurs identificateurs de champ. Il a la syntaxe suivante :

N'importe quel nombre d'identificateurs de variables d'enregistrement, y compris ceux d'enregistrements étant des champs d'autres enregistrements, peuvent être répertoriés entre WITH et DO. La déclaration :

  1. WITH v1, v2, v3 DO s;

est équivalent au groupe d'instructions WITH :

  1. WITH v1 DO
  2.  WITH v2 DO
  3.   WITH v3 DO s;

Les règles suivantes régissent l'utilisation de WITH ... DO :

Voici un exemple d'instruction WITH :

  1. With Date do If Month=12 Then Begin
  2.  Month:=1;
  3.  Year:=Year+1
  4. End
  5.  Else 
  6. Month:=Month+1;

Instruction NULL

Les instructions NULL sont des instructions ne contenant rien. Cela signifie simplement que chaque fois que la syntaxe Pascal appelle une instruction, vous pouvez l'omettre. Cela signifie également que lorsqu'un programme contient un point-virgule inutile, le compilateur Pascal considère que le point-virgule sépare une instruction NULL d'une autre instruction. Le résultat est deux déclarations alors que vous n'en prévoyez qu'une. La plupart du temps, cela est inoffensif, mais cela provoque parfois une erreur lorsqu'une seule instruction est autorisée.



Dernière mise à jour : Vendredi, le 28 juin 2024