Funções Estrutura de Dados Marco Antonio Montebello Júnior [email protected] Funções Definições É um bloco de código do programa que pode ser usado diversas vezes em uma execução. Seção de código independente e autônoma, escrita para desempenhar uma tarefa específica. Linguagem C - Estrutura de Dados Funções Características Permite que o programa fique mais legível e melhor estruturado; Reutilização de código; Normalmente contém protótipo e definição da função; Cada função tem um nome único; Uma das características mais importantes da Linguagem C; Pode ter qualquer nome exceto main. Linguagem C - Estrutura de Dados Variáveis Locais e Globais Uma função pode chamar outras funções; O bloco que compreende o corpo da função (bloco entre { }) está escondido do resto do programa; Esse bloco não pode afetar nem ser afetado por outras partes do programa, a não ser que o código utilize variáveis globais. Linguagem C - Estrutura de Dados Variáveis Locais São declaradas dentro do main ou de uma função criada pelo usuário; Toda variável declarada dentro de um bloco { } podem ser referenciadas apenas dentro deste bloco; Existem apenas durante a execução do bloco de código no qual estão declaradas. Linguagem C - Estrutura de Dados Variáveis Globais São conhecidas por todo o programa; Podem ser utilizadas em qualquer parte do código; Permanecem com o seu valor durante toda a execução do programa; Deve ser declarada fora de qualquer função (até mesmo da função main). Linguagem C - Estrutura de Dados Variáveis Locais e Globais void Linha(int iTam); //Protótipo da função int iColuna; //Declaração de Variável GLOBAL main() //Função principal MAIN { int iValorLinha; //Declaração de Variável LOCAL ... iColuna = 10; Linha(iValorLinha); ... } void Linha(int iTam) //Definição da função { int iCont; //Declaração de Variável LOCAL ... for(iCont = 0; iCont < iTam; iCont++) ... for(iCont = 0; iCont < iColuna; iCont++) ... } Linguagem C - Estrutura de Dados Protótipo da Função Descrição da função que será definida posteriormente no programa. tipo_retorno <nome_da_função>(tipo_p <param1>, tipo <param2>, ...); tipo_retorno: tipo de dado que será retornado pela função; nome_da_função: nome que será dado a função, deve descrever resumidamente a funcionalidade da função; tipo_p e paramX: tipo e nome do(s) parâmetro(s) da função. Os parâmetros são separados por , (vírgula); Sempre termina com ; (ponto e vírgula). Linguagem C - Estrutura de Dados Protótipo da Função int iSoma (int iValorA, int iValorB); float fMedia (float fNota1, float fNota2); void Mensagem(); void Calculo(float fValorF, int iValorI, char cResp); Linguagem C - Estrutura de Dados Definição / Declaração da Função É a função propriamente dita; Composta de cabeçalho e corpo da função; O cabeçalho da função é idêntico ao protótipo com exceção do ; (ponto e vírgula); O corpo da função deve estar entre { ... }; Aparecem no mesmo código-fonte e após a função main() ou em arquivo independente. Linguagem C - Estrutura de Dados Definição da Função tipo_retorno <nome_da_função>(tipo_p <param1>, tipo <param2>, ...) { ... //Comando(s) } tipo_retorno: tipo de dado que será retornado pela função; nome_da_função: nome que será dado a função, deve descrever resumidamente a funcionalidade da função; tipo_p e paramX: tipo e nome do(s) parâmetro(s) da função. Os parâmetros são separados por , (virgula); Linguagem C - Estrutura de Dados Definição da Função int iSoma (int iValorA, int iValorB) { int iResultado; iResultado = iValorA + iValorB; return(iResultado); } void Mensagem() { printf(“Minha 1a. Função em Linguagem C!!!”); } Linguagem C - Estrutura de Dados Funções – Exemplo Geral Protótipo: float fMedia(float fNota1, float fNota2); Chamada: fMediaAluno = fMedia(10, 8); ou printf(“Resultado: %f!”, fMedia(5, 9)); Definição: float fMedia(float fNota1, float fNota2) { float fMed; fMed = (fNota1 + fNota2)/2; return(fMed); //return((fVal1 + fVal2)/2); } Linguagem C - Estrutura de Dados Parâmetros e Argumentos Parâmetros Entradas que a função recebe; Guardadores de lugar para um argumento; Fixos; Contém tipo e o nome do(s) dado(s); Argumentos Valores reais Linguagem C - Estrutura de Dados Passagem de parâmetros por Valor Valor de um argumento é copiado para o parâmetro formal da função; As alterações no processamento não alteram as variáveis. Protótipo: int iQuadrado(int iValor); Chamada: iResult = iQuadrado(10); Definição: int iQuadrado(int iValor) { int iTemp; iTemp = iValor * iValor; return(iTemp); } Linguagem C - Estrutura de Dados Passagem de parâmetros Referência Permite a alteração do valor de uma variável; É necessária a utilização de ponteiros; Protótipo: void iTroca(int *iValA, int *iValB); Chamada: iTroca(&iNumA, &iNumB); Definição: void iTroca(int *iValA, int *iValB) { int iTemp; iTemp = *iValA; *iValA = *iValB; *iValB = iTemp; } Linguagem C - Estrutura de Dados Funções que NÃO retornam valores São declaradas como void; O corpo da função contém apenas instruções e comandos. Protótipo: void Mensagem(int iVezes); Chamada: Mensagem(5); Definição: void Mensagem (int iVezes) { int i; for(i = 0; i < iVezes; i++) printf(“Ola mundo %i”, i); } Linguagem C - Estrutura de Dados Funções que RETORNAM valores São declaradas como char, int, float ou double; O valor do retorno deve ser armazenado em uma variável; O corpo da função além das instruções e comandos contém sempre o comando return. Linguagem C - Estrutura de Dados Funções que RETORNAM valores Protótipo: float fSoma(float fVal1, float fVal2); Chamada: fResultado = fSoma(10, 20); ou printf(“Resultado: %f!”, fSoma(15, 35)); Definição: float fSoma(float fVal1, float fVal2) { float fRes; fRes = fVal1 + fVal2; return(fRes); //return(fVal1 + fVal2); } Linguagem C - Estrutura de Dados Exercícios Criar uma função para exibir uma mensagem qualquer na tela. Escrever uma função que calcule a média 2 números do tipo float e retorne o valor calculado da média; Criar uma função que calcula uma equação do 2o. Grau Linguagem C - Estrutura de Dados Exercícios Criar uma função que converte a temperatura de graus Celsius para Fahrenheit ou vice-versa c= 5.0 / 9.0 * (f-32). f = 9.0 / 5.0 * c + 32 Criar um programa calculadora, utilizando funções para somar, subtrair, multiplicar e dividir Criar uma função que calcule o fatorial de um número fornecido pelo usuário. Linguagem C - Estrutura de Dados