C – Funções

Funções

As funções são blocos de instruções que facilitam o entendimento do código. Sua sintaxe é:

Tipo_da_função nome_da_função (tipo var1, tipo var2,…,tipo varN)

{

corpo da função

}

O tipo da função pode ser qualquer um dos mostrados até agora e representa o tipo do dado que é retornado pela função. Caso a função não retorne nenhum valor dizemos que ela é do tipo void. E caso não seja especificado nenhum tipo, por padrão a função retorna um inteiro. Mas é importante lembrar que sempre se deve declarar o tipo da função garantindo assim maior portabilidade. Entre parênteses estão os parâmetros da função que é constituído pelos nomes das variáveis que se deseja passar para função separados por virgulas e acompanhados de seus respectivos tipos, como mostra a sintaxe acima. No caso da função não conter parâmetros a lista de parâmetros será vazia, mas mesmo assim será necessário utilizar os parênteses. No corpo da função vem o código em C, este código é privativo da função, ou seja, nenhuma outra função poderá acessa-la com nenhum comando, exceto por meio de uma chamada a função. Isso quer dizer que o código da função não pode afetar outras partes do programa, a menos que sejam utilizadas variáveis Globais. Isto porque as variáveis contidas em uma função são locais, só existem naquela função. Essas variáveis são criadas quando entram na função e destruídas ao sair.

Para entender melhor o uso de funções veja o exemplo abaixo. Este programa calcula o fatorial de um número qualquer.

No programa acima temos a função main() que é obrigatória em qualquer programa, nela pedimos para que o usuário digite o número que se deseja calcular o fatorial. Depois chamamos a função CalculaFatorial passando para ela o argumento Num. É necessário que o tipo dos argumentos (Num) usados para chamar a função seja compatíveis com o tipo de seus parâmetros (x). Caso contrario poderá ocorrer erros. Ao chamar a função que calcula o fatorial o valor do argumento contido na variável Num é copiado para o parâmetro x da função CalculaFatorial e qualquer modificação no seu valor é feito apenas na variável local x, não alterando o valor da variável usada na chamada.

O comando return usado no final da função é o responsável por retornar um valor para a instrução que o chamou, neste caso para a variável Fatorial. Que por sua vez é impressa na tela.

Através do protótipo usado no inicio do programa é possível que o compilador verifique se existem erros nos tipos de dados entre os argumentos usados para chamar uma função e a definição de seus parâmetros. Além de verificar se a quantidade de argumentos é igual a quantidade de parâmetros, caso contrario causará erros na execução do programa. A sintaxe para definir o protótipo de uma função é dada por:

tipo Nome_Da_Função(tipo parametro1, tipo parametro2,…, tipo parametroN);

Caso a função não utilize nenhum parâmetro deve-se utilizar o void. Dessa forma teríamos:

tipo Nome_Da_Função(void);

É importante lembrar que antes que a função seja usada pela primeira vez é necessário que ela seja declarada. Isso ocorre devido o compilador C (em sua grande maioria) por padrão assume que uma função devolve um valor inteiro. Portanto se alguma função devolver um tipo diferente de inteiro o compilador gera um código errado para chamá-la. Por esse motivo que é importante declarar o tipo que a função retorna no inicio do programa e isso pode ser feito utilizando os protótipos. Além dos protótipos existe um outro método que era muito usado quando a linguagem C foi inventa, no entanto hoje ela é considerada obsoleta. Porém existem alguns programas que ainda usa este método obsoleto, dessa forma sua declaração seria:

tipo Nome_Da_Função();

A diferença deste método para o do protótipo é que neste mesmo que a função tenha argumentos não é preciso de declara-los. Na verdade o protótipo é uma extensão deste método.

Veja um outro exemplo de programa que utiliza função:

Neste ultimo programa, temos uma função que tem como parâmetros os coeficientes de uma equação do tipo: . Esta função verifica se a for igual a zero identificando assim a equação como sendo do 2º Grau e posteriormente se delta é maior ou igual a zero, caso seja a equação será resolvido pela formula de baskara. Caso delta seja menor que zero será impresso a seguinte mensagem: “Não foi possível calcular x1 e x2, pois são números imaginários”. Se a diferente de zero a equação será do 1º grau, então verifica se b é igual a zero, caso seja não terá solução, pois não pode haver divisão por zero. A função CalculaEquacao é do tipo void pois não retorna nenhum valor para função main(). Exatamente por esse motivo a função principal apenas chama a CalculaEquacao. A biblioteca “math.h” foi inserida pela diretiva include, ou seja, a linha “#include <math.h>” foi inserida no programa para que as funções pow() e sqrt() pudessem ser utilizadas. A função pow() calcula a base elevada à uma potencia. Já a função sqrt() calcula a raiz quadrada de um número. Estas e outras funções pertencentes à biblioteca math.h serão descritas e estudas com mais detalhes no decorrer deste tutorial.

No exemplo anterior não foi utilizada a função return, pois nenhum valor necessitou ser devolvido. Neste caso o programa retorna à função que a chamou quando o ultimo comando (}) da função CalculaEquacao for encontrado. É claro que a chave não estará no código-objeto do programa, mas pode-se imaginar como se estivesse. O código-objeto nada mais é do que o código contendo as instruções traduzidas para a linguagem de maquina.

Fonte: http://www.juliobattisti.com.br/tutoriais/katiaduarte/cbasico006.asp

Deixe um comentário