rmachine é um simulador de máquina de registo (a versão teoria da complexidade), programados em Python, completo com um módulo para ser usado em seus programas e um (PyQt4) GUI.
A máquina ("RAM") é igual a máquinas de Turing na sua potência computacionalmente. Ele tem memória teoricamente ilimitado (mas é limitada na prática pela memória do computador).
Este é um simulador para máquinas de (a versão teoria da complexidade). Aqui está uma breve introdução.
A máquina ("RAM") é igual a máquinas Turing em seu poder computacionalmente. Ele tem memória teoricamente ilimitado (na prática limitada pela sua memória de computadores). As células de memória ("registos") pode armazenar números inteiros> = 0 de qualquer comprimento. Diga o quinto registo contém o número 42. Você iria escrevê-lo como c (5) = 42. c (0) também é chamado de "montador" e tem um papel importante, como você verá mais tarde.
A memória RAM tem também um contador de programa b, initally definido como 1 e, basicamente, representando a linha seguinte a ser executado.
A estrutura de um programa típico se parece com isso:
# Comentários aqui
# Mais comentários
ENTRADA 4 6 8 9
(Instruções ir aqui)
FIM
A linha "INPUT" deve ser encontrada logo após os comentários. A entrada será colocado em C (1), C (2), etc. Neste exemplo, c (1) = 4, C (2) = 6, C (3) = 8, C (4) = 9.
Agora, com tudo isso, aqui está o conjunto de instruções. A primeira linha é a própria instrução, a segunda linha explica o que ele faz.
-
CARGA i
C (0): = c (i), b: = b + 1
-
Cload i
C (0): = i, b: = b + 1
-
INDLOAD i
C (0): = C (C (i)), b: = b + 1
-
LOJA i
c (i): = C (0), b: = b + 1
-
INDSTORE i
c (C (i)): = C (0), b: = b + 1
-
ADD i
C (0): = C (0) + C (i), b: = b + 1
-
CADD i
C (0): = c (0) + i, b: = b + 1
-
INDADD i
C (0): = C (0) + c (C (i)), b: = b + 1
-
I SUB
C (0): = max (C (0) - C (i), 0), b: = b + 1
-
CSUB i
C (0): = max (C (0) - i, 0), b: = b + 1
-
INDSUB i
C (0): = max (C (0) - C (C (i)), 0), b: = b + 1
-
MUL i
C (0): = C (0) C * (I), b: = b + 1
-
CMUL i
C (0): = C (0) * i, b: = b + 1
-
INDMUL i
C (0): = C (0) * C (C (i)), b: = b + 1
-
DIV i
C (0): = C (0) / C (i), b: = b + 1
Nota: Os decimais serão cortadas
-
CDIV i
C (0): = C (0) / i, b: = b + 1
Nota: Os decimais serão cortadas
-
INDDIV i
C (0): = C (0) / C (C (i)), b: = b + 1
Nota: Os decimais serão cortadas
-
GOTO i
b: = i
-
IF X l i GOTO
X pode ser um daqueles:
b: = i se (C (0) X l) é verdadeira
(Mais informalmente, "IF <5 GOTO 10" iria definir b = 10, se c (0)
Requisitos :
- Python
- PyQt4
Comentários não encontrado