introdução programação em maple
DESCRIPTION
TRANSCRIPT
![Page 1: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/1.jpg)
PROGRAMAÇÃO EM MAPLE∗
Jeandson correa neves
I SEMANA DE MATEMÁTICA
![Page 2: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/2.jpg)
O que é programação?
A programação é a arte de fazer com que o computador faça exatamente o que desejamos que ele faça.
I SEMANA DE MATEMÁTICA
![Page 3: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/3.jpg)
Tipos de programação no Maple
Programação funcional;Programação através de procedimentos;Programação recursiva.
I SEMANA DE MATEMÁTICA
![Page 4: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/4.jpg)
Tópicos de programação
Todo procedimento no Maple tem basicamente a seguinte configuração:
I SEMANA DE MATEMÁTICA
> nome:=proc(...) local x1, x2, ............. , xn; global x1, x2, ........... , xn; .......................................... ..........................................> end;
![Page 5: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/5.jpg)
Todo procedimento deve iniciar com o comando proc(...) e finalizar com end.
Para se utilizar um procedimento é conveniente dar-lhe um nome, e isso é feito de maneira usual de atribuição de nomes no Maple.
I SEMANA DE MATEMÁTICA
![Page 6: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/6.jpg)
Exemplo
> metade:= proc(x)> evalf(x/2);> end;
> metade(1/2);
> metade (10);
I SEMANA DE MATEMÁTICA
![Page 7: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/7.jpg)
Exemplo
> val_e:= proc();> a:=exp(1);> evalf(a);End;Note que neste procedimento nenhuma
entrada de dados é necessária. Dentro de um procedimento os comandos devem terminar com ponto e vírgula.
I SEMANA DE MATEMÁTICA
![Page 8: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/8.jpg)
Variáveis local e global
>b:=2;
> val_e:=proc()
> local b;
> b:=exp(1);
> evalf(b);
>end;
I SEMANA DE MATEMÁTICA
>b:=2;
> val_e:proc();
> global b;
> b:=exp(1);
> evalf(b);
>end;
![Page 9: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/9.jpg)
Estruturas de programação
O sistema de programação do Maple inclui estruturas usuais de programação, tais como o “loops” e afirmações condicionais que podem ser utilizadas dentro ou fora de um procedimento.
I SEMANA DE MATEMÁTICA
![Page 10: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/10.jpg)
O comando “for”
A sintaxe geral no Maple para essa estrutura de programação, conhecida como “loop”, é a seguinte:
for i from a to b by c do ... Od; i- é variável do loop; a- valor inicial; b- valor final; c- é o salto que a variável sofre a cada loop; ...- expressões a serem executadas.
I SEMANA DE MATEMÁTICA
![Page 11: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/11.jpg)
Na estrutura deste comando algumas das clausulas em vermelho são opcionais. Se, por exemplo, omitimos o from ou o by eles serão automaticamente considerados como 1 pelo Maple.
I SEMANA DE MATEMÁTICA
![Page 12: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/12.jpg)
Exemplo
Calcula a soma dos 100 primeiros números naturais.
I SEMANA DE MATEMÁTICA
![Page 13: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/13.jpg)
Resolução
Vejamos como resolver esse loop:
>a:= o;
> for i from 1 to 100 do
> a:= a+i;
>od;
I SEMANA DE MATEMÁTICA
![Page 14: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/14.jpg)
Se tiverssemos feito:>a:=0;> for i from 2 to 100 by 2 do> a:= a +i;>od;
Teríamos como resultado a soma dos 50 primeiros números pares.
I SEMANA DE MATEMÁTICA
![Page 15: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/15.jpg)
Como dito anteriormente, podemos omitir certas clausulas do comando.
>a:=0;
> to 100 do
> a:=a+2;
>od;
I SEMANA DE MATEMÁTICA
![Page 16: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/16.jpg)
Problema
Faça um programa que dado um número n natural, calcula a soma dos n primeiros números.
I SEMANA DE MATEMÁTICA
![Page 17: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/17.jpg)
Resolução
>soma:=proc(n)
>local a;
>a:=0;
> for i from 1 to n do
> a:=a+i;
> od;
>end;
>soma(100);
>soma(20);
I SEMANA DE MATEMÁTICA
![Page 18: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/18.jpg)
Queremos calcular uma aproximação para a integral definida de 1 a 2 das seguintes funções.
]ln,,[ 32
xxeL x
I SEMANA DE MATEMÁTICA
![Page 19: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/19.jpg)
>L:=[exp(x^2),x^3,ln(x)];
>for i in L do
> evalf(Int(i,x=1..2));
>od;
I SEMANA DE MATEMÁTICA
![Page 20: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/20.jpg)
Comando “if”
A sintaxe geral para essa estrutura de programação no Malple, conhecida como condicional, é a seguinte:
if p then q else m fi p - expressão condicional; q e m – seqüência de comandos.
I SEMANA DE MATEMÁTICA
![Page 21: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/21.jpg)
Problema
Implementar um programa que calcule o valor absoluto de número real.
I SEMANA DE MATEMÁTICA
![Page 22: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/22.jpg)
Resolução
>modulo:=proc(x)
>if x >= 0 then
> x;
> else
> -x;
>fi;
>end;
>modulo(-3);
I SEMANA DE MATEMÁTICA
![Page 23: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/23.jpg)
Problema
Defina a seguinte função:
f(x)=
20
212
00
00
xse
xsex
xsex
xse
I SEMANA DE MATEMÁTICA
![Page 24: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/24.jpg)
Resolução
Através de procedimento, >f:=proc(x)>if x<=0 then 0 else> if x<=1then x else > if x<=2 then 2-x else> if x>2 then 0> fi;> fi;> fi>fi>end;
I SEMANA DE MATEMÁTICA
![Page 25: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/25.jpg)
Outra resolução
>f2:=proc(x)
> if x<=0 then 0
> elif x<=1 then x
> elif x<=2 then 2-x
> else 0
> fi;
End;
I SEMANA DE MATEMÁTICA
![Page 26: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/26.jpg)
O comando “while”
O comando while é outra estrutura de programação, na verdade é um tipo de loop. A sintaxe para o comando while é a seguinte:
while p do q od; p – expressão condicional; q – seqüência de comandos.
I SEMANA DE MATEMÁTICA
![Page 27: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/27.jpg)
Problema
Fazer um programa que divida sucessivamente um numero inteiro n por 2 (deixando resto zero) e exiba quantas divisões foram possíveis.
I SEMANA DE MATEMÁTICA
![Page 28: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/28.jpg)
Resolução
Para fazer esse programa usaremos os comandos iquo(a,b) e irem(a,b)que calculam o quociente e o resto, respectivamente, na divisão de a por b.
I SEMANA DE MATEMÁTICA
![Page 29: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/29.jpg)
Resolução
>ndiv2:=proc(n)>local q, i;>q:=n; i:=0>if irem(q,2)<>0 do>while irem(q,2)=0 do> q:=iquo(q,2);> i:=i+1;> od;>fi;>end;
I SEMANA DE MATEMÁTICA
![Page 30: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/30.jpg)
Controle de parâmetros
O controle de entrada é feito por a opção “::” colocada dentro do comando proc, devendo der colocado o tipo de variável desejada.
Por exemplo, poderíamos reescrever o programa anterior de outra forma:
I SEMANA DE MATEMÁTICA
![Page 31: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/31.jpg)
Solução
>ndiv2:=proc(n::integer)>local q, i;>q:=n; i:=0>if irem(q,2)<>0 do>while irem(q,2)=0 do> q:=iquo(q,2);> i:=i+1;> od;> fi;>end;
I SEMANA DE MATEMÁTICA
![Page 32: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/32.jpg)
Procedimentos recursivos
Procedimentos onde os valores calculados vão sendo reutilizados para o cálculo de novos valores. Um exemplo os números de Fibonacci:
10
,2
10
21
ff
onden
fff nnn
I SEMANA DE MATEMÁTICA
![Page 33: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/33.jpg)
Por exemplo, para n = 4 temos:
312
1101
4
3012
123
234
f
ffff
fff
fff
I SEMANA DE MATEMÁTICA
![Page 34: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/34.jpg)
Procedimento que calculapara todo natural>fibonacci:=proc(n::nonnegint)
> if n<2 then n
> else
> fibonacci(n-1)+fibonacci(n-2)
> fi;
>end;
>fibonacci(15), fibonacci(16)
nf
I SEMANA DE MATEMÁTICA
2n
![Page 35: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/35.jpg)
Observação I SEMANA DE MATEMÁTICA
Fiboncci(0)
Fibonacci(4)
Fibonacci(1)
Fibonacci(1) Fibonacci(2)Fibonacci(1)
Fibonacci(2)
Fibonacci(2)
Fibonacci(3)
Note que quando o n é grande o tempo de cálculo aumenta muito
![Page 36: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/36.jpg)
Uma forma de contornar esse problema é fazer com que o Maple memorize todos os cálculos feitos, atraves da função remenber.
I SEMANA DE MATEMÁTICA
![Page 37: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/37.jpg)
>fibonacci2:=proc(n::nonnegat)
>option remenber;
> if n<2 then n
> else
> fibonacci2(n-1)+fibonacci2(n-2)
> fi;
>end;
I SEMANA DE MATEMÁTICA
![Page 38: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/38.jpg)
Procedimento com lista
As estruturas de dados são listas de dados, como seqüências, listas e conjuntos.
Escrever um procedimento no qual dados os números, calcule sua média. 0,,....,, 21 nxxx n
n
iix
n 1
1
I SEMANA DE MATEMÁTICA
![Page 39: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/39.jpg)
Procedimento com lista
>media:=proc(x::list)
>local n, i, soma;
>n:=nops(x);
>Soma:=add(i,i=x);
>soma/n;
>end;
>media([2, 3, 1.5, 5.25 ,7 ])
I SEMANA DE MATEMÁTICA
![Page 40: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/40.jpg)
Procedimento com lista
Pode ocorrer um erro caso venhamos a colocar uma lista vazia, media([]). Para otimizar o procedimento podemos utlilizar o comando “ERROR” para especificar qual o tipo de erro.
I SEMANA DE MATEMÁTICA
![Page 41: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/41.jpg)
Procedimento com lista
>media2:=proc(x::list)>local n, i, soma;>n:=nops(x);If n=0 then>“ERROR”(“a lista não possui nenhum elemento”);
>Soma:=add(i,i=x);>soma/n;>end;
I SEMANA DE MATEMÁTICA
![Page 42: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/42.jpg)
Fim
Ah! ProgAMAR só se aprende programando... ☺
![Page 43: Introdução Programação Em Maple](https://reader034.vdocuments.net/reader034/viewer/2022042713/54938fe9ac7959042e8b48fc/html5/thumbnails/43.jpg)
REFERÊNCIAS
http://www.freenetpages.co.uk/hp/alan.gauld/port/tutwhat_por.htm
http://www.ime.usp.br/~rt/mmfina/apost2a.html http://maple.thiagorodrigo.com.br/index.php?
cat=guia&id=programacao http://www.dm.ufscar.br/disciplinas/grad/maplehtml/
basico11.html#Sum oᲩ
I SEMANA DE MATEMÁTICA