sexta-feira, 6 de maio de 2016
Funções em C : Como, Porquê e usos.
A Função em C, - e em praticamente todas as outras linguagens de programação-, pode ser definida como um trecho de código, responsáveis por executar determinada função. A função pode ou não receber e devolver parâmetros de entrada e saída.
Por que utilizar?
Reutilização de código - Vamos supor que hoje eu desenvolva um projeto em C de uma calculadora científica. E neste projeto separei em funções todos os cálculos necessários para o funcionamento da calculadora. Posteriormente, desenvolvo outro projeto para cálculo de impostos de determinada empresa. Em vista que já possuo métodos de cálculos que podem calcular alíquotas, taxas, percentuais e etc, é visível o ganho de tempo que posso ter aproveitando o código de um projeto em outro. Utilizando o conceito de funções, esse ganho é muito facilitado.
Manutenção mais fácil - Colocando o código dentro de uma função, em caso de necessidade de alteração deste código, somente se altera uma vez. No caso de não utilização de função, em todos os lugares onde o código é repetido, teria que ser alterado ( o que é um prato cheio para se esquecer algo e ter um trabalhão para se achar depois.
Modularização do programa - Em programas de grande porte, as funções podem ser utilizadas somente para melhorar a leitura e compreensão do código. Da maneira que desenvolvemos até agora, ao desenvolver grandes programas, dar manutenção aos mesmos pode ser complicado, principalmente se o código inicial for de outra pessoa. Pode ser mais fácil, criar uma função para leitura de dados, outra para o processamento e outra para exibição do resultado final.
Depois de toda essa teoria, vamos a prática - e para exemplificar, faremos o seguinte exercício :
O usuário digitará quantos números quiser, e o programa retornará se o número digitado é primo ou não.
Segue o código comentado:
#include <stdio.h>
#include <stdbool.h> /*Esta biblioteca nos permite usar os parâmetros TRUE e FALSE
Criação da função - com o parâmetro de entrada V_NUMERO
O tipo da função BOOL determina que a função retorne um valor VERDADEIRO ou FALSO.
*/
bool verifica_numero_primo(int v_numero)
{
int v_cont; /*Contador 1 até v_numero*/
int v_resto_div;
int v_cont_primo;
v_cont = 1;
v_cont_primo = 0;
while( v_numero >= v_cont )
{
v_resto_div = v_numero % v_cont ; /* operador % pega o resto da divisão, de 1 até o numero digitado*/
if(v_resto_div == 0) /* conta a quantidade de divisões que tiverem 0 como resto*/
{
v_cont_primo = v_cont_primo + 1;
}
v_cont++ ; /*O comando ++ soma 1 a variável atual */
}
if(v_cont_primo <= 2) /*Se for menor ou igual a 2, o numero é primo( divisível por 1 e por ele mesmo
Retorno da função: verdadeiro ou falso
*/
{
return (true);
}else{
return (false);
}
}
/*Código principal */
int main() {
int v_numero; /*Numero que sera verificado - digitado pelo usuário em tela */
bool v_primo; /* tipo bool - armazena true ou false*/
int tecla;
do {
/*Lê numero que sera verificado */
printf("Digite um numero \n");
scanf("%d", &v_numero);
/*Chama a função e armazena o retorno dela na variável v_primo
Para funções sem retorno, pode-se utilizar o tipo void
*/
v_primo = verifica_numero_primo(v_numero);
if (v_primo == true) {
printf("\nO numero %d e primo", v_numero);
}else{
printf("\nO numero %d nao e primo", v_numero);
}
printf("\n Digite ENTER para sair ou qualquer outra tecla para processar outro numero\n");
fflush(stdin); /*Limpa buffer do teclado*/
tecla = getchar(); /* Lê o carácter digitado em tela, se for igual a 13 ( código do enter na tabela ASCII, sai do programa, caso contrário, executa novamente*/
} while(tecla != 13 & tecla != 10);
}
Obs.: Utilizei o código do Enter para encerrar a execução do programa. Por padrão, o código do enter na tabela ASCII é 13, mas no computador que estou por exemplo, este código é igual a 10.
Obrigado e até a próxima.
Assinar:
Postagens (Atom)