Buscar

aula-8-funcoes-parte-2-15-05-2017

Prévia do material em texto

FUNÇÕES	
  –	
  PARTE	
  2	
  
Recordando	
  
Forma	
  geral:	
  
	
  
r1,	
  r2,...:	
  lista	
  de	
  argumentos	
  de	
  SAÍDA	
  (retorno)	
  
arg1,	
  arg2,...:	
  lista	
  de	
  argumentos	
  de	
  ENTRADA	
  
	
  
	
  
funcFon	
  [r1,	
  r2,	
  ...]	
  =	
  nome_fç	
  (arg1,	
  arg2,	
  ...)	
  
	
  	
  	
  %	
  comentários	
  
	
  	
  	
  ...	
  
	
  	
  	
  Código	
  
end	
  
	
  
	
  
1	
  -­‐	
  Funções	
  Simples	
  (sem	
  parâmetros/sem	
  retorno)	
  
2	
  -­‐	
  Funções	
  Simples	
  (com	
  parâmetro	
  entrada)	
  
3	
   -­‐	
   Funções	
   com	
   parâmetro(s)	
   de	
   Entrada	
   e	
   Retorno	
   de	
  
um	
  valor	
  
4	
   -­‐	
   Funções	
   com	
   parâmetro(s)	
   de	
   Entrada	
   e	
   Retorno	
   de	
  
valores	
  
5	
  -­‐	
  Funções	
  com	
  Vetores	
  e	
  Matrizes	
  como	
  parâmetro(s)	
  
	
  
	
  
	
  
Funções	
  com	
  parâmetro(s)	
  de	
  Entrada	
  e	
  Retorno	
  
de	
  valores	
  
Ex.:	
   função	
  para	
   calcular	
   a	
   área	
   e	
   o	
   perímetro	
   de	
  
uma	
  circunferência.	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
>>	
  [a,	
  p]	
  =	
  areacirc(4)	
  
a	
  =	
  
	
  	
  	
  50.2655	
  
p	
  =	
  
	
  	
  	
  25.1327	
  
	
  
func;on	
  [area,	
  circum]	
  =	
  areacirc(	
  r	
  )	
  
	
  	
  	
  %	
  calcula	
  a	
  área	
  e	
  o	
  perímetro	
  de	
  uma	
  
	
  	
  	
  %	
  circunferência	
  e	
  retorna	
  ambos	
  
	
  
	
  	
  	
  area	
  =	
  pi	
  *	
  r	
  *	
  r;	
  
	
  	
  	
  circum	
  =	
  2	
  *	
  pi	
  *	
  r;	
  
end	
  
PráFca	
  1:	
  
Faça	
  um	
  script	
  para	
  testar	
  a	
  função	
  do	
  exemplo	
  (função	
  para	
  
calcular	
   e	
   retornar	
   a	
   área	
   e	
   o	
   perímetro	
   de	
   uma	
  
circunferência,	
  tendo	
  como	
  argumento	
  de	
  entrada	
  o	
  seu	
  raio).	
  
	
  
PráFca	
  2:	
  
Elabore	
  uma	
  função	
  para	
  calcular	
  e	
  retornar	
  o	
  perímetro	
  e	
  a	
  
área	
  de	
  um	
  retângulo.	
  “Passar”	
  o	
  comprimento	
  e	
  a	
  largura	
  do	
  
retângulo	
   como	
   argumentos.	
   Faça	
   um	
   script	
   para	
   testar	
   a	
  
função.	
  	
  
	
  	
  
PráFca	
  3:	
  
Implemente	
   uma	
   função	
   para	
   calcular	
   e	
   retornar	
   a	
   soma,	
   a	
  
subtração,	
  a	
  mul;plicação	
  e	
  a	
  divisão	
  de	
  2	
  números.	
  “Passar”	
  
os	
  2	
  números	
  como	
  argumentos.	
  U;lizar	
  script.	
  
	
  
	
  
	
  
Programas	
  Modulares	
  
Um	
   programa	
   modular	
   é	
   um	
   programa	
   cuja	
  
solução	
  é	
  “quebrada”	
  em	
  módulos,	
  e	
  cada	
  módulo	
  
é	
   implementado	
   como	
   uma	
   função.	
   O	
   script	
   que	
  
“chama”	
  estas	
   funções	
  é	
   geralmente	
   chamado	
  de	
  
programa	
  principal.	
  
Para	
   demonstrar	
   esse	
   conceito,	
   vamos	
   calcular	
   a	
  
área	
  de	
  um	
  círculo.	
  São	
  3	
  passos	
  no	
  algoritmo:	
  
1.   Entrada	
  do	
  raio	
  
2.   Cálculo	
  da	
  área	
  
3.   Exibir	
  resultado	
  
	
  
Assim,	
  no	
  programa	
  modular,	
  teremos	
  um	
  script	
  e	
  
3	
  funções	
  separadas	
  para	
  executar	
  essas	
  tarefas.	
  	
  
	
  
	
  
	
  
	
  
	
  
	
  
Programas	
  Modulares	
  
1.   Entrada	
  do	
  raio	
  
2.   Cálculo	
  da	
  área	
  
3.   Exibir	
  resultado	
  
	
  
	
  
	
  
	
  
	
  
Script	
  
calcareamodular.m	
  
leiaraio	
  
mostra	
  calcarea	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
calcareamodular.m	
  
	
  
%	
  script	
  para	
  calcular	
  
%	
  a	
  área	
  de	
  um	
  círculo	
  
raio	
  =	
  leiaraio;	
  
area	
  =	
  calcarea(raio);	
  
mostra(raio,	
  area);	
  
leiaraio.m	
  
func;on	
  raio	
  =	
  leiaraio	
  (	
  )	
  
	
  	
  	
  %leitura	
  do	
  raio	
  
	
  	
  	
  disp(‘Digite	
  raio:	
  ‘)	
  
	
  	
  	
  raio	
  =	
  input(‘Entre	
  com	
  o	
  raio:’);	
  
end	
  
calcarea.m	
  
func;on	
  area	
  =	
  calcarea(r)	
  
	
  	
  	
  %calcula	
  area	
  
	
  	
  	
  area	
  =	
  pi	
  *	
  r	
  *	
  r;	
  
end	
  
mostra.m	
  
func;on	
  mostra	
  (r,	
  a)	
  	
  
	
  	
  	
  %calcula	
  area	
  
	
  	
  	
  fprin\(‘Raio	
  =	
  %.2f,	
  \n’,	
  r)	
  
	
  	
  	
  fprin\(‘Area	
  =	
  %.2f,	
  \n’,	
  a)	
  
end	
  
PráFca	
  1:	
  
Implemente!!	
  
Verifique	
  erro	
  na	
  entrada	
  do	
  dado.	
  (while)	
  
PráFca	
  2:	
  
Para	
   um	
   triângulo	
   retângulo	
   com	
   lados	
  a,	
  b	
   e	
   c,	
  
onde	
   c	
   é	
   a	
   hipotenusa	
   com	
  θ	
   o	
   ângulo	
   entre	
   os	
  
lados	
  a	
  e	
  c,	
  escreva	
  um	
  script	
  com	
  “chamadas”	
  de	
  
funções	
   para	
   1)	
   ler	
   o	
   valor	
   da	
   hipotenusa	
   e	
   do	
  
ângulo;	
   2)	
   calcular	
   e	
   retornar	
   os	
   comprimentos	
  
dos	
   lados	
   a	
   e	
   b	
   ;	
   e	
   3)	
   uma	
   úl;ma	
   função	
   para	
  
mostrar	
  todos	
  os	
  valores	
  formatados	
  com	
  2	
  casas	
  
decimais.	
  
	
  
	
  
Funções	
  com	
  Vetores	
  e	
  Matrizes	
  como	
  
parâmetro(s)	
  
Considerando	
   o	
   exemplo	
   para	
   calcular	
   a	
   área	
   de	
  
uma	
   circunferência,	
   suponha	
   agora	
   que	
   tenhamos	
  
um	
  vetor	
  como	
  parâmetro	
  de	
  entrada:	
  
	
  
	
  
	
  
	
  
	
  
Observe	
  que	
  na	
  função	
  foi	
  u;lizado	
  o	
  operador	
  ponto:	
  .*	
  
Tornando	
  o	
  resultado	
  um	
  vetor!	
  
	
  
	
  
	
  
func;on	
  area	
  =	
  calcarea	
  (	
  r	
  )	
  
	
  	
  	
  %	
  calcula	
  e	
  retorna	
  a	
  área	
  de	
  um	
  círculo	
  
	
  
	
  	
  	
  area	
  =	
  pi	
  *	
  r	
  .*	
  r;	
  
end	
  
Exemplo:	
  
>>	
  calcarea(1:3)	
  
ans	
  =	
  
	
  	
  	
  	
  3.1416	
  	
  	
  12.5664	
  	
  	
  28.2743	
  
Suponha	
   agora,	
   que	
   tenhamos	
   que	
   armazenar	
   as	
  
áreas	
  calculadas	
  em	
  um	
  vetor.	
  
Implementar	
  um	
  script	
  para	
  fazer	
  isso.	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
>>	
  area_vet	
  
Digite	
  o	
  vetor	
  com	
  os	
  raios	
  da	
  circ.:	
  [1	
  1.5	
  2	
  2.5	
  3	
  3.5]	
  
Entrada:	
  raio	
  
	
  	
  	
  	
  1.0000	
  	
  	
  	
  1.5000	
  	
  	
  	
  2.0000	
  	
  	
  	
  2.5000	
  	
  	
  	
  3.0000	
  	
  	
  	
  3.5000	
  
Saída:	
  área	
  	
  
	
  	
  	
  	
  3.1416	
  	
  	
  	
  7.0686	
  	
  	
  12.5664	
  	
  	
  19.6350	
  	
  	
  28.2743	
  	
  	
  38.4845	
  
%	
  cálculo	
  da	
  área	
  de	
  um	
  circ.	
  u;lizando	
  vetores	
  
	
  	
  
clear	
  
raio	
  =	
  input('Digite	
  o	
  vetor	
  com	
  os	
  raios	
  da	
  circ.:	
  ');	
  
a	
  =	
  calcarea(raio);	
  
disp('Entrada:	
  raio');	
  
disp(raio);	
  
disp('Saída:	
  área	
  ');	
  
disp(a);	
  
Funções	
  com	
  Matrizes	
  como	
  parâmetro(s)	
  
Considere	
  a	
  soma	
  de	
  2	
  matrizes.	
  
	
  	
  	
  	
  
	
  	
  	
  somamat.m	
  
	
  
	
  
	
  
	
  
	
  
	
  	
  	
  imprimi.m	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
	
  
func;on	
  soma	
  =	
  somamat	
  (	
  m1,	
  m2	
  )	
  
	
  	
  	
  %	
  calcula	
  e	
  retorna	
  a	
  soma	
  de	
  2	
  matrizes	
  
	
  
	
  	
  	
  soma	
  =	
  m1	
  +	
  m2;	
  
end	
  
func;on	
  imprimi(	
  matriz	
  )	
  
	
  	
  	
  %imprimi	
  matriz	
  
	
  	
  	
  disp(matriz);	
  
end	
  
%somar	
  2	
  matrizes	
  
%	
  imprimir	
  
	
  
mat1=input('Digite	
  uma	
  matriz:	
  ');	
  
mat2=input('Digite	
  outra	
  matriz:	
  ');	
  
r	
  =	
  somamat(mat1,	
  mat2);	
  
disp('Matriz	
  1:	
  ');	
  
imprimi(mat1);	
  
disp('Matriz	
  2:	
  ');	
  
imprimi(mat2);	
  
disp('Matriz	
  soma:	
  ');	
  
imprimi(r);	
  
somamatriz.m	
  
PráFca:	
  
Elabore	
  um	
  script	
  para	
  mul;plicar	
  2	
  matrizes.	
  Ler	
  as	
  
dimensões	
  das	
  matrizes	
  e	
  em	
  seguida,	
  faça	
  funções	
  	
  
para:	
  
-­‐  ler	
  os	
  elementos	
  de	
  uma	
  matriz;	
  
-­‐  mul;plicar	
   as	
   matrizes	
   (quando	
   possível!!)	
   Pode	
  
u;lizar	
  *	
  
-­‐  imprimir	
  uma	
  matriz	
  
Sempreque	
  possível,	
   implemente	
  as	
   funções	
   com	
  
passagem	
  de	
  parâmetros	
  e	
  retorno	
  de	
  valores.

Continue navegando