Baixe o app para aproveitar ainda mais
Prévia do material em texto
CCE1040 – LÓGICA DE PROGRAMAÇÃO Aula 7: Modularização: funções Lógica de Programação AULA 07: Modularização: funções As funções em programação são inspiradas na matemática: • possuem dados de entrada (ilimitados); • possuem apenas um dado de saída; • devem realizar uma única tarefa; • facilita a reutilização em outras situações e programas; • fica fácil de nomear (o nome deve ser associado à tarefa); • fica fácil de testar e corrigir; • devem ser pequenas (caber na tela pode ser um critério); • após aprovadas podem ser reutilizadas até em outros programas sem testes; • são chamadas pelo nome; • seu uso organiza o código; • sempre que precisar realizar aquela tarefa, basta chamá-la; Lógica de Programação AULA 07: Modularização: funções • A ideia básica do projeto de um programa é reduzi-lo a uma sequência de tarefas, cada uma realizada por um módulo (função). • A função principal, Main (em C), é responsável pelo gerenciamento principal das “chamadas” de função, fazendo uma espécie de distribuição e terceirização das tarefas. • Dividir o programa em uma sequência de tarefas (funções) normalmente gera a necessidade de se programar um grande número de funções. Lógica de Programação AULA 07: Modularização: funções • As funções devem ser especificadas detalhadamente. • Um critério para saber se a tarefa atribuída a uma função está bem especificada pode ser a facilidade de nomeá-la. • Esta lógica permite o trabalho em equipe, pois os programadores vão desenvolver funções e não o programa. • As linguagens disponibilizam funções pré-definidas organizadas em bibliotecas temáticas. Lógica de Programação AULA 07: Modularização: funções Conhecendo a Nomenclatura Lógica de Programação Função AULA 07: Modularização: funções Pode-se entender a função como um pequeno programa (módulo) que recebe valores de entrada em parâmetros declarados especificamente para este fim, realiza sua tarefa processando os dados de entrada e retorna um valor como resposta. Lógica de Programação Função AULA 07: Modularização: funções Exemplo: função que calcula a média aritmética de dois números. Nome da função: media Dados de entrada: 2 números quaisquer Parâmetros (variáveis) que receberão os dados de entrada: n1 e n2 Calcula a média e armazena o resultado em uma variável “local” med Valor retornado: a média dos 2 números fornecidos na entrada Lógica de Programação Definição da Função AULA 07: Modularização: funções <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 } Lógica de Programação Definição da Função AULA 07: Modularização: funções <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 } Tipo de função: tipo do dado retornado pela função Declaração dos parâmetros: variáveis declaradas para receber dados de entrada na chamada Declaração das variáveis locais: variáveis necessárias para a execução da tarefa Comandos: linhas de código responsáveis pela execução da tarefa da função Return: comando que retorna o valor de resposta da função Lógica de Programação Função AULA 07: Modularização: funções float media (float n1, float n2) { float med; med = (n1+n2)/2; return med; } Função media que retorna um número real e recebe 2 números reais nos parâmetros n1 e n2 Declaração de variável real para armazenar o valor da média Calcula o valor da média de n1 e n2 e armazena em med Retorna o valor armazenado em med (média calculada) Lógica de Programação Cabeçalho da Função AULA 07: Modularização: funções <tipo de função>nomeDaFunção(declaração dos parâmetros) Exemplo: float media (float n1, float n2) Lógica de Programação Cabeçalho da Função AULA 07: Modularização: funções <tipo de função>nomeDaFunção(declaração dos parâmetros) Exemplo: float media (float n1, float n2) Corpo da Função - Escopo Lógica de Programação Cabeçalho da Função AULA 07: Modularização: funções <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 } Corpo da Função - Escopo Lógica de Programação Cabeçalho da Função AULA 07: Modularização: funções <tipo de função>nomeDaFunção(declaração dos parâmetros) + Lógica de Programação Cabeçalho da Função AULA 07: Modularização: funções <tipo de função>nomeDaFunção(declaração dos parâmetros) + ; Lógica de Programação Cabeçalho da Função AULA 07: Modularização: funções <tipo de função>nomeDaFunção(declaração dos parâmetros) = Protótipo da Função Lógica de Programação Cabeçalho da Função AULA 07: Modularização: funções <tipo de função>nomeDaFunção(declaração dos parâmetros); Exemplo: float media (float n1, float n2); = Protótipo da Função O protótipo da função pode ser visto como uma declaração da função, como o compilador tem que “entender” o código lido, é necessário que ele conheça a função para poder criticar se a chamada está correta. Lógica de Programação AULA 07: Modularização: funções Como uma Função é Chamada? Lógica de Programação AULA 07: Modularização: funções Como chamar uma Função? Descrição: cabeçalho da função • Dados de entrada: • qualquer quantidade; • os dados de entrada devem ser fornecidos. • Valor de retorno: • Pode ser armazenado em uma variável; • Pode ser utilizado em uma expressão; • Pode não existir. Pelo Nome Lógica de Programação AULA 07: Modularização: funções TIPOS da função (tipo do valor de retorno) void int float double char ... Lógica de Programação AULA 07: Modularização: funções Como os Valores são Passados? Passagem por Valor Lógica de Programação AULA 07: Modularização: funções Como os Valores são Passados? Passagem por Valor Exemplo: Você empresta seu caderno para xerocar. Lógica de Programação AULA 07: Modularização: funções Exemplo 1: função que imprime o texto “Logica de Programacao” Tarefa: imprimir o texto “Logica de Programacao” Dados de entrada: não possui Valor de retorno: não possui void msg() { cout<<“Logica de Programacao”; } como chamar? int main (void) { msg(); return 0; } Lógica de Programação AULA 07: Modularização: funções Exemplo 1: função que imprime o texto “Logica de Programacao” Tarefa: imprimir o texto “Logica de Programacao” Dados de entrada: não possui Valor de retorno: não possui parênteses vazios: sem dados de entrada chamada isolada de função: sem valor de retorno como chamar? int main (void) { msg(); return 0; } Lógica de Programação AULA 07: Modularização: funções Exemplo 2: função que calcula a média entre dois números fornecidos Tarefa: calcular a média de 2 números Dados de entrada: 2 números Valor de retorno: média float media (float n1, float n2) { float med; med=(n1+n2)/2; return med; } como chamar? int main (void) { float a,b,m; cin>>a; cin>>b; m=media(a,b); cout>>med; return 0; } Lógica de Programação AULA 07: Modularização: funções Exemplo 2: função que calcula a média entre dois números fornecidos Tarefa: calcular a média de 2 números Dados de entrada: 2 números Valorde retorno: média dados de entrada fornecidos na ordem definida valor de retorno armazenado na variável m Como toda expressão de atribuição: 1. resolve o lado direito (executa a função) 2. atribui o valor como chamar? int main (void) { float a,b,m; cin>>a; cin>>b; m=media(a,b); cout>>med; return 0; } Lógica de Programação AULA 07: Modularização: funções Exemplo 3: função que calcula o montante a partir do capital, tx de juros e tempo Tarefa: calcular o montante devido a partir do capital, tx de juros e tempo Dados de entrada: capital, tx de juros e tempo em meses Valor de retorno: montante devido float jurosComp(float c, float i, float t) { float m; m=c*pow(1+i/100,t); return med; } Chamada da função pré-definida da linguagem para calcular potência. Retorna o 1º argumento elevado ao 2º. Lógica de Programação AULA 07: Modularização: funções Exemplo 3: função que calcula o montante a partir do capital, tx de juros e tempo Tarefa: calcular o montante devido a partir do capital, tx de juros e tempo Dados de entrada: capital, tx de juros e tempo em meses Valor de retorno: montante devido float jurosComp(float c, float i, float t) { float m; m=c*pow(1+i/100,t); return med; } int main (void) { float cap,tx,mont; int m; cin>>cap; cin>>tx; cin>>t; mont=jurosComp(cap,tx,m); cout>>mont; return 0; } como chamar? Lógica de Programação AULA 07: Modularização: funções Exemplo 3: função que calcula o montante a partir do capital, tx de juros e tempo Tarefa: calcular o montante devido a partir do capital, tx de juros e tempo Dados de entrada: capital, tx de juros e tempo em meses Valor de retorno: montante devido dados de entrada fornecidos na ordem definida valor de retorno armazenado na variável mont Como toda expressão de atribuição: 1. resolve o lado direito (executa a função) 2. atribui o valor int main (void) { float cap,tx,mont; int m; cin>>cap; cin>>tx; cin>>t; mont=jurosComp(cap,tx,m); cout>>mont; return 0; } como chamar? Lógica de Programação AULA 07: Modularização: funções Localização da Função ANTES da main() FUNÇÃO main() Lógica de Programação AULA 07: Modularização: funções Localização da Função DEPOIS da main() main() FUNÇÃO Lógica de Programação AULA 07: Modularização: funções Programa com ERRO Lógica de Programação AULA 07: Modularização: funções Lógica de Programação AULA 07: Modularização: funções Eu pensei que, se colocássemos antes da main(), nunca teríamos problemas. E agora? Lógica de Programação AULA 07: Modularização: funções A primeira solução para esse problema, seria colocar a função dobra(...) antes da função soma(...), mas, em outras situações, pode ficar complicado. Lógica de Programação AULA 07: Modularização: funções Lógica de Programação AULA 07: Modularização: funções A segunda solução para esse problema, seria declarar (protótipos) das funções antes de defini-las e, preferencialmente, posicioná-las depois da main(). Lógica de Programação AULA 07: Modularização: funções Lógica de Programação AULA 07: Modularização: funções Lógica de Programação AULA 07: Modularização: funções Variável GLOBAL x Variável LOCAL Lógica de Programação AULA 07: Modularização: funções Variável GLOBAL x Variável LOCAL Declarada FORA de todas as Funções Lógica de Programação AULA 07: Modularização: funções Variável GLOBAL x Variável LOCAL Declarada FORA de todas as Funções Lógica de Programação AULA 07: Modularização: funções Variável GLOBAL x Variável LOCAL Declarada FORA de todas as Funções Declarada DENTRO das Funções Lógica de Programação AULA 07: Modularização: funções Lógica de Programação AULA 07: Modularização: funções Lógica de Programação AULA 07: Modularização: funções Vamos ao Bate Pronto Lógica de Programação AULA 07: Modularização: funções 1) Cite duas vantagens de se definir funções. Lógica de Programação AULA 07: Modularização: funções 1) Cite duas vantagens de se definir funções. R: Dividir o programa em partes menores e reusá-las em vários programa. Lógica de Programação AULA 07: Modularização: funções 1) Cite duas vantagens de se definir funções. R: Dividir o programa em partes menores e reusá-las em vários programa. 2) O que contém o Cabeçalho de uma função? Lógica de Programação AULA 07: Modularização: funções 1) Cite duas vantagens de se definir funções. R: Dividir o programa em partes menores e reusá-las em vários programa. 2) O que contém 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. Lógica de Programação AULA 07: Modularização: funções 3) O que é o protótipo de uma função? Lógica de Programação AULA 07: Modularização: funções 3) O que é o protótipo de uma função? R: É o cabeçalho da função com ; ao final. Lógica de Programação AULA 07: Modularização: funções 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? Lógica de Programação AULA 07: Modularização: funções 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. Lógica de Programação AULA 07: Modularização: funções 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? Lógica de Programação AULA 07: Modularização: funções 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. Lógica de Programação AULA 07: Modularização: funções 6) Qual a diferença 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.
Compartilhar