les boucles en Scilab

09 May 2017 09 May 2018 20342 vues ESSADDOUKI Mostafa 6 min de lecture

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 :

BoucleUtilisationCondition d'arrêt
forNombre d'itérations connu à l'avanceCompteur atteint la valeur finale
whileNombre d'itérations inconnu — dépend d'une conditionLa 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é.


Syntaxe — boucle for Scilab
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ètreDescriptionPar défaut
debutValeur initiale du compteur
pasIncrément à chaque itération (peut être négatif)1
finValeur 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)
end
Sortie
1  2  3  4  5
--- Impairs ---
1  3  5  7  9
--- Compte à rebours ---
5  4  3  2  1
Astuce — Pas négatif pour un compte à rebours Un 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)
end

Exercices appliqués — boucle for

Exercice 1 — Somme des 100 premiers entiers Écrire un programme qui calcule et affiche la somme 1 + 2 + 3 + … + 100.
s = 0
for val = 1 : 100
    s = s + val
end
disp("La somme est : " + string(s))
Sortie
La somme est : 5050
Vérification — Formule de Gauss La somme des N premiers entiers vaut N × (N+1) / 2. Pour N = 100 : 100 × 101 / 2 = 5050
Exercice 2 — Factorielle avec 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))
Sortie
// Si N = 5 :
Le factoriel de 5 est : 120

// Si N = 0 ou N = 1 :
Le factoriel de 1 est : 1
Remarque — Cas N = 0 et N = 1 Par convention, 0! = 1 et 1! = 1. La boucle 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.


Syntaxe — boucle while Scilab
while ( condition )
    // instructions exécutées tant que condition est %t
    // ⚠️ la condition doit devenir %f à un moment
end
Danger — Boucle infinie Si la condition ne devient jamais fausse, la boucle tourne indéfiniment. Il faut toujours s'assurer que les instructions dans le corps modifient la condition vers %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
end

Exemple 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))
Sortie
Somme de 1 à 10 : 55

Exercices appliqués — boucle while

Exercice 3 — Saisie contrainte Écrire un programme qui demande à l'utilisateur un nombre compris entre 1 et 3, et répète la demande tant que la réponse est invalide.
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))
Sortie
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
Exercice 4 — Factorielle avec 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))
Sortie
// Si N = 6 :
Le factoriel de 6 est : 720
Astuce — 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

Définition — break et continue
  • break — interrompt immédiatement la boucle en cours. L'exécution reprend après le end.
  • continue — saute le reste du corps de la boucle pour l'itération courante et passe directement à l'itération suivante.
InstructionEffetCas d'usage typique
breakQuitte la boucle définitivementRecherche — arrêt dès qu'un élément est trouvé
continueSaute l'itération couranteFiltrage — 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")
Sortie
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")
Sortie
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)
end
Sortie
Premier multiple de 7 : 7
Nombres pairs :
2  4  6  8  10

Récapitulatif

ConceptSyntaxe cléÀ utiliser quand…
forfor i = d:p:f … endNombre d'itérations connu
whilewhile (cond) … endArrêt conditionnel dynamique
breakbreakSortir immédiatement de la boucle
continuecontinueSauter l'itération courante
Pas négatiffor i = 10:-1:1Itération décroissante

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.