capítulo 8

21
8 Programação Básica (Basic Programming) Você usou o Maple interativamente nos capítulos anteriores, realizando seqüencialmente operações como execução de um único comando. Como o Maple tem uma linguagem de programação completa, você pode usar também sofisticadas construções de programação (programming constructs). Importante: É recomendado que se use o modo Planilha (Worksheet) e entrada em 1-D Math ao programar ou usar comandos de programação. Portanto, todas as entradas neste capítulo são em 1-D Math. 8.1 Neste Capítulo Seção Tópicos Controle de Fluxo - Construções de programação básica • Execução Condicional ( Declaração if )• Repetição (Declaração for ) Comandos Iterativos - Comandos iterativos eficientes, especializados • Criando uma Seqüência• Adicionando e Multiplicando Expressões • Selecionando Operandos de Expressões • Mapeando um Comando sobre um Conjunto ou uma Lista • Mapeando um Comando Binário sobre Duas Listas ou Vetores Procedimentos - Programas Maple • Definição e Execução de Procedimentos Simples • Procedimentos com Entradas (Inputs)• Procedimentos de Valores Devolvidos • Exibição de Definições de Procedimentos • Exibição da Biblioteca Maple de Definições Página 1 de 21 index1.html 30/7/2009 file://C:\Documents and Settings\Administrador\Meus documentos\e-Books\Manual M...

Upload: jaqsilva

Post on 06-Sep-2015

215 views

Category:

Documents


0 download

DESCRIPTION

MANUAL DO MAPLE

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...