43
PROGRAMAÇÃO EM MAPLEJeandson correa neves I SEMANA DE MATEMÁTICA

Introdução Programação Em Maple

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Introdução Programação Em Maple

PROGRAMAÇÃO EM MAPLE∗

Jeandson correa neves

I SEMANA DE MATEMÁTICA

Page 2: Introdução Programação Em Maple

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

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

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

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

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

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

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

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

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

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

Exemplo

Calcula a soma dos 100 primeiros números naturais.

I SEMANA DE MATEMÁTICA

Page 13: Introdução Programação Em Maple

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

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

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

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

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

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

>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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>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

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

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

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

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

Fim

 Ah! ProgAMAR só se aprende programando... ☺

Page 43: Introdução Programação Em Maple

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