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:

  1. Os numerais I, X, C, M só podem ser repetidos até três vezes.

  2. Os numerais I, X e C, escritos à direita de numerais maiores, somam-se seus valores aos desses numerais.

  3. Os numerais I, X e C, escritos à esquerda de numerais maiores, subtraem-se seus valores aos desses numerais.

  4. 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:


José Carlos Macoratti