HV Compiler


O HVC é um interpretador que permite a execução de código escrito na linguagem de máquina HV, utilizada no computador hipotético HV-2.

Pensado como ferramenta didática, sua idealização busca facilitar a assimilação de conceitos computacionais básicos, dando introdução à elaboração de algoritmos e às linguagens de programação.


descer para o play
mas só se souber brincar
menino que programa

Aprenda

Computador HV

computador

Imagine um computador hipotético criado com intuito inteiramente didático, dedicado a viabilizar o ensino de programação por meio da demonstração básica de seu funcionamento... esse é o HV.

Sua linguagem conta com instruções simples mas engenhosas, capazes de construir algoritmos complexos e refinados.


Em sua construção, o computador HV possui

  • Um gaveteiro com 100 gavetas
  • Calculadora, mostrador e teclado
  • Quadro Negro (EPI)
  • Porta-cartões
  • Folha de saída
  • Operador de sistema (CHICO)

A partir da abstração de conceitos sofisticados, o estudante será capaz de assimilar a base de programação, e ainda adquirir noções intuitivas de arquitetura de computadores.


O material completo acerca de sua estrutura e funcionamento está disponível no arquivo computador_hv.pdf.

Linguagem de Máquina HV

Trata-se de uma linguagem de programação de baixo nível, com uma sintaxe flexível que facilita o entendimento introdutório à resolução de problemas e criação de algoritmos.


Suas instruções são sucintas. Elas explicitam, em suma, um código de operação e o endereço de uma gaveta.


Pratique

Playground

brincar é bom

Este ambiente online atua como uma poderosa ferramenta de apredizagem, tendo em vista suas funcionalidades interativas para desenvolvimento de algoritmos e escritas de código na linguagem HV, permitindo sua testagem em tempo real.


Seu funcionamento respeita as limitações impostas pela estrutura do computador hipotético, mas traz recursos que auxiliam o desenvolvedor, como a detecção de erros e o modo de depuração passo a passo.

descer para o play
mas só se souber brincar

Construindo algoritmos

Este algoritmo calcula o enésimo termo da sequência de Fibonacci usando um método iterativo, seguindo a lógica do pseudocódigo de referência.

função fib(n)
    j1
    i0
    para k1 até n faça
        ti + j
        ij
        jt
    retorne i

Diferente de linguagens de alto nível, onde podemos simplesmente utilizar laços de repetição e variáveis auxiliares, na linguagem HV precisamos gerenciar manualmente as operações e o controle de fluxo para atualizar os valores da sequência.


Passos do algoritmo

  1. Lemos o valor de n, que representa o termo da sequência desejado.
  2. Inicializamos i = 0 (Fibonacci de 0) e j = 1 (Fibonacci de 1).
  3. Se n == 0, o resultado é 0.
  4. Caso contrário, iteramos n vezes:
    • Calculamos t = i + j
    • Atribuímos i = j, j = t
  5. Ao final do loop, conterá o enésimo termo da sequência, que é impresso na saída.

Esse método segue o princípio matemático da definição da sequência de Fibonacci, onde cada termo é a soma dos dois anteriores:


F(n) = F(n - 1) + F(n - 2), F(1) = 1, F(2) = 1.

725    ; Leia o valor de n e armazene na gaveta 25
0-0    ; Carregue 0 no acumulador
126    ; Armazene 0 na gaveta 26 (i = 0)
127    ; Armazene 0 na gaveta 27 (auxiliar do contador)
0-1    ; Carregue 1 no acumulador
128    ; Armazene 1 na gaveta 28 (j = 1)
129    ; Armazene 1 na gaveta 29 (auxiliar número 1)
025    ; Carregue n no acumulador
327    ; Subtraia (auxiliar do contador)
611    ; Se n - (auxiliar do contador) == 0, vá para a gaveta 11 (corpo loop)
922    ; Vá para a gaveta 22 (final loop)
026    ; Carregue i
228    ; Some j (t = i + j)
130    ; Armazene na gaveta 30 (t = i + j)
028    ; Carregue j
126    ; Armazene em i (i = j)
030    ; Carregue t
128    ; Armazene em j (j = t)
027    ; Carregue o (auxiliar do contador)
229    ; Some 1 ao (auxiliar do contador)
127    ; Armazene o novo valor na (auxiliar do contador)
907    ; Volte para a verificação do loop
826    ; Escreva o resultado final (i)
000    ; Fim do programa

HVCJS

Trata-se de uma versão modularizada do compilador HVC original, projetada para ser disponibilizada como um módulo npm. Tal abordagem permite a eficiente distribuição e manutenção das ferramentas desenvolvidas por nossa equipe.


O módulo tem por objetivo facilitar a criação de novas aplicações de ensino que utilizam o Computador à Gaveta, por meio de uma interface simples e intuitiva.

import { HVC } from "hvcjs";

const hvc = new HVC();

hvc.setCode("0-5 020 820 000");

hvc.run();

Sobre o projeto

sou ufms

O computador hipotético HV foi um modelo proposto pelos professores Routo Terada e Waldemar W. Setze na obra “Introdução à Computação e à Construção de Algoritmos”.


A implementação em software desses conceitos faz parte de uma Atividade Orientada de Ensino desenvolvida por nós graduandos da Faculdade de Computação (FACOM), Universidade Federal de Mato Grosso do Sul (UFMS) .


O código fonte do interpretador da linguagem de máquina HV, bem como as instruções para sua implantação em outros ambientes está disponível em seu repositório no GitHub.