Vous êtes sur la page 1sur 26

Module : MATLAB

Scripts et fonctions
Instructions de contrle
Introduction
Il est possible d'enregistrer une squence
d'instructions dans un fichier (appel un M-
file ) et de les faire excuter par MATLAB. Un
tel fichier doit obligatoirement avoir une
extension de la forme .m (d'o le nom M-file)
pour tre considr par MATLAB comme un
fichier d'instructions. On distingue 2 types de
M-file, les fichiers de scripts et les fichiers de
fonctions.
Un script est un ensemble d'instructions MATLAB
qui joue le rle de programme principal. Si le script
est crit dans le fichier de nom nom.m on l'excute
dans la fentre MATLAB en tapant nom. Mme si
l'on ne souhaite pas proprement parler crire de
programme, utiliser un script est trs utile. Il est en
effet beaucoup plus simple de modifier des
instructions dans un fichier l'aide d'un diteur de
texte que de retaper un ensemble d'instructions
MATLAB dans la fentre de commande.
Les fichiers de fonctions ont deux rles. Ils
permettent l'utilisateur de dfinir des
fonctions qui ne figurent pas parmi les
fonctions incorpores de MATLAB (<< built-in
functions >>) et de les utiliser de la mme
manire que ces dernires (ces fonctions sont
nommes fonctions utilisateur).
On dfinit la fonction fonc de la manire
suivante:
function [vars1, ..., varsm] = fonc(var_1, ...,
varn)
squence d'instructions
o
vars1, ..., varsm sont les variables de sortie
de la fonction;
var1, ..., varn sont les variables d'entre de
la fonction;
squence d'instructions est le corps de la
fonction.
Le fichier doit imprativement commencer par le
mot-cl function. Suit entre crochets les variables
de sortie de la fonction, le symbole =, le nom de la
fonction et enfin les variables d'entre entre
parenthses. Si la fonction ne possde qu'une
seule variable de sortie, les crochets sont inutiles.
Il est impratif que la fonction ayant pour nom
fonc soit enregistre dans un fichier de nom
fonc.m sans quoi cette fonction ne sera pas <<
visible >> par MATLAB.
function [r,q] = modulo(a,n)

% Calcule la valeur de a modulo n en prenant pour systeme


de residus 1, ... , n % au lieu de 0, ... , n-1.
% appel : [r,q] = modulo(a,n)
% Arguments de sortie :
% r : le residu
% q : le quotient

q = floor(a./n);
r = a - n*q;

% si le reste de la division entire vaut 0, le residu vaut par


convention n
if r == 0, r = n; end
>> b = 10 ; m = 4;

>> [r,q] = modulo(b,m)

r=

q=

>> modulo(10,5)

ans =

>>
Il n'y a pas de mot-cl (par exemple end) pour indiquer la

fin de la fonction. La fonction est suppose se terminer la


fin du fichier. Il est toutefois possible de provoquer un
retour au programme appelant dans le corps de la fonction
grce la commande return.
On ne peut crire qu'une seule fonction par fichier (qui doit

porter le nom de cette fonction). Toutefois dans la version 5


de MATLAB existe la notion de << sous-fonction >>. Une
sous-fonction est une fonction crite dans le mme fichier
qu'une autre fonction (dite principale) et qui ne sera
utilisable que par cette fonction principale (une sous-
fonction ne peut pas tre appele par un autre sous-
programme que la fonction principale).
Si le fichier ne commence pas par le mot-cl function on a
Oprateurs de comparaison et oprateurs logiques
Les oprateurs de comparaison sont:

== : gal (x == y)

> : strictement plus grand que (x > y)

< : strictement plus petit que (x < y)

>= : plus grand ou gal (x >= y)

<= : plus petit ou gal (x <= y)

~ = : diffrent de (x ~ = y)
Les oprateurs logiques sont:

& : et (x & y)

| : ou (x | y)
~ : non (~ x)
Instructions de contrle

Les instructions de contrle sous

MATLAB sont trs proches de celles

existant dans d'autres langages de

programmation.
Boucle FOR : parcours d'un intervalle
Une premire possibilit pour excuter une squence
d'instructions de manire rpte consiste effectuer une
boucle pour les valeurs d'un indice, incrment chaque
itration, variant entre deux bornes donnes. Ce processus
est mis en uvre par la boucle for. Syntaxe :

For indice=borne_inf:borne_sup
squence d'instructions
End
o
indice est une variable appele l'indice de la boucle;
borne_inf etborne_sup sont deux constantes relles
(appeles paramtres de la boucle);
squence d'instructions est le traitement effectuer pour
les valeurs d'indices variant entre borne_inf et borne_sup
avec un incrment de 1. On parle du corps de la boucle.
Interprtation :
Si borne_inf est plus petit ou gal
borne_sup, le traitement squence
d'instructions est excut borne_sup -
borne_inf fois, pour les valeurs de la
variable indice gales borne_inf,
borne_inf+1, ..., borne_sup. Si borne_inf
est strictement plus grand que borne_sup,
on passe l'instruction qui suit
immdiatement l'instruction de fin de
Voici un exemple d'utilisation d'une boucle pour
calculer n! >> n = 4;
>> nfac = 1;
>> for k = 1:n
nfac = nfac*k;
end
>> nfac
nfac =
24
>>
Boucle WHILE : tant que . . . faire
Une seconde possibilit pour excuter une
squence d'instructions de manire rpte
consiste effectuer une boucle tant qu'une
condition reste vrifie. On arrte de boucler ds
que cette condition n'est plus satisfaite. Ce
processus est mis en uvre par la boucle while.
Syntaxe :
while expression logique
squence d'instructions
end
o
expression logique est une expression dont le
rsultat peut tre vrai ou faux;
squence d'instructions est le traitement
Interprtation :

Tant que expression logique est vraie le

traitement squence d'instructions est

excut sous forme d'une boucle. Lorsque

expression logique devient faux, on passe

l'instruction qui suit immdiatement

l'instruction de fin de boucle (end).


Voici comment calculer n! avec une boucle
while:
>> n = 4;
>> k = 1; nfac = 1;
>> while k <= n
nfac = nfac*k;
k = k+1;
end
>> nfac
nfac =
24
>>
L'instruction conditionne IF
On a parfois besoin d'excuter une squence
d'instructions seulement dans le cas o une condition
donne est vrifie au pralable. Diffrentes formes
d'instruction conditionne existent sous MATLAB.
L'instruction conditionne la plus simple a la forme
suivante:
Syntaxe :
If expression logique
squence d'instructions
end
o :
expression logique est une expression dont le rsultat peut
tre vrai ou faux;
squence d'instructions est le traitement effectuer si
expression logique est vraie.
Interprtation:
La squence d'instructions n'est excute
que si le rsultat de l'valuation de
l'expression logique est vraie (c'est--dire
vaut 1). Dans le cas contraire on excute
l'instruction qui suit le mot cl end. Dans
le cas o l'expression logique est vraie,
aprs excution de la squence
d'instructions on reprend le programme
l'instruction qui suit le mot cl end.
Il existe une squence conditionne sous forme
d'alternatives:
Syntaxe :
if expression logique
squence d'instructions 1
else
squence d'instructions 2
end
o
expression logique est une expression dont le
rsultat peut tre vrai ou faux;
squence d'instructions 1 est la squence
d'instructions excuter dans le cas o
expression logique est vraie et
squence d'instructions 2 est la squence
d'instructions excuter dans le cas o
expression logique est faux.
Interprtation :
Si expression logique est vraie la
squence d'instructions 1 est excute,
sinon c'est la squence d'instructions 2
qui est excute. Le droulement du
programme reprend ensuite la premire
instruction suivant le mot cl end.

Il est possible d'effectuer un choix en cascade:
Syntaxe :
if expression logique 1
squence d'instructions 1
elseif expression logique 2
squence d'instructions 2
...
elseif expression logique N
squence d'instructions N
else
squence d'instructions par dfaut
end
Interprtation :
Si expression logique 1 est vraie la squence
d'instructions 1 est excute et le programme
reprend ensuite la premire instruction suivant
le mot cl end, sinon si expression logique 2 est
vraie la squence d'instructions 2 est excute et
le programme reprend ensuite la premire
instruction suivant le mot cl end, etc. Si aucune
des expressions logiques 1 N n'est vraie alors
squence d'instructions par dfaut est excute.
Une alternative l'utilisation d'une squence d'instructions
conditionnes pour effectuer un choix en cascade existe. Il s'agit
de l'instruction switch.
Syntaxe :
switch var
case cst1,
squence d'instructions 1
case cst2,
squence d'instructions 2
...
case cstN,
squence d'instructions N
otherwise
squence d'instructions par dfaut
end o
var est une variable numrique ou une variable chane de
caractres;
cst1, ..., cstN, sont des constantes numrique ou des constantes
chane de caractres;
squence d'instructions i est la squence d'instructions excuter
si le contenu de la variable var est gal la constante cst i
Interprtation :
Si la variable var est gale l'une des constantes
cst1, ..., cstN, (par exemple csti) alors la squence
d'instructions correspondante (ici squence
d'instructions i) est excute. Le programme
reprend ensuite la premire instruction suivant
le mot-cl end. Si la variable var n'est gale
aucune des constantes la squence d'instructions
par dfaut est excute.
Interruption d'une boucle de contrle

Il est possible de provoquer une sortie


prmature d'une boucle de contrle.
L'instruction break permet de sortir d'une
boucle for ou d'une boucle while.
L'excution se poursuit alors
squentiellement partir de l'instruction
suivant le mot cl end fermant la boucle.

Vous aimerez peut-être aussi