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.
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 arquivocomputador_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
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.
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)
j ← 1i ← 0parak ← 1aténfaçat ← i + ji ← jj ← tretornei
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
Lemos o valor den,
que representa o termo da sequência desejado.
Inicializamosi= 0 (Fibonacci de 0) ej= 1 (Fibonacci de 1).
Sen == 0,
o resultado é 0.
Caso contrário, iteramosnvezes:
Calculamost = i + j
Atribuímosi = j, j = t
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 compiladorHVC 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";
consthvc = new HVC();
hvc.setCode("0-5 020 820 000");
hvc.run();
Sobre o projeto
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 daFaculdade 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.