Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* * ESTRUTURAS DE DADOS – AULA 2 ANITA MACIEL Rio de Janeiro, 2011 * * FUNÇÕES “Dividir para facilitar” Os códigos estão ficando enormes! * * Vários comandos idênticos seguidos * * Vários comandos idênticos seguidos * * Vários comandos idênticos separados * * Vários comandos idênticos separados * * “Função é um conjunto de comandos que executam uma determinada tarefa.” (SAADE, Joell, 2003, 99) * * Um programa pode ser formado por uma ou mais funções. A função main sempre estará presente. * * * * * * (escopo) * * * * * * * * * * PELO NOME Se for uma função com retorno, precisará de um comando. * * Fluxo do programa após o término da Função No lugar em que é chamada com retorno Na instrução seguinte - void * * Tipos void int float double char ... * * PASSAGEM POR REFERÊNCIA & PASSAGEM POR VALOR Exemplo: Você empresta seu caderno para xerocar. Exemplo: Você entrega os originais da sua monografia para um revisor. * * Função que exibe a mensagem : Estruturas de Dados tipo? parâmetros? retorno? quantos? passagem por valor ou referência? * * void Função que exibe a mensagem : Estruturas de Dados * * void msg Função que exibe a mensagem : Estruturas de Dados * * void msg() Função que exibe a mensagem : Estruturas de Dados * * void msg() { Função que exibe a mensagem : Estruturas de Dados * * void msg() { cout<<“Estruturas de Dados”; Função que exibe a mensagem : Estruturas de Dados * * void msg() { cout<<“Estruturas de Dados”; } Função que exibe a mensagem : Estruturas de Dados * * Função que recebe uma mensagem e exibe parâmetros? quantos? passagem por valor ou referência? tipo? retorno? * * void Função que recebe uma mensagem e exibe * * void msgRecebe Função que recebe uma mensagem e exibe * * void msgRecebe() Função que recebe uma mensagem e exibe * * void msgRecebe(char msg[ ]) Função que recebe uma mensagem e exibe * * void msgRecebe(char msg[ ]) { Função que recebe uma mensagem e exibe * * void msgRecebe(char msg[ ]) { cout<<msg<<endl; Função que recebe uma mensagem e exibe * * void msgRecebe(char msg[ ]) { cout<<msg<<endl; } Função que recebe uma mensagem e exibe * * Função que recebe uma data no formato ddmmaaaa e retorna o ano parâmetros? quantos? passagem por valor ou referência? tipo? retorno? * * Função que recebe uma data no formato ddmmaaaa e retorna o ano * * int Função que recebe uma data no formato ddmmaaaa e retorna o ano * * int data Função que recebe uma data no formato ddmmaaaa e retorna o ano * * int data() Função que recebe uma data no formato ddmmaaaa e retorna o ano * * int data(int d) Função que recebe uma data no formato ddmmaaaa e retorna o ano * * int data(int d) { Função que recebe uma data no formato ddmmaaaa e retorna o ano * * int data(int d) { return d %10000; Função que recebe uma data no formato ddmmaaaa e retorna o ano * * int data(int d) { return d %10000; } Função que recebe uma data no formato ddmmaaaa e retorna o ano * * Função Programa * * Localização da função ANTES DA main() DEPOIS DA main() * * Programa com erro * * #include <iostream> 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"); } * * O erro * * Eu pensei que, se colocássemos antes da main, nunca teria problemas. E agora? A primeira solução, para esse problema, seria colocar a função dobra(...) antes da função soma(...). * * 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, embora, nesse exemplo, tenha mantido antes. * * #include <iostream> using namespace std; float soma(float); float dobra(float n); 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"); } * * * * Variável global x variável local * * Variável global x variável local * * Variável global x variável local * * Variável global x variável local * * Variável global x variável local * * Exemplos de programas usando funções e variável global * * #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 dobra() { num+=num; } void soma() { num += 5; } variável global * * * * * * * * * * * * * * Passagem por Referência * * #include <iostream> using namespace std; void modificaNum(float&); int main() { float num=20; modificaNum(num); cout<<"\nApos chamar a funcao modificaNum: "<<num; cout<<"\n\n"; system("pause"); } void modificaNum(float &n) { n *= 2; } * * * * Passando vetor para a função * * * * * * double soma(double n[], int tam); void media(double nt1[], double nt2[], double m[], int tam); * * double soma(double n[], int tam) { int x; double somaVet=0; for(x=0;x<tam; x++) somaVet += n[x]; return somaVet; } * * 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; } * * * * Reveja todos os conceitos desta aula. Aprimore seus conhecimentos pesquisando no material didático e na bibliografia recomendada (procure na Biblioteca do campus ou na Biblioteca Virtual/ SIA). Faça todos os exercícios. * * Esteja sempre em contato com seu professor. Não durma com dúvidas. Assista a esta aula quantas vezes for necessário. * * *
Compartilhar