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