~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ calc - Vedecky kalkulator ~ ~ by Jaroslav Smid ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Pouziti programu ===================== Po spusteni program vyhodnocuje/zpracovava zadane vyrazy/prikazy. Kazdy prikaz/vyraz konci strednikem (;) Vyhodnoceni vyrazu: 1) Prikaz: [sin(pi) + cos(pi/2)]/{ln(5)/3} ; Vystupem je vysledek vyrazu na pocet nastavenych desetinnych mist (viz. nize), popr. chybova hlaska, kdyz byl vyraz zadan chybne 2) Prikaz: = [sin(pi) + cos(pi/2)]/{ln(5)/3} ; Stejne jako vyse. Pocet znaku rovna se (=) pred vyrazem nema zadny vliv Vyhodnoceni vyrazu a prirazeni vysledku do promenne: 1) Prikaz: nazev_promenne = [sin(pi) + cos(pi/2)]/{ln(5)/3} ; Vystupem je "nazev_promenne = vysledek_vyrazu" a dojde k vytvoreni promenne, pokud je zadan platny nazev (tj. pouze mala/velka pismena, podtrzitko a cislice, cislice nesmi byt jako prvni znak). Promenna se muze jmenovat stejne jako funkce, ale pokud ji chcete pouzit, nesmi za ni okamzite nasledovat zavorka*, ale musi byt oddelena mezerou. 2) Prikaz: promenna1 = promenna2 = promenna3 = [sin(pi) + cos(pi/2)]/{ln(5)/3} ; Stejne jako vyse, ale vytvori se dany pocet promennych se stejnou hodnotou. Nelze vsak pouzivat zapis ve stylu C (promenna1 = (promenna2 = 3)*4;). Takovy zapis by vedl k neplatnemu nazvu promenne "(promenna2". Umyslne lze prepsat i prednastavene promenne "e" a "pi" a nastavit je napr. na mensi presnost 3) Prikaz: promenna1 = promenna2 = ; Jako vyse, ale vsechny promenne budou nastaveny na 0; Dalsi prikazy: Program muze vykonavat jeste dalsi prikazy. Ty se uvozuji znakem "$". o $list arg1 [arg2 [arg3 [...argN]]]; Prikaz pro vypis. Pokud je argument "variables", vypise se seznam aktualne nastavenych promennych. Pokud je argument "functions", zobrazi se seznam podporovanych funkci s jejich strucnym popisem. Promenne i funkce lze vypsat najednou pouzitim "$ list variables functions", lze je vypsat i nekolikrat za sebou: "$ list variables functions variables" o $unset promenna1 [promenna2 [...promennaN]] ; Prikaz pro zruseni promennych. Pokud je dana promenna nastavena, dojde k jejimu smazani a promennou nebude mozno dale pouzit. Lze smazat i preddefinovane promenne "e" a "pi". o $setprec presnost; Nastavi pocet desetinnych mist zobrazovanych na vystupu. Toto nema vliv na interni zpracovani cisel. o $quit; Konec programu Podporovane funkce a operace ================================ Funkce: o Trigonometricke Sinus - sin(arg) Kosinus - cos(arg) Tangens - tan(arg), tg(arg) Sekans - sec(arg) Kosekans - csc(arg), cosec(arg) Kotangens - cot(arg), cotan(arg), cotg(arg) o Inverzni trigonometricke Arcus sinus - asin(arg), arcsin(arg) Arcus cosinus - acos(arg), arccos(arg) Arcus tangens - atan(arg), arctan(arg) o Hyperbolicke Hyperbolicky sinus - sinh(arg) Hyperbolicky kosinus - cosh(arg) Hyperbolicky tangens - tanh(arg), tgh(arg) Hyperbolicky sekans - sech(arg) Hyperbolicky kosekans - csch(arg), cosech(arg) Hyperbolicky kotangens - coth(arg), cotanh(arg), cotgh(arg) o Logaritmy Logaritmus o zakladu E - log(arg), ln(arg) Logaritmus o zakladu 10 - log10(arg) Logaritmus o vlastnim zakladu - logb(zaklad, arg) o Ostatni funkce Mocneni - pow(zaklad, umocneno_na) Mocneni na druhou - pow2(zaklad) Druha odmocnina - sqrt(arg) Heaviside - heaviside(arg), H(arg) Dirac delta - delta(arg) Exponenciála - exp(), exp(arg) ** Derivace - diff(arg, promenna) Pri zapisu funkce musi za funkci okamzite nasledovat oteviraci zavorka*, jinak bude povazovana za promennou. Operace: o Scitani arg1 + arg2 o Odcitani arg1 - arg2 o Nasobeni arg1 * arg2 o Deleni arg1 / arg2 o Mocneni arg1 ^ arg2 Priorita operaci: arg1+arg2-arg3/3-3*5-2 = (((arg1 + arg2) - (arg3 / 3)) - (3 * 5)) - 2 2/3/6 = (2/3)/6 2/3*6 = (2/3)*6 2/3^2 = 2/(3^2) 2^2^3 = 2^(2^3) Neplatne vyrazy: Vyraz, kde po sobe nasleduji 2 operatory je neplatny. Napr. vyraz 2^-3 je naplatny, je treba jej zadat jako 2^(-3) Poznamky ======================== * Zavorka Oteviraci: ([{ Uzaviraci: )]} Kazda oteviraci zavorka musi byt nasledovana uzaviraci zavorkou stejneho typu ** exp() = exp(1), exp(arg) = pow(e, arg) = e^arg *** GF_ a _GF_ ve zdrojovych kodech: Parser pouzivam i v soucasne vyvijenem programu pro kresleni grafu funkce. Proto je ve zdrojovych souborech v adresari src/Core pouzito maker s prefixem GF_ a _GF_, nejedna se tedy o nejake zkopirovane soubory z ciziho projektu :-)