Buscar

Funções em Estrutura de Dados

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 119 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 119 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 119 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

ESTRUTURA DE DADOS
Aula 2- Libere sua imaginação. Construa suas funções. 
Prof. ANITA LOPES
Produzido em 2013
Prof. ANITA LOPES
Produzido em 2013
Conteúdo Programático desta aula
Compreender  o uso de funções definidas pelo programador;
Compreender a diferença entre parâmetros passados por valor e parâmetros passados por referência;
Implementar funções com ou sem retorno, com ou sem passagem de parâmetros;
Implementar funções tendo vetores como parâmetros;
Compreender  escopo de variáveis (global e local); 
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Função que calcula volume do Prisma?
Função que ordena vetor?
Função que descobre a moda?
Função que calcula o IR a ser pago no mês?
Função que reajusta salário?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Tenho que criar as minhas funções. URGENTE!
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Conceito de Função
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Até agora, nossos programas só tinha a função main(). Vai mudar a partir da aula de hoje?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Sim. Um dos motivos é que poderemos criar funções que são necessárias as nossas atividades, mas que não estão disponíveis.
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Criando funções, também estamos modularizando nossos programas, aumentando a legibilidade.
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Um outro motivo é que poderemos testar as funções em separadas e (re)usá-las em outros programas.
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Conhecendo a Nomenclatura
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
<tipo de função>nomeDaFunção(declaração dos parâmetros)
{
 <declaração das variáveis locais>
 
 comandos que formam o corpo da função
 return <valor>; // ou return; ou nada
}
Definição da Função
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
<tipo de função>nomeDaFunção(declaração dos parâmetros)
Cabeçalho da Função
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
<tipo de função>nomeDaFunção(declaração dos parâmetros)
Cabeçalho da Função
Corpo da Função - Escopo
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
<tipo de função>nomeDaFunção(declaração dos parâmetros)
{
 <declaração das variáveis locais>
 
 comandos que formam o corpo da função
 return <valor>; // ou return; ou nada
}
Cabeçalho da Função
Corpo da Função - Escopo
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
<tipo de função>nomeDaFunção(declaração dos parâmetros)
+
;
=
<tipo de função>nomeDaFunção(declaração dos parâmetros);
Protótipo da Função
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Como uma Função é Chamada?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Se for uma função com retorno, precisará de um comando. 
Como uma Função é Chamada?
Pelo Nome
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Se for uma função com retorno, precisará de um comando. 
Como uma Função é Chamada?
Pelo Nome
Para onde vai o Fluxo do Programa após o Término da Função?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Se for uma função com retorno, precisará de um comando. 
Como uma Função é Chamada?
Pelo Nome
Para a instrução seguinte - void
Para o lugar de onde foi chamada - com retorno
Para onde vai o Fluxo do Programa após o Término da Função?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
void
int
float
double
char
struct
...
 TIPOS
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Passagem por Valor
Como os Valores são Passados?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo: Você empresta seu caderno para xerocar.
Passagem por Valor
Como os Valores são Passados?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo: Você entrega os originais da sua monografia para um revisor.
Passagem por Referência &
Como os Valores são Passados?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 1
Função que exibe a mensagem Estrutura de Dados.
Retorno?
Tipo?
Parâmetros?
Se sim, quantos?
Passagem por valor?
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 1
Função que exibe a mensagem Estrutura de Dados.
Retorno?Não
Tipo?void
Parâmetros?Não
Se sim, quantos?
Passagem por valor?
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 1
Função que exibe a mensagem Estrutura de Dados.
Retorno?Não
Tipo?void
Parâmetros?Não
Se sim, quantos?
Passagem por valor?
Passagem por Referência?
void
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 1
void msg
Função que exibe a mensagem Estrutura de Dados.
Retorno?Não
Tipo?void
Parâmetros?Não
Se sim, quantos?
Passagem por valor?
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 1
void msg()
Função que exibe a mensagem Estrutura de Dados.
Retorno?Não
Tipo?void
Parâmetros?Não
Se sim, quantos?
Passagem por valor?
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 1
void msg()
{
 
Função que exibe a mensagem Estrutura de Dados.
Retorno?Não
Tipo?void
Parâmetros?Não
Se sim, quantos?
Passagem por valor?
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 1
void msg()
{
 cout<<“Estrutura de Dados”;
Função que exibe a mensagem Estrutura de Dados.
Retorno?Não
Tipo?void
Parâmetros?Não
Se sim, quantos?
Passagem por valor?
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 1
void msg()
{
 cout<<“Estrutura de Dados”;
}
Função que exibe a mensagem Estrutura de Dados.
Retorno?Não
Tipo?void
Parâmetros?Não
Se sim, quantos?
Passagem por valor?
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 2
Função que recebe o valor total e o percentual, retornando o valor que representa esse percentual.
Retorno?
Tipo?
Parâmetros?
Se sim, quantos?
Passagem por valor?
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 2
Função que recebe o valor total e o percentual, retornando o valor que representa esse percentual.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?2
Passagem por valor?Sim
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 2
float
Função que recebe o valor total e o percentual, retornando o valor que representa esse percentual.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?2
Passagem por valor?Sim
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 2
float percentual
Função que recebe o valor total e o percentual, retornando o valor que representa esse percentual.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?2
Passagem por valor?Sim
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 2
float percentual() 
Função que recebe o valor total e o percentual, retornando o valor que representa esse percentual.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?2
Passagem por valor?Sim
Passagem por Referência?
Prof. ANITALOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 2
float percentual(float total, float percent) 
Função que recebe o valor total e o percentual, retornando o valor que representa esse percentual.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?2
Passagem por valor?Sim
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 2
float percentual(float total, float percent)
{
 
Função que recebe o valor total e o percentual, retornando o valor que representa esse percentual.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?2
Passagem por valor?Sim
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 2
float percentual(float total, float percent)
{
 return total * percent/100;
Função que recebe o valor total e o percentual, retornando o valor que representa esse percentual.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?2
Passagem por valor?Sim
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 2
float percentual(float total, float percent)
{
 return total * percent/100;
}
Função que recebe o valor total e o percentual, retornando o valor que representa esse percentual.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?2
Passagem por valor?Sim
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 3
Função que recebe o capital, a taxa de juros e o tempo, retornando o montante.
Retorno?
Tipo?
Parâmetros?
Se sim, quantos?
Passagem por valor?
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 3
Função que recebe o capital, a taxa de juros e o tempo, retornando o montante.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?3
Passagem por valor?Sim
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 3
Função que recebe o capital, a taxa de juros e o tempo, retornando o montante.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?3
Passagem por valor?Sim
Passagem por Referência?
float
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 3
Função que recebe o capital, a taxa de juros e o tempo, retornando o montante.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?3
Passagem por valor?Sim
Passagem por Referência?
float jurosCompostos
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 3
Função que recebe o capital, a taxa de juros e o tempo, retornando o montante.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?3
Passagem por valor?Sim
Passagem por Referência?
float jurosCompostos()
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 3
Função que recebe o capital, a taxa de juros e o tempo, retornando o montante.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?3
Passagem por valor?Sim
Passagem por Referência?
float jurosCompostos(float C, float i, int t)
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 3
Função que recebe o capital, a taxa de juros e o tempo, retornando o montante.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?3
Passagem por valor?Sim
Passagem por Referência?
float jurosCompostos(float C, float i, int t)
{
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 3
Função que recebe o capital, a taxa de juros e o tempo, retornando o montante.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?3
Passagem por valor?Sim
Passagem por Referência?
float jurosCompostos(float C, float i, int t)
{
 float M;
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 3
Função que recebe o capital, a taxa de juros e o tempo, retornando o montante.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?3
Passagem por valor?Sim
Passagem por Referência?
float jurosCompostos(float C, float i, int t)
{
 float M;
 M= C*pow( (1+i/100), t);
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 3
Função que recebe o capital, a taxa de juros e o tempo, retornando o montante.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?3
Passagem por valor?Sim
Passagem por Referência?
float jurosCompostos(float C, float i, int t)
{
 float M;
 M= C*pow( (1+i/100), t);
 return M; //return M-C; retorna só os juros
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 3
float jurosCompostos(float C, float i, int t)
{
 float M;
 M= C*pow( (1+i/100), t);
 return M; //return M-C; retorna só os juros
}
Função que recebe o capital, a taxa de juros e o tempo, retornando o montante.
Retorno?Sim
Tipo?float
Parâmetros?Sim
Se sim, quantos?3
Passagem por valor?Sim
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 4
Função querecebeque recebe uma mensagem e exibe a mensagem e o número de caracteres.
Retorno?
Tipo?
Parâmetros?
Se sim, quantos?
Passagem por valor?
Passagem por Referência?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 4
void
Função querecebeque recebe uma mensagem e exibe a mensagem e o número de caracteres.
Retorno?Não
Tipo?void
Parâmetros?Sim
Se sim, quantos?1
Passagem por valor?
Passagem por Referência?Sim
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 4
void msgRecebe
Função querecebeque recebe uma mensagem e exibe a mensagem e o número de caracteres.
Retorno?Não
Tipo?void
Parâmetros?Sim
Se sim, quantos?1
Passagem por valor?
Passagem por Referência?Sim
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 4
void msgRecebe()
Função querecebeque recebe uma mensagem e exibe a mensagem e o número de caracteres.
Retorno?Não
Tipo?void
Parâmetros?Sim
Se sim, quantos?1
Passagem por valor?
Passagem por Referência?Sim
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 4
void msgRecebe(char msg[ ])
Função querecebeque recebe uma mensagem e exibe a mensagem e o número de caracteres.
Retorno?Não
Tipo?void
Parâmetros?Sim
Se sim, quantos?1
Passagem por valor?
Passagem por Referência?Sim
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 4
void msgRecebe(char msg[ ])
{ 
 
Função querecebeque recebe uma mensagem e exibe a mensagem e o número de caracteres.
Retorno?Não
Tipo?void
Parâmetros?Sim
Se sim, quantos?1
Passagem por valor?
Passagem por Referência?Sim
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 4
void msgRecebe(char msg[ ])
{ 
 int tam
 
Função querecebeque recebe uma mensagem e exibe a mensagem e o número de caracteres.
Retorno?Não
Tipo?void
Parâmetros?Sim
Se sim, quantos?1
Passagem por valor?
Passagem por Referência?Sim
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 4
void msgRecebe(char msg[ ])
{ 
 int tam = strlen(msg); 
 
Função querecebeque recebe uma mensagem e exibe a mensagem e o número de caracteres.
Retorno?Não
Tipo?void
Parâmetros?Sim
Se sim, quantos?1
Passagem por valor?
Passagem por Referência?Sim
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 4
void msgRecebe(char msg[ ])
{ 
 int tam= strlen(msg); 
 cout<<msg<< " tem "<< tam<< " caracteres\n";
Função querecebeque recebe uma mensagem e exibe a mensagem e o número de caracteres.
Retorno?Não
Tipo?void
Parâmetros?Sim
Se sim, quantos?1
Passagem por valor?
Passagem por Referência?Sim
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Exemplo 4
void msgRecebe(char msg[ ])
{ 
 inttam= strlen(msg); 
 cout<<msg<< " tem "<< tam<< " caracteres\n";
}
Função querecebeque recebe uma mensagem e exibe a mensagem e o número de caracteres.
Retorno?Não
Tipo?void
Parâmetros?Sim
Se sim, quantos?1
Passagem por valor?
Passagem por Referência?Sim
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
ANTES da main()
FUNÇÃO
main()
Localização da Função
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
DEPOIS da main()
FUNÇÃO
main()
Localização da Função
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Programa com ERRO
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
#include <iostream>
#include <cstdlib>
using namespace std;
float soma(float n)
{ return dobra(n)+5; }
float dobra(float n)
{ return n*2; } 
int main()
{ 
 float num=20;
 cout<<"\nApos chamar a funcao soma : "<<soma(num);
 cout<<"\nApos chamar a funcao dobra: "<<dobra(num); 
 cout<<"\n\n";
 system("pause");
}
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
O ERRO
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
 
 
Eu pensei que, se colocássemos antes da main(), nunca teriamos problemas. E agora?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
 
 
A primeira solução, para esse problema, seria colocar a função dobra(...) antes da função soma(...), mas, em outras situações, poderá ficar complicado.
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
#include <iostream>
#include <cstdlib>
using namespace std;
float dobra(float n)
{ return n*2; } 
float soma(float n)
{ return dobra(n)+5; }
int main()
{ 
 float num=20;
 cout<<"\nApos chamar a funcao soma : "<<soma(num);
 cout<<"\nApos chamar a funcao dobra: "<<dobra(num); 
 cout<<"\n\n";
 system("pause");
}
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
 
 
A segunda solução, para esse problema, seria declarar(protótipos) das funções antes de definí-las e, preferencialmente, posicioná-las depois da main().
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
#include <iostream>
#include <cstdlib>
using namespace std;
float soma(float n);
float dobra(float n);
int main()
{ 
 float num=20;
 cout<<"\nApos chamar a funcao soma : "<<soma(num);
 cout<<"\nApos chamar a funcao dobra: "<<dobra(num); 
 cout<<"\n\n";
 system("pause");
}
float soma(float n)
{ return dobra(n)+5; }
float dobra(float n)
{ return n*2; }
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
#include <iostream>
#include <cstdlib>
using namespace std;
float soma(float n); // float soma(float);
float dobra(float n); // float dobra(float); 
int main()
{ 
 float num=20;
 cout<<"\nApos chamar a funcao soma : "<<soma(num);
 cout<<"\nApos chamar a funcao dobra: "<<dobra(num); 
 cout<<"\n\n";
 system("pause");
}
float soma(float n)
{ return dobra(n)+5; }
float dobra(float n)
{ return n*2; }
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
#include <iostream>
#include <cstdlib>
using namespace std;
float soma(float n); // float soma(float);
float dobra(float n); // float dobra(float); 
int main()
{ 
 float num=20;
 cout<<"\nApos chamar a funcao soma : "<<soma(num);
 cout<<"\nApos chamar a funcao dobra: "<<dobra(num); 
 cout<<"\n\n";
 system("pause");
}
float soma(float n)
{ return dobra(n)+5; }
float dobra(float n)
{ return n*2; }
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
PASSAGEM POR REFERÊNCIA
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
PASSAGEM POR REFERÊNCIA
Na passagem por referência,&, o endereço da variável da função chamadora é passado para a função chamada e, dessa forma, o valor poderá ser alterado, ou não. 
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Passando vetor como parâmetro 
O nome de um vetor é seu endereço. 
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Passando vetor como parâmetro 
O nome de um vetor é seu endereço. 
Sendo assim, o operador & é dispensável 
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
 int vet[]={ 13, 23, 62, 50};
 cout<<"\nEndereco do vetor: "<< vet<<endl; 
 cout<<"\nEndereco do vetor: "<< &vet<<endl;
 system("pause > NULL");
}
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
 int vet[]={ 13, 23, 62, 50};
 cout<<"\nEndereco do vetor: "<< vet<<endl; 
 cout<<"\nEndereco do vetor: "<< &vet<<endl;
 system("pause > NULL");
}
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Vamos exemplificar
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Fazendo algumas alterações no exemplo 4
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
int main()
{
 char str[] ="ESTRUTURA DE DADOS";
 msgRecebe(str); 
 system("pause > NULL");
} 
//Exemplo 4 – Alterado - Comprovado
void msgRecebe(char msg[ ])
{ int tam= strlen(msg); 
 
 cout<<"\n"<<msg<< " tem "<< tam<< " caracteres\n";
}
void msgRecebe(char msg[ ]);
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
int main()
{
 char str[] ="ESTRUTURA DE DADOS";
 msgRecebe(str); cout<<"\nDepois da funcao: "<<str<< endl;
 system("pause > NULL");
} 
//Exemplo 4 – Alterado - Comprovado
void msgRecebe(char msg[ ])
{ int tam= strlen(msg); 
 msg[0]='*'; //Altera o primeiro caracter
 cout<<"\n"<<msg<< " tem "<< tam<< " caracteres\n";
}
void msgRecebe(char msg[ ]);
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
//Exemplo 4 – Alterado - Comprovado
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Passando vetores numéricos
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
void media(double nt1[], double nt2[], double m[], int tam)
{
 int x;
 for(x=0;x<tam; x++)
 m[x]=(nt1[x] + nt2[x])/2;
} 
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
void media(double nt1[], double nt2[], double m[], int tam)
{
 int x;
 for(x=0;x<tam; x++)
 m[x]=(nt1[x] + nt2[x])/2;
} 
void saida(float n1[],int t,float n2[],float m[])
{
 int x;
 system("cls"); cout<<"\nNota 1\tNota 2\tMedia\n";
 for(x=0;x<t;x++)
 cout<<"\n"<<n1[x]<<"\t"<<n2[x]<<"\t"<<m[x]; 
}
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
#include <iostream>
#include <cstdlib>
#define TAM 3
using namespace std;
 
int main()
{
 float nota1[]={7.5,8, 9},nota2[]={6.5,6,5},medias[TAM];
 media(nota1, nota2,medias,TAM); 
 saida(nota1,TAM,nota2,medias); 
 cout<<"\n\n";
 system("pause");
}
void saida(float [],int t,float [],float []);
void media(float [],float [],float [],int );
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
void media(float n1[],float n2[],float m[],int t)
{
 int x;
 for(x=0;x<t;x++)
 m[x]=(n1[x]+n2[x])/2; 
} 
void saida(float n1[],int t,float n2[],float m[])
{
 int x;system("cls");
 cout<<"\nNota 1\tNota 2\tMedia\n";
 for(x=0;x<t;x++)
 cout<<"\n"<<n1[x]<<"\t"<<n2[x]<<"\t"<<m[x]; 
}
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Passando o endereço da variável
&
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{ 
 float salario=2000;
 reajustaSalario(salario);
 cout<<"\nApos chamar a funcao: "<<salario;
 cout<<"\n\n";
 system("pause");
}
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{ 
 float salario=2000;
 reajustaSalario(salario);
 cout<<"\nApos chamar a funcao: "<<salario;
 cout<<"\n\n";
 system("pause");
}
void reajustaSalario(float&);
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{ 
 float salario=2000;
 reajustaSalario(salario);
 cout<<"\nApos chamar a funcao: "<<salario;
 cout<<"\n\n";
 system("pause");
}
void reajustaSalario(float &s)
{ s *= 1.08; } 
void reajustaSalario(float&);
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
 Variável GLOBAL x Variável LOCAL
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
 Variável GLOBAL x Variável LOCAL
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
 Variável GLOBAL x Variável LOCAL
Declarada FORA de 
todas as Funções
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Declarada FORA de 
todas as Funções
 Variável GLOBAL x Variável LOCAL
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Declarada FORA de 
todas as Funções
 Variável GLOBAL x Variável LOCAL
Declarada DENTRO
das Funções
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
#include <iostream>
using namespace std;
void soma();
void dobra();
float num=20;// variável global
int main()
{ 
 soma();
 cout<<"\nApos chamar a funcao soma: "<<num;
 dobra();
 cout<<"\nApos chamar a funcao dobra: "<<num; 
 cout<<"\n\n";
 system("pause");
}
void soma()
{ num+=5; }
void dobra()
{ num+=num; }
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Vamos ao Bate Pronto
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
1) Cite duas vantagens ao se definir funções?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
1) Cite duas vantagens ao se definir funções?
R: Dividir o programa em partes menores e (re)usá-las em vários programas.
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
R: Dividir o programa em partes menores e (re)usá-las em vários programas.
1) Cite duas vantagens ao se definir funções?
2) O que contem o Cabeçalho de uma função?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
1) Cite duas vantagens ao se definir funções?
2) O que contem o Cabeçalho de uma função?
R: O tipo de função, o nome da função e a declaração dos parâmetros, quando houver.
R: Dividir o programa em partes menores e (re)usá-las em vários programas.
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
3) O que é o protótipo de uma função?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
R: É o cabeçalho da função com ; ao final.
3) O que é o protótipo de uma função?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
R: É o cabeçalho da função com ; ao final.
3) O que é o protótipo de uma função?
4) Onde o protótipo da função é colocado?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
R: É o cabeçalho da função com ; ao final.
3) O que é o protótipo de uma função?
4) Onde o protótipo da função é colocado?
R: Antes de todas as funções.
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
R: É o cabeçalho da função com ; ao final.
3) O que é o protótipo de uma função?
4) Onde o protótipo da função é colocado?
R: Antes de todas as funções.
5) Qual a vantagem do uso de protótipos de funções em nossos programas?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
4) Onde o protótipo da função é colocado?
R: Antes de todas as funções.
R: Não nos preocuparmos com as posições das funções.
R: É o cabeçalho da função com ; ao final.
3) O que é o protótipo de uma função?
5) Qual a vantagem do uso de protótipos de funções em nossos programas?
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
6) O que significa um protótipo simplificado?
R: Significa que os nomes dos parâmetros não estão presentes.
Exemplo: 
float media(float, float);
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
6) O que significa um protótipo simplificado?
7) Qual a diferença em entre variável Global e Local?
R: Significa que os nomes dos parâmetros não estão presentes.
Exemplo: 
float media(float, float);
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
6) O que significa um protótipo simplificado?
R:Significa que os nomes dos parâmetros não estão presentes.
Exemplo: 
float media(float, float);
7) Qual a diferença em entre variável Global e Local?
R: A variável Global é declarada fora de todas as funções e a local dentro de cada função.
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013
Espero que tenha gostado
Prof. ANITA LOPES
Produzido em 2012
Prof. ANITA LOPES
Produzido em 2013

Outros materiais