Você está na página 1de 121

ESTRUTURA DE DADOS Aula 2- Libere sua imaginao. Construa suas funes.

ESTRUTURA DE DADOS

Ateno aos Temas Principais dessa Aula

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Contedo Programtico desta aula

Compreender o uso de funes definidas pelo programador;


Compreender a diferena entre parmetros passados por valor e parmetros passados por referncia; Implementar funes com ou sem retorno, com ou sem passagem de parmetros; Implementar funes tendo vetores como parmetros; Compreender escopo de variveis (global e local);

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Direto ao Assunto

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Funo que calcula volume do Prisma?

Funo que descobre a moda?

Funo que ordena vetor?

Funo que reajusta salrio?

Funo que calcula o IR a ser pago no ms?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Tenho que criar as minhas funes. URGENTE!

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Conceito de Funo

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

At agora, nossos programas s tinha a funo main(). Vai mudar a partir da aula de hoje?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Sim. Um dos motivos que poderemos criar funes que so necessrias as nossas atividades, mas que no esto disponveis.

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Criando funes, tambm estamos modularizando nossos programas, aumentando a legibilidade.

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Um outro motivo que poderemos testar as funes em separadas e (re)us-las em outros programas.

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Conhecendo a Nomenclatura

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Definio da Funo <tipo de funo>nomeDaFuno(declarao dos parmetros) { <declarao das variveis locais>

comandos que formam o corpo da funo


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

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Cabealho da Funo

<tipo de funo>nomeDaFuno(declarao dos parmetros)

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Cabealho da Funo

<tipo de funo>nomeDaFuno(declarao dos parmetros)


Corpo da Funo - Escopo

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Cabealho da Funo

<tipo de funo>nomeDaFuno(declarao dos parmetros)


Corpo da Funo - Escopo { <declarao das variveis locais> comandos que formam o corpo da funo return <valor>; // ou return; ou nada }
LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Prottipo da Funo
<tipo de funo>nomeDaFuno(declarao dos parmetros)

;
=
<tipo de funo>nomeDaFuno(declarao dos parmetros);
LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Como uma Funo Chamada?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Como uma Funo Chamada?

Pelo Nome

Se for uma funo com retorno, precisar de um comando.

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Como uma Funo Chamada?

Pelo Nome

Se for uma funo com retorno, precisar de um comando.


Para onde vai o Fluxo do Programa aps o Trmino da Funo?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Como uma Funo Chamada?

Pelo Nome

Se for uma funo com retorno, precisar de um comando.


Para onde vai o Fluxo do Programa aps o Trmino da Funo?

Para a instruo seguinte - void Para o lugar de onde foi chamada - com retorno

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

TIPOS void int float double char struct ...

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Como os Valores so Passados?

Passagem por Valor

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Como os Valores so Passados?

Passagem por Valor

Exemplo: Voc empresta seu caderno para xerocar.


LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Como os Valores so Passados?

Passagem por Referncia &

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


LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 1

Funo que exibe a mensagem Estrutura de Dados. Retorno? Tipo? Parmetros? Se sim, quantos? Passagem por valor? Passagem por Referncia?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 1

Funo que exibe a mensagem Estrutura de Dados. Retorno? No Tipo? void Parmetros? No Se sim, quantos? Passagem por valor? Passagem por Referncia?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 1

Funo que exibe a mensagem Estrutura de Dados. Retorno? No Tipo? void Parmetros? No Se sim, quantos? Passagem por valor? Passagem por Referncia?
void

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 1

Funo que exibe a mensagem Estrutura de Dados. Retorno? No Tipo? void Parmetros? No Se sim, quantos? Passagem por valor? Passagem por Referncia?
void msg

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 1

Funo que exibe a mensagem Estrutura de Dados. Retorno? No Tipo? void Parmetros? No Se sim, quantos? Passagem por valor? Passagem por Referncia?
void msg()

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 1

Funo que exibe a mensagem Estrutura de Dados. Retorno? No Tipo? void Parmetros? No Se sim, quantos? Passagem por valor? Passagem por Referncia?
void msg() {

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 1

Funo que exibe a mensagem Estrutura de Dados. Retorno? No Tipo? void Parmetros? No Se sim, quantos? Passagem por valor? Passagem por Referncia?
void msg() { cout<<Estrutura de Dados;

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 1

Funo que exibe a mensagem Estrutura de Dados. Retorno? No Tipo? void Parmetros? No Se sim, quantos? Passagem por valor? Passagem por Referncia?
void msg() { cout<<Estrutura de Dados; }

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 2

Funo que recebe o valor total e o percentual, retornando o valor que representa esse percentual. Retorno? Tipo? Parmetros? Se sim, quantos? Passagem por valor? Passagem por Referncia?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 2

Funo que recebe o valor total e o percentual, retornando o valor que representa esse percentual. Retorno? Sim Tipo? float Parmetros? Sim Se sim, quantos? 2 Passagem por valor? Sim Passagem por Referncia?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 2

Funo que recebe o valor total e o percentual, retornando o valor que representa esse percentual. Retorno? Sim Tipo? float Parmetros? Sim Se sim, quantos? 2 Passagem por valor? Sim Passagem por Referncia?
float

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 2

Funo que recebe o valor total e o percentual, retornando o valor que representa esse percentual. Retorno? Sim Tipo? float Parmetros? Sim Se sim, quantos? 2 Passagem por valor? Sim Passagem por Referncia?
float percentual

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 2

Funo que recebe o valor total e o percentual, retornando o valor que representa esse percentual. Retorno? Sim Tipo? float Parmetros? Sim Se sim, quantos? 2 Passagem por valor? Sim Passagem por Referncia?
float percentual()

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 2

Funo que recebe o valor total e o percentual, retornando o valor que representa esse percentual. Retorno? Sim Tipo? float Parmetros? Sim Se sim, quantos? 2 Passagem por valor? Sim Passagem por Referncia?
float percentual(float total, float percent)

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 2

Funo que recebe o valor total e o percentual, retornando o valor que representa esse percentual. Retorno? Sim Tipo? float Parmetros? Sim Se sim, quantos? 2 Passagem por valor? Sim Passagem por Referncia?
float percentual(float total, float percent) {

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 2

Funo que recebe o valor total e o percentual, retornando o valor que representa esse percentual. Retorno? Sim Tipo? float Parmetros? Sim Se sim, quantos? 2 Passagem por valor? Sim Passagem por Referncia?
float percentual(float total, float percent) { return total * percent/100;

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 2

Funo que recebe o valor total e o percentual, retornando o valor que representa esse percentual. Retorno? Sim Tipo? float Parmetros? Sim Se sim, quantos? 2 Passagem por valor? Sim Passagem por Referncia?
float percentual(float total, float percent) { return total * percent/100; }
LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 3 Funo que recebe o capital, a taxa de juros e o tempo, retornando o montante. Retorno? Parmetros? Passagem por valor? Tipo? Se sim, quantos? Passagem por Referncia?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 3 Funo que recebe o capital, a taxa de juros e o tempo, retornando o montante. Retorno? Sim Parmetros? Sim Passagem por valor? Sim Tipo? float Se sim, quantos? 3 Passagem por Referncia?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 3 Funo que recebe o capital, a taxa de juros e o tempo, retornando o montante. Retorno? Sim Parmetros? Sim Passagem por valor? Sim Tipo? float Se sim, quantos? 3 Passagem por Referncia?

float

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 3 Funo que recebe o capital, a taxa de juros e o tempo, retornando o montante. Retorno? Sim Parmetros? Sim Passagem por valor? Sim Tipo? float Se sim, quantos? 3 Passagem por Referncia?

float jurosCompostos

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 3 Funo que recebe o capital, a taxa de juros e o tempo, retornando o montante. Retorno? Sim Parmetros? Sim Passagem por valor? Sim Tipo? float Se sim, quantos? 3 Passagem por Referncia?

float jurosCompostos()

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 3 Funo que recebe o capital, a taxa de juros e o tempo, retornando o montante. Retorno? Sim Parmetros? Sim Passagem por valor? Sim Tipo? float Se sim, quantos? 3 Passagem por Referncia?

float jurosCompostos(float C, float i, int t)

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 3 Funo que recebe o capital, a taxa de juros e o tempo, retornando o montante. Retorno? Sim Parmetros? Sim Passagem por valor? Sim Tipo? float Se sim, quantos? 3 Passagem por Referncia?

float jurosCompostos(float C, float i, int t) {

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 3 Funo que recebe o capital, a taxa de juros e o tempo, retornando o montante. Retorno? Sim Parmetros? Sim Passagem por valor? Sim Tipo? float Se sim, quantos? 3 Passagem por Referncia?

float jurosCompostos(float C, float i, int t) { float M;

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 3 Funo que recebe o capital, a taxa de juros e o tempo, retornando o montante. Retorno? Sim Parmetros? Sim Passagem por valor? Sim Tipo? float Se sim, quantos? 3 Passagem por Referncia?

float jurosCompostos(float C, float i, int t) { float M; M= C*pow( (1+i/100), t);

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 3 Funo que recebe o capital, a taxa de juros e o tempo, retornando o montante. Retorno? Sim Parmetros? Sim Passagem por valor? Sim Tipo? float Se sim, quantos? 3 Passagem por Referncia?

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 IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 3 Funo que recebe o capital, a taxa de juros e o tempo, retornando o montante. Retorno? Sim Parmetros? Sim Passagem por valor? Sim Tipo? float Se sim, quantos? 3 Passagem por Referncia?

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 IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 4 Funo que recebe que recebe uma mensagem e exibe a mensagem e o nmero de caracteres. Retorno? Parmetros? Passagem por valor? Tipo? Se sim, quantos? Passagem por Referncia?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 4 Funo que recebe que recebe uma mensagem e exibe a mensagem e o nmero de caracteres. Retorno? No Parmetros? Sim Passagem por valor? Tipo? void Se sim, quantos? 1 Passagem por Referncia? Sim

void

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 4 Funo que recebe que recebe uma mensagem e exibe a mensagem e o nmero de caracteres. Retorno? No Parmetros? Sim Passagem por valor? Tipo? void Se sim, quantos? 1 Passagem por Referncia? Sim

void msgRecebe

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 4 Funo que recebe que recebe uma mensagem e exibe a mensagem e o nmero de caracteres. Retorno? No Parmetros? Sim Passagem por valor? Tipo? void Se sim, quantos? 1 Passagem por Referncia? Sim

void msgRecebe()

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 4 Funo que recebe que recebe uma mensagem e exibe a mensagem e o nmero de caracteres. Retorno? No Parmetros? Sim Passagem por valor? Tipo? void Se sim, quantos? 1 Passagem por Referncia? Sim

void msgRecebe(char msg[ ])

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 4 Funo que recebe que recebe uma mensagem e exibe a mensagem e o nmero de caracteres. Retorno? No Parmetros? Sim Passagem por valor? Tipo? void Se sim, quantos? 1 Passagem por Referncia? Sim

void msgRecebe(char msg[ ]) {

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 4 Funo que recebe que recebe uma mensagem e exibe a mensagem e o nmero de caracteres. Retorno? No Parmetros? Sim Passagem por valor? Tipo? void Se sim, quantos? 1 Passagem por Referncia? Sim

void msgRecebe(char msg[ ]) { int tam

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 4 Funo que recebe que recebe uma mensagem e exibe a mensagem e o nmero de caracteres. Retorno? No Parmetros? Sim Passagem por valor? Tipo? void Se sim, quantos? 1 Passagem por Referncia? Sim

void msgRecebe(char msg[ ]) { int tam = strlen(msg);

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 4 Funo que recebe que recebe uma mensagem e exibe a mensagem e o nmero de caracteres. Retorno? No Parmetros? Sim Passagem por valor? Tipo? void Se sim, quantos? 1 Passagem por Referncia? Sim

void msgRecebe(char msg[ ]) { int tam= strlen(msg); cout<<msg<< " tem "<< tam<< " caracteres\n";

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Exemplo 4 Funo que recebe que recebe uma mensagem e exibe a mensagem e o nmero de caracteres. Retorno? No Parmetros? Sim Passagem por valor? Tipo? void Se sim, quantos? 1 Passagem por Referncia? Sim

void msgRecebe(char msg[ ]) { int tam= strlen(msg); cout<<msg<< " tem "<< tam<< " caracteres\n"; }
LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Localizao da Funo

ANTES da main()

FUNO

main()

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Localizao da Funo DEPOIS da main()

main()

FUNO

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Programa com ERRO

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES 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 IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

O ERRO

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Eu pensei que, se colocssemos antes da main(), nunca teriamos problemas. E agora?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

A primeira soluo, para esse problema, seria colocar a funo dobra(...) antes da funo soma(...), mas, em outras situaes, poder ficar complicado.

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES 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 IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

A segunda soluo, para esse problema, seria declarar(prottipos) das funes antes de defin-las e, preferencialmente, posicion-las depois da main().

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES 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 IMAGINAO. CONSTRUA SUAS FUNES 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 IMAGINAO. CONSTRUA SUAS FUNES 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 IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

PASSAGEM POR REFERNCIA

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

PASSAGEM POR REFERNCIA

Na passagem por referncia,&, o endereo da varivel da funo chamadora passado para a funo chamada e, dessa forma, o valor poder ser alterado, ou no.

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Passando vetor como parmetro O nome de um vetor seu endereo.

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Passando vetor como parmetro O nome de um vetor seu endereo. Sendo assim, o operador & dispensvel

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES 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 IMAGINAO. CONSTRUA SUAS FUNES 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 IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Vamos exemplificar

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Fazendo algumas alteraes no exemplo 4

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES 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 IMAGINAO. CONSTRUA SUAS FUNES 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 IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

//Exemplo 4 Alterado - Comprovado

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Passando vetores numricos

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES 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 IMAGINAO. CONSTRUA SUAS FUNES 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 IMAGINAO. CONSTRUA SUAS FUNES 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 IMAGINAO. CONSTRUA SUAS FUNES 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 IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Passando o endereo da varivel

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES 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 IMAGINAO. CONSTRUA SUAS FUNES 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 IMAGINAO. CONSTRUA SUAS FUNES 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 IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Varivel GLOBAL

Varivel LOCAL

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Varivel GLOBAL

Varivel LOCAL

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Varivel GLOBAL

Varivel LOCAL

Declarada FORA de todas as Funes

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Varivel GLOBAL

Varivel LOCAL

Declarada FORA de todas as Funes

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Varivel GLOBAL

Varivel LOCAL

Declarada FORA de todas as Funes

Declarada DENTRO das Funes

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

#include <iostream> using namespace std; void soma(); void dobra(); float num=20;// varivel 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 IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Vamos ao Bate Pronto

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

1) Cite duas vantagens ao se definir funes?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

1) Cite duas vantagens ao se definir funes? R: Dividir o programa em partes menores e (re)us-las em vrios programas.

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

1) Cite duas vantagens ao se definir funes? R: Dividir o programa em partes menores e (re)us-las em vrios programas. 2) O que contem o Cabealho de uma funo?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

1) Cite duas vantagens ao se definir funes? R: Dividir o programa em partes menores e (re)us-las em vrios programas. 2) O que contem o Cabealho de uma funo? R: O tipo de funo, o nome da funo e a declarao dos parmetros, quando houver.

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

3) O que o prottipo de uma funo?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

3) O que o prottipo de uma funo? R: o cabealho da funo com ; ao final.

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

3) O que o prottipo de uma funo? R: o cabealho da funo com ; ao final. 4) Onde o prottipo da funo colocado?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

3) O que o prottipo de uma funo? R: o cabealho da funo com ; ao final. 4) Onde o prottipo da funo colocado? R: Antes de todas as funes.

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

3) O que o prottipo de uma funo? R: o cabealho da funo com ; ao final. 4) Onde o prottipo da funo colocado? R: Antes de todas as funes.

5) Qual a vantagem do uso de prottipos de funes em nossos programas?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

3) O que o prottipo de uma funo? R: o cabealho da funo com ; ao final. 4) Onde o prottipo da funo colocado? R: Antes de todas as funes.

5) Qual a vantagem do uso de prottipos de funes em nossos programas?


R: No nos preocuparmos com as posies das funes.

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

6) O que significa um prottipo simplificado? R: Significa que os nomes dos parmetros no esto presentes. Exemplo: float media(float, float);

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

6) O que significa um prottipo simplificado? R: Significa que os nomes dos parmetros no esto presentes. Exemplo: float media(float, float); 7) Qual a diferena em entre varivel Global e Local?

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

6) O que significa um prottipo simplificado? R:Significa que os nomes dos parmetros no esto presentes. Exemplo: float media(float, float); 7) Qual a diferena em entre varivel Global e Local? R: A varivel Global declarada fora de todas as funes e a local dentro de cada funo.

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2

ESTRUTURA DE DADOS

Resumindo

LIBERE SUA IMAGINAO. CONSTRUA SUAS FUNES AulA2