Dans les problèmes quotidiens, on ne traite pas uniquement des séquences d’actions, sous ou sans conditions, mais il peut être fréquent d’être obligé d’exécuter un traitement (séquence d’actions), plusieurs fois. En effet, pour saisir les N notes d’un étudiant et calculer sa moyenne, on est amené à saisir N variables, puis faire la somme et ensuite diviser la somme par N. Cette solution nécessite la réservation de l’espace par la déclaration des variables, et une série de séquences d’écriture/lecture. Ce problème est résolu à l’aide des structures répétitives. Celles ci permettent de donner un ordre de répétition d’une action ou d’une séquence d’actions une ou plusieurs fois.

L’instruction « for »

La boucle for permet de répéter un nombre de fois prédéterminé une séquence d’instructions. Le end est obligatoire à la fin de la structure.

for compteur = valeur_Debut : pas : valeur_Fin
  instructions
end

 

L’exemple suivant permet de générer, à l’aide de la boucle for, les carrés des n premiers entiers naturels.

Fichier ncarres.m

function x = ncarres
% tableau des carrés des n premiers entiers naturels

n = 10;
x = [];
for i = 1:n
  x = [x, i^2];
end

 

L’exécution donne :

>> ncarres
ans =
1     4     9   16   25   36   49   64   81   100          

 

L’instruction « while »

La boucle while permet de répéter une séquence d’instructions tant qu’une condition est vérifiée. Le end est obligatoire à la fin de la structure.

while conditions
  instructions
end

 

Dans l’exemple suivant, on affiche le plus petit entier naturel n tel que 2^n soit supérieur ou égal à un nombre x donné.

Fichier n_x.m

function n = n_x
% affiche le plus petit entier naturel n tel que 2^n soit supérieur ou égal à un nombre x donné.
x = 15; n = 0;

while 2^n < x
  n = n + 1;
end

 

L’exécution donne :

>> n_x
ans =
4

 

Les instructions « break », « continue », « return »

Il est possible de provoquer une sortie prématurée d’une boucle de contrôle.

 

L’instruction « break » :

L’instruction break permet de sortir d’une boucle for ou d’une boucle while. L’exécution se poursuit alors séquentiellement à partir de l’instruction suivant le mot clé end fermant la boucle. En cas de boucles imbriquées, on interrompt seulement l’exécution de la boucle intérieure contenant l’instruction break.

 

Dans l’exemple suivant, nous demandons la sortie de la boucle for à la cinquième itération.

function x = ncarres_break
n = 10;
x = [];
for i = 1:n
    if i==5
        break;
    end
  x = [x, i^2];
end
disp('fin'):

 

L’exécution donne :

>> ncarres_break

ans =

1 4 9 16

 

L’instruction « continue » :

L’instruction continue permet de sauter à l’itération suivante dans une boucle for ou while.

 

Dans l’exemple suivant, nous demandons d’ignorer la cinquième itération de la boucle for.

function x = ncarres_continue
n = 10;
x = [];
for i = 1:n
    if i==5
        continue;
    end
  x = [x, i^2];
end
disp('fin'):

 

L’exécution donne :

>> ncarres_continue
fin

ans =

1 4 9 16 36 49 64 81 100

On remarque l’absence de la valeur « 25 » dans le vecteur de sortie.

 

L’instruction « return » :

L’instruction return provoque un retour au programme appelant (ou au clavier). Les instructions suivant le return ne sont donc pas exécutées. L’instruction return est souvent utilisée conjointement avec une instruction conditionnée par exemple pour tester dans le corps d’une fonction si les paramètres d’entrée ont les valeurs attendues.

 

Dans l’exemple suivant, nous demandons la sortie de la fonction à la cinquième itération de la boucle for.

function x = ncarres_return
n = 10;
x = [];
for i = 1:n
    if i==5
        return;
    end
  x = [x, i^2];
end
disp('fin'):

 

L’exécution donne :

>> ncarres_return

ans =

1 4 9 16