Kapitola 5. Základy jazyka GEL

Obsah

Hodnoty
Čísla
Pravdivostní hodnoty
Řetězce
Null
Používání proměnných
Nastavování proměnných
Vestavěné proměnné
Proměnná s posledním výsledkem
Používání funkcí
Definování funkcí
Proměnný seznam argumentů
Předávání funkcí funkcím
Operace s funkcemi
Oddělovač
Komentáře
Modulární aritmetika
Seznam operátorů GEL

GEL znamená Genius Extension Language (rozšiřující jazyk Genius). Jedná se o jazyk, ve kterém píšete programy v kalkulátoru Genius. Program v jazyce GEL je jednoduše výraz, který je vyhodnocen jako číslo, matice nebo nějaký jiný objekt v GEL. Matematický nástroj Genius tak může sloužit jako jednoduchý kalkulátor a nebo jako mocný nástroj pro teoretický vědecký výzkum. Cílem syntaxe je, aby byla snadná na naučení, jak jen to jde, zejména pro používání aplikace jako kalkulačky.

Hodnoty

Hodnotami v jazyce GEL mohou být čísla, pravdivostní hodnoty nebo řetězce. GEL zachází jako s hodnotami i s maticemi. Hodnoty mohou být mimo jiných věcí použity k výpočtům, přiřazovány do proměnných a vraceny z funkcí.

Čísla

Prvním typem čísel v GEL jsou celá čísla (integer). Celá čísla se zapisují normálním způsobem.

1234

V šestnáctkové a osmičkové soustavě mohou být zapsána pomoci notace jazyka C. Například:

0x123ABC
01234

Nebo můžete čísla zapsat v libovolné soustavě pomocí <základ>\<číslo>. Číslice větší než 9 se zapisují pomocí písmen podobně jako u šestnáctkové soustavy. Například číslo v třiadvacítkové soustavě můžete zapsat:

23\1234ABCD

Druhým typem čísel v GEL jsou racionální čísla (rational). Racionální čísla vznikají podělením dvou celých čísel. Takže můžete zapsat:

3/4

abyste získali tři čtvrtiny. Racionální čísla rovněž akceptují smíšené zlomky. Takže abyste získali jedna a tři desetiny, můžete napsat:

1 3/10

Dalším typem čísel jsou desetinná čísla – čísla s plovoucí desetinnou čárkou (floating). Zadávají se ve formátu podobném notaci C. Jako oddělovač exponentu můžete použít E, e or @. Upozorňujeme, že když použijete oddělovač exponentu, bude číslo bráno jako desetinné, i když neobsahuje desetinnou tečku. Například:

1.315
7.887e77
7.887e-77
.3
0.3
77e5

Když Genius vypisuje desetinné číslo, vždy u něj přidá .0, i když je celé. Tím se dává najevo, že desetinná čísla nemají dokonalou přesnost. Pokud je číslo zapsáno ve vědecké notaci, jedná se vždy o desetinné číslo a Genius tak nemusí vypisovat .0.

Posledním typem čísel v GEL jsou komplexní čísla (complex). Komplexní číslo můžete zadat jako součet reálné a imaginární části. Imaginární část přidáte doplněním i. Zde jsou příklady zápisu komplexních čísel:

1+2i
8.01i
77*e^(1.3i)

Důležité

Při zadávání imaginárních čísel musí číslo vždy předcházet před i. Pokud byste použili samotné i, Genius by se k němu stavěl, jako k odkazu na proměnnou i. Pokud potřebujete použít právě i, použijte místo toho 1i.

Pokud chcete u imaginárních čísel použít notaci složených zlomků, musíte složený zlomek uzavřít do závorek, např. (1 2/5)i.

Pravdivostní hodnoty

Genius také nativně podporuje pravdivostní hodnoty (boolean). Jsou definovány dvě pravdivostní konstanty, true (pravda) a false (nepravda). Tyto identifikátory mohou být použity stejně jako jiné proměnné. Případně můžete použít i varianty True, TRUE, False a FALSE.

Všude, kde je očekáván pravdivostní výraz, můžete použít pravdivostní hodnotu nebo libovolný výraz, jehož výsledkem je číslo nebo pravdivostní hodnota. V případě, že má Genius vyhodnotit číslo jako pravdivostní hodnotu, pak je nula brána jako false a všechna ostatní čísla jako true.

Navíc můžete s pravdivostními hodnotami provádět aritmetické operace. Například:

( (1 + true) - false ) * true

je to stejné jako:

( (true or true) or not false ) and true

Podporovány jsou akorát sčítání, odčítání a násobení. Pokud mícháte ve výrazu dohromady čísla s pravdivostními hodnotami, jsou čísla nejprve převedena na pravdivostní hodnoty podle pravidel popsaných výše. To znamená, že například:

1 == true

je vždy vyhodnoceno jako true, protože 1 bude před porovnáním s true převedeno na true.

Řetězce

Stejně jako čísla a pravdivostní hodnoty, mohou být i řetězce (string) uloženy jako hodnoty v proměnných a předávány do funkcí. Můžete také spojit řetězec s jiným řetězcem pomocí operátoru plus. Například:

a=2+3;"Výsledek je: "+a

vytvoří řetězec:

Výsledek je: 5

Rovněž můžete používat escape sekvence ve stylu C, jako \n,\t,\b,\a a \r. Když potřebujete v řetězci \ nebo ", musíte mu předřadit \. Například:

"Lomítko: \\ Uvozovky: \" Tabulátory: \t1\t2\t3"

vytvoří řetězec:

Lomítko: \ Uvozovky: " Tabulátory: 	1	2	3

Je třeba ale poznamenat, že když je řetězec vrácen z funkce, jsou zpětná lomítka ošetřena, takže takovýto výstup může být použit jako vstup. Pokud chcete řetězec vypsat jak je (bez použití escape sekvencí), použijte funkci print nebo printn.

Navíc můžete použít knihovní funkci string k převodu čehokoliv na řetězec. Například:

string(22)

vrátí

"22"

Řetězce je také možné porovnávat pomocí operátorů == (rovno), != (není rovno) a <=> (porovnání).

Null

Existuje speciální hodnota nazývaná null. Nelze s ní provádět žádné operace a když je vrácena, není nic vypsáno. Proto je hodnota null užitečná, když nechcete z výrazu získat žádný výstup. Hodnotu null získáte tak, že napíšete výraz ., konstantu null nebo nic. Tím se nemyslí nic jiného, než že když výraz zakončíte oddělovačem ;, je to stejné, jako byste jej zakončili oddělovačem následovaným null.

Příklad:

x=5;.
x=5;

Některé funkce vrací null v případě, že nelze vrátit žádnou hodnotu nebo nastane chyba. null se rovněž používá jako prázdný vektor, prázdná matice nebo prázdná reference (odkaz).