Add 'sk4/README.md'
This commit is contained in:
parent
1b6e1bf052
commit
47e22398fb
73
sk4/README.md
Normal file
73
sk4/README.md
Normal file
@ -0,0 +1,73 @@
|
||||
## Zadanie
|
||||
|
||||
Virtuá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.
|
||||
|
||||
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:
|
||||
|
||||
```C
|
||||
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.
|
||||
|
||||
## Stručný opis funkčnosti
|
||||
|
||||
Musíme navrhnúť jednoduchý programovací jazyk podobný brainfucku. Načíta zdrojový súbor s príkazmi a potom vykoná rôzne operácie s poľom údajov na základe príkazov, ktoré prečítal
|
||||
|
||||
## Stručný opis riešenia
|
||||
|
||||
Program číta vstupy slovo po slove (oddelené medzerou) a ak je načítaná slová jednou z funkcií, potom sa zapíše do špeciálneho poľa, ktoré tieto funkcie ukladá. Potom sa operácia zavolá na pole s funkciami, ktoré potom spustí samotnú akciu funkcie.
|
||||
|
||||
## Podmienky za ktorých funguje
|
||||
|
||||
Existuje neidentifikovaný dôvod, prečo program nikdy neopustí slučku hľadajúcu TUK, ak prvý riadok súboru nie je príkaz TUK alebo prázdny riadok
|
||||
|
||||
## Používateľská príručka
|
||||
|
||||
Zostavte pomocou:
|
||||
|
||||
```
|
||||
make
|
||||
```
|
||||
|
||||
Spustiť pomocou
|
||||
|
||||
```
|
||||
./program source_file
|
||||
```
|
Loading…
Reference in New Issue
Block a user