Instruction alternative

L’instruction alternative est une structure de contrôle permettant de rendre conditionnelle l’exécution d’une suite d’instructions. En algorithmique, elle permet de modifier l’enchainement en séquence des instructions d’un algorithme.
Contrairement au traitement séquentiel, elle exécute ou non une séquence d’instructions si une condition donnée est vérifiée, ou une autre séquence d’instructions dans le cas contraire.
L’instruction alternative est une instruction qui commence par le mot réservé Si, dont la sémantique est liée à deux notions importantes que sont la Condition et la Comparaison.

Comparaison

La comparaison est une notion de mathématiques qui organise un ensemble d’éléments selon une relation d’ordre, afin de permettre la comparaison de ces éléments entre eux de manière cohérente. On appelle expression comparative une expression comprenant 2 éléments reliés par un opérateur de comparaison

Les opérateurs de comparaison définis dans le langage algorithmique Schema.

  • = est l’opérateur d’égalité.
  • != est l’opérateur de différence.
  • > est l’opérateur « strictement supérieur à ».
  • >= est l’opérateur « supérieur ou égal à ».
  • < est l’opérateur « strictement inférieur à ».
  • <= est l’opérateur « inférieur ou égal à ».

Condition

La condition est une expression mathématique dite booléenne dont l’évaluation renvoi une élément booléen Vrai ou Faux.

  • Un booléen est un élément qui ne peut prendre que deux valeurs :  Vrai  ou Faux .
  • Une expression booléenne est une expression qui relie une ou plusieurs expression comparative à l’aide d’un opérateur booléen, dont le résultat est un booléen.
  • Une condition est une expression booléenne.

En Schema , les 3 opérateurs booléens sont le ET, OU ,NON .

  • NON: il produit Vrai si l’opérande est Faux. Il produit Faux si l’opérande est Vrai  :
  • ET: Le résultat de Condition_1 ET Condition_2 est Vrai si Condition_1 et Condition_2 prennent la valeur Vrai. Sinon, le résultat est Faux.
  • OU: Le résultat de Condition_1 OU Condition_2 est Vrai si Condition_1 donne Vrai et Condition_2 donne Faux, ou Condition_1 donne Faux et Condition_2 donne Vrai. Sinon, le résultat est Faux

Syntaxe

On écrit une instruction alternative sur une seule ligne de la façon suivante:

Si condition instruction
Si condition instruction Sinon instruction

Cette forme d’écriture simplifiée est utilisée quand le condition n’implique qu’une seule instruction.

On écrit une instruction alternative sur plusieurs lignes de la façon suivante:

Si condition 
   séquence d’intructions 
Fin

La deuxième forme permet d’exécuter une séquence d’instructions quand la condition est fausse. La clause Sinon est facultative, si elle est absente, le choix ne porte que sur l’exécution d’un seul bloc d’instructions.

Si condition
   séquence d'instructions
Sinon
   séquence d'instructions
Fin

Exemple d’un algorithme de comparaison de nombre entier

comparaison nombre Entier
   Si nombre > 5 Afficher le nombre #nombre est plus grand que 5 
Fin
comparaison nombre Entier
   Si nombre > 5 
      Afficher le nombre #nombre est comparé à 5 
      Afficher le nombre #nombre est plus grand que 5 
   Fin
Fin

comparaison nombre Entier
   Si nombre > 5
      Afficher le nombre #nombre est comparé à 5
      Afficher le nombre #nombre est plus grand que 5
   Sinon
      Afficher le nombre #nombre est comparé à 5
      Afficher le nombre #nombre est inférieur ou égal à 5
   Fin
Fin

Instruction avec conditions multiples

En respectant la syntaxe de Si comme vu précédemment, lorsque l’on doit exécuter plusieurs instructions Si Sinon on est amené à écrire:

Si condition1
    instruction1   
    Si condition2     
        instruction2
        ...
        Si condition3
            Instruction3
            ...
        Sinon
            instruction4
            ...
        Fin
    Fin 
  Fin
Fin

Le langage algorithmique Schema permet une écriture plus simple:

Si condition1
   instruction1
   Sinon condition2
      instruction2
      ...
   Sinon condition3
      instruction3
      ...
   Sinon       
      instruction4
      ...
Fin

Exemples

Si instructions Fin

Schema

comparaison nombre Entier
   Si nombre > 5 
      Afficher le nombre #nombre est comparé à 5 
      Afficher le nombre #nombre est plus grand que 5 
   Fin
Fin

Swift

func comparaison(_ nombre: Int) {
   if nombre > 5 { 
      print("le nombre \(nombre) est comparé à 5")
      print("ke nombre \(nombre) est plus grand aue 5")
   }
}

Julia

function comparaison(nombre::Int64) 
   if nombre > 5 
      println("le nombre ", nombre,  " est comparé à 5") 
      println("le nombre ", nombre, " est plus grand que 5") 
   end
end

Python

def comparaison(nombre):
   if nombre > 5:
      print("Le nombre", nombre, "est comparé à 5")
      print("Le nombre", nombre, "est plus grand que 5")

Exemples

Si instructions Sinon instructions Fin

Schema

comparaison nombre Entier
   Si nombre > 5 
      Afficher le nombre #nombre est comparé à 5 
      Afficher le nombre #nombre est plus grand que 5
   Sinon 
      Afficher le nombre #nombre est comparé à 5 
      Afficher le nombre #nombre est inférieur ou égal à 5 
   Fin 
Fin

Swift

func comparaison(_ nombre: Int) {
   if nombre > 5 { 
      print("le nombre \(nombre) est comparé à 5")
      print("le nombre \(nombre) est plus grand que 5")
   } else { 
      print("le nombre \(nombre) est comparé à 5")
      print("le nombre \(nombre) est inférieur ou égal à 5")
   }
}

Julia

function comparaison(nombre::Int64) 
   if nombre > 5 
      println("le nombre ", nombre,  " est comparé à 5") 
      println("le nombre ", nombre, " est plus grand que 5") 
   else 
      println("le nombre ",nombre," est comparé à 5") 
      println("le nombre ",nombre," est inférieur ou égal à 5")
   end
end

Python

def compraraison(nombre):
   if nombre > 5:
       print("Le nombre", nombre, "est comparé à 5")
       print("Le nombre", nombre, "est plus grand que 5")
   else:
      print("Le nombre", nombre, "est comparé à 5")
      print("Le nombre", nombre, "est inférieur ou égal à 5")

 

Exemple: Appréciation de notes

On veut écrire un programme dont la spécification est la suivante:

Si la note est inférieure ou égale à 5, 
   le message "Travail inexistant" est affiché. 
Si la note est supérieure à 5 et inférieure ou égale à 10, 
   le message "Travail insuffisant" est affiché. 
Si la note est supérieure à 10 et inférieure ou égale à 14, 
   le message "Peut mieux faire" est affiché. 
Si la note est supérieure à 14 et inférieure ou égale à 16, 
   le message "Bon travail" est affiché. 
Si la note est supérieure ou égale à 16 et inférieure à 18,
   le message "Très bon travail" est affiché. 
Si la note est supérieure ou égale à 18, 
   le message "Excellent travail" est affiché.

Schema

appréciation note Entier
   Si note <= 5
      Afficher travail Inexistant
   Sinon note > 5 ET note <= 10
      Afficher travail insuffisant
   Sinon note > 10 ET note <= 14
      Afficher peut mieux faire
   Sinon note > 14 ET note <= 16
      Afficher bon travail
   Sinon note > 16 ET note <= 18
      Afficher très bon travail
   Sinon
      Afficher excellent travail
   Fin
Fin

Swift

func appréciation(_ note: Int) {
   if note <= 5 {
      print("travail Inexistant")
   } else if note > 5 && note <= 10 {
      print("travail insuffisant")
   } else if note > 10 && note <= 14 {
      print("peut mieux faire")
   } else if note > 14 && note <= 16 {
      print("bon travail")
   } else if note > 16 && note <= 18 {
      print("très bon travail")
   } else {
      print("excellent travail")
   }
}

Julia

function appréciation(note::Int64)
   if note <=5
      println("Travail Inexistant")
   elseif note >5&& note <=10
      println("Travail insuffisant")
   elseif note >10&& note <=14
      println("Peut mieux faire")
   elseif note >14&& note <16
      println("Bon travail")
   elseif note >=16&& note <18
      println("Très bon travail")
   else
      println("Excellent travail")
   end
end

Python

def appréciation(note):
   if note <= 5:
      print("Travail inexistant")
   elif note > 5 and note <= 10:
      print("Travail insuffisant")
   elif note > 10 and note <= 14:
      print("Peut mieux faire")
   elif note > 14 and note <= 16:
      print("Bon travail")
   elif note > 16 and note <= 18:
      print("Très bon travail")
   else:
      print("Excellent travail")

Dans l’exemple suivant, on montre comment l’on pourrait imbriquer, dans un même schéma les trois structures conditionnelles vues précédemment:

Schema

appréciation note Entier
   Si note <= 5
      Afficher travail Inexistant
   Sinon note > 5 ET note <= 10
      Afficher travail très insuffisant
      Si note = 6 
         Afficher travail insuffisant 
      Sinon
         Si note = 7 
            Afficher travail encore insuffisant
         Sinon
            Afficher travail vers le mieux 
         Fin
      Fin
   Sinon note > 10 ET note <= 14
      Afficher peut mieux faire
   Sinon note > 14 ET note <= 16
      Afficher bon travail
   Sinon note > 16 ET note <= 18
      Afficher très bon travail
   Sinon
      Afficher excellent travail
   Fin
Fin

Swift

func appréciation (_ note: Int) {
   if note <= 5 {
      print("travail Inexistant")
   } else if note > 5 && note <= 10 {
      print("travail très insuffisant")
      if note == 6 {
         print("travail insuffisant ")
      } else {
         if note == 7 {
            print("travail encore insuffisant")
         } else {
            print("travail vers le mieux ")
         }
      }
   } else if note > 10 && note <= 14 {
      print("peut mieux faire")
   } else if note > 14 && note <= 16 {
      print("bon travail")
   } else if note > 16 && note <= 18 {
      print("très bon travail")
   } else {
      print("excellent travail")
   }
}

Julia

function appréciation(note::Int64)
   if note <=5
      println("travail Inexistant")
   elseif note >5 && note <=10
      println("travail très insuffisant")
      if note == 6
         println("travail insuffisant ")
      else
         if note == 7
            println("travail encore insuffisant")
         else
            println("travail vers le mieux ")
         end
      end
   elseif note >10&& note <=14
      println("peut mieux faire")
   elseif note >14&& note <=16
      println("bon travail")
   elseif note >16&& note <=18
      println("très bon travail")
   else
      println("excellent travail")
   end
end

copyright A rchitectures A pplicatives A vancées A3-Soft

A3soft