fevereiro 13, 2026

Sistema de Numeração em Código

Por admin

Sobre a Matemática

Sistema de numeração são regras e símbolos usados para escrever números.

Veja um mesmo número escrito em três diferentes sistemas de numeração: IIII (egípcio, 2000 a.C.), XIV (romano, 400 d,C.) e 14 (nosso, 1500 d.C.).

Nosso sistema de numeração é o indo-arábico. Surgiu na Índia e foi aperfeiçoado pelos árabes, que o levaram para a Europa, onde se difundiu a partir de 1500.

É um sistema decimal e posicional, isto é, na escrita do número, cada algarismo tem uma posição, indicando unidades, dezenas, centenas, etc.

Portanto, ao mudar a posição do algarismo, muda-se o número. Por exemplo, 127 ≠ 217.

Sobre o Código

Na linguagem de programação Python,

def – é a palavra-chave usada para definir (criar) uma função.

[(),()] – é uma Lista ([]) contendo tuplas (()). É uma estrutura de dados onde cada tupla pode armazenar pares de valores.

for..in.. – é a estrutura de repetição usada para percorrer elementos de listas, strings, dicionários, etc.

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

>= – é o operador relacional que significa maior ou igual a.

+= – é o operador de atribuição com soma. Soma um valor à variável atual.

-= – é o operador de atribuição com subtração. Subtrai um valor da variável atual.

return – encerra a função e retorna um valor para quem a chamou.

{} – é a estrutura chamada dicionário. Armazena pares chave: valor.

reversed() – é a função que retorna uma sequência invertida.

if: – é a estrutura condicional usada para testar uma condição.

else: – é a parte da estrutura condicional executada quando o if é falso.

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

len() – é a função que retorna o tamanho (quantidade de elementos) de um objeto.

enumerate() – é a função que permite percorrer uma sequência (lista, string, etc.) retornando dois valores ao mesmo tempo: o índice (posição) e o elemento correspondente.

print() – é a função usada para exibir informações na tela.

f"...{}" – é uma string formatada (f-string). Permite inserir variáveis dentro do texto usando {}.

input() – é a função que permite receber dados digitados pelo usuário.

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

elif: – significa “else if”. Permite testar uma nova condição caso o if seja falso.

.upper() – é o método que transforma uma string em letras maiúsculas.

else: – é a estrutura executada quando nenhuma condição anterior (if ou elif) é verdadeira.

# – é 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…

# ==============================
# Sistema de Numeração Decimal e Romano
# Com entrada do usuário
# ==============================

# ------------------------------
# Função 1 – Decimal para Romano
# ------------------------------
def decimal_para_romano(numero):
    valores = [
        (1000, "M"), (900, "CM"),
        (500, "D"), (400, "CD"),
        (100, "C"), (90, "XC"),
        (50, "L"), (40, "XL"),
        (10, "X"), (9, "IX"),
        (5, "V"), (4, "IV"),
        (1, "I")
    ]

    resultado = ""

    for valor, simbolo in valores:
        while numero >= valor:
            resultado += simbolo
            numero -= valor

    return resultado
Código Python (.py)O que faz
def decimal_para_romano(numero):Define uma função chamada decimal_para_romano que recebe um número decimal como parâmetro.
valores = [Cria uma lista chamada valores.
(1000, “M”), …Cada tupla associa um número decimal ao símbolo romano correspondente.
resultado = “”Cria uma variável vazia que armazenará o número romano final.
for valor, simbolo in valores:Percorre cada tupla da lista valores.
while numero >= valor:Enquanto o número for maior ou igual ao valor atual, executa o bloco abaixo.
resultado += simboloAdiciona o símbolo romano à variável resultado.
numero -= valorSubtrai o valor correspondente do número original.
return resultadoRetorna o número convertido em romano.
# ------------------------------
# Função 2 – Romano para Decimal
# ------------------------------
def romano_para_decimal(romano):
    valores = {
        "I": 1, "V": 5,
        "X": 10, "L": 50,
        "C": 100, "D": 500,
        "M": 1000
    }

    total = 0
    valor_anterior = 0

    for letra in reversed(romano):
        valor = valores[letra]

        if valor < valor_anterior:
            total -= valor
        else:
            total += valor

        valor_anterior = valor

    return total
Código Python (.py)O que faz
def romano_para_decimal(romano):Define uma função que converte número romano para decimal.
valores = {}Cria um dicionário com símbolos romanos e seus valores decimais.
total = 0Inicializa a variável que acumulará o resultado final.
valor_anterior = 0Guarda o valor anterior para verificar subtrações (ex: IV = 4).
for letra in reversed(romano):Percorre o número romano da direita para esquerda.
valor = valores[letra]Obtém o valor decimal correspondente à letra romana.
if valor < valor_anterior:Verifica se deve subtrair (caso especial como IV ou IX).
total -= valorSubtrai o valor do total.
else:Caso contrário…
total += valorSoma o valor ao total.
valor_anterior = valorAtualiza o valor anterior para a próxima comparação.
return totalRetorna o número convertido para decimal.
# ----------------------------------------
# Função 3 – Mostrar valor posicional
# ----------------------------------------
def valor_posicional(numero):
    numero_str = str(numero)
    tamanho = len(numero_str)

    print(f"\nValor posicional do número {numero}:")

    for i, algarismo in enumerate(numero_str):
        posicao = tamanho - i - 1
        valor = int(algarismo) * (10 ** posicao)

        print(f"Algarismo {algarismo} na posição {posicao} vale {valor}")
Código Python (.py)O que faz
def valor_posicional(numero):Define função para mostrar valor posicional do número decimal.
numero_str = str(numero)Converte o número para texto para poder separar os algarismos.
tamanho = len(numero_str)Calcula quantos algarismos o número possui.
print(…)Exibe título informando o número analisado.
for i, algarismo in enumerate(numero_str):Percorre cada algarismo com seu índice.
posicao = tamanho – i – 1Calcula a posição (unidade, dezena, centena…).
int(algarismo)Converte o algarismo para número.
10 ** posicaoCalcula potência de 10.
MultiplicaçãoObtém o valor real do algarismo naquela posição e armazena na variável valor.
print(…)Mostra o valor posicional do algarismo.
# ------------------------------
# Programa principal
# ------------------------------

print("=== Sistema de Numeração ===")
print("1 - Converter Decimal para Romano")
print("2 - Converter Romano para Decimal")

opcao = input("Escolha uma opção (1 ou 2): ")

if opcao == "1":
    numero = int(input("Digite um número decimal: "))
    romano = decimal_para_romano(numero)

    print(f"Número decimal: {numero}")
    print(f"Em romano: {romano}")

    valor_posicional(numero)

elif opcao == "2":
    romano = input("Digite um número romano: ").upper()
    decimal = romano_para_decimal(romano)

    print(f"Número romano: {romano}")
    print(f"Em decimal: {decimal}")

    valor_posicional(decimal)

else:
    print("Opção inválida.")
Código Python (.py)O que faz
print(…)Mostra título do programa.
print(…)Mostra as opções disponíveis ao usuário.
input(…)Recebe a escolha do usuário.
if opcao == “1”:Verifica se o usuário escolheu converter decimal para romano.
input(…)Recebe o número digitado.
int()Converte texto para número inteiro.
romano = decimal_para_romano(numero)Converte o número para romano.
elifCaso o usuário escolha a segunda opção.
input(…)Recebe número romano.
.upper()Converte para maiúsculo.
elseCaso o usuário digite algo diferente de 1 ou 2.
print(…)Mostra mensagem de erro.

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

=== Sistema de Numeração ===
1 - Converter Decimal para Romano
2 - Converter Romano para Decimal
Número decimal: 217
Em romano: CCXVII

Valor posicional do número 217:
Algarismo 2 na posição 2 vale 200
Algarismo 1 na posição 1 vale 10
Algarismo 7 na posição 0 vale 7

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]