UNIJUÍ Universidade Regional do Noroeste do Estado do Rio Grande do Sul
DeFEM Departamento de Física, Estatística e Matemática
Apostila: Introdução ao Maple
Tânia Michel Pereira

16.Procedimentos

            Seguem algumas explicações gerais sobre os procedimentos:

Nos procedimentos, a primeira linha deve ter a seguinte forma:

> dAB:=proc( xa, ya, xb, yb )      # Primeira  Parte

onde  dAB é o nome do procedimento,  proc  é  comando  próprio do Maple. Entre parênteses  aparecem as  variáveis de entrada, no caso, xa, ya, xb, yb.

 A segunda e a terceira  linhas estão destinadas para a definição das variáveis que serão utilizadas no procedimento em local e/ou global (podem ser omitida)

>local  d, a, b;   ##  Segunda Parte -variável utilizada durante do procedimento

>global f;        ##  variável que continuará conhecida após a conclusão do procedimento

 

A partir da quarta  linha iniciam as instruções para  que o procedimento se destina.

>d:=((xa-xb)^2  + (ya-yb)^2  ) ^(1/2);   # Terceira Parte - definindo  a distância dAB

>a:=(xa-xb)/(ya-yb) ;  # calculando o coeficiente angular;

>b:= yb - a * xb ;

>f:=a*x+b;      print(y=f);      # definindo a equação de reta;

>with(plots): # abrindo o pacote gráfico

>plot(f,  x=-10..10) ; #  fazendo o gráfico  da reta;

 

   A última linha terá que ser:

>end;  ##   Quarta Parte -para indicar o fim do procedimento

 

Para executar  o procedimento   para os pontos A( 1,3)   e   B(0,6)  digita-se :

> dAB ( 1, 3, 0, 6 );                # utilizando o procedimento

 

Exemplos de procedimentos para o Maple   

Exemplo1

Procedimento envolvendo juros simples determinando  juros ou capital ou taxa, ou tempo

>juros:=proc(j, c,  i,  t)    # Nome do procedimento e variáveis de entrada

>solve( j=c*i*t/100 );      # Instruções          

>end:                            # Fim

 

#########  Para executar o procedimento com nome juros digita-se : #########

>juros(   j,  100,   2,   3);   ##    para obtenção do valor dos juros;

>juros(  6,     c ,   2,   3);   ##    para obtenção do valor do capital aplicado;

>juros(  6,  100,   i,    3);   ##    para obtenção da taxa;

>juros(  6,  100 ,  2,   t);    ##    para obtenção do tempo de aplicação

 

Exemplo 2

O procedimento a seguir  faz a tradução de alguns comandos do Maple para o português :

> traduz:= proc(  )            # O nome do procedimento é traduz.

>                                               # O vazio entre parênteses indica que não tem parâmetros de entrada

>alias( sen=sin  ,  tg = tan, grafico=plot, raiz=sqtr);     # instruções  do procedimento

>end:                                  # Indica fim do proc.

> ###########   para executar este procedimento digita-se

> traduz( );   #após a execução deste proc. é possível utilizar sen  em vez de sin , tg em vez de tan etc.#

>sen(45/180*Pi);   tg(Pi/4);        

 

Exemplo 3

O procedimento a seguir calcula qualquer um dos termos desconhecidos  do teorema de Pitágoras

>Pitagoras:=proc(a ,   b,   c)            # O nome do proc.  é Pitagoras  e os parâmetros de entrada  a, b e c

>solve( a^2 = b^2 + c^2 );                      # instruções  do procedimento

>end:                                    # Indica fim do proc.

>###  Para executar  este proc., deve-se fornecer os dados na ordem em que aparecem na primeira linha.

> Pitagoras(a , 4 , 3);  # Para calcular o  valor da hipotenusa se os catetos forem  4 e 3.

> Pitagoras( 10, b , 6);  # Para calcular o valor de  um dos catetos, se a=10 e c=6.

>Pitagoras(5,4, c);  # Para calcular o valor do cateto c , se a=5 e b=4.

 

Exemplo 4

O procedimento a seguir é uma forma de calcular as raízes reais ou  imaginárias de uma equação do segundo grau da forma  ,  com declaração de variáveis locais e globais.

>Baskara:=proc(a ,   b,   c)            # O nome do proc.  é pitagoras  e os parâmetros de entrada  a, b e c

>local x1;                  #  Declaração de variáveis locais – conhecidas somente durante a execução do proc.

>global  x2;               #  Declaração de variáveis globais – conhecidas também após a execução do proc.

>x1:=( -b + (b^2- 4*a*c)^(1/2) ) / ( 2*a) ;                     # instruções  do proc. : cálculo de x1

>x2:= (-b - (b^2-4*a*c)^(1/2) ) / ( 2*a) ;                      # instruções  do proc. : cálculo de x2

>print ( ` O valor de x1 é   ` ,   x1      , ` O valor de x2 é   ` ,  x2      ) ;  # imprimindo o resultado  

>end:                                    # Indica fim do proc.

>########  Para executar este procedimento se a=1, b=-5 e c=6  digita-se:

>Baskara( 1 ,  -5  ,  6  ) ;

 17 Comandos de repetição  

 Procedimento envolvendo  o preço de um produto desde uma unidade de referência até 10

> valor:=proc(pc)      # Parte 1  - Nome do procedimento valor, variável de entrada

>      local i;                                   # Parte 2 – Definição das variáveis

>      for   i   from  1 to 10  by   2  do        # Parte  3  -  

>                 print( i ,  `custam `,  i*pc);

>       od:

>end:

>valor( 1.40) ;   ##        para obter tabela cujo preço unitário é R$ 1,40.

 

 Tabela com valores de de x e y de uma  função

>tabela:=proc(li,dx,n)                              # Parte 1  - Nome do procedimento

 >local f, x, i ;                                    # Parte 2 – Definição das variáveis                            

>f:=x->evalf( sin( x/180*Pi),    6  ) ;      # Parte 3  - definindo a função f

>x:=li ;                                                   # Primeiro valor para x

>     for i to n  do                    # Parte  3  -   Para  i até  n   faça

>          print( x, f(x));             # Parte 3  - imprimindo na tela

>          x:= li +i* dx;          # Calculando o próximo x    

>     od;                             # Parte  3  - fim do   faça

>end:                                     # Parte 4  fim do  proc

 

Exemplo de proc. incluindo comandos de repetição para fazer uma tabela da função

>f:=x -> x ^2 –5*x + 6   ;       # Definindo a função f   fora do procedimento.

>Tabela:=proc(Li ,   Dx,   n )            # O nome do proc.  é Tabela e os parâmetros de entrada  li, dx e n.

>    local   i   , x , y ;    global   f ;       #  Declaração de variáveis locais e globais.

>   x:= Li;   i:=0;    #  Definindo y e o valores iniciais para x e i.

 >   print ( ` x       `,   y  ) ;             #  imprimindo a letra x e a função y  a  na tela.  

>    while    i    <    n    do                       #  Enquanto  i  < n   faça :

>         y:=f(x);      print( x,  y );        #  imprimindo os valores de  x de y  na tela.  

>          x:=x+Dx;                       #  atribuindo à  variável x o valor antigo de x  + Dx .  

>          i:=i+1 ; #  atribuindo à  i o valor antigo de i mais um .  

>    od;                                             #  indicando o fim do faça.  

>end:                                              #  indicando o fim do procedimento

># Para fazer a tabela , quando o limite inferior da tabela é –5,  variando x em 0,5 e para 20 linhas da tabela.

>Tabela(-5 ,  0.5  ,  20);

Exemplo de procedimento  envolvendo área e perímetro de    n   retângulos  de lados medindo de la   até   n x la, onde  n é um numero inteiro e la  um número real  qualquer.

>areaperi:=proc( n, la)                                               # Parte 1  - Nome do procedimento

     >local A, P, i, l;                                                    # Parte 2 – Definição das variáveis

    >print( ` lado,  Perímetro,  Área` );                         # Parte 3  - imprimindo na tela

    >for i to n  do                           # Parte  3  -   Para  i até  n   faça

             >l:=la*i;

             >A:=(l)^2;

             >P:=4*(l);

            >print( l,  P,  A);

    >od;

>end:

>areaperi(10,1);      areaperi(5,1);    areaperi(5,10); # executando o procedimento

Pode-se  salvar os procedimentos para  abrí-los quando convier.

 

            Através do “help, se pode aprofundar o estudo sobre o  aplicativo.

Faça  um estudo  utilizando   o “help”  conhecer  a sintaxe das estruturas de controle  for, while, if, else  utilizando comandos com a  seguinte notação:

> ?for;

>? while;

>? if;

 

 

Segue procedimento que serve para  determinar uma raiz  aproximada de uma função após encontrar um intervalo [a, b] que contém somente uma raiz real da função dada.

> newton:=proc(erro,a,b)

> local f,x,df2,df1,p1,p2,xn,i,c,y1,y2;

> with(plots):

> f:=x->evalf(x^3-3/2*x*x-9/4*x+135/40);  ## escreva aqui a equação

> df1:=D(f);

> df2:= D(D(f));

> xn:=a:

> i:=0;

>  if f(xn)*df2(xn)>0 then  xn:=a;else  xn:=b; fi:

>  c:=xn;

>  print(` Início:   x=`,xn,`f(x)=`,f(xn),`df2(x)=`,df2(xn), `f(x).df2(x)=`,df2(xn)*f(xn) );

> while abs( f(xn)) >erro do 

>      xn:=xn-f(xn)/df1(xn);

>      i:=i+1:

>       print(`x`,i,`=`,xn,`      f(xn)=`,f(xn)); 

>      od:

> print(`número de iteraçãos :`,i); 

> y1:=plot(df1(c)*(x-c)+f(c),x=a..b):

> y2:=plot(f(x),x=a..b):

> display({y1,y2});

> end:    # fim do procedimento

>## para executar o procedimento  digite: 

# >  newton( valor do erro, a, b); 

# onde  “a” e “b”   são os valores que correspondem aos  extremos  do intervalo onde

# há   somente uma raiz real da função dada.

> newton(0.001,  -2  ,0  );

 Obs. outros exemplos de procedimentos podem ser encontrados na apostila de Cálculo Numérico

Anterior    Próximo    Sumário     Sair