next up previous
Next: La boucle tant que Up: Les instructions de traitement Previous: L'instruction d'affectation

L'instruction d'alternative : if...then...else

Cette instruction permet en fonction du résultat d'un test (expression booléenne) d'effectuer un traitement ou un autre.

if test then
   begin
        T1
   end       (*!!! Pas de point virgule !!!*)
        else
   begin
        T2
   end;
Si l'expression booléenne test possède la valeur true alors on effectue les instructions de traitement du bloc T1. Si l'expresion booléenne test possède la valeur false alors on effectue les instructions de traitement du bloc T2.

Le programme suivant calcule tex2html_wrap_inline1228

program racine;

var x : real;

begin
  writeln('x = ');
  readln(x);
  if x>0 then
     begin
          x:=sqrt(x);
          writeln(x);
     end
         else
     begin
          x:=sqrt(-x);
          writeln(x);
     end;
end.


Si le bloc d'instruction correspondant à T1 ou à T2 se ramène à une seule instruction, le begin et le end ne sont plus obligatoires.

  if z=0 then
     writeln('z vaut zero')
  else
     writeln('z est non nul');


On peut avoir des instructions if imbriquées.

  if z=0 then
     writeln('z vaut zero')
  else
     if z>0 then 
        writeln('z est positif')
     else
        writeln('z est negatif');


Il faut faire attention à la situation suivante.

if a>b then 
       x:=x+y;
       b:=b/a;
est différent de
if a>b then 
   begin
       x:=x+y;
       b:=b/a;
   end;


  • La partie else de l'instruction n'est pas obligatoire. Ainsi la séquence suivante
    if test then
            B
    else begin
         end;
    s'écrira
    if test then
            B;
  • quelques indications sur la forme du test :
    • on peut utiliser les opérateurs mathématiques de comparaison, à savoir =, <, <= ( tex2html_wrap_inline1234 ), >= ( tex2html_wrap_inline1238 ),<>, ( tex2html_wrap_inline1242 ).
    • on peut ensuite utiliser des combinaisons logiques (and, or, not)
      if (x>y) and (x>z) then .....


Frederic Mesnard
mardi, 15 décembre 1998, 16:13:24 GMT+4