next up previous
suivant: Commandes de programmation classiques monter: Programmation précédent: Généralités

Scripts et fonctions

Les scripts sont des fichiers "texte" qui contiennent une suite d'instructions. Ces instructions peuvent être executées en écrivant le nom du fichier dans la ligne de commande. Il est important de noter que les matrices créées par l'exécution d'un script restent en mémoire.

Les fonctions sont également des fichiers "texte" que l'on nomme avec l'extension .m. Ces fichiers se présentent également comme une suite d'instructions. Mais cette suite d'instructions dépend de variables d'entrée qui ne sont spécifiées qu'au moment de l'exécution de la fonction. La fonction peut aussi produire des variables dites de sortie qui sont conservées en mémoire après l'exécution de la fonction. Mises à part les variables de sortie, aucune variable créée par la fonction n'est conservée après l'exécution de la fonction.

En outre, les variables conservées en mémoire ne peuvent être utilisées dans une fonction que si elles en sont des variables d'entrée ou si elles sont déclarées comme variables globales (ce dernier cas n'étant pas traité dans le cadre du cours).

Par ailleurs, une fonction ne modifie la valeur d'une variable utilisée en entrée que pendant le temps de son exécution. La variable d'entrée retrouve sa valeur initiale après l'exécution lors de la fonction.

Voici un exemple de fonction qui calcule les coordonnées d'un cercle de centre C et de rayon R.

function [X,Y] = cercle(C,R,P)
%fonction cercle
%auteur : Frédéric Richard
%date : 26/11/2012
%Cette fonction calcule les coordonnées des points d'un cercle de centre C et de rayon R
%avec un pas de discrétisation angulaire P
%
%utilisation typique : [x,y]=cercle([0,0],1,2*pi/100);
%
%variables d'entrée (input)
%C : centre et rayon du cercle (vecteur de taille 2)
%R : rayon du cercle (réel positif).
%P : pas de discrétisation angulaire (entre 0 et 2pi).
%variables de sortie (output)
%X,Y : abscisses et ordonnées des points du cercle
%

%tests de vérification des variables d'entrée :
if length(C)~=2, disp('le centre C du cercle doit être un vecteur de taille 2'); return; end
if R<=0, disp('le rayon R doit être positif'); return; end

if (nargin<3), 
   P=2*pi/1000;  %valeur par défaut de P
else
  if ((P<=0) | (P>=2*pi)), 
     disp('le pas P doit être compris entre 0 et 2*pi'); return; 
  end
end

%calcul des angles discrétisés
ang=0:P:2*pi;

%calcul des coordonnées des points
X=cos(ang)*R; Y=sin(ang)*R;

Cette fonction sera sauvegardée dans un fichier du nom de cercle.m. Après cette sauvegarde, elle pourra par exemple être appelée en tapant la ligne de commande

[x,y]=cercle([0,0],1,2*pi/100); %cercle de centre (0,0) et de rayon 1
plot([x,x(1)],[y,y(1)],'r-'); axis equal %visualisation

L'exemple précédent donne la syntaxe générale d'une fonction. Une fonction doit toujours commencer par l'entête

function [y1,y2,...,ym] = nom_fonction(x1,...,xn)
où les yi sont des noms de variables de sortie qui devront être créées par la fonction et les xi des noms de variables d'entrée.

Les commentaires qui suivent l'entête sont importants pour donner des informations sur la fonction :

Les lignes de commentaires après l'entête d'une fonction peuvent être consultées en tapant la commande
help(nom_fonction)

Les premières lignes de la fonction sont souvent dédiées à la vérification du format des variables d'entrée. Cette vérification permet d'éviter des bugs d'exécution et indique à l'utilisateur comment corriger une erreur d'entrée. Ces lignes peuvent également permettre de mettre des valeurs par défaut à des variables d'entrée qui auraient été omises. Dans l'exemple précédent, on peut exécuter la fonction en n'entrant que le centre du cercle et son rayon

[x,y]=cercle([0,0],1); %cercle de centre (0,0) et de rayon 1
P prendra une valeur par défaut grâce à l'instruction
if (nargin<3), P=2*pi/1000; end
La variable nargin indique automatiquement le nombre de variables d'entrée de la fonction lors de son exécution.

Lorsque le nom d'une fonction est tapée en ligne de commande, le fichier du même nom est cherché dans le répertoire courant. On peut connaître quel est le répertoire courant en tapant la commande linux pwd. On peut demander au logiciel d'aller chercher le fichier dans un autre répertoire en tapant la commande

addpath('emplacement_du_repertoire')


next up previous
suivant: Commandes de programmation classiques monter: Programmation précédent: Généralités
Frédéric Richard, Aix-Marseille Université, 2012-11-28