Une structure conditionnelle simple à forme réduite admet un seul traitement qui sera exécuté uniquement si une condition est vraie.
Ecrire un programme qui calcule et affiche la valeur absolue d'un entier donné sans utiliser la fonction prédéfinie abs.
{Algorithmique}
si x < 0 alors
x ⟵ -x
fin si
{Pascal}
if x < 0 then
x := -x;
Faute fréquente
{ Instruction à traduire }
si a < 0 alors
a ⟵ -a
fin si
{ Erreur }
if a < 0 then
a := -a;
end;
{ Correction }
if a < 0 then
a := -a;
L'élève a procédé à une traduction mot par mot de l'algorithme. Pour cette raison il pense que fin si doit être toujours traduite en end. La règle est : puisqu'il n'y a pas de begin il n'y aura pas de end.
Faute fréquente
{ Instruction à traduire }
si a < b alors
aux ⟵ a
a ⟵ b
b ⟵ aux
fin si
{ Erreur }
if a < b then
aux := a;
a := b;
b := aux;
{ Correction }
if a < b then
begin
aux := a;
a := b;
b := aux;
end;
Comme nous avons mentionné que l'utilisation de end doit être précédée par une utilisation du mot clé begin l'élève a suivi le conseil et il est tombé dans le piège. Si la condition est correcte il faudra exécuter plusieurs traitements (ici 3 traitements). La règle est : puisqu'il y a plusieurs traitements : il faudra ajouter begin au début et end à la fin des traitements.
Faute fréquente
{ Instruction à traduire }
si a < b et a < c alors
min ⟵ a
fin si
{ Erreur }
if a < b and a < c then
min := a;
{ Correction }
if (a < b) and (a < c) then
min := a;
Dans le cas d'une traduction systémique, l'élève oublie d'ajouter les parenthèses. La règle est : Les parenthèses sont obligatoires en Pascal lorsqu'il y a plus d'une condition.
Une structure conditionnelle simple à forme alternative admet deux traitements différents :

Ecrire un programme qui demande à l'utilisateur de saisir les coordonnées de 2 vecteurs
du plan
et
, et qui
détermine si les vecteurs sont orthogonaux entre eux ou pas.
NB : Le produit scalaire de deux vecteurs orthogonaux est égal à 0.

{Algorithmique}
ps ⟵ xu * xv + yu * yv
si ps = 0 alors
Ecrire("Vecteurs orthogonaux")
sinon
Ecrire("Vecteurs non orthogonaux")
fin si
{Pascal}
ps := xu * xv + yu * yv;
if ps = 0 then
Writeln('Vecteurs orthogonaux')
else
Writeln('Vecteurs non orthogonaux');
Une structure conditionnelle simple à forme généralisée admet plus de deux traitements différents qui seront exécutés en fonction de plusieurs conditions.

Un élève est admis s'il obtient une moyenne supèrieure ou égale à 10, il est refusé s'il obtient une moyenne infèrieure à 9, sinon il est contrôle.
Ecrire un programme qui affiche l'appréciation d'un 'élève selon sa moyenne.
{Algorithmique}
si moy >= 10 alors
Ecrire("Admis")
sinon si moy >= 9 alors
Ecrire("Contrôle")
sinon
Ecrire("Refusé")
fin si
{Pascal}
if moy >= 10 then
Writeln('Admis')
else if moy >= 9 then
Writeln('Contrôle')
else
Writeln('Refusé');
Ecrire un programme qui détermine la nature d'un triangle à partir de la longueur de ses cotés.
{Algorithmique}
si (AB=AC) et
(AC=BC) alors
Ecrire("triangle équilatéral")
sinon si (AB=AC) ou
(AB=BC) ou
(AC=BC) alors
Ecrire("triangle isocèle")
sinon si (AB*AB+AC*AC=BC*BC) ou
(AC*AC+BC*BC=AB*AB) ou
(BC*BC+AB*AB=AC*AC) alors
Ecrire("triangle rectangle")
sinon
Ecrire("triangle quelconque")
fin si
{Pascal}
if (AB=AC) and
(AC=BC) then
Writeln('triangle équilatéral')
else if (AB=AC) or
(AB=BC) or
(AC=BC) then
Writeln('triangle isocèle')
else if (AB*AB+AC*AC=BC*BC) or
(AC*AC+BC*BC=AB*AB) or
(BC*BC+AB*AB=AC*AC) then
Writeln('triangle rectangle')
else
Writeln('triangle quelconque');
Faute fréquente
{ Instruction à traduire }
si a < b alors
Ecrire("a < b")
sinon si a > b alors
Ecrire("a > b")
sinon
Ecrire("a = b")
fin si
{ Erreur }
if a < b then
Writeln('a < b');
else if a > b then
Writeln('a > b');
else
Writeln('a = b');
{ Correction }
if a < b then
Writeln('a < b')
else if a > b then
Writeln('a > b')
else
Writeln('a = b');
Les élèves prennent l'habitude d'ajouter un point-virgule (;) à la fin de chaque instruction en Pascal. Or la règle est : Il ne faut jamais précéder else par un point-virgule.
Faute fréquente
{ Instruction à traduire }
si a < b alors
min ⟵ a
max ⟵ b
sinon
min ⟵ b
max ⟵ a
fin si
{ Erreur }
if a < b then
min := a
max := b
else
max := a
min := b
{ Correction }
if a < b then
begin
min := a;
max := b;
end
else
begin
max := a;
min := b;
end;
Pas de point-virgule (;) avant else. L'élève ne sait plus où les mettre, il les a ôté. La règle : Comme il y a plusieurs traitements après then, il faudra utiliser begin et end sans mettre de (;) après le end qui précède une instruction else.
Une structure conditionnelle à choix est une version simplifiée de la structure conditionnelle généralisée.
L'exécution d'un traitement dépend d'un sélecteur de type ordinal (scalaire).
Ecrire un programme qui saisit une lettre puis détermine sa nature : Chiffre, Lettre miniscule, Lettre majuscule ou Symbole.
{Algorithmique}
selon car faire
"0".."9": msg ⟵ "Chiffre"
"A".."Z": msg ⟵ "Lettre majuscule"
"a".."z": msg ⟵ "Lettre miniscule"
sinon
msg ⟵ "Symbole"
fin si
{Pascal}
case car of
'0'..'9': msg := 'Chiffre';
'A'..'Z': msg := 'Lettre majuscule';
'a'..'z': msg := 'Lettre miniscule';
else
msg := 'Symbole';
end;