MiniMath v.1.0
Martin Plicka
plicka.m@atlas.cz
http://plickam.ic.cz/
Popis programu
Program je interpreterem mnou navrženého jazykamatematických operací s proměnnými a funkcemi.
- Umožňuje dopřednou definici, tj. ve výrazech lzepoužít i identifikátory, kterédodefinujete později. Platnost definice se kontroluje při výpočtu.
- Výsledky vyhodnoceníproměnných se cachují. Platnost cache seruší v souvislosti s re-definicíproměnných/funcí, na kterých proměnná tranzitivně závisí.
- Program lze zadávat po jednom příkazu,případně nahrát víceřádkový ze souboru.
Popis jazyka
Příkazem může být:
- definice proměnné ve tvaru např.
nazevpromenne = vyraz
. Jako identifikátor lze použít alfanumerický řetězec a nesmí začínat číslicí.
- definice funkce s libovolným počtem parametrů, např
mojefunkce(a,b) = vyraz
, přičemž výraz obsahuje i názvy parametrů dané funkce
- přikaz
write()
provypsání hodnot s minimálně jedním parametrem, např
write("Výsledekje", vyraz)
- příkazy pro vypsání aktuálně definovaných identifikátorů (
def
),resp zabudovaných funkcí (
defint
)
- příkaz pro restartování programu,
reset
,vymaže historii a veškeré nadefinované identifikátory.
Výraz
je kombinace:
- číselných konstant
- voláníuživatelsky definovaných funkcí aproměnných (volají se názvem a paremetry uvedenými vzávorkách, oddělenýchčárkou, aktuálně definované identifikátory lze zjistit příkazem
def
)
- volánízabudováných funkcí a konstant (lze zjistit příkazem
defint
)
- speciálního výrazu
if (podmínka, pravda, nepravda)
, který vyhodnotí výraz
podminka
,pokud je roven 0 (false), vrátí hodnotu výrazu
nepravda
,jinak (true) vrátí
pravda
.
- volání speciální funkce
read(text výzvy)
,která při vyhodnocovánízobrazí dialog s výzvou pro vložení čísla.
Text výzvy
je textový řetězec uzavřený v uvozovkách.
- parametrů funkce. Pouze v rámci definice funkce.
- unárních abinárních operátorů s obvyklouprioritou. Výčet následuje (odnejnižší po nejvyšší prioritu).
- Logické And (
&
) a Or (
|
)
- Relační operátory (nejsou asociativní)
> < >= <= == !=
- Sčítání (
+
) a odčítání (
-
)
- Násobení (
*
) a dělení (
/
)
- Mocnina (není asociativní)
^
- Unární operátory (nejsou asociativní)
+
a
!
(negace)
- Závorky - mají absolutní prioritu
Při definici proměnných/ konstant se vyhodnocuje, zdadefinice nevede do rekurzivního zacyklení přivýpočtu. Taková definice je znemožněna. Pokud byse jednalo o podmíněnou rekurzi, tj. uvnitř výrazu je
if
, definice se použije a je zobrazeno varování.
Výpočet je zahájen vdobězadání příkazu write. Pokudmají proměnné platné cache (v logu sezobrazují zvýrazněné), výpočet se znovuneprovádí. Platnost cache se nastavuje automaticky.
Popis hlavního okna
Vhorníčásti okna se nachází logveškerýchzadaných příkazů a jejich výstupů. Vdolní části pak příkazová řádka.Klávesami nahoru a dolů je možno vybírat ze seznamunaposledy zadaných příkazů. Příkazy lze také načíst ze souboru nabídkou
Program->Vložit ze souboru...
. Každý řádek vstupního souboru je čten jako jeden příkaz.
V adresáři programu se nachází souborstyle.css, který definujeformátování uvnitřlogovacího okna. Definice je možno přepsat. Přededitací doporučuji zálohovat původnísoubor. Při smazání bude zobrazeno výchozí formátování definované uvnitř programu.