Buscar

Relatorio de algoritmos e logica de programacao

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

Prévia do material em texto

Relatorio de algoritmos e logica de programacao 
 
Édipo cabral 
 
Eng civil 
 
Neste relatório, é apresentado o desenvolvimento de um código de programação em 
linguagem C para abordar a conjectura de Collatz, um problema matemático que afirma 
que qualquer número natural pode ser reduzido a 1 por meio de uma sequência de 
operações simples. O objetivo é demonstrar o uso de algoritmos e lógica de 
programação para resolver o referido problema matemático. Na introdu- ção, é feita 
uma contextualização sobre a conjectura de Collatz e sua relevância para a ciência da 
computação. Nos métodos, é descrito o algoritmo utilizado para implementar o código 
em C, explicando as estruturas de controle, as variáveis e as funções envolvidas. Por 
fim, na subseção resultados, são apresentados as saídas obtidas pelo código, que são 
declaradas como satisfatórias na conclusão por sua primazia aos valores esperados. 
 
 
 
1 Introdução 
 
A conjectura de Collatz foi proposta pelo matemático alemão Lothar Collatz em 1937 e 
desde então tem desafiado os melhores matemáticos do mundo (Onody, 2021). Ainda 
não foi provada ou refutada a conjectura até os dias atuais. A conjectura parece ser 
muito simples, mas esconde uma complexidade enorme. Existem números que têm 
trajetórias de Collatz muito longas e imprevisíveis. Por exemplo, o número 27 tem uma 
trajetória de Collatz com 111 passos e atinge o valor máximo de 9.232. Ainda não se 
sabe se existe algum número que nunca chega ao 1 ou se existe algum padrão nas 
trajetórias de Collatz. 
 
 
 
 
A conjectura de Collatz é um dos grandes mistérios da matemática. Esta conjectura 
afirma que, se tomarmos qualquer número inteiro não-zero e aplicarmos uma regra sim- 
ples, sempre chegaremos ao número 1 depois de um número finito de passos. A regra a 
seguinte: se o número for par, dividimos ele por 2; se for impar, multiplicamos ele por 3 
e somamos 1. Para exemplificar, uma ilustração prática pode ser feita com o número 6, 
tem-se a seguinte sequência: 6, 3, 10, 5, 16, 8, 4, 2, 1. Essa sequência é chamada de 
trajetória de Collatz do número 6. 
 
 
 
 
A conjectura tem implicações profundas para a teoria dos números e para a física 
(Andrei and Masalagiu, 1998). Se a conjectura for verdadeira, ela revelaria uma proprie- 
dade universal e surpreendente de todos os números inteiros não-zero. Essa propriedade 
seria muito diferente de qualquer outra conhecida na matemática. Além disso, a conjec- 
tura poderia ser usada para modelar e explicar alguns fenómenos físicos que envolvem 
sistemas caóticos e dinâmicos como pode ser verificado no estudo de Feiteira (2010). A 
conjectura de Collatz é um exemplo de como a matemática pode gerar problemas 
simples, mas intrigantes, que nos levam a explorar as fronteiras do conhecimento. 
 
 
 
def collatz_sequence(n): 
sequence= [n] 
while n = 1: 
if n % 2 == 0: 
n = n // 2 
else: 
n = 3* n + 1 
sequence.append(n) 
 
return sequence 
 
# Solicitar o número de entrada numero= int(input("Digite um número inteiro positivo 
maior que 1: ")) 
 
# Calcular a sequência de Collatz sequencia = collatz_sequence (numero) 
 
# Exibir a sequência de Collatz print("Sequência de Collatz: ", sequencia) 
 
 
 
2 Métodos e Resultados 
 
 
Nesta seção, os métodos e resultados são apresentados. Inicialmente é descrito o 
algoritmo da conjectura, sendo posteriormente feito um pseudo-código para auxiliar na 
elaboração do código propriamente dito que é, também, apresentado. Ao final, apresenta 
algumas saídas deste código para mostrar os resultados satisfatórios. 
 
2.1 Métodos 
 
A conjectura de Collatz é um problema matemático que afirma que, dado um número 
inteiro positivo n, se ele for par, deve-se dividir por 2; se for impar, deve-se 
multiplicardove por 3 e somar 1. Repetindo esse processo, eventualmente se chegará ao 
número 1, inde- pendentemente do valor inicial de n (Onody, 2021). Para implementar 
essa conjectura em linguagem C. o primeiro passo foi entender o algoritmo que 
descreve esse processo. 
 
 
 
 
 
O algoritmo consiste em um laço de repetição que verifica se o número é par ou ímpar e 
aplica a operação correspondente, até que o número seja igual a 1. Em seguida, foi feito 
um pseudo código, que é uma forma simplificada e estruturada de representar o 
algoritmo 
 
2 
 
 
em linguagem natural, sem se preocupar com a sintaxe da linguagem de programação O 
pseudo código ficou assim: 
 
Inicio 
Leia n 
Enquanto a diferente de 1 faça 
Se n mod 2 igual a 0 então 
 
n=n / 2 
 
Senão 
 
n=3*n+1 
 
Fim se 
 
Escreva n 
 
Fim enquanto 
 
Fim 
 
 
Depois de ter o pseudo código, foi feito o código propriamente dito em linguagem C, 
usando as estruturas de controle e as funções adequadas. O código ficou assim 
 
 
‐--------------------------------------------- 
// Programa: collatz.c 
 
// Uso: Aplicação da conjectura de Collatz 
 
// Autor: Édipo Cabral Nascimento 
 // Data: 17 outubro de 2023 
 
 
// A função main é o ponto de entrada 
 
int main() { 
 
// Declaramos uma variável 'n' para armazenar o número inserido 
int n; 
 
 
// Insere um número 
 
printf("Digite um número inteiro positivo maior que 1: "); scanf("%d", &n); 
 
// Iniciamos um loop que continuará até que 'n' seja igual a 1 while (n = 1) { 
 
// Imprimimos o valor atual de 'n' printf("%d, ", n); 
 
// Verificamos se 'n' é par 
 
if (n % 2 == 0) { 
 
// Se 'n' for par, dividimos por 2 
 
n = n / 2; 
 
} else { 
 
 
3 
 
 
‐‐--------------------------------------------- 
 
// So 'n' for impar, multiplicamos por 3 e somamos 1 n3n+ 1; 
 
} 
 
} 
 
// Quando 'n' se torna 1, saímos do loop e imprimimos o valor final de 'n' printf("%d\n", 
n); 
 
// A função main retorna 0 para indicar que o programa terminou com sucesso return 0; 
 
} 
 
‐---------------------------------------------- 
 
Por fim, foi implementado o código no aplicativo Dev-C++, com o auxílio dos estudos 
descrito no clássico livro Vetterling (2002), que é um ambiente integrado de desenvolvi- 
mento para a linguagem C. O aplicativo permite compilar e executar o código, além de 
mostrar possíveis erros e avisos. 
 
2.2 
 
Resultados 
 
seguir, é apresentado algumas saídas do código no Dev-C++, sendo referidos números 
10, 50 e 1000. 
 
 
 
Figura 1: Saída do código elaborado para a Conjectura de Collatz do número 10. 
 
 
 
 
 
 
Figura 2: Saída do código elaborado para a Conjectura de Collatz do número 50 
 
 
 
 
 
Figura 3: Saída do código elaborado para a Conjectura de Collatz do número 1000. 
 
 
 
 
 
Como observa-se nas Figuras 1, 2 e 3, os resultados foram satisfatórios, pois obteve- se 
o valor esperado de 1 (um) como valor final da conjectura, seguindo os passos do 
algoritmo da mesma. 
 
3 Conclusões 
 
O objetivo deste relatório foi desenvolver um código na linguagem C para a Conjectura 
de Collatz, a qual afirma que qualquer número natural positivo eventualmente chega a 1 
se for aplicada a regra: se o número for par, divida-o por 2; se for impar, multiplique-
odows por 3 e some 1. O código elaborado foi capaz de executar essa regra e mostrar o 
número clirações para de passos necessários para que cada número testado chegasse a 
 
1. Os resultados das 
de passos necessarios para que cada numero testado cnegasse a 1. Us resultados das 
ilustrações práticas para os números 10, 50 e 1000 comprovaram a eficácia do código, 
pois todos eles atingiram o valor esperado seguindo a regra da conjectura, convergindo 
assim para resultados satisfatórios propostos neste relatório. 
 
Referências 
 
Andrei, S. and Masalagiu, C. (1998), 'About the collatz conjecture', Acta Informatica 
35, 167-179. 
 
Feiteira, R. (2010), 'Problemas sem solução: Uma pequena investigação sobre o 
problemado ws de collatz', Educação e Matemática (107), 18-23. 
Onody, R. N. (2021), 'A conjecturade collatz'. 
 
Vetterling, W. T. (2002), Numerical recipes example book (c++): The art of scientific 
computing, Cambridge University Press.

Continue navegando