capítulo 8
Post on 06-Sep-2015
215 Views
Preview:
DESCRIPTION
TRANSCRIPT
-
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 de programao bsica
Execuo Condicional ( Declarao if ) Repetio (Declarao for )
Comandos Iterativos - Comandos iterativos eficientes, especializados
Criando uma Seqncia Adicionando e Multiplicando Expresses Selecionando Operandos de Expresses Mapeando um Comando sobre um Conjunto ou uma Lista
Mapeando um Comando Binrio sobre Duas Listas ou Vetores
Procedimentos - Programas Maple
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
Pgina 1 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
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:
de Procedimentos Mdulos
Pgina 2 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
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:
Pgina 3 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
>
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 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.
>
>
11 is a integer with more than one digit.
Pgina 4 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
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.
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)
11 is an integer with one digit.
-12 is a negative integer.
Pgina 5 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
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 Valores Padro from inicial 1 by incremento 1 to final infinity ()
Pgina 6 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
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.
>
Pgina 7 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
>
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
Pgina 8 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
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
Pgina 9 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
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.
>
Pgina 10 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
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 .
Pgina 11 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
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
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.
Comando Descrio seq Criar seqncia add Computar soma numrica mul Computar produto numrico select Devolver operandos que satisfazem uma
condio remove Devolver operandos que no satizfazem uma
condio selectremove Devolver operandos que satisfazem uma
condio e separadamente devolvem operandos que no satisfazem uma condio
map Aplicar comandos aos operandos de uma expresso
zip Aplicar comando binrio aos operandos de duas listas ou vetores
Pgina 12 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
Tabela 8.3: O Comando seq
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 Seqncia
Exemplos
seq(expresso, nome = inicial .. final);
>
seq(expresso, nome in expresso);
>
Sintaxe de Chamada de Seqncia
Exemplos
add(expresso, nome = inicial .. final);mul(expresso, nome = inicial .. final);
>
>
Pgina 13 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
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
add(expresso, nome in (na) expresso);mul(expression, nome in (na) expresso);
>
>
Pgina 14 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
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
Exemplos
select(proc_cmd, expression);
>
remove(proc_cmd, expression);
>
selectremove(proc_cmd, expression);
>
Sintaxe de Chamada de Seqncia
Exemplos
map(name_proc_cmd, >
Pgina 15 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
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.
expression);
>
Pgina 16 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
Tabela 8.7: O Comando zip
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.
Sintaxe de Chamada de Seqncia
Exemplos
zip(proc_cmd, a, b);zip(proc_cmd, a, b, fill);
>
>
Pgina 17 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
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.
>
Pgina 18 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
>
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).
Pgina 19 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
>
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.
>
>
Pgina 20 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
-
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.
Pgina 21 de 21index1.html
30/7/2009file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...
top related