Skip to content

edmilson-nascimento/Romano

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 

Repository files navigation

Conversão de Arábico x Romano ou Romano x Arábico

N|Solid Afim de atender a necessidade de uma entrevista, foi preciso que eu fizesse um programa que "... faça conversão de números arábicos para números romanos e o contrário. O Programa não precisa ter nada de especial, apenas uma tela com um input que o usuário insere somente números e alguma forma para escolher qual a conversão que deverá acontecer, Arábico x Romano ou Romano x Arábico". Infelizmente não passei na entrevista devido a uma divergência de aplicação de técnica ABAP em Tabelas Internas, que eu ainda insisto que a pessoa que me entrevistou estava um pouco desatenta aos seus próprios códigos. Como eu fiquei contente com meu código, resolvi deixar disponível. Para este, é usada uma tabela de referência com o valor correspondente de cada número onde podem ser adicionados mais opções. Esta ação é feita no método constructor .

  method constructor .

    referencia =
      value #(
        ( arabico = 1     romano = 'I' )
        ( arabico = 5     romano = 'V' )
        ( arabico = 10    romano = 'X' )
        ( arabico = 50    romano = 'L' )
        ( arabico = 100   romano = 'C' )
        ( arabico = 500   romano = 'D' )
        ( arabico = 1000  romano = 'M' )
      ) .

    loop at referencia assigning field-symbol(<line>) .

*     Item anterior
      data(index) = sy-tabix - 1 .
      read table referencia into data(line) index index .
      if sy-subrc eq 0 .
        <line>-anterior = line-romano .
      endif .

*     Próximo item
      index = index + 2 .
      read table referencia into line index index .
      if sy-subrc eq 0 .
        <line>-proximo = line-romano .
      endif .

    endloop.

O intuito principal foi fazer a conversão sem que fosse utilizada alguma rotina já existente. Eu não pretendia colocar em check o melhor algoritmo para conversão, mas sim, mostrar a minha habilidade de criar um algoritmo assim.

Poderia ter feito com uma melhor arquitetura respeitando melhor SRP — O Princípio da Responsabilidade Única, e possivelmente vou melhorar usando esse conceito quando tiver tempo e um ambiente descente.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages