Kapitola 5. Základy jazyka GEL
Předcházející |  | Další

# Kapitola 5. Základy jazyka 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).

Předcházející |  | Další
Plošné grafy | Domů | Používání proměnných