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;