Mostrando postagens com marcador programação. Mostrar todas as postagens
Mostrando postagens com marcador programação. Mostrar todas as postagens
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.
segunda-feira, 15 de fevereiro de 2016
Algoritmo dos Números Primos resolvido e comentado!
Um dos mais comuns exercícios passados nas faculdades e cursos que ensinam programação é o do número primo. Hoje vamos resolve-lo.
1) Escreva um algoritmo que receba a quantidade de números primos que o usuário deseja visualizar, e os escreva.
Um número primo é aquele que só é divisível por ele e por um, onde o resto da divisão é diferente de 0 para todos os demais números.
Portanto para resolver esse algoritmo, vamos nos utilizar dos contadores e divisões( ou o resto das mesmas).
Vale lembrar que o que for marcado em aspas são comentários para seu melhor entendimento do algoritmo.
INICIO.
VARIAVEIS v_qde, v_contador, v_contador_2, v_cont_primo, v_resto_div;
v_contador = 0;
v_cont_primo = 1;
ESCREVA "Digite a quantidade de números primos que deseja receber";
LEIA v_qtde; " Entrada de dados
ESCREVA "Seguem os números primos :"
ENQUANTO v_qtde <> 0; "A ideia é dimunir a quantidade até 0"
v_contador = v_contador + 1;
v_contador2 = 0;
v_cont_primo = 0;
ENQUANTO v_contador <> v_contador2. "Enquanto os contadores forem diferentes, o contador 2 percorrerá de 1 até contador1 para verificar a quantidade de números divisíveis onde o resto for igual a 0.
v_resto_div = RESTO ( v_contador / v_contador2). " A ideia é pegar o resto da divisão. Corresponde ao comando MOD / % em muitas linguagens de programação.
SE v_resto_div = 0;
v_cont_primo = v_cont_primo + 1;
FIMSE;
v_contador2 = v_contador2 + 1;
FIM ENQUANTO.
SE v_cont_primo = 2. "Quer dizer que ele só foi dividido com resto 0 por 1 e por ele mesmo. Portanto, é número primo
ESCREVA v_contador.
v_qtde = v_qtde -1. "Diminui a quantidade até que a mesma zere.
FIMSE.
FIMENQUANTO.
FIM.
A lógica é um pouco complicada de se entender no inicio, mas a melhor forma de fazer isso é utilizar o teste de mesa. Simule o funcionamento do algoritmo acima, assim fazendo seu passo-a-passo fica mais fácil, entender, seguir e estimular sua lógica.
Obrigado!
A lógica é um pouco complicada de se entender no inicio, mas a melhor forma de fazer isso é utilizar o teste de mesa. Simule o funcionamento do algoritmo acima, assim fazendo seu passo-a-passo fica mais fácil, entender, seguir e estimular sua lógica.
Obrigado!
Assinar:
Postagens (Atom)