Buscar

Aula_11 - Funções(1)

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

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
Você viu 3, do total de 10 páginas

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

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
Você viu 6, do total de 10 páginas

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

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
Você viu 9, do total de 10 páginas

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

Funções
Aula nº 11
Definição de Funções
Protótipos de Funções
30/09/2008 Aula 08 - Funções(1) 2 - 29
Objetivos
• Construir programas modularmente 
usando funções;
• Ser capaz de criar novas funções;
• Entender os mecanismos para passar 
informações entre funções;
• Aprender técnicas de simulação com 
geração aleatória de números;
30/09/2008 Aula 08 - Funções(1) 3 - 29
Objetivos
• Entender a visibilidade dos 
identificadores;
• Entender e escrever funções que 
chamam a si mesmas.
30/09/2008 Aula 08 - Funções(1) 4 - 29
Introdução
• Uma função é um componente capaz de 
executar uma ou mais tarefas;
• Contribui para a resolução de um problema a 
ser resolvido por um programa;
• Um programa pode chamar várias funções, 
cada uma das quais com um objetivo 
específico.
• Biblioteca padrão C++;
• Funções definidas pelo programador;
30/09/2008 Aula 08 - Funções(1) 5 - 29
Introdução
main
ajudante 1 ajudante 2 ajudante 3
ajudante 4 ajudante 5
30/09/2008 Aula 08 - Funções(1) 6 - 29
Introdução
• Construir programas a partir de 
pequenas partes ou componentes – 
dividir para conquistar;
• Uma função é invocada (ou chamada) 
por uma chamada de função;
• A chamada especifica o nome da função 
e provê informações – argumentos.
 
 
30/09/2008 Aula 08 - Funções(1) 7 - 29
Biblioteca Matemática
• <cmath> 
• Exemplo:
 cout << sqrt (900.0);
• Calcula a raiz quadrada de 900.0
• Argumentos podem ser constantes, 
variáveis ou expressões;
• Página 192 do livro texto – funções da 
biblioteca matemática.
30/09/2008 Aula 08 - Funções(1) 8 - 29
main
Preciso calcular 
o lado de um 
quadrado 
conhecendo sua 
área...
30/09/2008 Aula 08 - Funções(1) 9 - 29
main
Primeiro, 
preciso ler o 
valor da área.
30/09/2008 Aula 08 - Funções(1) 10 - 29
main
OK, O valor 
da área é 
900. 
30/09/2008 Aula 08 - Funções(1) 11 - 29
main
Ei! sqrt!
30/09/2008 Aula 08 - Funções(1) 12 - 29
main
Ei! sqrt! sqrt
 
 
30/09/2008 Aula 08 - Funções(1) 13 - 29
main
sqrt
Me dá o valor 
da raiz 
quadrada de 
900 !
30/09/2008 Aula 08 - Funções(1) 14 - 29
main
sqrt
Estou 
calculando ...
30/09/2008 Aula 08 - Funções(1) 15 - 29
main
sqrt
Estou 
calculando ...
 30 !
30/09/2008 Aula 08 - Funções(1) 16 - 29
sqrt
Estou 
calculando ...
 30 !
Obrigada !
main
30/09/2008 Aula 08 - Funções(1) 17 - 29
main
Ótimo! Agora 
só tenho que 
imprimir o 
resultado.
30/09/2008 Aula 08 - Funções(1) 18 - 29
int main() {
 ...
cout << sqrt (900.0);
 ...
}
 
 
30/09/2008 Aula 08 - Funções(1) 19 - 29
int main() {
 ...
cout << sqrt (900.0);
 ...
}
chamada de função
30/09/2008 Aula 08 - Funções(1) 20 - 29
int main() {
 ...
cout << sqrt (900.0);
 ...
}
Argumento
30/09/2008 Aula 08 - Funções(1) 21 - 29
int main() {
 ...
cout << sqrt (900.0);
 ...
}
Neste ponto, a execução do 
programa pára, chama a função 
e aguarda o retorno dela
30/09/2008 Aula 08 - Funções(1) 22 - 29
int main() {
 ...
cout << sqrt (900.0);
 ...
}
Neste ponto, a execução do 
programa pára, chama a função 
e aguarda o retorno dela
A função sqrt 
calcula a raiz 
quadrada de 
900.0 e retorna o 
resultado para 
main
30/09/2008 Aula 08 - Funções(1) 23 - 29
main ...
cout << sqrt (900.0);
...
sqrt
900.0
30.0
30/09/2008 Aula 08 - Funções(1) 24 - 29
Funções
• Modularização – vantagens: 
–Código mais administrável;
–Reutilização de software;
–Evita repetição de código num 
programa.
 
 
30/09/2008 Aula 08 - Funções(1) 25 - 29
Funções definidas pelo programador
• Funções podem ser definidas no 
programa;
• Ao invés de usarmos funções da 
biblioteca C++, nós criamos as funções 
necessárias no nosso programa;
• Inserimos, então, chamadas à função 
no nosso programa.
30/09/2008 Aula 08 - Funções(1) 26 - 29
Variáveis em funções
• Variáveis declaradas nas funções – locais.
• Parâmetros provêem um meio de passar 
informações para funções – locais.
30/09/2008 Aula 08 - Funções(1) 27 - 29
Funções
• Cada função deve se limitar a realizar 
uma tarefa simples e bem definida;
• Em um programa com muitas funções, 
main deveria ser implementada como 
um grupo de chamadas a funções que 
executam o “grosso” do trabalho do 
programa.
30/09/2008 Aula 08 - Funções(1) 28 - 29
Definição de função
• Considere um programa que use a 
função quadrado para calcular 
quadrados dos números inteiros de 1 a 
10.
30/09/2008 Aula 08 - Funções(1) 29 - 29
Exemplo
#include <iostream>
using namespace std;
int quadrado (int); //protótipo
int main( )
{
for (int x=1; x<=10; x++)
cout << quadrado(x) << “ ”;
chamada de função
Antes de começarmos 
a escrever main, vamos 
informar que usaremos 
a função quadrado
30/09/2008 Aula 08 - Funções(1) 30 - 29
int main( )
{
for (int x=1; x<=10; x++)
cout << quadrado(x) << “ ”;
cout << endl;
return 0;
} // fim de main
// Definição da função
int quadrado( int y)
{
return (y * y);
}
 
 
30/09/2008 Aula 08 - Funções(1) 31 - 29
int main( )
{
for (int x=1; x<=10; x++)
cout << quadrado(x) << “ ”;
cout << endl;
return 0;
} // fim de main
// Definição da função
int quadrado( int y)
{
return (y * y);
} 30/09/2008 Aula 08 - Funções(1) 32 - 29
int main( )
{
for (int x=1; x<=10; x++)
cout << quadrado(x) << “ ”;
cout << endl;
return 0;
} // fim de main
// Definição da função
int quadrado( int y)
{
return (y * y);
}
1
30/09/2008 Aula 08 - Funções(1) 33 - 29
int main( )
{
for (int x=1; x<=10; x++)
cout << quadrado(x) << “ ”;
cout << endl;
return 0;
} // fim de main
// Definição da função
int quadrado( int y)
{
return (y * y);
}
1
30/09/2008 Aula 08 - Funções(1) 34 - 29
int main( )
{
for (int x=1; x<=10; x++)
cout << quadrado(x) << “ ”;
cout << endl;
return 0;
} // fim de main
// Definição da função
int quadrado( int y)
{
return (y * y);
}
1
1
30/09/2008 Aula 08 - Funções(1) 35 - 29
int main( )
{
for (int x=1; x<=10; x++)
cout << quadrado(x) << “ ”;
cout << endl;
return 0;
} // fim de main
// Definição da função
int quadrado( int y)
{
return (y * y);
}
2
30/09/2008 Aula 08 - Funções(1) 36 - 29
int main( )
{
for (int x=1; x<=10; x++)
cout << quadrado(x) << “ ”;
cout << endl;
return 0;
} // fim de main
// Definição da função
int quadrado( int y)
{
return (y * y);
}
2
 
 
30/09/2008 Aula 08 - Funções(1) 37 - 29
int main( )
{
for (int x=1; x<=10; x++)
cout << quadrado(x) << “ ”;
cout << endl;
return 0;
} // fim de main
// Definição da função
int quadrado( int y)
{
return (y * y);
}
2
4
30/09/2008 Aula 08 - Funções(1) 38 - 29
int main( )
{
for (int x=1; x<=10; x++)
cout << quadrado(x) << “ ”;
cout << endl;
return 0;
} // fim de main
// Definição da função
int quadrado( int y)
{
return (y * y);
}
O processo 
continua até ...
30/09/2008 Aula 08 - Funções(1) 39 - 29
int main( )
{
for (int x=1; x<=10; x++)
cout << quadrado(x) << “ ”;
cout << endl;
return 0;
} // fim de main
// Definição da função
int quadrado( int y)
{
return (y * y);
}
10
30/09/2008 Aula 08 - Funções(1) 40 - 29
int main( )
{
for (int x=1; x<=10; x++)
cout << quadrado(x) << “ ”;
cout << endl;
return 0;
} // fim de main
// Definição da função
int quadrado( int y)
{
return (y * y);
}
10
100
30/09/2008 Aula 08 - Funções(1) 41 - 29
Definição de funções
tipo do valor de retorno nome da função (lista 
de parâmetros)
{
declarações e comandos
}
• retorno
– chave }
– return
– return expressão
int quadrado( int y)
{
return (y * y);
}
30/09/2008 Aula 08 - Funções(1) 42 - 29
• Função definida pelo programador para 
calcular o máximo de três valores
#include <iostream>
using namespace std;
int maximo (int, int, int); // Protótipo
int main ( ) {
Exemplo 2
 
 
30/09/2008 Aula 08 - Funções(1) 43 - 29
int main ( )
{
 int a, b, c;
 cout << “Forneça três inteiros: ” ;
 cin >> a >> b >> c;
 cout<<“O maior é:”<<maximo(a,b,c)<<endl;
 return 0;
}
30/09/2008 Aula 08 - Funções(1) 44 - 29
Definição da Função
int maximo (int x, int y, int z)
{
 int max = x;
 if (y > max)
max = y;if (z > max)
max = z;
 return max;
}
30/09/2008 Aula 08 - Funções(1) 45 - 29
Definição da Função
int maximo (int x, int y, int z)
{
 int max = x;
 if (y > max)
max = y;
 if (z > max)
max = z;
 return max;
}
a b c
30/09/2008 Aula 08 - Funções(1) 46 - 29
int main ( )
{
 int a, b, c;
 cout << “Forneça três inteiros: ” ;
 cin >> a >> b >> c;
 cout<<“O maior é:<<maximo(a,b,c)<<endl;
 return 0;
}
Exemplo de execução
3 8 5
30/09/2008 Aula 08 - Funções(1) 47 - 29
Definição da Função
int maximo (int x, int y, int z)
{
 int max = x;
 if (y > max)
max = y;
 if (z > max)
max = z;
 return max;
}
3 8 5
30/09/2008 Aula 08 - Funções(1) 48 - 29
Definição da Função
int maximo (int x, int y, int z)
{
 int max = x;
 if (y > max)
max = y;
 if (z > max)
max = z;
 return max;
}
3 8 5
3max
 
 
30/09/2008 Aula 08 - Funções(1) 49 - 29
Definição da Função
int maximo (int x, int y, int z)
{
 int max = x;
 if (y > max)
max = y;
 if (z > max)
max = z;
 return max;
}
3 8 5
max 8
30/09/2008 Aula 08 - Funções(1) 50 - 29
Definição da Função
int maximo (int x, int y, int z)
{
 int max = x;
 if (y > max)
max = y;
 if (z > max)
max = z;
 return max;
}
3 8 5
max 8
30/09/2008 Aula 08 - Funções(1) 51 - 29
Definição da Função
int maximo (int x, int y, int z)
{
 int max = x;
 if (y > max)
max = y;
 if (z > max)
max = z;
 return max;
}
3 8 5
max 8
30/09/2008 Aula 08 - Funções(1) 52 - 29
int main ( )
{
 int a, b, c;
 cout << “Forneça três inteiros: ” ;
 cin >> a >> b >> c;
 cout<<“O maior é:”<<maximo(a,b,c)<<endl;
 return 0;
}
30/09/2008 Aula 08 - Funções(1) 53 - 29
int main ( )
{
 int a, b, c;
 cout << “Forneça três inteiros: ” ;
 cin >> a >> b >> c;
 cout<<“O maior é:”<<maximo(a,b,c)<<endl;
 return 0;
}
8
30/09/2008 Aula 08 - Funções(1) 54 - 29
Protótipo de funções
• O protótipo diz ao compilador o 
nome da função, o tipo do dado 
retornado, número e tipo dos 
parâmetros e a ordem em que são 
esperados;
• O compilador usa o protótipo para 
validar as chamadas;
 
 
30/09/2008 Aula 08 - Funções(1) 55 - 29
Protótipo de Funções
• Se a função é definida antes do 
primeiro uso da função, o protótipo 
é dispensável;
• A parte do protótipo que inclui o 
nome da função e os tipos dos 
argumentos é chamada assinatura 
da função (não inclui o tipo 
retornado).
30/09/2008 Aula 08 - Funções(1) 56 - 29
Protótipo de funções
• Coerção de argumentos
• cout << sqrt (4);
O argumento 
inteiro 4 será 
convertido para 
o double 4.0
30/09/2008 Aula 08 - Funções(1) 57 - 29
Protótipo de funções
• Coerção de argumentos
• cout << sqrt (4);
• Regras de promoção;
• Expressões de tipo misto;
• Cada valor é convertido 
(temporariamente no tipo máximo da 
expressão)
30/09/2008 Aula 08 - Funções(1) 58 - 29
Protótipo de funções
• Quando o tipo de um argumento não 
corresponde ao tipo especificado na 
definição da função podem ocorrer 
erros indesejáveis.
quadrado (4.5) retorna 16
int quadrado (int x) {
return x*x;
}
30/09/2008 Aula 08 - Funções(1) 59 - 29
Protótipo de funções
• Escopo – um protótipo de função 
colocado fora de uma definição de 
função se aplica a todas as chamadas 
daquela função que aparecem depois 
do protótipo;
• Se colocado dentro de uma função, se 
aplica somente às chamadas realizadas 
naquela função.

Outros materiais