29
Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

Embed Size (px)

Citation preview

Page 1: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

Ciclos e FunçõesTrajectória de Projéctil

Pedro BarahonaDI/FCT/UNL

Introdução aos Computadores e à Programação2º Semestre 2008/2009

Page 2: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 2

Funções

• Em geral, as linguagens de programação, além de oferecerem funções pré-definidas

(ex: sqrt(x), cos(x),…) permitem que o programador defina as suas próprias funções.

• A ideia é abstrair numa função (com nome, inputs e outputs) todos os procedimentos

necessários para calcular os resultados pretendidos, isto é, calcular os outputs a partir

dos inputs.

• Esta forma de proceder, tem muitas vantagens, já que permite:

– Estruturar um programa em componentes básicos;

– Reutilizar esses componentes básicos noutros programas.

• De notar que qualquer linguagem contem várias funções pré-definidas, como por

exemplo as funções max/2 e sqrt/1 já utilizadas.

funçãoEntrada Resultados

Page 3: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 3

Funções e Passagem de Parâmetros

• Numa linguagem de programação uma função tem de ser definida, para poder ser

invocada (chamada) posteriormente, normalmente em vários pontos de um

programa ou de outra função.

• Nos casos mais simples podemos considerar numa função

– Os seus parâmetros de entrada

– O valor da função, obtido a partir dos parâmetros

• Existem duas formas “clássicas” de passagem de parâmetros:

– Por valor

– Por referência

• Em Octave, os parâmetros são geralmente passados por valor (com uma

excepção - nomes de funções), pelo que começamos por analizar este modo de

passagem de parâmetros.

Page 4: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 4

Passagem de Parâmetros por Valor

• Exemplo:

Consideremos a função triplo (que, como o nome indica, calcula o “triplo” do

parâmetro de entrada). A sua definição (em Octave) é feita através da

especificação

function v = triplo(u) v = 3*uendfunction;

• Se chamada com o valor 5, normalmente o valor que uma determinada variável tem

na altura da chamada da função, esse valor é triplicado e retornado. Por exemplo,

se invocarmos a função na sequência (pode ser ao terminal)

x = 5, y = 7, y = triplo(x); x, y,...

os valores de x e y reportados no terminal são x = 5 y = 7x = 5y = 15.

Page 5: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 5

Passagem de Parâmetros por Valor

• Exemplo: A computação da função triplo pode ser assim explicada:

1. Quando começa a ser executada a função triplo, são criadas duas novas variáveis, u

e v, que são locais à função f.

2. O valor inicial da variável (local) u é o valor do parâmetro de chamada. Neste caso,

é o valor da variável (do programa) x.

3. A instrução v = 3*u apenas envolve as variáveis locais u e v.

4. Após a execução da função, a variável v, contem o valor a ser retornado ao

programa principal.

5. No programa principa esse valor é atribuído à variável (de programa) y.

..., x = 5; y = 7; y = triplo(x); x, y, ...

function v = triplo(u)

v = 3*u;

endfunction;

Page 6: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 6

Passagem de Parâmetros por Valor

NOTA: As variáveis que aparecem na definição da função são locais a essa função.

• Num programa grande, com várias funções, é inevitável que variáveis em funções

diferentes tenham o mesmo nome (embora os nomes das variáveis devam ser

escolhidos para evitar essas “coincidências”).

• Assim, elas podem ter o mesmo nome das variáveis de programa, que não serão

confundidas com elas.( as variáveis x, y do programa principal não se confundem

com as variáveis x, y da função)

x = 5 , y = 7 e z = 15.

..., x = 5; y = 7; z = triplo(x); x, y, z,...

function y = triplo(x) x = 3 * x; y = x;

endfunction;

Page 7: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 7

Passagem de Parâmetros por Referência

• Outras linguagens (Pascal, C, C++, ...) permitem a passagem de parâmetros por

referência. Neste caso, o que é passado à função é uma referência (apontador) à

variável do programa principal, que pode ser alterada pela função.

• Por exemplo se o parâmetro x fosse passado por referência (indicado com uma

notação fictícia)

..., x = 5; z = f(x); x, z, ...

function y = f(ref x)

x = 2*x;

y = x;

endfunction;

os valores de x e z reportados no terminal, após a chamada da função, seriam

• x = 10 (sendo passada por referência, a variável x referida na função é a

mesma variável que a variável x do programa); e

• z = 10 (como anteriormente, o valor da função é atribuído à variável z do

programa principal)

Page 8: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 8

Funções em Octave

• Em geral, a especificação de uma função tem de ser visível do programa de onde a

função é chamada.

• Em várias linguagens de programação, a função e o programa podem ser

especificados no mesmo ficheiro, garantindo-se essa visibilidade. Quando são

especificados em ficheiros separados, no ficheiro programa são especificados os

ficheiros onde estão especificadas as funções utilizadas.

• Em Octave, a situação é diferente. A especificação de uma função com nome

<nome> deve ser feita num ficheiro chamado <nome.m>, que deve ser colocado na

pasta (folder) “corrente”.

• Essa pasta pode ser modificada atarvés da instrução “cd” (change directory).

• Por exemplo, se pretendermos trabalhar com uma pasta my_files, mantida numa

caneta flash, e se a caneta for instalada no computador como o dispositivo E:, então

para especificar essa pasta como a pasta corrente deverá usar-se o comando

cd ‘E:\my_files’.

Page 9: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 9

Funções de Funções em Octave

• Uma vez especificada, uma função pode ser utilizada na especificação de outras

funções, ou nos próprios parâmetros de entrada de outras ou da mesma função.

• Por exemplo, definidas as funções dobro e triplo, nos respectivos ficheiros dobro.m

e triplo.m

• Pode fazer-se a chamada z = dobro(triplo(5)) ou definir a nova função

sextuplo

Ficheiro dobro.m

function y = dobro(x) y = 2*xendfunction

Ficheiro triplo.m

function y = triplo(x) y = 3*xendfunction

Ficheiro sextuplo.m

function y = sextuplo(x) y = dobro(triplo(x))endfunction

Page 10: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 10

Funções Múltiplas em Octave

• A passagem de parâmetros por referência permite que uma função (ou

procedimento) passe vários valores para o programa que a invocou. Basta passar

por referência as variáveis onde esses valores devem ser “colocados”.

• O Octave, não suporta passagem de parâmetros por referência. A computação de

vários resultados numa função é conseguida pela computação de um vector de

resultados.

• Por exemplo, se se pretender que a função f, com argumento x, retorne dois

valores, y1 e y2, especifica-se a função como

function [y1,y2] = f(x) ... y1 = ...; y2 = ...; ...endfunction;

Page 11: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 11

Funções Múltiplas em Octave

Exemplo:

• Para um ângulo alpha (expresso em radianos) obter numa só função os valores do

seu seno, coseno, tendo em atenção que

function [s,c,t] = trigonom(x) s = sin(x); c = cos(x); t = tan(x); endfunction;

• Podemos agora exemplificar a utilização de funções na resolução de um problema

de engenharia relativo à trajectória de um projéctil.

Page 12: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 12

Máximos e Mínimos de uma Função

• Antes de abordar o problema da trajectória de um projéctil, vamos estudar o

problema de obter o máximo / mínimo de uma função, que aliás é utilizado para se

obter o zero de uma outra função (utilizados depois no problema da trajectória).

• Vamos pois determinar a solução da equação x • log(x) = 5, que pode ser

considerado como a determinação do zero da função g(x) = x • log(x) – 5.

• Sendo a função contínua no intervalo ]0, [, a função terá um zero no intervalo

[1,5] já que g(1) = 1 • log(1) – 5 = -5 e g(5) = 5 • log(5) – 5 ≈ 3.05.

• Assim queremos especificar a função [z,d] = zero(lo,up) que, no intervalo [lo, up],

determina um zero, z, da função g, com um desvio, d, próximo de zero. Isto é,

lo z up e g(z) = d ≈ 0

Page 13: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 13

Máximos e Mínimos de uma Função

• A forma mais simples, mas não muito eficiente de determinar o zero da função é

“varrer” o intervalo [lo, up] , testando vários valores de x nesse intervalo e reportar

aquele em que a função g(x) está mais próxima de zero.

• Para esse efeito podemos usar o ciclo que testa os valores

x = lo, lo+dx, lo+2dx, lo+3dx, ..., up

e actualiza o erro d, mantendo o erro mais pequeno encontrado no varrimento

• De notar que se obtem o mínimo do valor absoluto de g(x), pois o erro é sempre

uma medida positiva.

x lo; e g(lo); enquanto x <= up fazer y = |g(x)|; se y > min e y; z x; fim se: x x + dx; fim enquanto

Page 14: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 14

Máximos e Mínimos de uma Função

• O ciclo anterior pode agora ser utilizado na definição da função zero, que recebe

como parâmetros os limites do intervalo, lo e up, bem como a precisão dx, com que

se pretende varrer esse intervalo.

• Em Octave, terão de ser criados os ficheiros zero.m e g.m, com o seguinte código

function y = g (x); y = x * log(x) – 5;endfunction;

Ficheiro g.mfunction [z,d] = zero(lo, up, dx); x = lo; d = g(lo); while x <= up y = abs(g(x)); if y < d d = y; z = x; endif x = x + dx; endwhile;endfunction;

Ficheiro zero.m

Page 15: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 15

Máximos e Mínimos de uma Função

• Tendo em atenção que o ciclo testa todos os valores entre lo e up, com uma

separação dx, o ciclo “enquanto” pode ser substituido por um ciclo “para” que, sendo

equivalente, apresenta uma sintaxe mais “agradável”.

• Assim em vez de pode utilizar-se o ciclo:

ou na sintaxe Octave:

x lo; d g(lo); enquanto x <= up fazer y = |g(x)|; se y > min d y; z x; fim se: x x + dx; fim enquanto

d g(lo); para x = lo: dx: up fazer y = |g(x)|; se y > min d y; z x; fim se: fim fazer

e = g(lo); for x = lo: dx: up y = |g(x)|; if y > min e y; z x; endif: endfor

Page 16: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 16

Máximos e Mínimos de uma Função

• Uma versão mais eficiente, faz parar o ciclo de

varrimento quando o erro se torna

suficentemente pequeno. Neste caso, arbitra-

se um erro suficientemente pequeno e pode

reescrever-se o ciclo como

• Um ciclo “enquanto” (que se execute pelo

menos uma vez) pode ser re-escrito como um

ciclo “repetir .. até” equivalente mas com uma

sintaxe mais intuitiva, pois testa-se no fim do

ciclo a condição de continuação (que é oposta

à condição do ciclo enquanto).

• Neste caso, poderá utilizar-se o ciclo ao lado

em que a condição d >= erro é substituida por

d < erro no ciclo repetir até.

x lo; d g(lo); enquanto d >= erro fazer y = |g(x)|; se y > min d y; z x; fim se: x x + dx; fim enquanto;

x lo; d g(lo); repetir y = |g(x)|; se y > min d y; z x; fim se: x x + dx; até d < erro;

Page 17: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 17

Máximos e Mínimos de uma Função• A função zero pode agora ser substituída por uma versão mais eficiente, que recebe

como parâmetro adicional o erro permitido e utiliza a sintaxe do ciclo “repetir ... até”,

que em Octave se especifica como do ... until.

• Em Octave, terão de ser criados os ficheiros zero.m e g.m, com o seguinte código

• Nota: No caso de o erro ser muito pequeno a condição de paragem deverá ser

(d < erro) | (x > up).

Porquê?

function [z,d] = zero2(lo, up, dx, erro); x = lo; d = abs(g(lo)); do y = abs(g(x)); if y < d d = y; z = x; endif x = x + dx; until d < erro;endfunction;

Ficheiro zero_2.m

Page 18: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 18

Trajectória de um Projéctil

• Passemos agora à especificação do problema da trajectória de um projéctil.

• Dada uma altura inicial (y0) uma velocidade inicial (v0) e um ângulo inicial de

lançamento (), com base no modelo da trajectória apresentado e para uma dada

precisão (dx), determinar a distância máxima (dmax) e a altura máxima (hmax) atingidas

pelo projéctil.

Algoritmo de Simulação da Trajectória deum Projéctil

Entrada

Altura Inicial : y0

Velocidade Inicial : v0

Ângulo Inicial :   Precisão : dx

Resultados

Distância Máxima : dmax

Altura Máxima : hmax

Page 19: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 19

Modelação do Problema

• Um projéctil é lançado de uma altura de y0 metros, com um ângulo inicial de

lançamento de radianos e com uma velocidade inicial de v0 metros por segundo.

• A trajectória do projéctil em coordenadas (x,y) pode ser modelada através da

seguinte equação:

02

220 )(cos2

)tan()( yxv

gxyxf

v0

(0,0)x

y

y0

a

f(a)

dmax

hmax

Page 20: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 20

Resolução Informal

• Problema: determinar a distância máxima (dmax) e a altura máxima (hmax) atingidas pelo

projéctil.

• Pode-se simular a trajectória do projéctil usando a função f para calcular o valor de y

correspondente a cada valor de x.

– Considera-se o ponto inicial da trajectória x0 = 0: (x0, y0)

– Considera-se uma sequência de valores de x (x1, x2,…) para os quais se calcula o

respectivo valor de y (y1, y2,…) usando a fórmula indicada.

– Termina-se o cálculo quando aparecer o primeiro ponto da trajectória com o valor

de y negativo.

• Os valores da distância máxima e da altura máxima podem ser aproximados

respectivamente pelos valores maximos de x e y obtidos nos pontos calculados da

trajectória.

Page 21: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 21

Resolução Informal• A simulação da trajectória do projéctil pode ser simulada por um ciclo em que:

• O último ponto considerado é o primeiro (x11) com y negativo: y10 > 0 e y11 < 0

• A distância máxima (dmax) é aproximada pelo maior valor de x: dmax x11

• A altura máxima (hmax) é aproximada pelo maior valor de y: hmax y6

• A precisão das aproximações depende dos pontos da trajectória calculados:

– se a distância dx entre dois pontos consecutivos diminuir, a precisão aumenta

(x0,y0)

x

y

(x1, y1)

(x2, y2)

(x11, y11)

(x6, y6)hmax^

dmax^

Page 22: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 22

Problemas e Algoritmos

• Uma vez compreendida a especificação de um problema, e obtido um método

informal de o resolver, há que especificar um algoritmo formal, que possa vir a ser a

base do programa para resolver o problema inicial.

• Para especificar um algoritmo deveremos

1. Definir quais as variáveis necessárias, bem como o seu significado.

• As variáveis deverão ser sempre inicializadas antes de ser utilizadas !

2. Decompor o algoritmo em componentes suficientemente simples para serem

programadas facilmente.

• Tipicamente num algoritmo podem definir-se as seguintes fases

1. Inicialização de Variáveis

2. Corpo do algoritmo (que pode ser ainda mais decomposto)

3. Apresentação de Resultados

Page 23: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 23

Simulação de Trajectórias - Variáveis

• No presente problema de trajectórias podemos identificar as seguintes variáveis, com

os correspondentes significados:

02

220 )(cos2

)tan( yxv

gxy

Variável Valor Inicial Significado

g 9.8 aceleração da gravidade

yo entrada altura inicial

v0 entrada velocidade inicial

alfa entrada ângulo inicial

dx entrada precisão desejada

x 0 distância do projéctil num dado instante

y y0 altura do projéctil nesse dado instante

dmax 0 distância máxima da trajectória

hmax 0 altura máxima da trajectória

Page 24: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 24

Algoritmo de Simulação• O corpo do algoritmo corresponde a um ciclo em que vão sendo obtidos valores de x e de y

até se obter um valor de y negativo.

• Em simultâneo vão sendo considerados os valores máximos de x e de y, a que

corresponderão os valores finais de dmax e hmax

• A apresentação dos resultados neste caso corresponde a escrever os valores de dmax e

hmax (no terminal).

enquanto y > 0 fazer

x x + dx; y x * tan(alfa)-(g*x^2)/(2*v0^2*cos(alfa)^2)+y0;

se hmax < y hmax max fim se; % dmax é obtido pelo valor final de x

fim enquanto

dmax x

sai(dmax);sai(hmax);

02

220 )(cos2

)tan( yxv

gxy

Page 25: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 25

Programa Octave

% Inicialização de Variáveis g = 9.8; % aceleração da gravidade y0 = input(" Qual a altura inicial (m)? "); v0 = input(" Qual a velocidade inicial (m/s)? "); alfa = input(" Qual o angulo inicial (rad)? "); dx = input(" Qual a precisao (m)? "); x = 0 ; dmax = 0; % distância máxima da trajectória y = 0; hmax = 0; % altura máxima da trajectória

% Ciclo de Simulação while y >= 0 x = x + dx; y = x*tan(alfa)-(g*x^2)/(2*v0^2*cos(alfa)^2)+y0; hmax = max(y, hmax); endwhile dmax = x;

% Apresentação de Resultados disp("Distância maxima da trajectoria (m):"); disp(dmax); disp("Altura maxima da trajectoria (m):"); disp(hmax);

Page 26: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 26

Utilização de Funções

• No exemplo da trajectória de um projéctil, o cálculo do valor de y correspondente a

cada valor de x pode ser abstraído numa função f responsável por executar esses

cálculos correctamente.

• Mais interessantemente, todo o cálculo da altura e distância máximas de uma

trajectória pode ser abstraído numa função maximos, que por sua vez utiliza a função f.

fEntrada

x, y0, v0,

Resultado

y

maximosEntrada

x, y0, v0,

Resultados

dmax, hmax

Page 27: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 27

Exemplo de Funções: Altura/4

• Como vimos, podemos determinar a altura y da trajectória de um projéctil através

da expressão abaixo.

• Essa determinação pode ser especificada na função altura, definida abaixo e

guardada num ficheiro de nome “altura.m”

• Uma vez definida, esta função pode ser utilizada para definição doutras funções.

02

220 )(cos2

)tan( yxv

gxy

Ficheiro altura.m

function y = altura(x, y0, v0, alfa) g = 9.8; a = alfa * pi / 180; y = x*tan(alfa)-(g*x^2)/(2*v0^2*cos(alfa)^2)+y0;endfunction

Page 28: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 28

Exemplo de Funções Múltiplas: Máximos/4

• Um exemplo de função múltipla é a função maximos, que determina a distância e a

altura máxima da trajectória de um projectil nas condições anteriores, e que é

apresentada abaixo

Ficheiro maximos.m

function [dmax, hmax] = maximos(y0, v0, alfa, dx) x = 0 ; dmax = 0; y = y0; hmax = y0; while y > 0 x = x + dx; y = altura(x, y0, v0, alfa); hmax = max(y, hmax); endwhile dmax = max(x, dmax);endfunction

Page 29: Ciclos e Funções Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009

9 Março 2009 Ciclos e Funções - Trajectória de um Projéctil 29

Exemplo de Funções Múltiplas em Octave

• Esta função pode agora ser chamada do programa principal, com vários valores de

y0, v0, alfa e dx.

• Por exemplo,

>> [d,h] = maximos(0,10,45,0.1)d = 10.300h = 2.5510

• Outro exemplo

>> [d,h] = maximos(10,10,45,0.01)d = 16.420h = 12.551

Ficheiro maximos.m

function [dmax, hmax] = maximos(y0, v0, alfa, dx) ....endfunction