Funções na Linguagem C
Funções são estruturas que permitem ao programador separar o seu código em blocos. Se elas não existissem, muito provavelmente teríamos que escrever programas curtos e de pequena complexidade. Para fazermos programas grandes e complexos temos que construi-los bloco a bloco (é o recomendado, pela facilidade em dar manutenção futuramente). Uma função em C tem a seguinte forma geral:
Functions in C Language
Functions are structures that allow the programmer to separate your code into blocks. If they did not exist, most likely we would have to write short programs and low complexity. For large and complex programs do we have to build them block by block (is recommended to maintain the facility in the future). A function in C has the following form:
O tipo de retorno é o tipo de variável que a função irá retornar (se houver retorno). Por padrão é o tipo int, ou seja, se criarmos uma função e não especificarmos o tipo de retorno, esta será considerada como retornando um valor inteiro (experimente chamar a função main sem o uso do int). A declaração de parâmetros é uma lista com a seguinte forma geral:tipo_de_retorno nome_da_função (parametros_da_função)
{
corpo_da_função
}
Repare que o tipo da variável deve ser especificado para cada uma das "N" variáveis de entrada, isto é, se você for passar 3 parâmetros cada um deve acompanhar o seu tipo. É na declaração de parâmetros que informamos o compilador quais serão as entradas da função.tipo_de_variável nome1, tipo_de_variável nome2...
O corpo da função é onde as entradas são processadas, saídas são geradas ou outras funcionalidades executadas.
Return (retorno de funções)
O comando return tem sua forma geral:
ou simplismente:return valor_de_retorno;
Imagine que uma função está em execução. Ao chegar a uma declaração return a função é encerrada imediatamente (independente do que existir após o return, se existir), o valor de retorno é informado e a função o retorna ao ponto onde foi chamada.return;
É importante salientar que o valor de retorno fornecido tem que ser, pelo menos, compatível com o tipo de retorno declarado na função.#include <stdio.h>
int quadrado (int numero)
{
return numero * numero;
}
main (void)
{
int numero;
printf ("Entre com um numero inteiro: ");
scanf("%d", &numero);
numero = quadrado (numero); // o valor irá retornar p/ a mesma váriavel.
printf ("O seu valor quadrado vale: %i.\n", numero);
}
Uma função pode ter mais de uma declaração return. Por exemplo:
Note que, como as funções podem retornar valores podemos aproveitar isto para fazer atribuições. Exemplo:#include <stdio.h>
/* verifica se o número passado como argumento é par */
int par (int num)
{
if ((num % 2) == 0) // SE, o resto da divisão "NUMERO/2" for 0
return 0; // Retorna 0, o número é par
else
return 1; // Senão, retorna 1. O número não é par
}
main(void)
{
int numero;
printf ("Entre com um numero inteiro: ");
scanf("%d", &numero);
if ((par (numero)) == 0)
printf("O numero e par!\n");
else
printf ("O numero e impar!\n");
}
Então, quando devo criar uma função? Sempre que perceber que um determinado trecho do seu código repete diversas vezes. Se for considerar também que, criar um programa usando funções consome menos memória do que repetir o mesmo código diversas vezes. Considere também a facilidade em dar manutenção (atualizar, modificar, etc) em um código que utilizou funções, onde no caso a implementação será feita somente dentro da função sem afetar aos demais blocos do programa.int soma (int a, int b)
{
return a + b;
}
main(void)
{
int numero;
numero = soma (3,2); /* CERTO! O RETORNO 5 (int) SERÁ ATRIBUIDO À VARIAVEL "numero" que também é do tipo inteiro */
soma(2,3) = numero; / *ERRADO! */
Continuarei com o assunto posteriormente, aguarde