ZÁPOČTOVÁ PRÁCE z UIR



Podobné dokumenty
Algoritmizace a programování

Paměť počítače. alg2 1

Výpočet excentrického klikového mechanismu v systému MAPLE 11 Tomáš Svoboda Technická fakulta Česká Zemědělská Univerzita

VZORCE A VÝPOČTY. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen Ročník: sedmý

Algoritmizace a programování

1.1.3 Práce s kalkulátorem

Středoškolská technika SCI-Lab

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM

Práce s kalkulátorem

NPRG030 Programování I, 2018/19 1 / :25:37

František Hudek. květen ročník

ANOTACE vytvořených/inovovaných materiálů

FUNKCE 2. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen Ročník: sedmý. Vzdělávací oblast: Informatika a výpočetní technika

Základy algoritmizace a programování

Základy algoritmizace a programování

Návod k programu Graph, verze 4.3

2. cvičení z ZI1 - Excel

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Da D to t v o é v ty t py IB111: Datové typy

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

MS EXCEL_vybrané matematické funkce

Wolfram Alpha. v podobě html stránky, samotný výsledek je často doplněn o další informace (např. graf, jiné možné zobrazení výsledku a

X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka

Racionální čísla, operátory, výrazy, knihovní funkce

Úvod do počítačových sítí

Sada 1 - Základy programování

KALKULÁTORY EXP LOCAL SIN

Simulátor programované gramatiky

I. Kalkulátor Rebell SC2040 manuál s příklady Tlačítko: MODE CLR

Prohledávání do šířky = algoritmus vlny

Dokumentace programu sdc

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

GEODETICKÉ VÝPOČTY I.

Text může být postupně upravován a doplňován. Datum poslední úpravy najdete u odkazu na stažení souboru. Veronika Sobotíková

Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr)

Základní vzorce a funkce v tabulkovém procesoru

Operátory. Základy programování 1 Tomáš Kühr

Dílčí projekt: Systém projektování textilních struktur 1.etapa: tvorba systému projektování vlákno - příze - tkanina

CZ.1.07/1.5.00/

Variace. Číselné výrazy

Racionální čísla, operátory, výrazy, knihovní funkce

Bakalářská matematika I

GeoGebra známá i neznámá (pokročilí)

Projekt IMPLEMENTACE ŠVP. pořadí početních operací, dělitelnost, společný dělitel a násobek, základní početní operace

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Pro tvorbu samostatně spustitelných aplikací je k dispozici Matlab library.

ZŠ ÚnO, Bratří Čapků 1332

Operační systémy 2: Zápočtové úkoly

Algoritmizace a programování

Osnova kurzu OBSLUHA PC ZÁKLADNÍ ZNALOSTI. pilotního projektu v rámci I. Etapy realizace SIPVZ

Výpočetní technika. PRACOVNÍ LIST č. 7. Ing. Luděk Richter

KTE / PPEL Počítačová podpora v elektrotechnice

MATURITNÍ TÉMATA Z MATEMATIKY

ALGORITMIZACE A PROGRAMOVÁNÍ

IV. Základní pojmy matematické analýzy IV.1. Rozšíření množiny reálných čísel

Jan Kratochvíl, F 3 MOD. 15. února 2004

Příloha č. I: Schéma zapojení vývojové desky PVK-PRO

Cvičení z matematiky - volitelný předmět

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

5. kapitola Spouštění aplikací Visual Basic.Net, spustitelné soubory

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

5 Přehled operátorů, příkazy, přetypování

4. Jednoduché výpočty

Základní principy zobrazení čísla Celá čísla s pevnou řádovou čárkou Zobrazení reálných čísel Aritmetika s binárními čísly

ZŠ ÚnO, Bratří Čapků 1332

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

ALGORITMIZACE PRAKTICKÉ

1. Úvod do obsluhy AutoCADu

C2115 Praktický úvod do superpočítání

Číslo hodiny. Označení materiálu. 1. Mnohočleny. 25. Zlomky. 26. Opakování učiva 7. ročníku. 27. Druhá mocnina, odmocnina, Pythagorova věta

4.3.2 Goniometrické rovnice II

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Variace. Mocniny a odmocniny

15. Projekt Kalkulačka

Úvod do programování. Lekce 1

PODPROGRAMY PROCEDURY A FUNKCE

Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM. Manuál pro editaci ŽS. Verze 1.

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

LEKCE 6. Operátory. V této lekci najdete:

Algoritmizace prostorových úloh

= - rovnost dvou výrazů, za x můžeme dosazovat různá čísla, tím měníme

Reliance 3 design OBSAH

Anotace: Digitální učební materiály slouží k zopakování a k testování získaných znalostí a dovedností.

Programovací jazyk Pascal

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Tento dokument popisuje instalaci a používání elektronické cvičebnice Styx.

Výčtový typ strana 67

Jednoduchý návod k použití programu Vinotéka 2007, v 2.2.1

CATIGA CS 183. Uživatelský manuál

1 Uživatelská dokumentace

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

Projekt OPVK - CZ.1.07/1.1.00/ Matematika pro všechny. Univerzita Palackého v Olomouci

Matematika. ochrana životního prostředí analytická chemie chemická technologie Forma vzdělávání:

Zobrazte si svazy a uspořádané množiny! Jan Outrata

RELAČNÍ DATABÁZE ACCESS

Transkript:

ZÁPOČTOVÁ PRÁCE z UIR Jméno a příjmení: Jan Tichava Osobní číslo: Studijní skupina: pondělí, 4 5 Obor: INIB INF E-mail: jtichava@students.zcu.cz Datum odevzdání: 1.5.2006

Zadání Označení zadání: 2004KT01 Vytvořte program "", který bude realizovat běžné výpočty. Program umožní zadávat analytické výrazy, které bude analyzovat, a provádět výpočet. Čili dokáže pracovat např. s následujícím zápisem: sin(90)+200/cos(90)*300 Umožní navíc definovat až 10 proměnných (x1 až x10), které lze pak používat ve výrazech, např. tan(x1*x2). Analýza úlohy Návrh vzhledu a funkce programu byl částečně inspirován v programu AllerCalc a částečně skutečnou kalkulačkou Texas Instruments TI-89 (odkazy na tyto produkty viz: http://home.zcu.cz/~jtichava/uir). Nalezl jsem několik různých postupů, jak vyhodnotit matematický výraz. Jednou možností je, rozložit si celý výraz do stromu podle závorem a pak strom postupně od listů vyhodnotit. Jinou možností je naprogramovat gramatiku pro rozpoznávání výrazů. Poslední možností, kterou jsem nalezl bylo vyhodnocování s postupných ukládáním výrazu do zásobníku. Uvažoval jsem mezi vyhodnocováním pomocí stromu a pomocí zásobníku. Vyhodnocování stromem není těžké, ale zavrhnul jsem ho, protože mi připadala složitější implementace zpracování funkcí. Proto jsem se rozhodl vyhodnocovat výraz pomocí zásobníku Popis algoritmu řešení V souboru JAR je přiložena vygenerovaná JavaDoc dokumentace, která obsahuje popis všech public metod a tříd. Všechny metody jsou okomentovány pro JavaDoc, ale pro případné uživatele těchto tříd nejsou podstatné, protože nejsou z jiné metody viditelné. 1

Prezentační vrstva Vrstva obsahuje metody pro zobrazování grafického prostřední a jeho obsluhu. Sbírá data od uživatele a předává je aplikační vrstvě k vyhodnocení. Po vyhodnocení výrazu zobrazí výsledek, případně chybu, pokud byl výraz nekorektní. Aplikační vrstva Vrstva přijme od prezentační vrstvy textový řetězec jako vstupní výraz. Nejprve projde celý řetězec a nahradí znak desetinné čárky za desetinnou tečku. Pak nahradí všechny konstanty a proměnné v řetězci jejich skutečnými hodnotami, v případě, že není před konstantou či proměnnou operace, jaká se má provést, bude se předpokládat implicitní násobení. Před vlastním vyhodnocováním budou ještě nahrazeny všechny funkce jejich funkčními hodnotami, argumentem funkce může být libovolný aritmetický výraz jedno číslo, libovolná aritmetická operace s čísly nebo další funkce se svými argumenty, výrazy uvnitř argumentu funkce je možno libovolně závorkovat. Na tomto místě se již ve výrazu nevyskytují proměnné a konstanty, proto je již neuvažuji. Nyní se ve výrazu vyskytují pouze čísla spojená různými operandy, mohou být ještě uzavřeny v závorkách, a jejich vyhodnocení je již triviální záležitost. Vyhodnocení výrazu Výraz je definovatelný jako posloupnost: číslo, operand, číslo, operand operand, číslo, proto se automaticky na konec přidává znak =, aby bylo možné vytvořit dvojice [číslo, operand]. Při průchodu řetězcem se přečte číslo a uloží do zásobníku pro čísla (dále ZC), pak se přečte operand a uloží do zásobníku pro operandy (dále ZO). Tuto akci porad opakuje a přitom porovnáváme jestli má operand, který právě přidáváme vyšší nebo nižší prioritu, pokud má nižší, tak provede operaci, která je v zásobníku a opět porovnáme operandy a postupujeme stejně. Pokud je priorita vyšší, pouze vložíme do zásobníku. Pokud se ve výrazu vyskytují závorky, nejprve se vyhodnotí obsah nejvíce vnořené závorky a postupně se hloubka zanoření zmenšuje, až bude výraz vyhodnocen celý. Obdobně se vyhodnocují funkce vyhodnotí se vnitřek argumentu funkce jako obyčejný výraz a pak se vyhodnotí funkční hodnota. Popis programu Aplikace je naprogramována v jazyce Java. Pro běh programu je nutné mít nainstalováno JRE verze 1.5, ideálně 1.5.0_06-b05 na které byl program testován. Na jiných verzích Javy nemusí být zaručena bezproblémová funkce programu starší verze Javy nemají typované kolekce a naopak v novější verzi 1.6 nefunguje automatické posouvání výsledku. 2

Jako přílohu přikládán UML diagram, nepopisuji v něm Prezentační vrstvu, protože obsahuje vesměs pouze velké množství tříd, které jsou potřebné pro GUI. Popis jednotlivých tříd a metod viz vygenerovaný JavaDoc v JAR souboru. Popis obsluhy programu Program je možné spustit na libovolné platformě, například Microsoft Windows, většina distribucí Linuxu a dalších, jedinou podmínkou je nainstalovaná Java, nejlépe ve verzi 1.5 a vhodné grafické prostředí ze známých uvedu KDE nebo Gnome, která se často používají v Linuxu. Na všech systéme půjde program spustit pomocí příkazu java -jar kalkulacka.jar, který zobrazí navíc konzoli systému. Na většině systémů by mělo být možné spustit program také pomocí příkazu javaw -jar kalkulacka.jar, který již konzoli nezobrazuje. V případě správně nakonfigurovaného systému stačí poklepat na soubor a program se spustí. Hlavní okno programu Celé okno lze rozdělit na 4 hlavní části: příkazový řádek, výstupní pole. numerická část a ovládací tlačítka. Adresní řádek Do adresního řádku může uživatel zadávat libovolné matematické výrazy, které kalkulačka podporuje a libovolně je uzavírat do kulatých závorek. např.: sin(90)+200/cos(90)*300 3

Výstupní pole Zobrazí se zde výraz, který uživatel zadal a bezprostředně pod ním hned výsledek, popřípadě Chyba!, pokud je výraz nekorektně napsaný nebo výsledek vede k chybě. Numerická část Umožňuje zadávání jednoduchých matematických výrazů pomocí myši Ovládací tlačítka Paměť Stupně/Radiány Vymazat About Zobrazí dialog pro správu proměnných Přepíná mezi počítáním ve stupních nebo radiánech Vymaže výstupní pole Zobrazí dialog s informacemi o aplikaci Správa proměnných 4

Přidání proměnné Po vyplnění názvu proměnné a její hodnoty je nutné stisknout tlačítko a proměnná bude přidána. Pokud proměnná se stejným názvem již existuje, bude její hodnota nahrazena novou. Odebrání proměnné Podobně jako při přidávání, ale pole pro hodnotu se nechá volné a proměnná bude odebrána. About Podporované příkazy Základní operace + - * / sčítání, odčítání, násobení dělení sqrt() druhá odmocnina % zbytek po dělení Pokročilé operace E exponent = *10^n ^ umocňování na n-tou abs() absolutní hodnota sgn() znaménko funkce ln() přirozený logaritmus log() dekadický logaritmus () upravení priorit závorkováním Goniometrické funkce sin(), cos(), tan() sina(), cosa(), tana() sinh(), cosh() základní inverzní hyperbolické Konstanty pi Ludolphovo číslo π (3,141592654) exp Eulerovo číslo (2,718281828) Celý dokument a všechny screenshoty jsou umístěny v plné kvalitě zde: http://home.zcu.cz/~jtichava/uir 5

Rozbor výsledků, zhodnocení Program je plně funkční téměř na každé myslitelné platformě, bez nutnosti jeho nové kompilace nebo jiných změn pro dané prostředí. Uživatel může zadat libovolný aritmetický výraz s využitím výše uvadaných funkcí a program je vyhodnotí. První nevýhodou je nutnost instalovat na počítač Java Runtime Environment, to je daň za výše uvedenou přenositelnost mezi různými platformami. Program má také o trochu vyšší hardwarové nároky na počítač na rozdíl od aplikace, která se překládá přímo do spustitelného kódu, ale to bych dnes již neoznačoval jako nevýhodu, ale spíše jen jako malé mínus. Závěr Program provádí vše, co bylo požadováno v zadání a navíc umožňuje deklarovat libovolné množství vlastních uživatelských proměnných s názvem, jaký si zvolí uživatel. Další funkce, kterou kalkulačka zvládá je přepínání mezi stupni a radiány. V případném dalším vývoji tohoto programu by bylo možné poměrně jednoduše implementovat další funkce, které by kalkulačka vyhodnocovala nebo vykreslování grafů funkcí. 6