Structures conditionnelles en Scilab
1. Opérateurs de comparaison
Avant d'utiliser les structures conditionnelles, il faut connaître les opérateurs qui permettent de formuler des conditions. En Scilab, une condition retourne un booléen : %t (vrai) ou %f (faux).

| Opérateur | Signification | Exemple | Résultat |
|---|---|---|---|
== | Égal à | 5 == 5 | %t |
~= | Différent de | 3 ~= 5 | %t |
< | Strictement inférieur | 3 < 5 | %t |
<= | Inférieur ou égal | 5 <= 5 | %t |
> | Strictement supérieur | 7 > 3 | %t |
>= | Supérieur ou égal | 3 >= 3 | %t |
& | ET logique | (3>1) & (5>2) | %t |
| | OU logique | (3>5) | (2>1) | %t |
~ | NON logique | ~(3 > 5) | %t |
%t (true) et %f (false), contrairement à Python (True/False) ou C (1/0).2. Structure conditionnelle if
L'instruction if exécute un bloc d'instructions si une condition est vraie. Le bloc est délimité par le mot-clé end.
// Forme 1 — if seul
if ( condition ) then
// instructions si condition vraie
end
// Forme 2 — if ... else
if ( condition ) then
// instructions si vraie
else
// instructions si fausse
end
// Forme 3 — if ... elseif ... else
if ( condition1 ) then
// instructions si condition1 vraie
elseif ( condition2 ) then
// instructions si condition2 vraie
else
// instructions si aucune condition vraie
end| Forme | Utilisation |
|---|---|
if ... then ... end | Une seule branche — exécuté ou ignoré |
if ... else ... end | Deux branches — l'une ou l'autre |
if ... elseif ... else ... end | Plusieurs conditions mutuellement exclusives |
Exemple n°1 — if simple et if...else
// if simple — s'exécute car %t est vrai
if ( %t ) then
disp("Hello !")
end
// if...else — s'exécute sur la branche else car %f est faux
if ( %f ) then
disp("Hello !")
else
disp("Goodbye !")
endHello ! Goodbye !
Exemple n°2 — if...elseif...else avec saisie utilisateur
i = input("Saisir un nombre (1, 2 ou 3) : ")
if ( i == 1 ) then
disp("Hello !")
elseif ( i == 2 ) then
disp("Goodbye !")
elseif ( i == 3 ) then
disp("Tchao !")
else
disp("Au Revoir !")
end// Si l'utilisateur saisit 2 : Goodbye !
end Chaque structure if doit être fermée par end. Un end manquant provoque une erreur de syntaxe. Les structures imbriquées nécessitent autant de end que de if ouverts.Exercices appliqués
note = input("Saisir une note : ")
if ( note < 10 ) then
disp("non admis")
else
disp("admis")
end// Si note = 7 : non admis // Si note = 14 : admis
nb = input("Saisir un nombre : ")
if ( nb < 0 ) then
disp("nombre est négatif")
elseif ( nb > 0 ) then
disp("nombre est positif")
else
disp("nombre est nul")
end// Si nb = -5 : nombre est négatif // Si nb = 0 : nombre est nul
- 6–7 ans → Poussin
- 8–9 ans → Pupille
- 10–11 ans → Minime
- ≥ 12 ans → Cadet
Solution 1 — conditions avec bornes doubles (&)
age = input("Saisir l'âge : ")
if ( age >= 6 & age <= 7 ) then
disp("Poussin")
elseif ( age >= 8 & age <= 9 ) then
disp("Pupille")
elseif ( age >= 10 & age <= 11 ) then
disp("Minime")
elseif ( age >= 12 ) then
disp("Cadet")
else
disp("Âge n'appartient à aucune catégorie")
endSolution 2 — conditions progressives (plus concise)
age = input("Saisir l'âge : ")
if ( age < 6 ) then
disp("Âge n'appartient à aucune catégorie")
elseif ( age <= 7 ) then
disp("Poussin")
elseif ( age <= 9 ) then
disp("Pupille")
elseif ( age <= 11 ) then
disp("Minime")
else
disp("Cadet")
endage <= 7 est atteint, c'est que age >= 6 est déjà garanti (la branche age < 6 a été rejetée). On évite ainsi les opérateurs &.// Si age = 9 : Pupille // Si age = 15 : Cadet // Si age = 4 : Âge n'appartient à aucune catégorie
h = input("Saisir l'heure (0–23) : ")
m = input("Saisir les minutes (0–59) : ")
if ( m == 59 ) then
m = 0
if ( h == 23 ) then
h = 0 // passage minuit → 0h00
else
h = h + 1 // passage à l'heure suivante
end
else
m = m + 1 // simple incrément de minute
end
disp("Dans une minute, il sera " + string(h) + " heure(s) " + string(m))// Si h=21, m=32 : Dans une minute, il sera 21 heure(s) 33 // Si h=14, m=59 : Dans une minute, il sera 15 heure(s) 0 // Si h=23, m=59 : Dans une minute, il sera 0 heure(s) 0
m < 59→ simple incrément de minutem == 59eth < 23→ passage à l'heure suivantem == 59eth == 23→ retour à 0h00 (minuit)
3. Instruction select
L'instruction select est l'équivalent Scilab du switch/case de C ou Java. Elle permet de comparer une variable à plusieurs valeurs de façon lisible, sans enchaîner des elseif.
select variable
case valeur1
// instructions si variable == valeur1
case valeur2
// instructions si variable == valeur2
// autant de case que nécessaire
else
// instructions si aucun case ne correspond
end| Critère | if / elseif | select / case |
|---|---|---|
| Conditions | Expressions booléennes quelconques | Égalité à une valeur fixe uniquement |
| Lisibilité | ⚠️ Encombrante avec beaucoup de cas | ✅ Très lisible pour un grand nombre de cas |
| Branche par défaut | else | else |
Exemple n°3 — select simple
i = input("Saisir un nombre (1, 2 ou 3) : ")
select i
case 1
disp("One")
case 2
disp("Two")
case 3
disp("Three")
else
disp("Other")
end// Si i = 2 : Two // Si i = 7 : Other
i = input("Saisir un nombre (1 à 7) : ")
select i
case 1
disp("Lundi")
case 2
disp("Mardi")
case 3
disp("Mercredi")
case 4
disp("Jeudi")
case 5
disp("Vendredi")
case 6
disp("Samedi")
case 7
disp("Dimanche")
else
disp("Numéro invalide (saisir entre 1 et 7)")
end// Si i = 4 : Jeudi // Si i = 9 : Numéro invalide (saisir entre 1 et 7)
case 3, ce qui les rendait inaccessibles. Chaque jour doit avoir son propre numéro de case :// ❌ Erroné (Jeudi, Vendredi, Samedi, Dimanche inaccessibles)
case 3
disp("Mercredi")
case 3 // ← doublon !
disp("Jeudi")
// ✅ Correct
case 3
disp("Mercredi")
case 4
disp("Jeudi")
Discussion (0)
Soyez le premier à laisser un commentaire !
Laisser un commentaire
Votre commentaire sera visible après modération.