Cours Maple S4

4
PROCÉDURES Définition Définition Une procédure est un programme pouvant prendre un nombre i bl d’ t ( f ti ) i àé i variable d’arguments (comme une fonction), sans avoir à écrire systématiquement le programme. Autrement dit, une procédure est un enchaînement d'instructions permettant de calculer un résultat en fonction d'une suite d'arguments. Ell l t ( t ) t i Elle commence par le mot cproc(arguments), se termine par end proc (ou end) et on lui affecte généralement un nom. Construisons une procédure simple G, pour définir 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) ;

description

Part2

Transcript of Cours Maple S4

  • PROCDURESDfinitionDfinition

    Une procdure est un programme pouvant prendre un nombre i bl d t ( f ti ) i ivariable 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 psuite 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 < 0G(x) = cos(x) si x 0> restart;

    > g(x):= piecewise(x=0 cos(x)); 'g(x)' =g(x) ;> g(x): piecewise(x 0, cos(x)); g(x) g(x) ;

    > G:=proc(x)if lf( ) 0 th 1if evalf(x)

  • > 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 orfalse: x < 0false: 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 valuationLa 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 xif x y then xelse yfi:

    end proc:> f:=proc( ) local k,s;

    s:=0;s:=0;for k from 1 to 6 do

    s:=s+k2 :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+k2 : od :

    end proc:end proc:> f( );

    > restart;> f:=proc( ) local k,s;

    s:=0;for k from 1 to 6 do

    s:=s+k2 :s:=s+k2 : 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+k2 : 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 programmeend 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 auxprocdure 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) ;