Visual Basic 6 - Convertendo Decimais para números Romanos e vice-versa |
Neste artigo eu vou mostrar um programa feito na linguagem Visual Basic 6 que converte a notação decimal para a notação dos números romanos e vice-versa. |
Se você gosta de desafios vai gostar deste programa. Ele foi feito na linguagem Visual Basic 6 e converte números escritos na notação decimal para a números na notação de algarismos romanos e vice-versa.
O desafio é que o programa tem limitações e precisa ser incrementado para converter números maiores que 3999.
Os romanos usavam um sistema interessante para representar os números. Utilizavam sete letras do alfabeto e a cada uma delas atribuíam valores:
Os numerais I, X, C, M só podem ser repetidos até três vezes.
Os numerais I, X e C, escritos à direita de numerais maiores, somam-se seus valores aos desses numerais.
Os numerais I, X e C, escritos à esquerda de numerais maiores, subtraem-se seus valores aos desses numerais.
Colocando-se um traço horizontal sobre um ou mais numerais, multiplica-se seu valor por 1.000.
Antes de apresentar o programa vou resumir as regras e condições usadas para montar o algoritmo do código usado:
As regras usadas no programa são os seguintes:
• Os símbolos básicos são I (= 1), V (= 5), X (= 10), G
(= 50), C (= 100), D (= 500), e M (= 1000).
• Se uma letra é imediatamente seguida por uma de igual ou menor valor, os dois
números são adicionados; Assim, XX = 20, XV = 15, VI = 6.
• Se uma letra é imediatamente seguida por uma de maior valor, o primeiro é
subtraído a partir da segunda; assim, IV = 4, XL = 40, CM = 900.
• A barra sobre uma letra multiplica por mil; assim, um X com uma barra
sobre ele é igual a 10.000. Tais números não serão abordados por este projeto.
Exemplos: Os números de 1 a 10: I, II, III, IV,
V, VI, VII, VIII, IX, X
XLVII = 47, CXVI = 116, MCXX = 1120, MCMXIV =
1914.
Provavelmente a parte mais desafiadora de converter um número romano para
decimal não é conversão, mas sim validar a entrada.
Uma validação básica incluiria a conversão de entrada de teclas em maiúsculas
permitindo que apenas os caracteres I, V, X, L, C, D e M sejam
introduzidos.
Além
disso, as seguintes regras devem ser aplicadas:
• D, G, ou V podem aparecer cada um somente uma vez na cadeia
• M, C, X, ou I pode aparecer apenas três vezes consecutivas na seqüência
• Os seguintes pares de letras são inválidos em todos os casos: IL, IC, ID,
IM, XD, XM, VX, VL, VC, VD, VM, LC, LD, LM, DM.
• Uma vez que uma letra tenha sido subtraída, nem ela nem sua "contrapartida"
podem aparecer novamente na seqüência - então nem X nem V podem seguir IX, nem
C, nem L podem seguir XC, e nem M nem D pode seguir CM.
• Uma vez que uma letra tenha sido usada como um modificador de subtração, ela
não pode aparecer novamente na seqüência - então C não pode seguir CD ou CM, X
não pode seguir XL ou XC, e I não pode seguir IV ou IX.
• Uma vez que I, X ou C (ou seus "homólogos" V, L e D) aparecem em uma
string, o I, X ou C não podem, posteriormente, ser utilizados como modificadores
de subtração - assim IV ou IX não podem seguir I ou V, XL ou XC não podem seguir
X ou L, e CD ou CM não podem seguir C ou D.
Os recursos usados no projeto deste artigo foram:
Apresentando o projeto
O projeto possui apenas um formulário que pode ser visto a seguir:
O usuário seleciona qual tipo de conversão deseja realizar, informa o valor do número e clica no botão Converter.
Simples, prático e útil...
Pegue projeto completo aqui : Decimal_Romanos_VB6.zip
(Disse
Jesus aos fariseus) Hipócritas, bem profetizou Isaías a vosso respeito,
dizendo:
Este povo se aproxima de mim com a sua boca e me honra com os seus lábios, mas o
seu coração está longe de mim.
Mas, em vão me adoram, ensinando doutrinas que são preceitos dos homens.
Mateus 15:7-9
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#