Langage Pascal/Instruction conditionnelle
if ... then ...
[modifier | modifier le wikicode]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 (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 ...
[modifier | modifier le wikicode]On 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 ...
[modifier | modifier le wikicode]Imaginons 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
[modifier | modifier le wikicode]Opé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".