Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Les instructions répétitives

Introduction

Les structures des commandes décrites dans les chapitres précédents ne donnent pas les moyens de répéter un ensemble d’actions et de commandes (appelé aussi traitement), si l’on excepte l’écriture effective de l’énoncé correspondant autant de fois qu’il faut. En conséquence, des structures de commandes qui autorisent la répétition sont nécessaires et elles ajoutent à MATLAB une nouvelle dimension très importante ; c’est la notion d’instructions répétitives.

On l’utilise souvent quand on doit exécuter le même traitement un certain nombre de fois, nombre qui peut être connu à l’avance ou non. Dans ce dernier cas, l’arrêt de l’itération est déclenché par une condition sur l’état des variables dans le programme.

D’une manière générale, il existe deux façons de répéter le traitement.

  • D’une manière inconditionnelle : le traitement est répété un nombre de fois bien déterminé lorsque l’on aborde la répétition ; ce type de répétition est réalisé par l’instruction for.

  • D’une manière conditionnelle : la poursuite ou l’abandon...

La boucle for

1. Présentation de la boucle for

En algorithmique, la structure répétitive POUR est utilisée pour faciliter la programmation de boucles de comptage. En MATLAB, la boucle for est plus générale et beaucoup plus puissante. C’est une structure répétitive qui itère le même traitement un certain nombre de fois, nombre qui est connu à l’avance. Dans cette forme de boucle, une variable nommée compteur ou variable de contrôle prend des valeurs successives sur une liste. L’arrêt du traitement de la boucle for se réalise lorsqu’on arrive à une valeur n’appartenant pas à la liste.

Cette forme est souvent utilisée pour exploiter les données d’une collection indexée. On en distingue plusieurs formes.

a. La boucle for avec plage de valeurs

Ce premier type de commande for a la structure suivante :

La boucle for avec plage - Syntaxe

for compteur = valeur_initiale :valeur_finale 
    instructions 
end 

où :

  • compteur : une variable de type scalaire servant de compteur ou variable de contrôle

  • valeur_initiale : valeur initiale que va prendre compteur

  • valeur_finale : valeur finale que prendra compteur

  • instructions: le traitement à répéter

En accédant à la boucle, le compteur est initialisé à la valeur de départ ; ensuite, à chaque parcours, il est automatiquement affecté à la valeur successive dans son domaine, jusqu’à ce qu’il atteigne la valeur finale.

Une boucle for peut être exécutée 0,1 ou plusieurs fois.

La boucle for avec plage - Exemple n° 1

Écrire un script MATLAB qui permet d’afficher tous les nombres pairs qui existent entre 1 et 10.

% for_avec_plage_1 
clear all; close all; clc; 
 
for i = 1 :10 
    if (mod(i,2) == 0), 
        fprintf(' %d ',i); 
    end 
end 
fprintf(' \n'); 

Résultat :

2  4  6  8  10 

La boucle for avec plage - Exemple n° 2

Écrire un script MATLAB qui lit un entier positif n puis calcule et affiche la somme des n premiers termes de la série suivante :

images/06eq01.PNG
% for_avec_plage_2 ...

La boucle while

1. Présentation de la boucle while

La boucle while est similaire à la boucle for présentée précédemment : elle permet à un groupe d’instructions d’être exécuté un certain nombre de fois. Mais la répétition est cette fois contrôlée par un prédicat qui exprime la condition de maintien dans la boucle. Ce prédicat est évalué avant chaque exécution du traitement : s’il est faux, la boucle s’arrête.

La structure de la boucle while est la suivante :

La boucle while - Syntaxe

while condition 
    instructions 
end 

où :

  • condition : une expression logique ; c’est la condition d’exécution ou de répétition

  • instructions : le traitement à répéter

Dans une boucle while, le traitement associé à la boucle peut ne pas être exécuté, si la condition d’exécution n’est pas vérifiée dès le départ.

Le traitement est exécuté aussi longtemps que la condition d’exécution est vérifiée. Quand la condition de répétition n’est plus vérifiée, on sort de cette boucle.

Il est primordial de bien initialiser les variables de la condition de répétition...

Les commandes break et continue

Comme nous venons de le voir, dans les structures de boucles for ou while, un bloc d’instructions est exécuté un certain nombre de fois, qui peut être connu à l’avance ou non. MATLAB permet une sortie prématurée d’une boucle de contrôle. Il offre deux instructions qui permettent d’interrompre l’exécution de la boucle.

1. La commande break

La commande break met fin à l’exécution d’une boucle for ou while, et sort totalement de la boucle, en ignorant les itérations qui suivent. Les instructions dans la boucle après l’instruction break ne s’exécutent pas. Le programme se poursuit alors séquentiellement à partir de l’instruction qui suit le mot-clé end fermant la boucle.

Commande break - Exemple n° 1

Écrire un script MATLAB qui lit un nombre entier et s’arrête dès qu’il devient supérieur à 100.

% break_1 
clear all; close all; clc; 
 
while 1 
    n = input('Taper un entier '); 
    if (n >= 100), 
        break; 
    end 
end 

Résultat :

Taper un entier 1

Taper un entier 5

Taper un entier 999

Commande break - Exemple n° 2

Écrire un script MATLAB...

Les boucles imbriquées

Le traitement de la boucle (for, while) peut être une séquence d’instructions simples, un traitement conditionnel ou un autre traitement répétitif ; il est en effet possible qu’une boucle soit complètement à l’intérieur d’une autre boucle. On parle dans ce cas de boucles imbriquées.

Boucles imbriquées - Exemple n° 1

Écrire un script MATLAB qui affiche un triangle isocèle formé d’étoiles de n lignes.

% imbriquee_1 
clear all; close all; clc; 
 
disp('== Triangle isocèle =='); 
n = input('Donner le nombre de lignes '); 
 
% affichage de triangle 
for i = 1 :n 
    for es = 1 :(n-i) 
        fprintf(' '); 
    end 
    for nc = 1 :(i+i-1) 
        fprintf('*'); 
    end 
    for es = 1 :(n-i) 
        fprintf(' '); 
    end 
    fprintf('\n'); 
end 

Résultat :

== Triangle isocèle == 
Donner le nombre de lignes 8 
       *        
      ***       ...

Les tableaux logiques

Une variable logique ou de type booléen peut prendre une des deux valeurs prédéfinies true ou false. Les tableaux de données logiques sont générés à partir des expressions logiques.

Ces tableaux logiques sont des outils très puissants utilisés en MATLAB. Ils permettent de remplacer un traitement répétitif compliqué. Les exemples suivants expliquent ce principe.

Tableau logique - Exemple n° 1

Soit A une matrice de données 3x3. Écrire un script permettant de créer une matrice logique contenant le résultat du test de parité des éléments de la matrice de données A (vrai si l’élément est pair, faux sinon).

% tableau_logique_1 
clear all; close all; clc; 
 
disp('Matrice de données'); 
A= [1, 2, 3; 
    4, 5, 6; 
    7, 8, 9] 
 
disp('Matrice logique'); 
Al= (mod(A,2) == 0) 

Résultat :

Matrice de données 
A = 
     1     2     3 
     4     5     6 
     7     8     9 
Matrice logique 
Al = 
     0     1    ...