rmachine este un simulator mașină registru (versiunea teoria complexității), programat în Python, complet cu un modul pentru a fi utilizate în programele dumneavoastră și a (PyQt4) GUI.
Mașina ("RAM") este egal cu mașini Turing în puterea sa computional. Ea are memorie teoretic nelimitat (dar este limitat în practică de către memoria computerului).
Aceasta este un simulator de mașini registru (versiunea teoria complexității). Iată o scurtă introducere.
Mașina ("RAM") este egal cu mașini Turing în puterea sa computional. Ea are memorie teoretic nelimitat (în practică limitat de memoria calculatoare). Celule de memorie ("registrele") poate stoca numere întregi> = 0 de orice lungime. Spune registrul 5-conține numărul 42. Ai scrie ca c (5) = 42. c (0) este, de asemenea, numit "asamblor" si are un rol important, așa cum veți vedea mai târziu.
RAM are, de asemenea, un contor de program b, initally setat la 1 și practic reprezintă următoarea linie de executat.
Structura unui program tipic arata astfel:
# Comentarii merge aici
# Mai multe comentarii
INPUT 4 6 8 9
(Instrucțiuni merge aici)
SFÂRȘIT
"INPUT" linia ar trebui să fie găsit imediat după comentarii. Intrarea va fi plasat în c (1), c (2) etc. În acest exemplu, c (1) = 4, c (2) = 6, c (3) = 8, c (4) = 9.
Acum, cu toate acestea, iată set de instrucțiuni. Prima linie este instrucțiunea în sine, a 2-a linie explică ceea ce face.
-
LOAD 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
-
Magazin am
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
Notă: zecimalele vor fi tăiate
-
Cdiv i
c (0): = c (0) / i, b: = b + 1
Notă: zecimalele vor fi tăiate
-
INDDIV i
c (0): = c (0) / c (c (i)), b: = b + 1
Notă: zecimalele vor fi tăiate
-
GOTO i
b: = i
-
IF X L GOTO i
X poate fi unul dintre cei care:
b: = i dacă (c (0) X l) este adevărată
(Mai mult informal, "IF <5 GOTO 10" va stabili b = 10, dacă c (0)
Cerințe :
- python
- PyQt4
Comentariile nu a fost găsit