Sistema de Numeração em Código
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 += simbolo | Adiciona o símbolo romano à variável resultado. |
| numero -= valor | Subtrai o valor correspondente do número original. |
| return resultado | Retorna 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 = 0 | Inicializa a variável que acumulará o resultado final. |
| valor_anterior = 0 | Guarda 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 -= valor | Subtrai o valor do total. |
| else: | Caso contrário… |
| total += valor | Soma o valor ao total. |
| valor_anterior = valor | Atualiza o valor anterior para a próxima comparação. |
| return total | Retorna 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 – 1 | Calcula a posição (unidade, dezena, centena…). |
| int(algarismo) | Converte o algarismo para número. |
| 10 ** posicao | Calcula potência de 10. |
| Multiplicação | Obté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. |
| elif | Caso o usuário escolha a segunda opção. |
| input(…) | Recebe número romano. |
| .upper() | Converte para maiúsculo. |
| else | Caso 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]