Mais tópicos sobre funções
• Funções com:
• Múltiplos parâmetros de saída
• Sem parâmetros de saída
• Sem parâmetros de entrada
• Sub-funções
• Passagem por valor
• Âmbito de uma variável
Instituto Superior Técnico,
Dep. de Engenharia Mecânica - ACCAII
Mais tópicos sobre funções
• O número de parâmetros de entrada e de saída,
das funções definidas pelo programador,
podem ser:
• Zero
• Um
• Vários
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
2
Mais tópicos sobre funções
• Funções que possuem mais do que um parâmetro de
saída:
• Utiliza-se sempre que se pretenda que a função retorne
mais que uma variável;
• A ordem de atribuição, dentro do corpo da função, não é
importante;
• A ordem dos parâmetros ,na definição , é importante
quando se faz a chamada à função.
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
3
Mais tópicos sobre funções
Descrição: Funções que possuem mais do que um parâmetro de
saída.
Sintaxe do cabeçalho:
function [argOut1,argOut2,…] = func(argIn1,argIn2,…)
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
4
Mais tópicos sobre funções
Problema: Escreva uma função que receba o raio de uma
circunferência e que retorne a sua área e o seu perímetro.
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
5
Mais tópicos sobre funções
Exemplo de execução:
>> [area , perimetro] = areacirc(2.4)
area =
18.0956
perimetro =
15.0796
>>
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
6
Mais tópicos sobre funções
• Funções que não possuem parâmetros de saídas:
• Utiliza-se sempre que se pretenda que a função não
retorne nenhuma variável;
• São geralmente utilizadas para escrever dados formatados
no monitor ou ficheiro.
• É boa prática de programação que uma função que calcule
e retorne valores, não faça também a escrita desses
valores no monitor. Tal operação deve ser efectuada por
uma função de “escrita”.
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
7
Mais tópicos sobre funções
Descrição: Funções que não possuem parâmetros de saídas.
Sintaxe do cabeçalho:
function func(argIn1,argIn2,…)
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
8
Mais tópicos sobre funções
Problema: Escreva uma função que receba o raio de uma
circunferência e que escreva no monitor a sua área e o seu
perímetro.
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
9
Mais tópicos sobre funções
Exemplo de execução:
>> escreveAreaPerimetro(2.4)
A circunferência de raio 2.40, possui:
Área = 18.10
Perímetro = 15.08
>> [area,perimetro] = escreveAreaPerimetro(2.4)
??? Error using ==> escreveAreaPerimetro
Too many output arguments.
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
10
Mais tópicos sobre funções
• Funções que não possuem parâmetros de entrada:
• São geralmente utilizadas para escrever informações
formatadas no monitor (exemplo: um menu);
• Podem ou não ter parâmetros de saída. No caso de um menu, o
parâmetro de saída poderá ser a opção escolhida!
• No caso de, por exemplo, se querer apresentar informações de
ajuda, neste caso poderá não existir parâmetros de saída.
• Podem também ser utilizadas para retornarem valores de
constantes (exemplo: o valor de pi).
• Possuem sempre um parâmetro de saída.
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
11
Mais tópicos sobre funções
Descrição: Funções que não possuem parâmetros de entrada.
Sintaxe do cabeçalho:
function [argOut1,argOut2,…] = func()
Ou
function [argOut1,argOut2,…] = func
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
12
Mais tópicos sobre funções
Problema: Escreva uma função que retorne o valor da velocidade
da luz, em metros/s.
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
13
Mais tópicos sobre funções
Exemplo de execução:
>> velocDaLuz
ans =
299792458
>> velocDaLuz()
ans =
299792458
>> velocidade = velocDaLuz()
velocidade =
299792458
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
14
Mais tópicos sobre funções
• Sub-Funções:
• As M-files de funções podem conter mais de uma função.
A função primária é a principal, ou seja, a que é invocada
pelo nome do ficheiro M-file.
• As funções adicionais no ficheiro são sub-funções, e só são
visíveis pela função primária, ou por outras sub-funções no
mesmo ficheiro.
• Cada sub-função começa pela sua linha de definição, e
estão definidas sequencialmente.
• A ordem de definição das sub-funções é opcional, mas a
definição da função primária deve aparecer em primeiro
lugar.
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
15
Mais tópicos sobre funções
• Sub-Funções (exemplo1):
Ficheiro
estatisticas2.m
File mystats.m
estatisticas2
mystats
Função estatisticas2
é acessível do
exterior.
Function mystats is
accessible from outside the file.
media
mean
Funções media e
mediana só são
acessíveis dentro do
ficheiro.
Functions mean and median
are only accessible from inside
the file.
mediana
median
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
16
Mais tópicos sobre funções
• Sub-Funções (exemplo2):
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
17
Mais tópicos sobre funções
• Como funciona a chamada a uma função :
• Os argumentos são avaliados;
• O valor dos argumentos são copiados para os respectivos
parâmetros de entrada;
• O âmbito (scope) dos parâmetros é a função que o utiliza;
• Uma função pode ter mais do que um parâmetro de
entrada.
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
18
Mais tópicos sobre funções
• Passagem de dados por valor:
• Quando um argumento é passado para uma função, o seu
valor é copiado para o parâmetro respectivo
• Alterações no parâmetro não afectam o valor do
argumento
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
19
Mais tópicos sobre funções
• Passagem de dados por valor:
• Exemplo: val=5;
duplica(val);
val
5
num
5
parâmetro
argumento
• duplica pode alterar a variável num, mas não irá afectar
a variável val
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
20
Conceito de âmbito (scope)
• O âmbito de um identificador é a parte do programa de
onde este pode ser acedido.
• Regras de âmbito de um identificador:
1. Se um identificador é declarado dentro de um script, o seu
âmbito é desde esse ponto até ao fim do programa (e
também o espaço de trabalho).
2. Se um identificador é um parâmetro de entrada de uma
função, o seu âmbito é o corpo dessa função
3. Se um identificador é declarado dentro do corpo de uma
função, seu âmbito é desde esse ponto até ao fim da
função.
4. Se um identificador é declarado no espaço de trabalho, o
seu âmbito são todos os scripts que forem executados.
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
21
Referências
• Capítulo 5 de Stormy Attaway (2009), “Matlab: A Practical
Introduction to Programming and Problem Solving”, Elsevier.
• Getting started with MATLAB:
http://www.mathworks.com/access/helpdesk/help/pdf_doc/
matlab/getstart.pdf
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
22
Download

Acetatos - 9ª aula ()