Après les déclarations, un bloc contient une suite d'instructions
entourée par les mots-clé begin et end. L'instruction
de base est l'affectation,
comme x := 1, ou plus
généralement x :=
où
est une expression quelconque
de même type que x. En général, la concordance de type entre
partie gauche et partie droite de l'affectation implique que les deux
correspondent à la déclaration d'un même type. Pourtant, il y a
quelques commodités. La partie droite peut être une expression
entière et la gauche réelle, puisque nous avons vu que les
entiers sont considérés en Pascal comme un sous-ensemble des réels.
De même, pour un type intervalle, seul le type du domaine support
compte, sans oublier les vérifications d'appartenance à l'intervalle.
Une instruction peut être conditionnelle, instruction if, et
n'être exécutée que si une expression booléenne est vraie. Il y a
deux formes d'instructions if. L'instruction conditionnelle
partielle
if $e$ then $S_1$
qui permet de n'exécuter
que si
est vraie. Dans
l'instruction conditionnelle complète
if $e$ then $S_1$ else $S_2$
on peut exécuter
si
est faux. On peut remarquer
que, si
est une instruction conditionnelle partielle, il y a une
ambiguité car on ne sait plus si
est le défaut de cette
nouvelle instruction conditionnelle ou de l'instruction plus globale.
En Pascal, la convention est d'associer la partie else à
l'instruction if la plus interne. Ainsi
if $e$ then if $e '$ then $S_1$ else $S_2$
et
if $e$ then begin if $e '$ then $S_1$ end else $S_2$
ont deux sens différents. Pascal fournit d'autres
instructions. L'instruction case
permet d'éviter une cascade
d'instructions if et permet de faire un aiguillage selon
différentes valeurs d'une expression
de type ordinal. Selon la
version de Pascal, il y a un cas otherwise,
qui est le cas par défaut. Ainsi
case $e$ of $v_1$: $S_1$; $v_2$: $S_2$; ... $v_n$: $S_n$; otherwise $S'$; end
permet de faire l'instruction
si
, ou
si
pour tout
.
Les autres instructions sont principalement des instructions
d'itération, comme les instructions for, while ou
repeat. L'instruction for permet d'itérer sans risque
de non terminaison sur une variable de contrôle qui est incrémentée
de 1 ou de -1 à chaque itération. Ainsi
for i:= $e_1$ to $e_2$ do $S$
itère
fois l'instruction
. De même
for i:= $e_1$ downto $e_2$ do $S$
fait pour itérer de
à
en décroissant.
En effet, si on modifie cette variable, on s'expose à la
non terminaison de l'itération. Remarque: Pascal n'autorise que
et
comme pas d'itération. Si on veut un autre pas d'itération,
il faudra multiplier la valeur de la variable de contrôle. Par ailleurs,
la valeur de la variable de contrôle à la fin de la boucle
for est indéfinie, et il est très déconseillé de
l'utiliser.
while $e$ do $S$
on itère l'instruction
tant que l'expression booléenne
est
vraie. De même dans l'instruction repeat,
repeat $S_1$;$S_2$; ...$S_n$ until $e$
on effectue la suite des instructions

;
;...
tant que l'expression booléenne
est fausse. Remarque: repeat fait au moins une fois
l'itération. Donc l'instruction while est plus sûre,
puisqu'elle permet de traiter le cas où le nombre d'itérations est
nul. En outre, il faut bien faire attention que les instructions
while et repeat peuvent ne pas terminer.
Il y a encore quatre types d'instructions: l'instruction composée,
l'instruction vide, l'instruction goto, et l'appel de
procédure. L'appel de procédure permet d'appeler une procédure
comme déjà vu dans l'exemple du carré magique. L'instruction
composée
begin $S_1$;$S_2$; ...$S_n$ end
permet de faire les
instructions
,
, ...
en séquence. Ceci peut être particulièrement utile quand on
veut par exemple itérer plusieurs instructions dans une instruction
for, while, ou faire plusieurs instructions dans une
alternative d'un if ou d'un case. L'instruction vide est
à la fois une commodité syntaxique et une nécessité. Ainsi dans
begin $S_1$;$S_2$; ...$S_n$; end
il y a une
-instruction vide avant
end. Ceci est particulièrement commode quand les instructions
sont mises sur plusieurs lignes, car on peut facilement insérer une
instruction entre
et end si nécessaire, sans changer le
programme. Par ailleurs, l'instruction vide permet de faire des
attentes actives d'événements asynchrones. Ainsi l'instruction
while not Button do ;
permet d'attendre que le bouton de la souris soit enfoncé.
L'instruction goto permet de faire des branchements vers des
étiquettes. En règle générale, son utilisation est fortement
déconseillée, Pascal fournissant suffisamment d'instructions
structurées pour permettre d'en limiter l'utilisation. On peut se
brancher avec goto vers une étiquette déclarée dans un bloc
contenant l'instruction goto. Toutefois, on ne peut se brancher
n'importe où. En règle générale, on ne peut rentrer dans toute
instruction que par le début. Il est donc par exemple impossible de
définir une étiquette devant l'alternative d'un if ou d'un
case.
L'instruction goto a toutefois son utilité. Pascal
n'ayant pas d'autre moyen de traiter les cas exceptionnels, il faut
utiliser des goto dans les cas d'erreurs, comme dans l'exemple
du carré magique, ou à la rigueur d'une boucle à deux sorties.