Syntaxe jazyka CGS: rychlá uživatelská příručka

Jazyk CGS je záměrně jednoduchý: pracujete s registry, zapisujete krátké instrukce a program běží po řádcích. Tato stránka shrnuje to nejdůležitější pro rychlou orientaci i první vlastní pokusy.

CGS v 60 sekundách

Základní princip

  • R0-R9 jsou datové registry.
  • i je indexový registr pro nepřímé adresování a přijímá jen celá čísla.
  • Řádek obvykle dělá výpočet, vstup/výstup nebo skok.

Typický příkaz

R0 + 1 -> R0

Přičti 1 k hodnotě v R0 a ulož výsledek zpět do R0.

Poznámka k implementaci

Syntaxe na této stránce odpovídá digitální rekonstrukci CGS v simulátoru. Jde o konzervativně zapsanou podobu dobového jazyka: textové vstupy a výstupy jsou povinně v uvozovkách, registr i je celočíselný a sada funkcí je explicitně uzavřená.

Rychlý start (3 kroky)

"Zadej cislo" -> R0
R0 * 2 -> R1
"Vysledek je {R1}"

Nejprve si vezmete vstup, pak spočítáte výraz a nakonec vypíšete výsledek.

Základní stavebnice jazyka

Konstrukce Syntaxe Význam
Název programu prvni ne-instrukcni radek Nepovinný. Pokud je první smysluplný řádek text a není to validní kód, bere se jako název programu.
Přiřazení vyraz -> Rn Vyhodnotí výraz a uloží výsledek. Cíle lze řetězit (-> R0 -> R1).
Vstup "prompt" -> Rn Pozastaví běh a čeká na zadání hodnoty uživatelem. Prompt musí být v uvozovkách.
Výstup "textový řádek" Text v uvozovkách je výstup. Podporuje substituce {R0}, R0, {Ri}, {i}.
Podmínka IF podminka; prikaz [; prikaz ...] Při splnění podmínky provede příkazy za středníkem. Komparátory: =, ≠, <>, !=, <, >, <=, >=, ≤, ≥. Vnořený IF není povolen.
Skok a návěští GTO A, A ..., A Řízení toku programu přes implicitní návěští.
Zastavení KONEC Okamžitě zastaví program.
Nepřímé adresování Ri, R(i) Hodnota v registru i (celočíselná) vybírá, který registr R0-R9 použít.
Více příkazů na řádku 10 -> R0; 20 -> R1 Středník ; odděluje více příkazů na jednom řádku.
Komentář // komentar Řádkový komentář; // uvnitř uvozovek není komentář.

Operátory, funkce a konstanty

Operátory a precedence

  • Operátory: +, -, *, ., :, /, ^ (. = násobení, : = dělení — historická konvence z 80. let)
  • Priorita: (), pak ^, pak unární +/-, pak * . : /, nakonec + -.
  • Desetinná čísla se zapisují s tečkou: 3.14
  • Doporučení: u složitějších výrazů používejte závorky.

Vestavěné funkce

Základ: INT, FRAC, ABS, MOD, SGN

Trigonometrie (ve stupních): SIN, COS, TAN, ASIN, ACOS, ATAN

Další: LOG, LN, EXP, SQRT, POW, MIN, MAX, ROUND, FLOOR, CEIL

Konstanty: PI, E (lze psát i jako PI(), E())

Mini příklady

Podmínka: sudé/liché

TEST NA SUDE CISLO
"Zadej cislo" -> R0
MOD(R0, 2) -> R1
IF R1 = 0; GTO A
"Cislo {R0} je liche."
KONEC
A "Cislo {R0} je sude."
KONEC

Smyčka: součet 1..N

Soucet
"Zadej N" -> R0
0 -> R1
R0 -> i
A R1 + i -> R1
i - 1 -> i
IF i > 0; GTO A
"Soucet je {R1}"

Vědecký výpočet

Trig
SIN(30) -> R0
COS(60) -> R1
LOG(100) -> R2
"Vysledky {R0} {R1} {R2}"

Nejčastější chyby (FAQ)

  • U podmínky musí být tvar IF ...; prikaz (vnořený IF není povolen).
  • Pozor na překlepy v návěštích.
  • Nezapomeňte, že i je celočíselný registr a Ri/R(i) je nepřímý přístup.
  • Text musí být vždy v uvozovkách: "text" (výstup), "prompt" -> R0 (vstup).
  • U složitějších výrazů používejte závorky.
  • Ve výstupu preferujte substituce {R0}, {Ri}, {i}.
  • Když ladíte logiku, používejte krokování a diagnostiku v simulátoru.