Você está na página 1de 21

index1.

html

Pgina 1 de 21

8
Programao Bsica (Basic
Programming)
Voc usou o Maple interativamente nos captulos anteriores, realizando seqencialmente operaes
como execuo de um nico comando. Como o Maple tem uma linguagem de programao
completa,
voc pode usar tambm sofisticadas construes de programao (programming constructs).
Importante: recomendado que se use o modo Planilha (Worksheet) e entrada em 1-D Math ao
programar ou usar comandos de programao. Portanto, todas as entradas neste captulo so em
1-D Math.

8.1 Neste Captulo

Seo
Tpicos
Controle de Fluxo - Construes Execuo Condicional
de programao bsica
( Declarao if ) Repetio
(Declarao for )
Comandos Iterativos Criando uma Seqncia
Comandos iterativos eficientes, Adicionando e Multiplicando
especializados
Expresses Selecionando
Operandos de Expresses
Mapeando um Comando sobre
um Conjunto ou uma Lista

Procedimentos - Programas
Maple

Mapeando um Comando
Binrio sobre Duas Listas ou
Vetores
Definio e Execuo de
Procedimentos Simples
Procedimentos com Entradas
(Inputs) Procedimentos de
Valores Devolvidos Exibio
de Definies de
Procedimentos Exibio da
Biblioteca Maple de Definies

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 2 de 21

de Procedimentos Mdulos

8.2 Controle de Fluxo


As duas contrues de programao bsica (programming constructs) no Maple so a declarao if,
que controla a execuo condicional de seqncias de declaraes e declarao for, que controla a
execuo repetida de uma seqncia de declaraes.

Execuo Condicional (Declarao if )


Voc pode especificar que o Maple realize uma ao somente se uma condio for mantida. Voc
pode tambm realizar uma ao, de um conjunto de muitas, dependendo de que condio manter.
Usando a declarao if , voc pode executar uma declarao de uma srie de declaraes com base
em uma condio booleana (true (verdadeiro), false(falso), ou FAIL (falha)). O Maple testa cada
condio na ordem. Quando uma condio satisfeita, o Maple executa a declarao
correspondentee ento sai da declarao if .
Syntax
A declarao if tem a seguinte sintaxe.> if conditional_expression1 then
statement_sequence1
elif conditional_expression2 then
statement_sequence2
elif conditional_expression3 then
statement_sequence3
...
else
statement_sequenceN
end if;

As expresses condicionais (conditional_expression1, conditional_expression2, ...) podem ser


qualquer expresso booleana. Voc pode construir expresses booleanas usando:

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 3 de 21

Operadores de relao - <, <=, =, >=, >, <>


Operadores lgicos - and, or, xor, implies, not
Nomes lgicos - true, false, FAIL
As seqncias de declaraes (statement_sequence1, statement_sequence2, ...,
statement_sequenceN) podem ser quaisquer declaraes do Maple, inclusive declaraes if .
As clusulas elif so opcionais. Voc pode especificar qualquer nmero de clusulas elif .
A clusula else opcional.
Simples Declaraes if
A declarao if mais simples tem somente uma expresso condicional.

>if conditional_expression then


statement_sequence
end if;

Se a expresso condicional avalia true (verdadeiro), a seqncia de declarao executada. Caso


contrrio, o Maple sai imediatamnete da declarao if.
Por exemplo:

>

>

Clusula else
Em uma declarao if simples com a clusula else, se a avaliao das expresses condicionais
devolve
false ou FAIL, o Maple executa a declarao na clusula else.
Por exemplo:

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 4 de 21

>

Clusula elif
Em uma declarao if com clusulas elif , o Maple avalia as expresses condicionais na ordem at
que
uma delas devolva true. O Maple executa a seqncia de declarao e depois sai da declarao if.
Se nenhuma das avaliaes devolve true, o Maple sai da declarao if.>

>

11 is a integer with more than one digit.

11 is an integer with more than one digit.

Ordem das Clusulas elif - Uma seqncia de declarao de clusula elif executada somente se
a avaliao de todas as expresses condicionais anteriores devolve false ou FAIL e a avaliao da
sua expresso condicional devolve true. Isto significa que a troca da ordem das clsulas elif pode
mudar o comportamento da declarao if.
Na seguinte declarao if , as clusulas elif esto na ordem errada.

>

>

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 5 de 21

11 is an integer with one digit.

11 is an integer with one digit.

Clusulas elif e else


Em uma declarao if com clusulas elif e else, o Maple avalia as expresses condicionais na ordem
at que uma devolva true. O Maple executa a seqncia de declarao correspodente e sai da
declarao if . Se nenhuma devolve true, o Maple executa a seqncia de declarao na clusula
else.
>

>

-12 is a negative integer.

-12 is a negative integer.


Para maiores informaes sobre a declarao if , consulte a pgina de ajuda ?if .

Repetio (para Declarao)


Usando declaraes de repetio, voc pode executar repetidamente uma seqncia de declarao.
Voc pode repetir as declaraes de trs maneiras.
At que um valor da varivel contadora (counter) exceda um limite (loop for/from)

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 6 de 21

Para cada operando de uma expresso (loop for/in )


At que uma condio booleana no seja verdadeira (loop while)
Loop for/from
A declarao loop for/from repete uma declarao at que um valor da varivel contador (counter)
exceda um limite.
SintaxeO loop for/from tem a seguinte sintaxe.

>for couter from initial by increment to final do


statement_sequence
end do:

O comportamento do loop for/from :


1. Atribuir um valor inicial ao nome contador (counter)
2. Comparar o valor do counter ao valor do final. Se o valor de counter excede ao valor final, sair
do loop. (Este o teste limite do loop.)
3. Executar o statement_sequence.
4. Incrementar o valor de counter pelo valor do incremento.
5. Repetir os passos 2 at 4, at o Maple sair do loop.
As clusulas from, by e to so opcionais e podem estar em qualquer ordem entre a clusula for e a
palavra-chave do.

Tabela 8.1: Valores Padro de Clusulas

Clusula
from inicial
by incremento
to final

Valores Padro
1
1
infinity ()

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 7 de 21

Exemplos
O loop seguinte devolve a raiz quadrada de inteiros de 1 at 5 (inclusive).
>

Quando o valor da varivel contador n justamente maior que 5, O Maple sai do loop.
>

O loop anterior equivalente seguinte declarao for/from.


>

O valor by pode ser negativo. O loop repete at que o valor da varivel contador seja justamente
menor que o valor final.

>

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 8 de 21

>

for/in Loop
A declarao loop for/in repete uma seqncia de declaraes para cada componente (operando) de
uma expresso, por exemplo, os elementos de uma lista.
Sintaxe
O loop for/in tem a seguinte sintaxe.
>for variable in expression do
statement_sequence
end do;

A clusula for deve aparecer primeiro.


O comportamento do loop for/in :
1. Atribuir ao nome da varivel o primeiro operando da expresso

2. Executar a statement_sequence.
3. Atribuir o operando seguinte varivel.
4. Repetir os passos 2 e 3 para cada operando na expresso. Se no houver mais operandos, sair do
loop. ( Este o teste limite do loop)
Exemplo
O loop seguinte devolve uma aproximao com ponto-flutuante para a funo seno (sin) nos

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 9 de 21

ngulos
( medidos em graus) na lista L.
>

>

Loop while
O loop while repete uma seqncia de declaraes at que uma expresso booleana no seja
mantida.

Sintaxe
O loop while tem a seguinte sintaxe.
>while condicional_expression do
statement_sequence
end do;

O loop while repete-se at que sua expresso booleana conditional_expression avalie false ou
FAIL.Para mais informaes sobre expresses booleanas, veja Execuo Condicional (Declarao
if)
(Conditional Execution (if Statement)) (pg. 289).
Exemplo

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 10 de 21

O loop seguinte computa os dgitos de 872349 na base 7 (na ordem de aumento de significncia).
>

>

Para realizar tais converses eficientemente, use o comando convert/base.


>

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 11 de 21

Para informaes sobre bases no-decimais, veja Nmeros em Bases No-Decimais (pg. 62).
Declaraes Gerais de Loop (General Loop Statements)
Voc pode incluir uma declarao while em um loop for/from ou for/in.
O loop geral for/from tem a seguinte sintaxe.
>For counter from initial by increment to final
while conditional_expression do
statement_sequence
end do;

O loop geral for/in tem a seguinte sintaxe.

>for variable in expression


while conditional_expression do
statement_sequence
end do;

Depois de testar a condio limite do loop no incio de cada iterao do loop for loop, o Maple
avaliaa conditional_expression.
Se a conditional_expression avalia false ou FAIL, o Maple deixa o loop.
Se a expresso condicional (conditional_expression) avalia true, o Maple executa a seqncia de
declarao (statement_sequence).

Loop Infinito
Voc pode construir um loop para o qual no exista a condio para deix-lo, por exemplo, um
loopwhile em que a expresso condicional avalie sempre true. Este chamado de loop infinito. O
Maple executa indefinidamente, a menos que ele execute uma declarao break, quit ou return ou
que voc interrompa a computao. Para mais informaes, consulte as pginas de ajuda para ?
break, ?quit,
?return e ?interrupt .

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 12 de 21

Informao Adicional

Para mais informaes sobre a declarao for e looping, consulte a pgina de ajuda ?do.

8.3 Comandos Iterativos


O Maple tem comandos que ralizam operaes de repetio e de seleo comum. Estes comandos
so mais eficientes que algoritmos similares implementados usando a biblioteca de comandos. A
Tabela
8.2 lista os comandos iterativos.

Tabela 8.2: Comandos Iterativos


Comando
seq
add
mul
select
remove
selectremove

map
zip

Descrio
Criar seqncia
Computar soma numrica
Computar produto numrico
Devolver operandos que satisfazem uma
condio
Devolver operandos que no satizfazem uma
condio
Devolver operandos que satisfazem uma
condio e separadamente devolvem
operandos que no satisfazem uma condio
Aplicar comandos aos operandos de uma
expresso
Aplicar comando binrio aos operandos de
duas listas ou vetores

Criando uma Seqncia


O comando seq cria uma seqncia de valores pela avaliao de uma expresso especfica sobre um
intervalo de valores de ndices ou dos operandos de uma expresso. Veja a tabela 8.3.

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 13 de 21

Tabela 8.3: O Comando seq


Sintaxe de Chamada de
Seqncia
seq(expresso, nome =
inicial .. final);

seq(expresso, nome in
expresso);

Exemplos
>

>

Adio e Multiplicao de Expresses


Os comandos add e mul adicionam e multiplicam seqncias de expresses sobre um intervalo de
valores de ndices ou os operandos de uma expresso. Veja a tabela 8.4.

Tabela 8.4: Os Comandos add e mul


Sintaxe de Chamada de
Exemplos
Seqncia
>
add(expresso, nome =
inicial .. final);mul
(expresso, nome = inicial ..
final);

>

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 14 de 21

add(expresso, nome in (na) >


expresso);mul(expression,
nome in (na) expresso);

>

Os pontos limites do intervalo dos ndices (initial e final) na chamada de seqncia add e mul
devem avaliar constantes numricas. Para informaes sobre somas e produtos simblicos, consulte
as pginas
de ajuda ?sum e ?product.
Seleo de Operandos de Expresso
Os comandos select, remove e selectremove aplicam um procedimento de avaliao booleana
ou um comando para os operandos de uma expresso. Para informaes sobre operandos, consulte a
pgina de ajuda ?op.
O comando select devolve os operandos para os quais o procedimento ou o comando devolve
true.
O comando remove devolve os operandos para os quais o procedimento ou o comando devolve
false.
O comando selectremove devolve duas expresses do mesmo tipo da expresso de entrada.
- A primeira consiste em operandos para os quais o procedimento ou o comando devolve true.
- A segunda consiste em operandos para os quais o procedimento ou o comando devolve false ou
FAIL.
Veja a tabela 8.5.
Para informaes sobre procedimentos Maple, veja Procedimentos (pg. 301).
Tabela 8.5: Os Comandos select, remove e selectremove

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 15 de 21

Sintaxe de Chamada de Exemplos


Seqncia
>
select(proc_cmd,
expression);

remove(proc_cmd,
expression);

>

selectremove(proc_cmd, >
expression);

Para informaes sobre argumentos opcionais para os comandos de seleo, consulte a pgina de
ajuda
?select.

Mapeando um Comando sobre um Conjunto ou uma Lista


O comando map aplica um nome, procedimento ou comando a cada elemento de um conjunto ou
lista.
Veja a tabela 8.6.

Tabela 8.6: O Comando map


Sintaxe de Chamada de
Seqncia
map(name_proc_cmd,

Exemplos
>

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 16 de 21

expression);

>

Para informaes sobre mapear os operandos de outras expresses, argumentos opcionais para o
comando map e outros comandos para mapear, consulte a pgina de ajuda ?map.

Mapeando um Comando Binrio sobre Duas Listas ou Vetores

O comando zip aplica um nome ou procedimento binrio ou comando component-wise a duas listas
ou vetores.
Por padro, o comprimento do objeto devolvido aquele da menor lista ou vetor. Se voc especificar
um valor como quarto argumento (opcional), ele usado como o valor dos elementos que faltam
na menor lista ou vetor. Neste caso, o comprimento do valor devolvido aquele da maior lista ou
vetor.Veja a tabela 8.7.

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 17 de 21

Tabela 8.7: O Comando zip


Sintaxe de Chamada de
Seqncia
zip(proc_cmd, a, b);zip
(proc_cmd, a, b, fill);

Exemplos
>

>

Para mais informaes sobre o comando zip, consulte a pgina de ajuda ?zip.

Informao Adicional
Para mais informaes sobre comandos looping , consulte a pgina de ajuda do comando
correspondente.

8.4 Procedimentos
Um procedimento do Maple um programa que consiste em declaraes do Maple. Usando
procedimentos,
voc pode executar rapidamente a seqncia de declaraes contidas.

Definindo e Executando Procedimentos Simples


Para definir um procedimento, colocar uma seqncia de declaraes entre as declaraes proc(...)
e end proc. Em geral, voc atribui um nome a uma definio de procedimento.
O seguinte procedimento devolve a raiz quadrada de 2.
>

Note: O Maple devolve a definio de procedimento.

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 18 de 21

Para melhorar a legibilidade dos procedimentos, recomendado definir um procedimento usando


mltiplas linhas e recuar as linhas usando caracteres de espaamento. Para comear uma nova linha
(sem avaliar a definio incompleta do procedimento), pressione Shift+Enter. Quando
voc tiver terminado com a entrada do procedimento, pressione Enter para criar o procedimento.Por
exemplo:

>

Para executar o procedimento p, entre com seu nome seguido de parnteses (( )).
>

Procedimentos com Entradas (Inputs)


Voc pode definir um procedimento que aceita usar entradas (input). Nos parnteses da declarao
proc, especificar os nomes dos parmetros. Para mltiplos parmetros, separe os nomes por vrgulas.

>

Quando o usurio executa o procedimento, os nomes dos parmetros so substitudos pelos valores
dos argumentos.
>

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 19 de 21

>

Para mais informaes sobre escrever procedimentos, incluindo opes e variveis locais e globais,
consulte a pgina de ajuda ?procedure.

Valores Devolvidos do Procedimento


Quando voc executa um procedimento, o Maple devolve somente o valor computado pelo
resultado
da ltima declarao. O Maple no devolve a sada de cada declarao no procedimento. E
irrelevantevoc usar ponto e vrgula ou dois pontos como separadores de declaraes.
>

>

Exibindo Definies de Procedimentos


Ao contrrio de objetos simples do Maple, voc no pode exibir o valor de um procedimento
entrando
com seu nome .
>

Voc deve avaliar o nome do procedimento usando o comando print (ou eval).

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 20 de 21

>

Exibindo a Biblioteca de Definies de Procedimentos do Maple


As definies de procedimento do Maple so uma valiosa ferramenta de aprendizado. Para aprender
como programar no Maple, recomendado que voc examine os procedimentos disponveis na
biblioteca Maple.
Por padro, o comando print devolve somente as declaraes proc e end proc e (se estiver
presente)
os campos de descrio de um procedimento do Maple.
>

Para exibir a biblioteca Maple de definio de procedimento, primeiro determine o valor da


interface verboseproc opo 2. Depois, reexecute a chamada de seqncia print.
Veja a figura 8.1.
>

>

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

index1.html

Pgina 21 de 21

Figura 8.1: Exibio do Procedimento assign

Mdulos
Os procedimentos do Maple associam uma seqncia de comandos a um nico comando. O mdulo,
uma estrutura de programao mais complexa, permite a voc associar procedimentos relacionados
e dados.
Uma funcionalidade chave dos mdulos que eles exportam variveis. Isto significa que as
variveis
esto disponveis fora do mdulo em que foram criadas. A maioria dos pacotes do Maple so
implementados como mdulos. Os comandos do pacote so exportaes do mdulo.
Para mais informaes sobre mdulos, consulte a pgina de ajuda ?module.

file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M... 30/7/2009

Você também pode gostar