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-R9jsou datové registry.ije 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 -> R0Př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."
KONECSmyč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ýIFnení povolen). - Pozor na překlepy v návěštích.
- Nezapomeňte, že
ije celočíselný registr aRi/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.