Compare commits
No commits in common. "e635ba216c07575eab09dca486d546004649a5ab" and "53ecc5ff56342dfe5188e3950cd8378daf87d3c4" have entirely different histories.
e635ba216c
...
53ecc5ff56
15
sk4/kod.txt
15
sk4/kod.txt
@ -2,17 +2,14 @@ TUK
|
||||
INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK PUK
|
||||
INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK PUK
|
||||
INK INK INK PUK
|
||||
INK INK INK INK INK INK INK INK INK INK INK PUK 111
|
||||
INK INK INK INK INK INK INK PUK
|
||||
DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK PUK
|
||||
INK INK INK INK INK INK INK INK INK INK INK INK INK PUK 110
|
||||
INK INK INK INK INK INK INK INK INK INK INK PUK
|
||||
BREK
|
||||
INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK PUK
|
||||
GLEK
|
||||
DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK PUK
|
||||
DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK PUK
|
||||
INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK PUK
|
||||
DEK DEK DEK DEK DEK DEK DEK DEK DEK PUK
|
||||
INK INK INK PUK
|
||||
INK INK INK INK INK INK INK INK INK PUK
|
||||
DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK PUK
|
||||
DEK DEK DEK DEK DEK DEK DEK DEK DEK PUK 102
|
||||
INK INK INK PUK 105
|
||||
INK INK INK INK INK INK INK INK INK PUK 114
|
||||
DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK PUK 97
|
||||
FUK
|
@ -25,6 +25,8 @@ void run_tukafuk(const char* code) {
|
||||
char current_char;
|
||||
bool running = false;
|
||||
size_t i;
|
||||
//bolo pozadovane zistit, kdd su skoky a teda som ich ulozil
|
||||
//(tie adresy skokov)
|
||||
for (i = 0; code[i] != 0; i++){
|
||||
current_char = code[i];
|
||||
size_t j;
|
||||
|
BIN
sk4/program.exe
BIN
sk4/program.exe
Binary file not shown.
@ -1,44 +1,2 @@
|
||||
álny stroj programovacieho jazyka TUKAFUK sa skladá z dvoch pások. Na jednej páske je napísaný program. Po programovej páske beží programová hlava PH a číta inštrukcie zľava doprava. Stroj má k dispozícii aj dátovú pásku s osobitnou hlavou DH.
|
||||
Riesenie inspirovane https://gist.github.com/maxcountryman/1699708
|
||||
|
||||
Príklad počiatočného stavu virtuálneho stroja TUKAFUK:
|
||||
|
||||
PH
|
||||
|
|
||||
v
|
||||
+-----+-----+-----+-----+
|
||||
Program | TUK | INK | DEK | FUK |
|
||||
+-----+-----+-----+-----+
|
||||
|
||||
DH
|
||||
|
|
||||
v
|
||||
+---+---+---+---+
|
||||
Data | 0 | 0 | 0 | 0 |
|
||||
+---+---+---+---+
|
||||
Skladá sa z nasledujúcich symbolov:
|
||||
|
||||
TUK začiatok programu
|
||||
INK inkrementuj údaj na mieste kde ukazuje DH
|
||||
DEK dekrementuj údaj na mieste kde ukazuje DH
|
||||
BREK posuň hlavu DH do prava o jedno miesto
|
||||
GLEK posuň hlavu DH do ľava o jedno miesto
|
||||
PUK vypíš 1 byte z miesta kde ukazuje hlava DH
|
||||
KUK načítaj 1 byte na miesto je ukazuje hlava DH
|
||||
[ ak je hlava DH nula, posuň PH na zodpovedajúcu značku ]. Inak pokračj ďalej.
|
||||
] ak hlava nie je nula, pokračuj s PH na zodpovedajúvej značke [. Inak pokračuj ďalej.
|
||||
FUK koniec programu
|
||||
iný znak: odeľuje príkazy alebo slúži ako komentár.
|
||||
Vytvorte interpret jazyka TUKAFUK. Program by mal implementovať funkciu:
|
||||
|
||||
void run_tukafuk(const char* code);
|
||||
Funkcia preloží vstupný program (zistí adresy skokov) a spustí ho. Preklad programu znamená identifikáciu inštrukcií a zistenie adries pre skok programovej hlavy PH. Pri implementácii zistenia adries PH v programe pre inštrukcie [ a ]. Funkcie getchar() a putchar() použite pre implementáciu inštrukcií PUK a KUK . Pre implementáciu dátovej pásky použite pole znakov, pre implementáciu programovej pásky použite pole spracovaných inštrukcií.
|
||||
|
||||
Vytvorte program v jazyku TUKAFUK na výpis celého Vášho mena.
|
||||
|
||||
Opis Funkčnosti :
|
||||
Program načíta textový súbor do ktorého budú vložené jednotlivé inštrukcie začínajúci inštrukciou TUK a končiaci inštrukciou FUK. Teda program číta údaje z pásky ktoré sa ukladajú do globálnych premenných pričom tiež kontroluje, či je inštrukcia správne napísaná (namiesto INK INC, atd)a taktiež sa hneď posúva hlava, ktorá teda ide čítať ďalšiu inštrukciu
|
||||
Po načítani nasleduje samotný preklad ktorý je vykonávaný za pomoci smerníkov a ascii tabuľky
|
||||
Program bude fungovať ak :
|
||||
1.Budú inštrukcie zadané do textového súboru kod.txt
|
||||
2.Inštrukcie budú zapísané práve tak, že prvá inštrukcia bude TUK a posledná FUK
|
||||
3.A po určitom počte ink/dek inśtrukcií bude následovať výpis za pomoci funkcie PUK
|
||||
|
Loading…
Reference in New Issue
Block a user