Você está aqui: C ::: Dicas & Truques ::: Recursão (Recursividade)

Obtendo o fatorial de um determinado número usando recursão

Quantidade de visualizações: 14213 vezes


O fatorial de um determinado número, representado por n! equivale a multiplicar este número por seus antecessores. Assim, o fatorial de 4 (4!) pode ser calculado da seguinte forma:
4 x 3 x 2 x 1 = 24
Sempre que falamos de recursão, o cálculo de fatorial nos auxilia na exemplicação por ser relativamente fácil de se entender todas as etapas do processo. O código abaixo mostra uma função recursiva em C que calcula o fatorial de qualquer número. Tenha cuidado. Calcular o fatorial de um número maior que 10 pode tornar sua máquina extremamente lenta, além de, muitas vezes, não retornar os resultados esperados.
#include <stdio.h>
#include <stdlib.h>

// função recursiva para calcular o fatorial
// de um determinado número
int fatorial(int n){
  if(n == 0)
    return 1;
  else
    return n * fatorial(n - 1);
}

int main(int argc, char *argv[])
{
  // vamos calcular o fatorial de 5
  int res = fatorial(5);

  // exibe o resultado
  printf("O fatorial de 5 é: %d\n\n", res);

  system("pause");
  return 0;
}



C ::: C para Engenharia ::: Física - Mecânica

Como calcular a velocidade da queda livre de um corpo dado o intervalo de tempo (e a aceleração da gravidade) usando a linguagem C

Quantidade de visualizações: 637 vezes
A Queda Livre é um Movimento Uniformemente Variado, na qual um objeto em queda livre tem a sua velocidade aumentada a taxas constantes. Abandonado em alturas próximas da terra, a velocidade com que um corpo cai aumenta a uma taxa de aproximadamente 9,8m/s. Isso é o mesmo que dizer que a aceleração da gravidade terrestre é de 9,8m/s2, o que aumenta a velocidade do objeto em 35,28km/h a cada segundo.

Assim, a fórmula da velocidade de um objeto em queda livre é:

\[ \text{v} = \text{g} \cdot \text{t} \]

Onde:

v – velocidade de queda (m/s)

g – aceleração da gravidade (m/s2)

t – intervalo de tempo (s)

Vamos ver um exemplo? Veja o seguinte enunciado:

1) Um corpo é abandonado a uma altura qualquer no tempo 0s e está em queda livre. Calcule a sua velocidade no tempo 15s.

Como sabemos que o intervalo de tempo é 15s, só precisamos jogar na fórmula. Veja o código C completo para o cálculo:

Super Pack 10.000 Dicas e Truques de Programação e 500 Exercícios Resolvidos de Programação Este trecho de código ou resolução de exercício está disponível somente para apoiadores

Mas se você não puder nos apoiar agora, role a página e encontrará muito conteúdo gratuíto.

Ao executar este código C nós teremos o seguinte resultado:

A velocidade da queda livre é: 147.099747m/s

Se quisermos saber a velocidade em km/h, basta multiplicar o resultado por 3.6, o que dará 529.56km/h.

Vamos tornar o experimento mais interessante? Veja uma modificação no código C que mostra a velocidade da queda nos 10 primeiros segundos, de forma individual:

Super Pack 10.000 Dicas e Truques de Programação e 500 Exercícios Resolvidos de Programação Este trecho de código ou resolução de exercício está disponível somente para apoiadores

Mas se você não puder nos apoiar agora, role a página e encontrará muito conteúdo gratuíto.

Ao executar este código C nós teremos o seguinte resultado:

A velocidade no tempo 1: 9.806650m/s
A velocidade no tempo 2: 19.613300m/s
A velocidade no tempo 3: 29.419950m/s
A velocidade no tempo 4: 39.226601m/s
A velocidade no tempo 5: 49.033249m/s
A velocidade no tempo 6: 58.839901m/s
A velocidade no tempo 7: 68.646553m/s
A velocidade no tempo 8: 78.453201m/s
A velocidade no tempo 9: 88.259850m/s
A velocidade no tempo 10: 98.066498m/s


C ::: Estruturas de Dados ::: Lista Ligada Simples / Lista Encadeada Simples / Singly Linked List

Estruturas de Dados em C - Como remover um nó no final de uma lista ligada simples em C - Listas encadeadas em C

Quantidade de visualizações: 765 vezes
Nesta dica mostraremos como é possível excluir o nó no fim (o último nó) de uma lista encadeada simples (singly linked list) em C. Veja a função:

Super Pack 10.000 Dicas e Truques de Programação e 500 Exercícios Resolvidos de Programação Este trecho de código ou resolução de exercício está disponível somente para apoiadores

Mas se você não puder nos apoiar agora, role a página e encontrará muito conteúdo gratuíto.

Note que a função recebe um ponteiro para o início da lista e retorna também um ponteiro para o início da lista. Tenha o cuidado de verificar se a lista não está vazia antes de tentar fazer a exclusão. No exemplo eu fiz isso na função main(). Veja a listagem completa abaixo:

Super Pack 10.000 Dicas e Truques de Programação e 500 Exercícios Resolvidos de Programação Este trecho de código ou resolução de exercício está disponível somente para apoiadores

Mas se você não puder nos apoiar agora, role a página e encontrará muito conteúdo gratuíto.

Ao executar esse código você terá o seguinte resultado:

Super Pack 10.000 Dicas e Truques de Programação e 500 Exercícios Resolvidos de Programação Este trecho de código ou resolução de exercício está disponível somente para apoiadores

Mas se você não puder nos apoiar agora, role a página e encontrará muito conteúdo gratuíto.



C ::: Dicas & Truques ::: Matemática e Estatística

Como calcular juros compostos e montante usando C

Quantidade de visualizações: 9506 vezes
O regime de juros compostos é o mais comum no sistema financeiro e portanto, o mais útil para cálculos de problemas do dia-a-dia. Os juros gerados a cada período são incorporados ao principal para o cálculo dos juros do período seguinte.

Chamamos de capitalização o momento em que os juros são incorporados ao principal. Após três meses de capitalização, temos:

1º mês: M = P .(1 + i)
2º mês: o principal é igual ao montante do mês anterior: M = P x (1 + i) x (1 + i)
3º mês: o principal é igual ao montante do mês anterior: M = P x (1 + i) x (1 + i) x (1 + i)

Simplificando, obtemos a fórmula:

M = P . (1 + i)^n

Importante: a taxa i tem que ser expressa na mesma medida de tempo de n, ou seja, taxa de juros ao mês para n meses.

Para calcularmos apenas os juros basta diminuir o principal do montante ao final do período:

J = M - P

Vejamos um exemplo:

Considerando que uma pessoa empresta a outra a quantia de R$ 2.000,00, a juros compostos, pelo prazo de 3 meses, à taxa de 3% ao mês. Quanto deverá ser pago de juros?

Veja o código C para a resolução:

Super Pack 10.000 Dicas e Truques de Programação e 500 Exercícios Resolvidos de Programação Este trecho de código ou resolução de exercício está disponível somente para apoiadores

Mas se você não puder nos apoiar agora, role a página e encontrará muito conteúdo gratuíto.

Um outra aplicação interessante é mostrar mês a mês a evolução dos juros. Veja o código a seguir:

Super Pack 10.000 Dicas e Truques de Programação e 500 Exercícios Resolvidos de Programação Este trecho de código ou resolução de exercício está disponível somente para apoiadores

Mas se você não puder nos apoiar agora, role a página e encontrará muito conteúdo gratuíto.



C ::: Fundamentos da Linguagem ::: Estruturas de Controle

Apostila de C para iniciantes - Como criar um laço for infinito na linguagem C

Quantidade de visualizações: 8877 vezes
A linguagem C nos permite criar laços for infinitos. Para isso, só precisamos omitir as partes de inicialização, teste e incremento/decremento. Veja um exemplo:

Super Pack 10.000 Dicas e Truques de Programação e 500 Exercícios Resolvidos de Programação Este trecho de código ou resolução de exercício está disponível somente para apoiadores

Mas se você não puder nos apoiar agora, role a página e encontrará muito conteúdo gratuíto.

Veja que só usamos for(;;). Tenha o cuidado de fornecer uma forma de parar o laço. Do contrário seu programa executará até travar.


C ::: Dicas & Truques ::: Ponteiros, Referências e Memória

Apostila C para iniciantes - Como usar ponteiros na linguagem C

Quantidade de visualizações: 31463 vezes
Antes de pensarmos em ponteiros, é importante nos lembrarmos de alguns aspectos referentes à variáveis. Dependendo do seu conhecimento de programação, você deve saber que variáveis possuem nomes que as identificam durante a execução do programa. Você deve saber também que uma variável armazena um valor (que pode ser fixo, no caso de uma constante, ou pode mudar durante a execução de seus códigos).

O que poucos programadores se lembram é que uma variável possui um endereço, e que o nome da variável não é nada mais que um apelido para a localização deste endereço. Desta forma, um ponteiro não é nada mais que um tipo especial de variável que armazena o endereço de outra. Veja um exemplo:

Super Pack 10.000 Dicas e Truques de Programação e 500 Exercícios Resolvidos de Programação Este trecho de código ou resolução de exercício está disponível somente para apoiadores

Mas se você não puder nos apoiar agora, role a página e encontrará muito conteúdo gratuíto.

Neste código nós temos a declaração e definição de duas variáveis:

Super Pack 10.000 Dicas e Truques de Programação e 500 Exercícios Resolvidos de Programação Este trecho de código ou resolução de exercício está disponível somente para apoiadores

Mas se você não puder nos apoiar agora, role a página e encontrará muito conteúdo gratuíto.

A primeira variável é uma variável do tipo int e a segunda é um ponteiro para uma variável do tipo int. Veja que devemos sempre usar "*" antes do nome de um ponteiro em sua declaração. O símbolo "&" serve para indicar que estamos acessando o endereço de uma variável e não o seu conteúdo. O resultado destas duas linhas é que agora temos um ponteiro que nos permite acessar e manipular a variável valor.

Observe a linha:

Super Pack 10.000 Dicas e Truques de Programação e 500 Exercícios Resolvidos de Programação Este trecho de código ou resolução de exercício está disponível somente para apoiadores

Mas se você não puder nos apoiar agora, role a página e encontrará muito conteúdo gratuíto.

Aqui nós estamos acessando o valor da variável apontada por p. Veja o uso do símbolo "*" para acessar o valor da variável. Isso é chamado de desreferenciamento de ponteiros. Pareceu complicado? Veja uma linha de código que altera indiretamente o valor da variável valor para 30:

Super Pack 10.000 Dicas e Truques de Programação e 500 Exercícios Resolvidos de Programação Este trecho de código ou resolução de exercício está disponível somente para apoiadores

Mas se você não puder nos apoiar agora, role a página e encontrará muito conteúdo gratuíto.

Ponteiros são ferramentas muito importantes na programação em C. No entanto, é preciso ter muito cuidado ao lidar com eles. A primeira coisa a ter em mente é que um ponteiro não está apontando para nenhum lugar até que atribuimos a ele o endereço de uma outra variável. E é aí que mora o perigo. Um programa entra em colapso absoluto se tentarmos acessar um ponteiro que aponta para um local de memória que já foi liberado novamente ao sistema. No caso menos grave, estaremos tentando acessar locais de memória inválidos ou reservados a outros programas ou tarefas do sistema operacional. Isso me lembra os velhos tempos da tela azul de morte.


Veja mais Dicas e truques de C

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Elétrica pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 15 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

1º lugar: Java
2º lugar: C#
3º lugar: Delphi
4º lugar: PHP
5º lugar: Python
6º lugar: JavaScript
7º lugar: C
8º lugar: C++
9º lugar: VB.NET
10º lugar: JSP (Java Server Pages)



© 2021 Arquivo de Códigos - Todos os direitos reservados | Versión en Español | Versão em Português