Applet je velmi chytrou "vědeckou" kalkulačkou umožňující zobrazování grafů funkcí jedné proměnné.
Kalkulačka umožňuje definovat jakoukoliv funkci s libovolným
počtem parametrů s možností použití standardních operátorů (+, - (unární /
binární), *, /, ^ (mocnina)) nebo některých z již definovaných (jak programem, tak
uživatelem) funkcí. Seznam definovaných funkcí se nachází v okně "Function
list". Pokud nadefinujeme funkci s jedním parametrem, je automaticky
vykreslen její graf.
V předem definovaných funkcích se nachází několik funcí s libovolným počtem
parametrů - lze volat s 0..n parametry, takovéto funkce však není možno definovat
později uživatelem, zápis definice funkce by totiž bylo velmi nesnadné provést.
Funkce je též možno přetěžovat - lze definovat více funkcí se stejným jménem,
ale různým typem parametrů.
Případné náměty k přidání dalších standardních funkcí mi prosím napište
Též je možno definovat proměnné (chovají se jako funkce bez parametru), výpis již definovaných naleznete v okně "Variable list".
Jediný uživatelem zjistitelný rozdíl mezi funkcemi a proměnnými je v možnosti předefinování. Proměnné (až na předem definované konstanty - jména velkými písmeny) předefinovat lze, zatímco funkce ne. O předefinování i případné nemožnosti předefinování nás kalkulačka informuje. Po předefinování se nová hodnota samozřejmě projeví ve všech dalších definicích, kde je daná proměnná použita.
Dalšími možnostmi kalkulačky jsou výpočet hodnoty výrazu
a vyhledání identifikátoru. Pro výpočet je nutno před výraz uvést
operátor =, výraz je shodný s definicí proměnné. Pro zjištění existence
identifikátoru stačí napsat název identifikátoru a program nalezne definici
identifikátoru s daným názvem a minimálním počtem parametrů. Pokud by jsme chtěli
vyhledat funkci s daným počtem parametrů, zapíšeme její "volání". Pokud
je nalezena proměnná, je vypsána její hodnota, funkce s jedním parametrem je
vykreslena.
Definice funkce ... fce(x,y,z) = x + sin(y) ^ 2 + (x - z)
* y
Před přiřazením je definován název funkce a parametry použité při definici. V
samotné definici se mohou čísla, parametry uvedené před přiřazením (zastíní
stejně pojmenované proměnné) a již definované proměnné. Samozřejmě lze vložit
volání již definovaných funkcí a vše lze spojovat standardními operátory.
Definice proměnné ... prom = prom1 + sin(PI) + 3
Před přiřazením se nachází název proměnné, definice je obdobná definici funkci,
jen nejsou žádné parametry - lze použít jen číslo či již definovanou proměnnou.
Výpočet hodnoty výrazu ... = prom1 + sin(PI) + 3
Shodné s definicí proměnné, není uveden název proměnné - nepřiřazuje se.
Vyhledání identifikátoru ... JménoIdentifikátoru
Uvedeme pouze hledané jméno, program se pokusí nalézt odpovídající identifikátor s
minimálním počtem parametrů, vypíše výsledek - existuje + počet parametrů /
neexistuje a případně vypíše hodnotu (proměnná) či vykreslí graf (funkce s
jedním parametrem).
Vyhledání funkce ... JménoFunkce(x,y,z)
Uvedeme jméno funkce a parametry volání (pro vyhledání je důležitý pouze počet
parametrů), program se danou funkci pokusí nalézt a informuje stejně jako u
vyhledání identifikátoru.
Celá syntaxe je case-sensitiv (záleží na velikosti písmen), na vložených
mezerách či tabulátorech nezávisí.
Případné syntaktické chyby jsou samozřejmě hlášeny a program
nastaví pozici chyby v překladovém políčku.
Definici gramatiky syntaktického analyzátoru naleznete zde.
Program se skládá ze tří v podstatě nezávislých částí. Nejdůležitější
částí je samotné rozhraní "překladače" - textové pole
slouží k zadání překládaného výrazu, pro provedení překladu stačí v tomto
políčku stisknou klávesu ENTER či použít buton Execute. O výsledku překladu nás
informuje výstup v druhém řádku, barva hlášky je rozlišena podle typu výstupu -
oznamovací / chybová.
Pro označení obsahu textového pole lze použít klávesu ESC.
Částí přímo na překladač navazující jsou okna s výpisem definovaných funkcí
a proměnných. Obsah těchto oken se automaticky obnovuje při přidání
identifikátoru, při případných chybách (snad se nevyskytují) lze též použít
butonu Refresh.
K vyvolání (zobrazení) oken lze použít butony ve spodní části appletu.
Rozšiřující částí je graf a jeho ovládání, který se nachází ve středu
appletu. Na ploše grafu se vykreslují funkce - standardně je zobrazen interval <-10
.. 10> na obou osách, elipsa kolem počátku je jednotková kružnice (pro usnadnění
orientace v měřítku).
Jména vykreslených funkcí jsou zobrazena v poli vedle grafu, buton Delete slouží k
mazání všech funkcí v grafu.
Barvičky výstupu překladače někdy nefungují přesně tak, jak by měly. Je to chyba prohlížeče, ale nastává jen někdy, proto je dosti těžké pokusit se ji odstranit. Ale třeba se podaří.
V InternetExploreru nefunguje zobrazení oken výpisu. Není to chyba programu, ale prohlížeče. Pokud by někdo věděl, jak to vyřešit, ať mi dá prosím vědět.
Při nalezení syntaktické chyby není pozice chyby nastavena přesně, použije se
aktuální pozice lexikálního analyzátoru a proto při chybách, které se zjistí až
po přečtení dalších lexikálních elementů je pozice posunuta. Pro zjištění
přesné pozice by bylo třeba dosti složitého algoritmu a dle mého názoru je popis
chyby ve výstupu dostatečný.
Pokusím se umožnit přepsání funkcí pomocí dotazu na přepsání - musím na to vytvořit dialog.