Langage Pascal/Instruction conditionnelle
if ... then ...
modifierUne 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 (age < 18) then
writeln('Tu es mineur.');
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.
if ... then ... else ...
modifierOn peut également préciser ce que le programme doit faire dans le cas contraire. Les deux exemples suivants sont donc presque équivalents.
Sans "else" | Avec "else" |
---|---|
var
age : integer;
begin
writeln('Quel est ton âge?');
readln(age);
if (age < 18) then
begin
writeln('Tu es mineur.')
end;
if (age >= 18) then
begin
writeln('Tu es majeur.')
end ;
end.
|
var
age : integer;
begin
writeln('Quel est ton âge?');
readln(age);
if age < 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 code de gauche consiste à faire deux fois le test, tandis que celui de droite consiste à ne faire qu'un seul test. Ce dernier est donc à préférer.
On peut encore combiner plusieurs tests à la suite, permettant des if en cascade. Dans l'exemple suivant, si une condition est remplie, les conditions suivantes ne sont pas testées du tout.
var
age : integer;
begin
writeln('Quel est ton âge?');
readln(age);
if age <= 10 then
begin
writeln('Mais tu es tout petit! Oo')
end
else if age < 18 then
begin
writeln('Tu es encore mineur.')
end
else if age >= 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.
case ... of ...
modifierImaginons un cas dans lequel il nous faudrait utiliser 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. On peut bien entendu en faisant des copier-coller écrire cela :
var
age : integer;
begin
writeln('Quel est ton âge?');
readln(age);
if age = 1 then
begin
writeln('un')
end
else if age = 2 then
begin
writeln('deux')
end
else if age = 3 then
begin
writeln('trois')
end
else if age = 4 then
begin
writeln('quatre')
end
else if age = 5 then
begin
writeln('cinq')
end
else if age = 6 then
begin
writeln('six')
end
else if age = 7 then
begin
writeln('sept')
end
else if age = 8 then
begin
writeln('huit')
end
else if age = 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
age : integer;
begin
writeln('Quel est ton âge?');
readln(age);
case age 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éhensible et compact que les if en cascade.
Liste des opérateurs
modifierOpérateur | Description |
---|---|
= | é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" inclusif |
XOR | le "ou" exclusif |
NOT | le "non" logique |
Le XOR consiste à vérifier si une et une seule des deux conditions est vraie. "A xor B" est l'équivalent de "soit A soit B".