Obsah
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.
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í.
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)
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.
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.
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í).
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).