Structure alternative

01 - Introduction 03 - Le test logique
02 - L'instruction IF 04 - Exercices

01

Introduction

Les concepts informatiques introduits jusqu'à maintenant permettent d'écrire des programmes qui s'exécutent strictement ligne par ligne. Les programmes ne sont pas capables de réagir différemment en fonction de l'entrée de l'utilisateur. On dit que ces programmes ont une structure séquentielle car ils permettent l'évaluation ordonnée d'une suite d'expressions.

Cependant, il est parfois souhaitable de pouvoir choisir entre une ou plusieurs possibilités selon un critère bien déterminé. Par exemple, on aimerait afficher la mention d'une note scolaire. Dans ce cas, l'affichage doit être « suffisant » si la note se trouve entre 30 et 60 (30 et 60 inclus) et « insuffisant » si la note se trouve entre 1 et 29 (1 et 29 inclus).

La structure alternative permet de distinguer, sur base d'un test logique (qui peut comporter une ou plusieurs conditions et opérateurs logiques), dans quelle direction le programme doit évoluer. Le programme peut ainsi distinguer deux ou plusieurs voies et exécuter en fonction de cela différentes instructions.

02

L'instruction IF

Afin d'utiliser une structure alternative, il faut pouvoir formuler une phrase respectant la structure « si ... alors ... sinon ». Prenons de nouveau l'exemple de la mention d'une moyenne scolaire et formulons une telle phrase : si la moyenne est supérieure ou égal à 30, alors la mention est suffisante, sinon la mention est insuffisante.

Une telle formulation peut ensuite être traduite en une instruction informatique, qui a la forme suivante :

if <condition> then <instruction1> else <instruction2>;

Une telle instruction comporte trois parties :

Notre exemple de départ peut donc être traduit dans le code source suivant:

Affichage de la mention d'une note scolaire
program mention;

{
 Le programme suivant affiche si la mention est suffisante
 ou insuffisante selon la note introduite par l'utilisateur.
 L'utilisateur veille à entrer un nombre entier dans
 l'intervalle [1, 60].
}

var
  note : integer;
  mention : string;

begin
  write('Veuillez entrer la note :');
  readln(note);

  { vérification si la note est supérieure ou égale à 30 }
  if (note >= 30) then
    mention := 'suffisant'
  else
    mention := 'insuffisant';

  writeln('Votre note correspond à la mention: ', mention);
end.

Comme une instruction IF est reconnue comme une seule instruction seulement, elle se termine par un seul point-virgule tout à la fin.

Les blocs d'instructions

L'instruction IF permet seulement de définir une instruction pour le cas où la condition est vraie et une instruction pour le cas où la condition est fausse. Comme ceci est très limitant, Delphi permet de regrouper plusieurs instructions dans un bloc d'instructions. Ce bloc est considéré comme un seule instruction.

Un bloc d'instruction est donc un ensemble d'instructions et il commence avec le mot-clé « begin » et se termine avec le mot-clé « end ». Toutes les instructions d'un programme se trouvent déjà dans un bloc d'instructions particulier, que l'on appelle le bloc principal.

Affichage de la mention d'une note scolaire
program mention;

{
 Le programme suivant affiche si la mention est suffisante
 ou insuffisante selon la note introduite par l'utilisateur.
 L'utilisateur veille à entrer un nombre entier dans
 l'intervalle [1, 60].
}

var
  note : integer;
  mention : string;

begin
  write('Veuillez entrer la note :');
  readln(note);

  { vérification si la note est supérieure ou égale à 30 }
  if (note >= 30) then
    begin
      mention := 'suffisant';
      writeln('Felicitations, vous avez obtenu la mention: ', mention);
    end
  else
    begin
      mention := 'insuffisant';
      writeln('Desole, vous avez obtenu la mention : ', mention);
    end;

end.

Les instructions à l'intérieur d'un bloc d'instructions doivent respecter la syntaxe imposée par Delphi, c.-à-d. chaque instruction doit se terminer par un point-virgule. L'instruction IF se termine aussi par un seul point-virgule, qui se trouve donc après le deuxième bloc d'instructions.

Le bloc optionnel

En Delphi, l'instruction « instruction2 » (celle qui est exécutée lorsque la condition est fausse) est optionnelle et peut être laissée de côté. Dans ce cas, l'instruction IF a la forme suivante :

if <condition> then <instruction>;

Divisibilité par deux
program divisible;

{
 Le programme suivant affiche le message « super » si l'utilisateur
 entre un nombre qui est divisible par deux.
}

var
  nombre : integer;

begin
  write('Veuillez entrer un nombre divisible par deux :');
  readln(nombre);

  { vérification de la divisibilité par deux }
  if (nombre div 2 = 0) then
    writeln('super');

end.

03

Le test logique

Les opérateurs de comparaison

Les opérateurs de comparaison (ou encore les opérateurs relationnels) sont utilisés pour tester une relation entre deux valeurs. La valeur de retour d'un tel opérateur de comparaison est le type booléen, qui permet seulement les deux valeurs true et false, en fonction de la validité de la relation entre les deux valeurs.

Exemple : le test logique « x = y » retourne la valeur true si la valeur de x est égale à la valeur de y et false dans tous les autres cas.

Voici un tableau de tous les opérateurs de comparaison:

SigneSignificationUtilité
= est égal à vérifie l'égalité de deux valeurs
<> est différent de vérifie l'inégalité de deux valeurs
> est supérieur à vérifie si la valeur de gauche est supérieure à la valeur de droite
>= est supérieur ou égal à vérifie si la valeur de gauche est supérieure ou égale à celle de droite
< est inférieur à vérifie si la valeur de gauche est inférieure à la valeur de droite
<= est inférieur ou égal à vérifie si la valeur de gauche est inférieure ou égale à celle de droite

Les opérateurs logiques

Les opérateurs logiques (ou encore les connecteurs logiques) sont utilisés pour établir une liaison entre deux relations de manière à ce que la construction entière peut être évalué en un booléen en fonction des validités des relations respectives.

Exemple : On aimerait vérifier la validité d'une note scolaire, qui doit se situer dans l'ensemble [1, 60]. A l'aide des opérateurs de comparaison, on peut construire deux conditions, qui sont « 1 <= x » et « x <= 60 ». Cependant, notre test logique est seulement valide si et seulement si les deux conditions sont vraies. Pour cela, il faut les rejoindre par l'opérateur logique « AND » qui retourne seulement la valeur true si la condition de gauche et la condition de droite sont vraies.

Vérification de la validité d'une note scolaire
program note_valide;

{
 Le programme suivant affiche le message « valide » si l'utilisateur
 entre une note valide, c.-à-d un nombre réel qui se trouve dans
 l'intervalle [1, 60], et « invalide » dans tous les autres cas.
}

var
  note : real;

begin
  write('Veuillez entrer une note scolaire :');
  readln(note);

  { vérification de la validité de la note }
  if (1 <= note) AND (note <= 60) then
    writeln('valide')
  else
    writeln('invalide');

end.

Les opérateurs logiques peuvent être représentés par des tables de vérité, qui sont des tableaux qui représentent des entrées (en colonne) et des états booléens. Une sortie, également représentée sous forme de colonne, est la résultante des états d'entrée, elle-même exprimée sous forme d'état booléen.

L'opérateur AND est true si et seulement si la condition de gauche est true et la condition de droite est true.

xyx AND y
false false false
true false false
false true false
true true true

L'opérateur OR est true si et seulement si la condition de gauche est true ou la condition de droite est true.

xyx OR y
false false false
true false true
false true true
true true true

L'opérateur NOT est true si et seulement si la condition de droite est false.

xNOT (x)
false true
true false

04

Exercices

  1. Énumérez les différents opérateurs de comparaison et expliquez leur utilité.
  2. Énumérez les différents opérateurs logiques et expliquez leur utilité.
  3. Établissez une table de vérité pour le test logique « NOT(NOT(x) OR y) » en fonction des valeurs de « x » et de « y ».
  4. Écrivez un programme qui, en fonction d'un prix total saisi au clavier, applique une réduction variable et affiche le prix final. La réduction à appliquer est la suivante :

    • Un prix total inférieur à 50€ ne reçoit aucune réduction
    • Un prix total entre 50€ et 120€ reçoit une réduction de 2%
    • Un prix total supérieur à 120€ reçoit une réduction de 5%
  5. Écrivez un programme qui demande à l'utilisateur d'enter une année et qui affiche s'il s'agit d'une année bissextile.
Sign In