dezembro 27, 2025

Dízima Periódica em Código

Por admin

Sobre a Matemática

Dízima periódica é um número decimal infinito e repetitivo, no qual um ou mais algarismos se repetem indefinidamente após a vírgula. Surge quando uma divisão não é exata e o resto passa a se repetir.

Na divisão 31/99 o quociente é 0,313131… onde esse resultado é um exemplo de dízima periódica. Os algarismos 3 e 1 (que formam o período) repetem-se infinitamente.

Sobre o Código

Na linguagem de programação Python,

def – é a palavra-chave que define uma função em Python, permitindo agrupar instruções reutilizáveis.

= – é o operador de atribuição que associa um valor a uma variável.

// – é o operador de divisão inteira, retorna apenas a parte inteira do quociente.

{} – delimitador de dicionário,estrutura de dados que armazena pares chave–valor.

[] – delimitador da lista, estrutura de dados ordenada e mutável para armazenar vários valores.

while – é a estrutura de repetição que executa um bloco enquanto a condição for verdadeira.

!= – é o operador relacional que verifica se dois valores são diferentes.

if..in.. – é a estrutura condicional que verifica se um valor pertence a uma coleção.

restos[resto] – acessa ou armazena um valor no dicionário usando a chave resto.

[inicio_periodo:] – é o fatiamento (em inglês, slicing) de lista ou string a partir de um índice até o final.

[:inicio_periodo] – é o fatiamento de lista ou string do início até um índice específico.

break – interrompe imediatamente a execução de um laço.

*= – é o operador de atribuição com multiplicação (multiplica e atribui).

.append – é o método de lista que adiciona um elemento ao final.

str() – é a função que converte um valor para o tipo string.

%= – é o operador de atribuição com módulo (resto da divisão).

+= – é o operador de atribuição com soma (incrementa um valor).

else: – é o bloco executado quando a condição anterior não é satisfeita.

f"..." – f-string, abreviação de literal de string formatado (em inglês, formatted string literal), permite inserir variáveis dentro de textos.

.join – une elementos de uma lista de strings em uma única string.

print() – exibe informações no console (saída padrão).

from – importa elementos específicos de um módulo.

fractions – é o módulo da biblioteca padrão para trabalhar com números racionais.

import – é o comando para carregar módulos ou bibliotecas.

Fraction – é a classe que representa frações exatas (números racionais).

float() – é a função que converte um valor para número decimal de ponto flutuante.

# – é usado para criar comentários ao código, que são notas para se entender melhor o que o código faz.

Vamos ao código…

def dizima_periodica(numerador, denominador):
    """
    Calcula a dízima periódica de uma fração
    e identifica o período da repetição.
    """
    
    parte_inteira = numerador // denominador
    resto = numerador % denominador
    
    restos = {}
    casas_decimais = []
    posicao = 0

    while resto != 0:
        # Se o resto já apareceu, existe período
        if resto in restos:
            inicio_periodo = restos[resto]
            periodo = casas_decimais[inicio_periodo:]
            nao_periodica = casas_decimais[:inicio_periodo]
            break
        
        restos[resto] = posicao
        resto *= 10
        casas_decimais.append(str(resto // denominador))
        resto %= denominador
        posicao += 1
    else:
        # Caso não exista dízima periódica
        periodo = []
        nao_periodica = casas_decimais

    # Montagem da representação decimal
    if periodo:
        decimal = f"{parte_inteira},{''.join(nao_periodica)}({''.join(periodo)})"
    else:
        decimal = f"{parte_inteira},{''.join(casas_decimais)}"

    print(f"Fração: {numerador}/{denominador}")
    print(f"Representação decimal: {decimal}")

# Exemplo clássico de dízima periódica
dizima_periodica(31, 99)
Código Python (.py)O que faz
def dizima_periodica(numerador, denominador):Define uma função que recebe o numerador e o denominador de uma fração.
“””…”””Docstring: documenta o objetivo da função. É delimitado por três aspas.
parte_inteira = numerador // denominadorCalcula a parte inteira da divisão usando divisão inteira.
resto = numerador % denominadorCalcula o resto da divisão, base para gerar a dízima.
restos = {}Cria um dicionário para armazenar restos já encontrados.
casas_decimais = []Cria uma lista para armazenar as casas decimais geradas.
posicao = 0Controla a posição de cada resto na divisão.
while resto != 0:Inicia o laço enquanto a divisão não for exata.
if resto in restos:Verifica se o resto já apareceu antes.
inicio_periodo = restos[resto]Marca onde começa a repetição (período).
periodo = casas_decimais[inicio_periodo:]Extrai os algarismos que formam o período.
nao_periodica = casas_decimais[:inicio_periodo]Extrai a parte não periódica da dízima.
breakInterrompe o laço ao encontrar o período.
restos[resto] = posicaoArmazena o resto atual com sua posição.
resto *= 10Multiplica o resto por 10 para gerar a próxima casa decimal.
casas_decimais.append(str(resto // denominador))Calcula e armazena o próximo dígito decimal.
resto %= denominadorAtualiza o resto da divisão.
posicao += 1Avança a posição da casa decimal.
else:Executa se o laço terminar sem repetição.
periodo = []Indica que não existe período.
nao_periodica = casas_decimaisToda a parte decimal é não periódica.
if periodo:Verifica se foi encontrado um período.
decimal = f”{parte_inteira},{”.join(nao_periodica)}({”.join(periodo)})”Monta a representação da dízima periódica.
else:Caso não exista período.
decimal = f”{parte_inteira},{”.join(casas_decimais)}”Monta o número decimal finito.
print(f”Fração: {numerador}/{denominador}”)Exibe a fração original.
print(f”Representação decimal: {decimal}”)Exibe a representação decimal da fração.
dizima_periodica(31, 99)Chama a função com um exemplo clássico de dízima periódica.

Saída do código (valor de retorno)…

Fração: 31/99
Representação decimal: 0,(31)
# Utilizando biblioteca Python para frações
from fractions import Fraction

def dizima_periodica_com_biblioteca(numerador, denominador):
    """
    Representa uma fração como dízima periódica
    utilizando biblioteca Python.
    """
    
    fracao = Fraction(numerador, denominador)
    valor_decimal = float(fracao)

    print(f"Fração: {fracao}")
    print(f"Valor decimal aproximado: {valor_decimal}")
    print("Observação: se o decimal for infinito e repetitivo, trata-se de uma dízima periódica.")

# Exemplo clássico
dizima_periodica_com_biblioteca(31, 99)
Código Python (.py)O que faz
from fractions import FractionImporta a classe Fraction, usada para representar números racionais.
def dizima_periodica_com_biblioteca(numerador, denominador):Define uma função que recebe o numerador e o denominador da fração.
“””…”””Docstring: documenta o objetivo da função. É delimitado por três aspas.
fracao = Fraction(numerador, denominador)Cria uma fração exata (número racional).
valor_decimal = float(fracao)Converte a fração em um valor decimal aproximado.
print(f”Fração: {fracao}”)Exibe a fração na forma numerador/denominador.
print(f”Valor decimal aproximado: {valor_decimal}”)Exibe a representação decimal da fração.
print(“Observação: se o decimal for infinito e repetitivo, trata-se de uma dízima periódica.”)Informa o conceito matemático da dízima periódica.
dizima_periodica_com_biblioteca(31, 99)Chama a função com um exemplo clássico de dízima periódica.

Saída do código (valor de retorno)…

Fração: 31/99
Valor decimal aproximado: 0.31313131313131315
Observação: se o decimal for infinito e repetitivo, trata-se de uma dízima periódica.

Fonte:

  • Editora Didática Paulista. Ensino Didático 2000: Ensino Fundamental e Ensino Médio. Sorocaba: Editora Didática Paulista, [s.d.].
  • Códigos e comentários gerados por ChatGPT com revisão nossa.
  • https://docs.python.org/pt-br/3/ [Documentação Oficial do Python]