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