Anda di halaman 1dari 121

ESTRUTURA DE DADOS

Aula 2- Libere sua imaginação. Construa suas funções.


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
descobre a Função que
moda? ordena vetor?

Função que Função que


reajusta calcula o IR a ser
salário? pago no mês?

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

Definição da Função

<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


}

LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2


ESTRUTURA DE DADOS

Cabeçalho da Função

<tipo de função>nomeDaFunção(declaração dos parâmetros)

LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2


ESTRUTURA DE DADOS

Cabeçalho da Função

<tipo de função>nomeDaFunção(declaração dos parâmetros)

Corpo da Função - Escopo

LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2


ESTRUTURA DE DADOS

Cabeçalho da Função

<tipo de função>nomeDaFunção(declaração dos parâmetros)

Corpo da Função - Escopo

{
<declaração das variáveis locais>

comandos que formam o corpo da função

return <valor>; // ou return; ou nada


}

LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2


ESTRUTURA DE DADOS

Protótipo da Função

<tipo de função>nomeDaFunção(declaração dos parâmetros)

+
;
=

<tipo de função>nomeDaFunção(declaração dos parâmetros);

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

Como uma Função é Chamada? Pelo Nome

Se for uma função com retorno, precisará de um comando.

LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2


ESTRUTURA DE DADOS

Como uma Função é Chamada? Pelo Nome

Se for uma função com retorno, precisará de um comando.

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

Como uma Função é Chamada? Pelo Nome

Se for uma função com retorno, precisará de um comando.

Para onde vai o Fluxo do Programa após o Término da Função?

Para a instrução seguinte - void

Para o lugar de onde foi chamada - com retorno

LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2


ESTRUTURA DE DADOS

TIPOS

void
int
float
double
char
struct
...

LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2


ESTRUTURA DE DADOS

Como os Valores são Passados? Passagem por Valor

LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2


ESTRUTURA DE DADOS

Como os Valores são Passados? Passagem por Valor

Exemplo: Você empresta seu caderno para xerocar.


LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2
ESTRUTURA DE DADOS

Como os Valores são Passados? Passagem por Referência &

Exemplo: Você entrega os originais da sua monografia para um revisor.


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

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 msg()

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 msg()
{

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 msg()
{
cout<<“Estrutura de Dados”;

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 msg()
{
cout<<“Estrutura de Dados”;
}

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

float

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?

float percentual

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?

float percentual()

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?

float percentual(float total, float percent)

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?

float percentual(float total, float percent)


{

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?

float percentual(float total, float percent)


{
return total * percent/100;

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?

float percentual(float total, float percent)


{
return total * percent/100;
}

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

void

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? Não Tipo? void
Parâmetros? Sim Se sim, quantos? 1
Passagem por valor? Passagem por Referência? Sim

void msgRecebe

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? Não Tipo? void
Parâmetros? Sim Se sim, quantos? 1
Passagem por valor? Passagem por Referência? Sim

void msgRecebe()

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? Não Tipo? void
Parâmetros? Sim Se sim, quantos? 1
Passagem por valor? Passagem por Referência? Sim

void msgRecebe(char msg[ ])

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? Não Tipo? void
Parâmetros? Sim Se sim, quantos? 1
Passagem por valor? Passagem por Referência? Sim

void msgRecebe(char msg[ ])


{

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? Não Tipo? void
Parâmetros? Sim Se sim, quantos? 1
Passagem por valor? Passagem por Referência? Sim

void msgRecebe(char msg[ ])


{
int tam

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? Não Tipo? void
Parâmetros? Sim Se sim, quantos? 1
Passagem por valor? Passagem por Referência? Sim

void msgRecebe(char msg[ ])


{
int tam = strlen(msg);

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? Não Tipo? void
Parâmetros? Sim Se sim, quantos? 1
Passagem por valor? Passagem por Referência? Sim

void msgRecebe(char msg[ ])


{
int tam= strlen(msg);
cout<<msg<< " tem "<< tam<< " caracteres\n";

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? Não Tipo? void
Parâmetros? Sim Se sim, quantos? 1
Passagem por valor? Passagem por Referência? Sim

void msgRecebe(char msg[ ])


{
int tam= strlen(msg);
cout<<msg<< " tem "<< tam<< " caracteres\n";
}

LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2


ESTRUTURA DE DADOS

Localização da Função

ANTES da main()

FUNÇÃO

main()

LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2


ESTRUTURA DE DADOS

Localização da Função

DEPOIS da main()

main()

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> //Exemplo 4 – Alterado - Comprovado


#include <cstdlib>
#include <cstring>
using namespace std;
void msgRecebe(char msg[ ]);
int main()
{
char str[] ="ESTRUTURA DE DADOS";
msgRecebe(str);
system("pause > NULL");
}
void msgRecebe(char msg[ ])
{ int tam= strlen(msg);

cout<<"\n"<<msg<< " tem "<< tam<< " caracteres\n";


}

LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2


ESTRUTURA DE DADOS

#include <iostream> //Exemplo 4 – Alterado - Comprovado


#include <cstdlib>
#include <cstring>
using namespace std;
void msgRecebe(char msg[ ]);
int main()
{
char str[] ="ESTRUTURA DE DADOS";
msgRecebe(str); cout<<"\nDepois da funcao: "<<str<< endl;
system("pause > NULL");
}
void msgRecebe(char msg[ ])
{ int tam= strlen(msg);
msg[0]='*'; //Altera o primeiro caracter
cout<<"\n"<<msg<< " tem "<< tam<< " caracteres\n";
}
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;
void media(float [],float [],float [],int );

void saida(float [],int t,float [],float []);

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");
}

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;
void reajustaSalario(float&);
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;
void reajustaSalario(float&);
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; }

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

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

Variável GLOBAL x Variável LOCAL

Declarada FORA de Declarada DENTRO


todas as Funções 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

1) Cite duas vantagens ao se definir funções?


R: Dividir o programa em partes menores e (re)usá-las em
vários programas.

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?


R: Dividir o programa em partes menores e (re)usá-las em
vários programas.

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.

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

3) O que é o protótipo de uma função?


R: É o cabeçalho da função com ; ao final.

LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2


ESTRUTURA DE DADOS

3) O que é o protótipo de uma função?


R: É o cabeçalho da função com ; ao final.

4) Onde o protótipo da função é colocado?

LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2


ESTRUTURA DE DADOS

3) O que é o protótipo de uma função?


R: É o cabeçalho da função com ; ao final.

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

3) O que é o protótipo de uma função?


R: É o cabeçalho da função com ; ao final.

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

3) O que é o protótipo de uma função?


R: É o cabeçalho da função com ; ao final.

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?

R: Não nos preocuparmos com as posições das funções.

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?


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?

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

LIBERE SUA IMAGINAÇÃO. CONSTRUA SUAS FUNÇÕES– AulA2

Anda mungkin juga menyukai