Baixe o app para aproveitar ainda mais
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
Compartilhar