Buscar

Biblioteca 1203789

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

ESTRUTURAS DE DADOS 
Aula 02 
Professor: Vinicius Moll. 
Florianópolis, 19 de Fevereiro, 2018. 
 
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 Valor Como 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 Valor Como 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 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() 
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? 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); 
 
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