4. Functions

Embed Size (px)

DESCRIPTION

4. Functions

Citation preview

  • Prof. R. Finzi & M. Duarte

    27/11/12 1

  • Prof. R. Finzi & M. Duarte

    27/11/12 2

    SUMRIO a. Estrutura Bsica I. Declarao da Funo II. Argumentos de Entrada e Sada III. Descrio da Funo e Comentrios

    b. Variveis Globais versus Variveis Locais c. Executando Funes d. Funes inline e. Sub-funes e Funes Privadas f. Problema do lanamento oblquo.

  • Prof. R. Finzi & M. Duarte

    27/11/12 3

    a. Estrutura bsica um tipo especial de arquivo M que modulariza um bloco de cdigo

    sendo executado em um Workspace diferente, ou seja, o espao de memria exclusivo para a funo.

    Diferentemente de um script, a funo pode receber uma lista de argumentos e retornar outra lista de valores para o Workspace do MATLAB.

    A seguir, temos as caractersticas de estruturao de funes no MATLAB.

  • Prof. R. Finzi & M. Duarte

    27/11/12 4

    a. Estrutura Bsica (cont...)

  • Prof. R. Finzi & M. Duarte

    27/11/12 5

    a. Estrutura Bsica (cont...) I. Declarao da funo Deve ser feita sempre na primeira linha do arquivo M. Define o

    nome e a lista de argumentos de entrada e sada.

    O editor/depurador do MATLAB sensvel ao contexto e ir colocar as palavras reservadas na cor azul.

    Jamais use nomes de funes e variveis pr-definidas na declarao da funo.

  • Prof. R. Finzi & M. Duarte

    27/11/12 6

    a. Estrutura Bsica (cont...) II. Argumentos de Entrada/Sada Essa a forma de comunicao de dados entre a funo e o

    Worksapce do MATLAB. Em geral, toda funo ter pelo menos um argumento de entrada.

    Os argumentos podem ter q u a l q u e r dimensionalidade porm, o cdigo interno da funo deve prever apenas as dimenses de clculos p r e v i a m e n t e estabelecidas.

    Veja exemplos de arranjos de parmetros de funes:

  • Prof. R. Finzi & M. Duarte

    27/11/12 7

    a. Estrutura Bsica (cont...) III.Descrio da Funo e Comentrios A primeira linha de comentrios, linha H1, apresenta a descrio

    rpida do objetivo funcional da funo. Mesmo no sendo obrigatria, sua incluso necessria para melhorar a inteligibilidade da funo.

    O comando lookfor usa as palavras da linha H1 para retornar seu resultados de busca por palavras chaves. necessrio que o arquivo M da funo esteja no search path do MATLAB para que ela faa parte dos resultados da busca.

    As outras linhas de comentrios, que sucedem a H1, contm a descrio dos argumentos de entrada e sada. O comando help pode ser usado para obter essas descries na Janela de Comandos. Exemplo: >> help mean

  • Prof. R. Finzi & M. Duarte

    27/11/12 8

    b. Variveis Locais versus Variveis Globais As variveis de funes so locais, o que implica dizer que elas

    pertencem a um Workspace separado. Esse Workspace privado construdo, cada vez que a funo chamada no prompt de comando, e destrudo quando a funo finalilzada.

    Apesar dessa caracterstica privada das variveis de uma funo, possvel definir a visibilidade de uma varivel para alm do domnio da funo.

    O comando acima informa que a varivel ter visibilidade externa ao cdigo da funo. Ela poder ter sido criada tanto dentro quanto fora do corpo da funo e quaisquer alteraes, feitas tanto dentro quanto fora da funo, sero visveis em qualquer lugar.

    Se vrias funes fizerem uso dessa varivel global, todas devero declara-la em seu corpo usando o comando global. Use letras maisculas no nome dessas variveis para diferencia-las. Exemplo:

  • Prof. R. Finzi & M. Duarte

    27/11/12 9

    c. Executando Funes Ex1: distncia entre dois pontos no plano

    Mude o diretrio corrente para o local onde voc salvou a funo.

    Teste os comandos help e lookfor.

    Execute a funo para os pontos (1,1) e (4,5).

  • Prof. R. Finzi & M. Duarte

    27/11/12 10

    c. Executando Funes Ex2: converso entre coordenadas cartesianas e polares.

    Salve a funo e execute uma chamada para as coordenadas (4,3).

  • Prof. R. Finzi & M. Duarte

    27/11/12 11

    d. Funes inline Maneira simples de se declarar uma funo matemtica menos

    complexa e usa-la no corpo de um script ou outra funo. A declarao feita em uma nica linha.

    Existem duas formas de declarao. A primeira usada para funes com um nico argumento de entrada.

    A segunda prev vrios argumentos de entrada, cuja ordem definida na declarao.

    Funes inline s retornam um nico argumento (escalar, matricial, etc).

  • Prof. R. Finzi & M. Duarte

    27/11/12 12

    d. Funes inline (cont...) Exemplos na Janela de Comandos Escalares

    Vetores

  • Prof. R. Finzi & M. Duarte

    27/11/12 13

    e. Sub-funes e Funes Privadas possvel declarar duas ou mais funes em um mesmo arquivo

    M. Neste caso, a primeira ser a funo acessvel e as demais sero privadas, acessveis somente pela primeira funo do arquivo. Exemplo: implemente o cdigo abaixo.

    - Apenas a funo mystats estar acessvel. Faa testes.

    - Tambm possvel criar funes privadas em arquivos individuais. Basta armazenar os arquivos dessas funes um um subdiretrio com o nome de private. Esse diretrio deve estar contido no mesmo dietrio do arquivo da funo que chamar as funes privadas.

  • Prof. R. Finzi & M. Duarte

    27/11/12 14

    f. Problema do Lanamento Oblquo

  • Prof. R. Finzi & M. Duarte

    27/11/12 15

  • Prof. R. Finzi & M. Duarte

    27/11/12 16

  • Prof. R. Finzi & M. Duarte

    27/11/12 17

  • Prof. R. Finzi & M. Duarte

    27/11/12 18

    RESOLVER TODOS OS EXERCCIOS PROPOSTOS:

    Cap 05 CHAPMAN, S. J. Programao em MATLAB para engenheiros. Traduo tcnica de Flvio Soares Correa da Silva. So Paulo: Pioneira Thomson Learning, 2003.

    Cap 06 Amos, G. MATLAB com aplicaes em Engenharia. Traduo de Glayson Eduardo de Figueiredo. 2a Ed. Porto Alegre. Bookman, 2006.