Langage Pascal/Instruction conditionnelle
Une page de Wikiversité.
| Chapitre 5 | |||
| Leçon : Langage Pascal | |||
|---|---|---|---|
| Chap. préc. : | Les tableaux | ||
| Chap. suiv. : | Instruction itérative | ||
En raison de limitations techniques, la typographie souhaitable du titre, « Langage Pascal : Instruction conditionnelle
Langage Pascal/Instruction conditionnelle », n'a pu être restituée correctement ci-dessus.
Sommaire |
[modifier] if ... then ...
Une instruction conditionnelle permet d'exécuter des instructions seulement dans une certaine condition.
var age : integer; begin writeln('Quel est ton âge?'); readln(age); if a < 18 then begin writeln('Tu es mineur.') end end.
Ainsi, dans l'exemple ci-dessus, le programme indiquera à l'utilisateur qu'il est mineur seulement s'il son âge est strictement inférieur à 18.
[modifier] if ... then ... else ...
On peut également préciser ce que le programme doit faire dans le cas contraire. Les deux exemples suivants sont donc presque équivalents.
var age : integer; begin writeln('Quel est ton âge?'); readln(age); if a < 18 then begin writeln('Tu es mineur.') end; if a >= 18 then begin writeln('Tu es majeur.') end end.
var age : integer; begin writeln('Quel est ton âge?'); readln(age); if a < 18 then begin writeln('Tu es mineur.') end else begin writeln('Tu es majeur.') end end.
Dans les deux cas, le programme indiquera si l'utilisateur est mineur ou majeur. Cependant, le premier exécutera deux fois le test, mais pas le second exemple. Ce dernier est donc à préférer.
Une dernière forme est possible, permettant des if en cascade.
var age : integer; begin writeln('Quel est ton âge?'); readln(age); if a <= 10 then begin writeln('Mais tu es tout petit! Oo') end else if a < 18 then begin writeln('Tu es encore mineur.') end else if a >= 60 then begin writeln('Wouaw, tu vieillis dis donc...'); end end.
Les if en cascade permettent du cas par cas:
- Ceux qui ont 10 ans ou moins recevront le message Mais tu es tout petit! Oo.
- Parmi ceux qui ont plus de 10 ans, ceux qui ont également moins de 18 ans recevront Tu es encore mineur..
- Ceux qui ont 60 ans ou plus, verront apparaitre le message Wouaw, tu vieillis dis donc....
- Et enfin, les derniers, ceux qui ont 18 ans ou plus et moins de 60 ans, ne verront aucun message apparaitre.
[modifier] case ... of ...
Imaginons un cas dans lequel il nous faudrait utilisé une longue série de if en cascade, celle-ci peut devenir rapidement difficile à lire. Pour cela, il existe une autre structure : le case of.
Prenons un exemple qui attend un chiffre et l'écrit en toute lettre :
var a : integer; begin writeln('Quel est ton âge?'); readln(age); if a = 1 then begin writeln('un') end else if a = 2 then begin writeln('deux') end else if a = 3 then begin writeln('trois') end else if a = 4 then begin writeln('quatre') end else if a = 5 then begin writeln('cinq') end else if a = 6 then begin writeln('six') end else if a = 7 then begin writeln('sept') end else if a = 8 then begin writeln('huit') end else if a = 9 then begin writeln('neuf') end else begin writeln('Je veux un chiffre') end end.
Ça peut vite devenir lourd à lire et à écrire. Voyons ce que donne le même résultat en utilisant la structure case of :
var a : integer; begin writeln('Quel est ton âge?'); readln(age); case a of 1 : writeln('un'); 2 : writeln('deux'); 3 : writeln('trois'); 4 : writeln('quatre'); 5 : writeln('cinq'); 6 : writeln('six'); 7 : writeln('sept'); 8 : writeln('huit'); 9 : writeln('neuf'); else writeln('je veux un chiffre') end end.
Et voila comment le case of peut fournir un code beaucoup plus compréhensif et compacte que les if en cascade.
[modifier] Liste des opérateurs
= : égal à
< : strictement inférieur à
<= : inférieur ou égal à
> : strictement supérieur à
>= : supérieur ou égal à
<> : différent de
AND : le "et" logique
OR : le "ou" logique