Structures itératives en Scilab
Une structure itérative (ou boucle) permet de répéter l'exécution d'un bloc d'instructions plusieurs fois. Scilab propose deux types de boucles :
| Boucle | Utilisation | Condition d'arrêt |
|---|---|---|
for | Nombre d'itérations connu à l'avance | Compteur atteint la valeur finale |
while | Nombre d'itérations inconnu — dépend d'une condition | La condition booléenne devient fausse |
1. La boucle for
La boucle for répète un bloc d'instructions pour chaque valeur d'un compteur qui évolue de debut à fin avec un pas donné.
for compteur = debut : pas : fin
// instructions répétées à chaque itération
end
// Forme simplifiée (pas = 1 par défaut)
for compteur = debut : fin
// instructions
end| Paramètre | Description | Par défaut |
|---|---|---|
debut | Valeur initiale du compteur | — |
pas | Incrément à chaque itération (peut être négatif) | 1 |
fin | Valeur finale (incluse) | — |
Exemple n°1 — Compteur simple et pas personnalisé
// Afficher les entiers de 1 à 5 (pas = 1 par défaut)
for i = 1 : 5
disp(i)
end
// Afficher les entiers impairs de 1 à 9 (pas = 2)
disp("--- Impairs ---")
for i = 1 : 2 : 9
disp(i)
end
// Compte à rebours de 5 à 1 (pas négatif)
disp("--- Compte à rebours ---")
for i = 5 : -1 : 1
disp(i)
end1 2 3 4 5 --- Impairs --- 1 3 5 7 9 --- Compte à rebours --- 5 4 3 2 1
pas négatif permet d'itérer en ordre décroissant. La boucle s'arrête dès que le compteur est inférieur à fin:for i = 10 : -2 : 0 // 10, 8, 6, 4, 2, 0
disp(i)
endExercices appliqués — boucle for
s = 0
for val = 1 : 100
s = s + val
end
disp("La somme est : " + string(s))La somme est : 5050
for Écrire un programme qui lit un entier N et calcule N! (N factorielle).N = input("Saisir un entier N : ")
f = 1
for i = 2 : N
f = f * i
end
disp("Le factoriel de " + string(N) + " est : " + string(f))// Si N = 5 : Le factoriel de 5 est : 120 // Si N = 0 ou N = 1 : Le factoriel de 1 est : 1
for i = 2 : 0 ou for i = 2 : 1 ne s'exécute pas (début > fin), donc f reste à 1 — correct.2. La boucle while
La boucle while répète un bloc d'instructions tant qu'une condition est vraie. Elle est adaptée quand le nombre d'itérations n'est pas connu à l'avance.
while ( condition )
// instructions exécutées tant que condition est %t
// ⚠️ la condition doit devenir %f à un moment
end%f:// ❌ Boucle infinie — i n'est jamais modifié
i = 1
while ( i <= 10 )
disp(i) // i reste 1 → boucle infinie
end
// ✅ Correct — i est incrémenté
i = 1
while ( i <= 10 )
disp(i)
i = i + 1 // ← indispensable
endExemple n°2 — Somme de 1 à 10 avec while
s = 0
i = 1
while ( i <= 10 )
s = s + i
i = i + 1
end
disp("Somme de 1 à 10 : " + string(s))Somme de 1 à 10 : 55
Exercices appliqués — boucle while
n = input("Saisir un nombre entre 1 et 3 : ")
while ( n < 1 | n > 3 )
disp("Valeur invalide — réessayez.")
n = input("Saisir un nombre entre 1 et 3 : ")
end
disp("Bravo ! Vous avez saisi : " + string(n))Saisir un nombre entre 1 et 3 : 7 Valeur invalide — réessayez. Saisir un nombre entre 1 et 3 : 0 Valeur invalide — réessayez. Saisir un nombre entre 1 et 3 : 2 Bravo ! Vous avez saisi : 2
while Calculer N! en utilisant une boucle while.N = input("Saisir un entier N : ")
i = 1
f = 1
while ( i < N )
i = i + 1
f = f * i
end
disp("Le factoriel de " + string(N) + " est : " + string(f))// Si N = 6 : Le factoriel de 6 est : 720
for ou while pour la factorielle ? Les deux approches donnent le même résultat. for est préférable ici car le nombre d'itérations est connu (N-1 fois). while est plus adapté quand la condition d'arrêt dépend d'une valeur calculée dynamiquement.3. Instructions break et continue
break— interrompt immédiatement la boucle en cours. L'exécution reprend après leend.continue— saute le reste du corps de la boucle pour l'itération courante et passe directement à l'itération suivante.
| Instruction | Effet | Cas d'usage typique |
|---|---|---|
break | Quitte la boucle définitivement | Recherche — arrêt dès qu'un élément est trouvé |
continue | Saute l'itération courante | Filtrage — ignorer certaines valeurs |
Exemple n°3 — break : arrêt à i = 5
disp("début")
for i = 1 : 10
if ( i == 5 ) then
break // quitte la boucle dès que i vaut 5
end
disp(i)
end
disp("fin")début 1 2 3 4 fin
Exemple n°4 — continue : sauter i = 5
disp("début")
for i = 1 : 10
if ( i == 5 ) then
continue // saute l'affichage pour i = 5
end
disp(i)
end
disp("fin")début 1 2 3 4 6 7 8 9 10 fin
Exemple n°5 — Cas concrets : premier multiple et nombres pairs
// break — trouver le premier multiple de 7 entre 1 et 100
for i = 1 : 100
if ( modulo(i, 7) == 0 ) then
disp("Premier multiple de 7 : " + string(i))
break
end
end
// continue — afficher uniquement les nombres pairs de 1 à 10
disp("Nombres pairs :")
for i = 1 : 10
if ( modulo(i, 2) ~= 0 ) then
continue // saute les impairs
end
disp(i)
endPremier multiple de 7 : 7 Nombres pairs : 2 4 6 8 10
Récapitulatif
| Concept | Syntaxe clé | À utiliser quand… |
|---|---|---|
| for | for i = d:p:f … end | Nombre d'itérations connu |
| while | while (cond) … end | Arrêt conditionnel dynamique |
| break | break | Sortir immédiatement de la boucle |
| continue | continue | Sauter l'itération courante |
| Pas négatif | for i = 10:-1:1 | Itération décroissante |
Discussion (0)
Soyez le premier à laisser un commentaire !
Laisser un commentaire
Votre commentaire sera visible après modération.