Sunteți pe pagina 1din 4

PROCDURES

Dfinition Dfinition
Une procdure est un programme pouvant prendre un nombre
i bl d t ( f ti ) i i variable darguments (comme une fonction), sans avoir crire
systmatiquement le programme.
Autrement dit, une procdure est un enchanement
d'instructions permettant de calculer un rsultat en fonction d'une p
suite d'arguments.
Ell l t l ( t ) t i Elle commence par le mot cl proc(arguments), se termine par
end proc (ou end) et on lui affecte gnralement un nom.
Construisons une procdure simple G, pour dfinir une fonction
telle que:
G(x) = 1 si x < 0
G(x) = cos(x) si x 0
> restart;
> g(x):= piecewise(x<0 1 x>=0 cos(x)); 'g(x)' =g(x) ; > g(x): piecewise(x<0, 1, x> 0, cos(x)); g(x) g(x) ;
> G:=proc(x)
if lf( ) 0 th 1 if evalf(x)<0 then 1
else cos(x)
end if end if
end proc;
'G(-1)' = G(-1) ; ( ) ( )
'G(0)' = G(0) ;
'G(Pi/4)' = G(Pi/4) ;
> plot([ G(x) g(x)] x = 2*Pi 2*Pi style = [point line]) ; > plot([ G(x),g(x)], x =-2*Pi..2*Pi, style = [point, line]) ;
Error, (in G) cannot determine if this expression is true or
false: x < 0 false: x 0
> with (plots) :
p1:= plot (G, -2*Pi..2*Pi, style = point, color = green) ;
p2:= plot (g(x), x =-2*Pi..2*Pi, style = line, color = red) ;
plots[display]([ p1 p2]); plots[display]([ p1, p2]);
d'autres exemples
> x:=1: y:=2: if x>y then Max:=x else Max:=y: fi: Max; > x: 1: y: 2: if x>y then Max: x else Max: y: fi: Max;
Rgle de dernire valuation
La valeur renvoye par une procdure est le rsultat du
dernier calcul excut au sein du corps de programme.
> Max(4 8); max(4 8) ; > Max(4,8); max(4,8) ;
> Max:= proc(x, y)
if x>y then x if x y then x
else y
fi:
end proc:
> f:=proc( ) local k,s;
s:=0; s:=0;
for k from 1 to 6 do
s:=s+k
2
: s: s k :
od :
end proc:
> restart;
> f:=proc( ) local k s; > f: proc( ) local k,s;
s:=0;
for k from 1 to 6 do
s:=s+k
2
:
od :
end proc: end proc:
> f( );
> restart;
> f:=proc( ) local k,s;
s:=0;
for k from 1 to 6 do
s:=s+k
2
: s:=s+k
2
:
od :
end proc: end proc:
s:=5; f( ); s;
> restart;
>g:=proc( ) local k; global s; >g: proc( ) local k; global s;
s:=0;
for k from 1 to 6 do
s:=s+k
2
:
od :
end proc: end proc:
s:=5; g( ); s;
Ecriture d'une procdure
nom :=proc ( a1 , . . . , an ) (les ai sont des paramtres)
local 1 , . . . , m; global g1 , . . . , gr;
Corps du programme
end proc:
Procdures rcursives
Il est toujours possible de programmer une procdure qui
sappelle lui mme au cours de son excution. Ce type de
procdure sappelle procdure rcursive et est adapt aux procdure s appelle procdure rcursive et est adapt aux
objets mathmatiques dfinis par rcurrence.
Il permet d'arrter la procdure pendant son droulement et de
renvoyer un rsultat avec l'instruction return dont la syntaxe est
dfini par la commande RETURN (forant la valeur de sortie de la
procdure).
Cette instruction est en gnral associe une condition
dfinie par un bloc if ou un bloc try. p y
Il peut bien sr y avoir plusieurs instructions return dans une
procdure.
>n!;
> fact := proc(n) > fact : proc(n)
if n = 0 then RETURN(1)
else RETURN(n*fact(n-1))
fi
end proc:
> fact (20000) ; > fact (20000) ;

S-ar putea să vă placă și