Buscar

Aula 3 - Comp. II - pag 1 e 2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1	
  
	
  
COMPUTAÇÃO	
  II	
   -­‐	
  	
   Aula	
  3	
  
	
  
7.	
   Funções	
  
	
   -­‐	
   Uma	
   função	
   é	
   um	
   conjunto	
   de	
   instruções	
   desenhadas	
   para	
   cumprir	
   uma	
   tarefa	
   particular	
   e	
  
agrupadas	
  numa	
  unidade	
  com	
  um	
  nome	
  para	
  referenciá-­‐la	
  
	
   -­‐	
  Funções	
  dividem	
  grandes	
  tarefas	
  de	
  computação	
  em	
  tarefas	
  menores,	
  e	
  permitem	
  às	
  pessoas	
  
trabalharem	
  sobre	
  o	
  que	
  outras	
   já	
   fizeram,	
  em	
  vez	
  de	
  partir	
  do	
  nada.	
  Uma	
  das	
  principais	
   razões	
  para	
  
escrever	
  funções	
  é	
  permitir	
  que	
  todos	
  os	
  outros	
  programadores	
  C	
  a	
  utilizem	
  em	
  seus	
  programas	
  
	
   -­‐	
  Já	
  usamos	
  diversas	
  funções,	
  tais	
  como:	
  printf(),	
  scanf(),	
  pow().	
  E	
  a	
  principal:	
  main()	
  
	
  
-­‐	
   Exemplo	
   1:	
   Função	
   que	
   soma	
   dois	
   números	
  
inteiros	
  e	
  retorna	
  essa	
  soma	
  
	
  
int	
  soma(int	
  a,	
  int	
  b)	
  {	
  
	
  int	
  c;	
  
	
  c	
  =	
  a	
  +	
  b;	
  	
  
	
  return	
  c;	
  
}	
  
	
  
Vamos	
   colocar	
   agora	
   essa	
   função	
   dentro	
   de	
   um	
  
programa:	
  
	
  
#include	
  <stdio.h>	
  
#include	
  <conio.h>	
  
int	
  soma(int	
  a,	
  int	
  b)	
  {	
  
	
  	
  	
  int	
  c;	
  
	
  	
  	
  c	
  =	
  a	
  +	
  b;	
  	
  
	
  	
  	
  return	
  c;	
  
}	
  
	
  
main()	
  {	
  
	
  	
  	
  int	
  x,y,	
  resultado;	
  
	
  	
  	
  printf("Primeiro	
  numero:	
  ");	
  
	
  	
  	
  scanf("%d",	
  &x);	
  
	
  	
  	
  printf("Segundo	
  numero:	
  ");	
  
	
  	
  	
  scanf("%d",	
  &y);	
  
	
  	
  	
  resultado	
  =	
  soma(x,y);	
  	
   	
   //	
  chamada	
  à	
  função	
  
	
  	
  	
  printf("Soma:	
  %d",	
  resultado);	
  
	
  	
  	
  getch();	
  
}	
  
	
  
	
   -­‐	
  Exemplo	
  2:	
  função	
  que	
  converte	
  temperaturas	
  (graus	
  Fahrenheit	
  em	
  graus	
  Celsius)	
  
	
  
#include	
  <stdio.h>	
  
#include	
  <stdlib.h>	
  
int	
  main()	
  {	
  
	
  	
  	
  float	
  celsius(float);	
   	
   //protótipo	
  ou	
  declaração	
  da	
  função	
  
	
  	
  	
  float	
  c,	
  f;	
  
	
  	
  	
  printf(“Digite	
  a	
  temperature	
  em	
  graus	
  Fahrenheit:	
  ”);	
  
	
  	
  	
  scanf(“%f”,&f);	
  
	
  	
  	
  c	
  =	
  celsius(f);	
   	
   	
  
	
  	
  	
  printf(“Celsius	
  =	
  %.2f\n”,c);	
  
	
  	
  	
  system(“PAUSE”);	
  
	
  	
  	
  return	
  0;	
  
}	
  
	
  
float	
  celsius(float	
  fahr)	
  {	
  
	
  	
  	
  float	
  c;	
  
	
  	
  	
  c	
  =	
  (fahr	
  –	
  32.0)*5.0/9.0;	
  
	
  	
  	
  return	
  c;	
  
}	
  
	
   -­‐	
  Obs.:	
   Podemos	
   ter	
   protótipo	
   local,	
   como	
  o	
   acima,	
   ou	
   protótipo	
   externo,	
   bastando	
   coloca-­‐lo	
  
após	
  as	
  bibliotecas	
  e	
  antes	
  do	
  main	
  
	
   -­‐	
  Poderíamos	
  melhorar	
  a	
  função:	
  
	
  
float	
  celsius(float	
  fahr)	
  {	
  
2	
  
	
  
	
  	
  	
  return	
  (fahr	
  –	
  32.0)*5.0/9.0;	
  	
  	
  	
  }	
  
	
  
	
   -­‐	
   Matrizes	
   podem	
   ser	
   passadas	
   como	
   argumento	
   de	
   funções.	
   Como	
   são	
   um	
   tipo	
   de	
   dados	
  
bastante	
  grande,	
  existe	
  apenas	
  uma	
  única	
  cópia	
  da	
  matriz	
  na	
  memória,	
  sendo	
  irrelevante	
  o	
  número	
  de	
  
funções	
   que	
   a	
   acessem.	
   Quando	
   o	
   nome	
   de	
   uma	
   matriz	
   é	
   passado	
   para	
   uma	
   função,	
   utiliza-­‐se	
   na	
  
verdade	
  o	
  endereço	
  dos	
  elementos	
  da	
  matriz	
  original,	
  ou	
  seja,	
  as	
  alterações	
  que	
  a	
  função	
  efetuar	
  nos	
  
elementos	
  da	
  matriz	
  afetarão	
  a	
  matriz	
  original	
  (passagem	
  por	
  referência).	
  Exemplo:	
  
	
  
#include	
  <stdio.h>	
  
#include	
  <stdlib.h>	
  
#define	
  TAMANHO	
  50	
  
void	
  ordena(int[],	
  int);	
   //	
  protótipo	
  
int	
  main()	
  {	
  
	
  	
  	
  int	
  tab[TAMANHO],	
  i,	
  j;	
  
	
  	
  	
  for(i=0;	
  i<TAMANHO;	
  i++)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  printf(“Digite	
  número	
  ou	
  zero	
  para	
  terminar:	
  ”);	
  
	
  	
  	
  	
  	
  	
  	
  	
  scanf(“%d”,	
  &tab[i]);	
  
	
  	
  	
  	
  	
  	
  	
  	
  if	
  (!	
  tab[i])	
  
	
  	
  	
  	
   break;	
  
	
  	
  	
  }	
  
	
  	
  	
  ordena(tab,i);	
  
	
  	
  	
  for	
  (j=0;	
  j<i;	
  j++)	
  
	
  	
  	
  	
  	
  	
  	
  	
  printf(“%d\n”,	
  tab[j]);	
  
	
  	
  	
  system(“PAUSE”);	
  
	
  	
  	
  return	
  0;	
  	
  
}	
   	
  
	
  
void	
  ordena(int	
  lista[],	
  int	
  tamanho)	
  {	
  
	
  	
  	
  int	
  i,j,	
  temp;	
  
	
  	
  	
  for	
  (i=0;	
  i	
  <	
  tamanho	
  -­‐	
  1;	
  i++)	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  for	
  (j=i+1;	
  j<tamanho;	
  j++)	
  
	
   if	
  (lista[i]	
  >	
  lista[j])	
  {	
  
	
   	
  	
  	
  	
  	
  temp	
  =	
  lista[j];	
  
	
   	
  	
  	
  	
  	
  lista[j]	
  =	
  lista[i];	
  
	
   	
  	
  	
  	
  	
  lista[i]	
  =	
  temp;	
  
	
   }	
  
}	
  
Um	
  exemplo	
  de	
  execução	
  do	
  programa:	
  
	
  
Digite	
  número	
  ou	
  zero	
  para	
  terminar:	
  46	
  
Digite	
  número	
  ou	
  zero	
  para	
  terminar:	
  25	
   	
  
Digite	
  número	
  ou	
  zero	
  para	
  terminar:	
  73	
   	
  
Digite	
  número	
  ou	
  zero	
  para	
  terminar:	
  0	
  
25	
  
46	
  
73	
  
	
  
	
  
	
   -­‐	
  Exercício	
  1:	
  Função	
  que	
  calcula	
  a	
  média	
  de	
  três	
  números	
  reais	
  e	
  retorna	
  essa	
  média	
  
	
  
	
   -­‐	
  Exercício	
  2:	
  Crie	
  uma	
   função	
  que	
   receba	
  um	
  número	
   inteiro	
  como	
  argumento	
  e	
   retorne	
   seu	
  
valor	
  absoluto.	
  Em	
  seguida	
  faça	
  um	
  programa	
  que	
  a	
  utilize.	
  
	
  
	
   -­‐	
   Exercício	
   3:	
   Crie	
   uma	
   função	
   que	
   calcule	
   o	
   fatorial	
   de	
   um	
   número.	
   Em	
   seguida,	
   faça	
   um	
  
programa	
  que	
  peça	
  um	
  número	
  inteiro	
  e	
  calcule	
  seu	
  fatorial	
  através	
  da	
  função	
  criada.	
  
	
  
	
   -­‐	
  Exercício	
  4a:	
  Escreva	
  uma	
  função	
  que,	
  dados	
  dia,	
  mês	
  e	
  ano	
  de	
  uma	
  data	
  gregoriana,	
  converta	
  
essa	
  data	
  para	
  a	
  data	
  juliana	
  correspondente.	
  Utilize	
  a	
  seguinte	
  fórmula:	
  
Data	
  Juliana	
  =	
  	
   (1461	
  *	
  (ano	
  +	
  4800	
  +	
  (mes	
  –	
  14)/12))/4	
  +	
  	
  (367	
  *	
  (mes	
  –	
  2	
  –	
  12	
  *	
  ((mes	
  –	
  14)/12)))/12	
  –	
  	
  
	
   	
   (3	
  *	
  ((ano	
  +	
  4900	
  +	
  (mes	
  –	
  14)/12)/100))/4	
  +	
  dia	
  –	
  32075	
  	
  
	
  
	
   -­‐	
  Exercício	
  4b:	
  Escreva	
  uma	
  função	
  que	
  receba	
  dia,	
  mês	
  e	
  ano	
  e	
  calcule	
  o	
  dia	
  da	
  semana	
  em	
  que	
  
caiu	
  essa	
  data.	
  Para	
  isso,	
  basta	
  transformar	
  a	
  data	
  gregoriana	
  em	
  juliana	
  (exercício	
  anterior)	
  e	
  calcular	
  o	
  
resto	
  da	
  divisão	
  da	
  data	
   juliana	
  por	
  7.A	
  função	
  deverá	
  retornar	
  um	
  número	
  entre	
  0	
  e	
  6,	
   indicando	
  os	
  
seguintes	
  resultados:	
  	
  0	
  –	
  segunda;	
  1	
  –	
  terça;	
  2	
  –	
  quarta;	
  3	
  –	
  quinta;	
  4	
  –	
  sexta;	
  5	
  –	
  sábado;	
  6	
  –	
  domingo.

Outros materiais