Buscar

Aula 02 Libere sua imaginação Construa suas Funções

Prévia do material em texto

ESTRUTURA DE DADOS
Aula 2- Libere sua imaginação. Construa suas funções.
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Atenção aos Temas Principais dessa Aula
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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);
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Direto ao Assunto
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Tenho que criar as 
minhas funções. 
URGENTE!
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Conceito de Função
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Até agora, nossos programas só
tinha a função main(). Vai mudar a
partir da aula de hoje?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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.
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Criando funções, também estamos
modularizando nossos programas,
aumentando a legibilidade.
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Um outro motivo é que poderemos testar as
funções em separadas e (re)usá-las em
outros programas.
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Conhecendo a Nomenclatura
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
<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
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
<tipo de função>nomeDaFunção(declaração dos parâmetros)
Cabeçalho da Função
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
<tipo de função>nomeDaFunção(declaração dos parâmetros)
Cabeçalho da Função
Corpo da Função - Escopo
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
<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
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
<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
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Como uma Função é Chamada?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Se for uma função com retorno, precisará de um comando.
Como uma Função é Chamada? Pelo Nome
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
void
int
float
double
char
struct
...
TIPOS
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Passagem por ValorComo os Valores são Passados?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Exemplo: Você empresta seu caderno para xerocar.
Passagem por ValorComo os Valores são Passados?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Exemplo: Você entrega os originais da sua monografia para um revisor.
Passagem por Referência &Como os Valores são Passados?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOSExemplo 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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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()
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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)
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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)
{
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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;
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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);
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Exemplo 4
Função que recebe que 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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Exemplo 4
void
Função que recebe que 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
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Exemplo 4
void msgRecebe
Função que recebe que 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
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Exemplo 4
void msgRecebe()
Função que recebe que 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
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Exemplo 4
void msgRecebe(char msg[ ])
Função que recebe que 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
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Exemplo 4
void msgRecebe(char msg[ ])
{ 
Função que recebe que 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
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Exemplo 4
void msgRecebe(char msg[ ])
{ 
int tam
Função que recebe que recebe uma mensagem e exibe a
mensagem e o número de caracteres.
Retorno? Não Tipo? void
Parâmetros? SimSe sim, quantos? 1
Passagem por valor? Passagem por Referência? Sim
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Exemplo 4
void msgRecebe(char msg[ ])
{ 
int tam = strlen(msg); 
Função que recebe que 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
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Exemplo 4
void msgRecebe(char msg[ ])
{ 
int tam= strlen(msg); 
cout<<msg<< " tem "<< tam<< " caracteres\n";
Função que recebe que 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
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Exemplo 4
void msgRecebe(char msg[ ])
{ 
int tam= strlen(msg); 
cout<<msg<< " tem "<< tam<< " caracteres\n";
}
Função que recebe que 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
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
ANTES da main()
FUNÇÃO
main()
Localização da Função
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
DEPOIS da main()
FUNÇÃO
main()
Localização da Função
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Programa com ERRO
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
#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");
}
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
O ERRO
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Eu pensei que, se colocássemos
antes da main(), nunca teriamos
problemas. E agora?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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.
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
#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");
}
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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().
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
#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; }
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
#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; }
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
#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; }
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
PASSAGEM POR REFERÊNCIA
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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.
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Passando vetor como parâmetro 
O nome de um vetor é seu endereço.
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Passando vetor como parâmetro 
O nome de um vetor é seu endereço.
Sendo assim, o operador & é dispensável
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
#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");
}
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
#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");
}
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Vamos exemplificar
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Fazendo algumas alterações no exemplo 4
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
#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[ ]);
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
#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[ ]);
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
//Exemplo 4 – Alterado - Comprovado
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Passando vetores numéricos
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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;
} 
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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]; 
}
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
#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 );
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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]; 
}
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Passando o endereço da variável
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
#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");
}
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
#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&);
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
#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&);
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Variável GLOBAL x Variável LOCAL
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Variável GLOBAL x Variável LOCAL
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Variável GLOBAL x Variável LOCAL
Declarada FORA de 
todas as Funções
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Declarada FORA de 
todas as Funções
Variável GLOBAL x Variável LOCAL
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Declarada FORA de 
todas as Funções
Variável GLOBAL x Variável LOCAL
Declarada DENTRO
das Funções
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
#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; }
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Vamos ao Bate Pronto
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
1) Cite duas vantagens ao se definir funções?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
1) Cite duas vantagens ao se definir funções?
R: Dividir o programa em partes menores e (re)usá-las em
vários programas.
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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.
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
3) O que é o protótipo de uma função?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
R: É o cabeçalho da função com ; ao final.
3) O que é o protótipo de uma função?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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.
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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?
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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);
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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);
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
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.
LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS
Resumindo

Continue navegando

Outros materiais