Vous êtes sur la page 1sur 9

II.

Programmation sur Matlab


II.1. Instructions de contrôle
Les instructions de contrôle sous MATLAB sont très proches de celles existant dans d'autres
langages de programmation. On trouve deux types de structures « les structures Itératives et les
structures Conditionnelles »

II.1.1. Structures Itératives


a- Boucle FOR : parcours d'un intervalle
Une première possibilité pour exécuter une séquence d'instructions de manière répétée consiste
à effectuer une boucle pour les valeurs d'un indice, incrémenté à chaque itération, variant entre
deux bornes données. Ce processus est mis en œuvre par la boucle for.
Syntaxe :
For indice = borne_inf : borne_sup
séquence d'instructions
end

indice : est une variable appelée l'indice de la boucle;
borne_inf et borne_sup : sont deux constantes réelles (appelées paramètres de la
boucle);
séquence d'instructions : est le traitement à effectuer pour les valeurs d'indices variant
entre borne_inf et borne_sup avec un incrément de 1. On parle du corps de la boucle.
Interprétation :
Si borne_inf est plus petit ou égal à borne_sup, le traitement séquence d'instructions est
exécuté borne_sup - borne_inf fois, pour les valeurs de la variable indice égales
à borne_inf, borne_inf+1, ..., borne_sup. (a chaque fois +1).
Si borne_inf est strictement plus grand que borne_sup, on passe à l'instruction qui suit
immédiatement l'instruction de fin de boucle (end).
Remarque :
L'indice de boucle ne prend pas nécessairement des valeurs entières. D'autre part il n'est pas
nécessaire que l'indice de la boucle apparaisse dans le corps de la boucle; par contre il est interdit
de modifier sa valeur s'il apparaît. Il est possible d'imbriquer des boucles mais elles ne doivent
pas se recouvrir. On peut utiliser un incrément (pas) autre que 1 (valeur par défaut). La syntaxe
est alors borne_inf: pas : borne_sup. Le pas peut être négatif. Attention à bien gérer la borne
supérieure! Voici un exemple (idiot) venant illustrer les possibilités de variations de l'indice de
la boucle

1
>> for r =1.1:-0.1:0.75
disp(['r = ', num2str(r)]);
end
r = 1.1
r=1
r = 0.9
r = 0.8
>>
Voici un exemple d'utilisation d'une boucle pour calculer n! (le lecteur attentif sait calculer n!
plus simplement ... par exemple en exécutant prod([1:n])).

>> n = 4;
>> nfac = 1;
>> for k = 1:n
nfac = nfac*k;
end
>> nfac
nfac =
24
>>
b- Boucle WHILE : tant que . . . faire
Une seconde possibilité pour exécuter une séquence d'instructions de manière répétée consiste
à effectuer une boucle tant qu'une condition reste vérifiée. On arrête de boucler dès que cette
condition n'est plus satisfaite. Ce processus est mis en œuvre par la boucle while. c.-à-d.
l’instruction While répète l’exécution d’un groupe d’instruction un nombre indéterminé de fois
selon la valeur d’une condition logique. Elle a la forme générale suivante :
Syntaxe :
While expression logique (condition)
Séquence d'instructions
end

 expression logique : est une expression dont le résultat peut être vrai ou faux;
 séquence d'instructions : est le traitement à effectuer tant que expression logique est
vraie.

2
Interprétation :
Tant que expression logique est vraie le traitement séquence d'instructions est exécuté sous
forme d'une boucle. Lorsque expression logique devient faux, on passe à l'instruction qui suit
immédiatement l'instruction de fin de boucle (end).

Remarque :
expression logique est en général le résultat d'un test (par exemple i < Imax) ou le résultat d'une
fonction logique (par exemple all(x)). Il est impératif que le traitement de la séquence
d'instructions agisse sur le résultat de expression logique sans quoi on boucle indéfiniment (-:.
Voici comment calculer n! avec une boucle while:
>> n = 4;
>> k = 1; nfac = 1; % nfac : n factoriel
>> while k <= n
nfac = nfac*k;
k = k+1;
end
>> nfac
nfac =
24
>>
II.1.2. Structures conditionnelles
a- L'instruction conditionnée « IF »

On a parfois besoin d'exécuter une séquence d'instructions seulement dans le cas où une
condition donnée est vérifiée au préalable. Différentes formes d'instruction conditionnée
existent sous MATLAB.
L'instruction conditionnée la plus simple a la forme suivante:

Syntaxe :

If expression logique
séquence d'instructions
end

 expression logique est une expression dont le résultat peut être vrai ou faux;
 séquence d'instructions est le traitement à effectuer si expression logique est vraie.

3
Interprétation:

la séquence d'instructions n'est exécutée que si le résultat de l'évaluation de l'expression


logiqueest vraie (c'est-à-dire vaut 1). Dans le cas contraire on exécute l'instruction qui suit le
mot clé end. Dans le cas où l'expression logique est vraie, après exécution de la séquence
d'instructions on reprend le programme à l'instruction qui suit le mot clé end.
Remarque :
Contrairement à certains langages de programmation, il n'y a pas de mot clé << then >> dans
cette instruction conditionnée. Notez également que la marque de fin de bloc conditionné est
le mot clé end et non pas << end if >>.
Il existe une séquence conditionnée sous forme d'alternatives:

Syntaxe :

If expression logique
séquence d'instructions 1
else
séquence d'instructions 2
end

 expression logique est une expression dont le résultat peut être vrai ou faux;
 séquence d'instructions 1 est la séquence d'instructions à exécuter dans le cas
où expression logique est vraie et séquence d'instructions 2 est la séquence d'instructions
à exécuter dans le cas où expression logique est faux.

Interprétation :

Si expression logique est vraie la séquence d'instructions 1 est exécutée, sinon c'est la séquence
d'instructions 2 qui est exécutée. Le déroulement du programme reprend ensuite à la première
instruction suivant le mot clé end.
Il est bien entendu possible d'imbriquer des séquences d'instructions conditionnées (au sens où
la séquence d'instruction conditionnée contient des séquences d'instructions conditionnée). Pour
une meilleure lisibilité, il est recommandé d'utiliser des indentations afin de mettre en évidence
l'imbrication des séquences d'instructions conditionnées.

4
Il est possible d'effectuer un choix en cascade:

Syntaxe :

If expression logique 1
séquence d'instructions 1
else if expression logique 2
séquence d'instructions 2
...
else if expression logique N
séquence d'instructions N
else
séquence d'instructions par défaut
end

Interprétation :

Si expression logique 1 est vraie la séquence d'instructions 1 est exécutée et le programme


reprend ensuite à la première instruction suivant le mot clé end, sinon si expression logique
2 est vraie la séquence d'instructions 2 est exécutée et le programme reprend ensuite à la
première instruction suivant le mot clé end, etc. Si aucune des expressions logiques 1 à N n'est
vraie alors séquence d'instructions par défaut est exécutée.
Remarque :
Attention à ne pas laisser d'espace entre else et if; le mot clé est elseif.
On utilise fréquemment un choix en cascade lors d'initialisation de données. Par exemple, on
initialise une matrice A en fonction de la valeur d'une variable numex (numéro d'exemple) de
la manière suivante:
if numex == 1
A = ones(n);
else if numex == 2
A = magic(n);
else if numex == 3 | numex == 4
A = rand(n);
else
error ('numero d'exemple non prevu ...');
end

5
II.2. Algorithme
II.2.1. Introduction : qu’est-ce que un Algorithme
Un algorithme est une suite ordonnée d’instructions qui indique la démarche à suivre pour
résoudre une série de problèmes équivalents, d’autres part, Un algorithme est une suite
d'instructions séquentielles, éventuellement structurées par des conditionnelles et des boucles..
Ainsi quand on définit un algorithme, celui-ci ne doit contenir que des instructions
compréhensibles par celui qui devra l’exécuter. Dans ce cours, nous devrons donc apprendre à
définir des algorithmes pour qu’ils soient compréhensibles — et donc exécutables — par un
ordinateur.
Exemples : suivre une recette de cuisine, suivre un plan, faire une division euclidienne à la
main sont des exemples d’algorithme.
 Voici, ci-contre, un exemple d’algorithme rédigé en langage courant. Si on applique cet
algorithme au nombre 3, on a :

On peut identifier cet algorithme à une fonction affine :

 On peut chercher à savoir quel nombre a donné 0 par exemple. Il faut alors remonter
l’algorithme, on a alors :

On peut écrire alors le nouvel algorithme ci-contre La nouvelle fonction


affine définie est alors :

II.2.2. Conventions pour écrire un algorithme


Un algorithme doit être lisible de tous. Son intérêt, c’est d’être codé dans un langage
informatique afin qu’une machine (ordinateur, calculatrice, etc.) puisse l’exécuter rapidement
et efficacement.
Historiquement, plusieurs types de notations ont représenté des algorithmes.
• Il y a eu notamment une représentation graphique, avec des carrés, des losanges, etc. qu’on
appelait des organigrammes. Cependant dès que l’algorithme commence à grossir un peu, ce
n’est plus pratique.
• On utilise généralement une série de conventions appelée « pseudo-code », qui ressemble à
un langage de programmation authentique dont on aurait évacué la plupart des problèmes de

6
syntaxe. Ce pseudo-code est susceptible de varier légèrement d’un livre (ou d’un enseignant) à
un autre.
Les quatre phases d’un algorithme sont, dans l’ordre: la déclaration des variables, les entrées et
l’initialisation, le traitement, les sorties.

Exemple : Les deux algorithmes précédents peuvent s’écrire en pseudo-code comme ci-dessous

II.2.3. Types d’instructions


Les ordinateurs, ne sont capables de comprendre que quatre catégories d’instructions. Ces
quatre familles d’instructions sont :
- La lecture / l’affichage
- L’affectation de variables
- Les tests
- Les boucles
Un algorithmique exprime les instructions résolvant un problème donné indépendamment des
particularités de tel ou tel langage de programmation.
Pour écrire un algorithme sur un ordinateur, nous avons besoin d’un langage de programmation.
« Un langage de programmation est une convention pour donner des ordres à un ordinateur.

Exemple d’application N° 01 :
1- Bien comprendre le problème et, si le principe de l'algorithme n'est pas donné, trouver un
principe de résolution.
Méthode d'Euclide (~300 av. JC) : soient deux nombres entiers positifs A et B tels que A >= B.
Si le reste R de la division de A par B est 0, le PGCD de A et B est B. Sinon, le PGCD de A et
B est le PGCD de B et de R.

7
2- Si on ne comprend pas bien le principe, l'utiliser sur un exemple. Soit à calculer le PGCD
de 123 et 27.

3- Si besoin, réaliser un organigramme pour mieux comprendre.

4- Ecrire l'algorithme

Exemple d’application N° 02 :
Algorithme de la méthode de Dichotomie : sous l’hypothèse que la fonction f(c) soit
déterminable, voici une représentation de la méthode en pseudo-code.
Paramètres d’entrées : f, a, b, ε.
f fonction continue sur un intervalle I.
a et b deux réels de I tels que f(a)*f(b) < 0.
Ε tolérance de précision.
Paramètres de sorties : c, n.

8
c approximation en zéro de la fonction f
n nombre d’itérations nécessaires pour atteindre c.
1. a0 ← a, b0 ← b
2. c0 ← (a+b)/2
3. tant que (bn-an) > ε Faire
4. si f(an)*f(bn) > 0 alors
5. an+1 ← cn, bn+1 ← bn
6. cn+1 ← (cn + bn)/2
7. Sinon
8. an+1 ← an, bn+1 ← cn
9. cn+1 ← (cn + an)/2
10. Fin si
11. Fin tant que

Vous aimerez peut-être aussi