TP n°03 Conditions et Boucles sous
Matlab
Chargée du module: Dr A. Yahiaoui
Année universitaire: 2023 / 2024.
TP 03 Matlab
Partie théorique
I. Introduction
Les principales instructions de contrôle proposées par Matlab sont for, while et
if ; elles fonctionnent à peu près comme leurs équivalents dans les autres langages de
programmation.
Dans ce TP, nous verrons l’utilisation des boucles (for et while) ainsi que les tests
dans Matlab, et nous écrirons des programmes plus complexes pour avoir des
comportements toujours plus intéressants.
II. Les testes logiques
Les testes logiques dans MATLAB se font à l’aide des mots clés if, else et end.
Les opérateurs utilisés dans les instructions logiques sont :
Les variables a et b peuvent être des scalaires ou des matrices, c prends des
valeurs 0 ou 1 selon l’expression vraie ou fausse. Ces opérateurs s’appliquent sur les
toutes les composantes dans le cas des matrices. Exemple de teste if:
if a < b % ce script est équivalent à la fonction m = min(a,b)
m = a
else
m = b
end
TP 03 Matlab
Dans le cas contraire, on peut définir d'autres blocs conditionnels avec le mot
clé elseif (comportant nécessairement une condition logique), ainsi qu'un
bloc else correspondant aux instructions à exécuter si toutes les conditions logiques
précédentes sont fausses (valent 0 ou false).
La syntaxe est la suivante :
if condition logique
instructions
elseif condition logique
instructions
...
else
instructions
end
III. La boucle for dans Matlab
La boucle for fait varier une variable d’une valeur initiale à une valeur finale
avec un pas d’incrémentation constant qui est pris égale à un s’il est omis. Les
instructions à l’intérieur de la boucle sont exécutées à chaque valeur de la variable.
Généralement, le compteur, la valeur initiale et la valeur finale sont des nombres
entiers et l’incrément est égal à 1. Toutefois ce n’est pas une règle, dans certains cas
des nombres réels ou même des caractères sont utilisés. En réalité, ce qui est à droite
du signe égale n’est autre qu’un vecteur ligne qui est parcouru par compteur.
Exemple: Calcul des termes et de la somme d’une suite :
a = 10; % valeur du paramètre a
N = 15; % nombre de terme
for n = 1:N % début de boucle d’entiers
s(n) = n^a/a^n; % calcul des termes
end % fin de boucle
[s(N), sum(s)] % affichage du dernier terme et de la somme. Noter
l’absence de ;
TP 03 Matlab
1. La boucle for sur les vecteurs
Pour commencer, nous allons nous familiariser avec la boucle for. Commencez par
écrire un programme trés simple qui parcourt un vecteur ligne :
v = rand(1, 20);
disp(v);
for i=v
disp(‘La variable i vaut ‘);
disp(i);
end
Ce programme est sensé afficher tous les éléments de v à travers la variable i dans la
boucle.
La boucle for doit respecter la syntaxe suivante :
for compteur = expression
instructions
end
2. La boucle for sur les matrices
Nous allons faire le meme travail, mais avec une matrice. Voici un programme
permettant de parcourir une matrice :
A = rand(5, 5);
disp(A);
for i=A
disp(‘La variable i vaut ‘);
disp(i);
end
IV. Instruction conditionnelle switch
Comme une structure if, la structure switch est une structure conditionnelle,
c'est-à-dire qu'elle comporte différents blocs d'instructions qui seront exécutés de
manière conditionnelle.
Cependant, ici il n'y a pas de conditions logiques, le critère de choix est la valeur
d'une expression (ou d'une variable). Cette valeur, que l'on appelle cas (case), permet
la sélection du bloc à exécuter.
TP 03 Matlab
La syntaxe est la suivante :
Le choix (switch) se fait sur la valeur d'une variable ou d'une expression.
L'expression du cas peut être une simple valeur de type numérique ou alphanumérique.
Mais ce ne peut pas être une expression contenant une opération relationnelle (< ou >).
Ainsi, contrairement aux conditions if, l'ensemble des cas est forcément un ensemble
fini de valeurs.
Remarque: Un switch peut contenir de nombreux cas, mais dès lors que le choix
correspond à l'une des expressions de cas, le bloc d'instructions correspondant est
exécuté, et les cas suivants sont ignorés (même si un autre cas pourrait satisfaire
l'expression du choix).
Exemple:
TP 03 Matlab
Ce script va afficher le message ’c est moins un’ si l’on tape 1, ’c est la valeur zero !’
si l’on tape 0 et ’c est plus un’ si l’on tape +1. Si la valeur entree n’est ni -1,0 ou 1
alors Matlab renvoie : ’Une autre valeur’.
V. La boucle while dans Matlab
La boucle while s’exécute tant qu’une expression logique est vraie. Elle est
plus utile lorsque la valeur finale de la boucle for n’est pas connue à priori. Sa
structure est :
Par exemple, voici un programme permettant de demander un nombre positif à
l’utilisateur, et de répéter ces instructions tant qu’elles n’auront pas été suivies :
a = input(’Entrez un nombre positif : ’);
while a<0
a = input(’Entrez un nombre positif : ’);
end
disp(a);
La boucle while permet donc de répéter des instructions tant qu’une condition donnée
est vraie. Si la condition devient fausse, alors la boucle s’arrete et le programme passe
à la suite du code.
La boucle while nécessite souvent des initialisations avant d’être lancée et peut
se dérouler indéfiniment si l’expression logique de contrôle reste toujours vraie. Les
deux boucles peuvent être rompues par la commande break. On insère généralement
break avec un teste de condition if.
Testez ce code :
a=rand(1,1); b=1;
while a<30
b = b+1;
end
TP 03 Matlab
Si l’éxecution de ce code vous parait longue, c’est normal : le code de la boucle while
ne fait pas évoluer la condition qui restera pour toujours vraie. La boucle va donc
tourner à l’infini. Pour interrompre votre programme, tapez CTRL+C dans la fenêtre
de commande. Il est donc très important, dans une boucle while, que le code de la
boucle fasse évoluer la condition.
Partie Pratique:
Exercice 1
Écrire un programme Matlab, sous forme d’une fonction qui calcule le factoriel d’un
nombre entier n.
Pour mémoire factoriel de 170 est défini par 170! = 1 * 2 * ... * 170.
Exercice 2
Écrire un programme Matlab qui calcule la surface ou le périmètre d’un triangle selon
les choix suivant:
Pour 1, on calcule la surface
Pour 2, on calcule le périmètre
Pour 0, exit.
Exercice 3
Écrivez un programme Matlab, qui choisit un nombre entier au hasard entre 1 et 100
(à l’aide de randi), et doit le faire deviner à l’utilisateur. Pour ce faire, tant qu’il n’a
pas trouvé le nombre, l’utilisateur doit entrer un nombre et le programme lui indique
si ce nombre est plus petit ou plus grand.