next up previous contents
Next: Eléments de logique propositionnelle Up: Instruction conditionelle Previous: Instruction conditionelle

Factorisation dans une conditionnelle


Lorsqu'il y a repétition d'une même instruction dans plusieurs branches d'une conditionnelle, on peut simplifier son écriture en factorisant les instructions repétées vers l'extérieur de tout ou une partie de la conditionnelle.


Cas 1:
Le cas le plus caricatural est donné par:

if c then I;
else I;
end if;

qui est bien sûr équivalent à

I;

en effet, I est toujours exécutée (une seule fois), indépendament de la valeur de c.


Cas 2:

if c then A;C;
else B;C;
end if;

est équivalent à

if c then A;
else B;
end if;
C;

Cas 3:

if x = y then 
     b := true;
else 
     b := false;
end if;

cet instruction est équivalente à:

     b := x = y;

b reçoit true si la branche then est exécutée, c.a.d., si x=y est vrai. Inversément, b reçoit false si la branche else est exécutée, c.a.d., si x=y est faux. Cette transformation ne dépend pas bien sûr, de la condition employée. De manière générale, on peut l'exprimer, pour une condition c quelconque par:

if c then 
     b := true;
else 
     b := false;
end if;

est équivalent à

b := c;


Exercice 1:

Pourquoi les factorisations suivantes ne sont pas correctes? Donnez un exemple où elles donnent lieu à des instructions non équivalentes:

1.
if c then D;A                   if c then A;
else D;B                        else  B;
end if;                         end if; 
                                D;

Donnez une formulation correcte de cette factorisation.

2.

if c then A;                   A;
end if;
A;

Dans le premier de ces programmes, peut-on dire combien des fois A est exécuté?

3.
Dans les factorisations presentées dans cette partie, le cas 1, est un cas particulier du cas 2, pourquoi?




Exercice 2:

Donnez un algorithme puis écrivez un programme pour chacun des problèmes suivants. Les énoncés sont volontairement flous:

1.
Calculer le nombre de jours d'un mois pour une année donnée.

2.
Etant donné la date d'un jour, calculer la date du lendemain de ce jour.


next up previous contents
Next: Eléments de logique propositionnelle Up: Instruction conditionelle Previous: Instruction conditionelle
Maria-Viginia Aponte
2001-11-21