}w!"#$%&'()+,-./012345<ya
|
|
- Jiří Novotný
- před 9 lety
- Počet zobrazení:
Transkript
1 }w!"#$%&'()+,-./012345<ya MASARYKOVA UNIVERSITA FAKULTA INFORMATIKY Vizualizace základních abstraktních datových typů BAKALÁŘSKÁ PRÁCE Martin Herodes Brno, jaro 2002
2 Prohlášení Prohlašuji, že tato bakalářská práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj. ii
3 Shrnutí Cílem projektu bylo vytvořit program, který by ilustroval práci a použití základních abstraktních datových typů - spojového seznamu, zásobníku, fronty a binárního stromu. Projekt byl rozdělen mezi čtyři studenty následovně: Spojový seznam - Pavel Drášil, xdrasil@fi.muni.cz Binární strom - Tomáš Udržal, xudrzal@fi.muni.cz Zásobník - Martin Herodes, xherodes@fi.muni.cz Fronta - Jiří Winkler, xwinkle1@fi.muni.cz Realizován byl jako aplet v programovacím jazyku Java zejména pro možnost spuštění v internetovém prohlížeči. Použito bylo grafické uživatelské prostředí JFC Swing 1. 1 Java Foundation Classes Swing iii
4 Klíčová slova JAVA, abstraktní datový typ, zásobník, fronta, spojový seznam, binární strom iv
5 Obsah 1 Zadání Abstraktní datové typy Zásobník Fronta Spojový seznam Binární strom Použitý software Programovací jazyk Java Výběr grafického uživatelského prostředí Řešení projektu Popis programu Výběr datového typu Vizualizace zásobníku Vyhodnocování aritmetických výrazů O zásobníku Použité algoritmy Převod infixu na postfix Převod postfixu na výsledek Převod infixu na výsledek Závěr A Dokumentace
6 Seznam obrázků 4.1 Výběr datového typu Vizualizace zásobníku Vyhodnocování aritmetických výrazů Okno s informacemi o zásobníku
7 Kapitola 1 Zadání Naprogramovat v jazyce Java jednak třídu s metodami pro visualisaci elementů použitelných pro ilustraci práce a použití spojových seznamů, zásobníků, front a binárních stromů a jednak samotnou ilustraci práce a použití spojových seznamů, zásobníků, front a binárních stromů. Předpokládá se spolupráce čtyř studentů, kteří by se podělili o práci v prvním bodě a každý by si vzal jeden z bodů následujících. Vedoucí projektu: RNDr. Aleš Zlámal, zlamal@fi.muni.cz 3
8 Kapitola 2 Abstraktní datové typy V matematice je obvyklé klasifikovat proměnné podle určitých význačných vlastností. Důkladně se odlišují reálné proměnné od komplexních a logických proměnných. Podobný způsob klasifikace je stejně důležitý při zpracování dat v programu. Každá proměnná, konstanta, výraz nebo funkce jsou jistého typu. Tento typ určuje množinu hodnot, do které daná konstanta patří, nebo kterou může nabývat výraz nebo funkce. Zajímají nás tedy pouze význačné vlastnosti zpracovávaných dat. Tomuto principu zjednodušení se říká abstrakce. U datových abstrakcí se využívá oddělení informací, které nás zajímají od vnitřní reprezentace dat. Pro uživatele typu představuje datová abstrakce černou skříňku, jejíž vnější efekty zná, ale vnitřek zůstává skryt. Abstraktní datový typ je datový typ reprezentující množinu datových objektů a množinu operací, které se nad těmito objekty mohou provádět. Přitom je potlačeno hledisko, jak jsou data uložena, a jak se nad nimi provádějí operace. Je zdůrazněno, co data reprezentují a co s nimi operace provádějí. Mezi základní abstraktní datové typy patří zásobník, fronta, spojový seznam a binární strom. Tyto budou v dalších podkapitolách podrobněji popsány. Existují však další jako například graf, tabulka, různé druhy stromů, Zásobník Zásobník je datová struktura, která umožňuje uchovávat posloupnost proměnného počtu prvků téhož typu. Přístup k prvkům této posloupnosti je možný jen z jednoho jejího konce, tzv. vrcholu zásobníku. Spočívá v uložení prvku na vrchol zásobníku a odebrání prvku z vrcholu zásobníku. Proto bývá zásobník nazýván seznamem typu LIFO (last in first out). Kromě přidávání a odebírání prvků se používá nahlédnutí na vrchol bez odebrání, test na prázdnost a vyprázdnění. Vlastnosti zásobníku jsou velmi podobné řadě objektů, které mají v praktickém životě stejné jméno. Zásobník lze implementovat např. pomocí dynamických proměnných nebo použitím pole. Zásobník nachází široké uplatnění v programovacích technikách a určuje podstatu řady významných algoritmů. Na úrovni hardwaru se používá pro ukládání instrukcí procesoru. V programovacích jazycích je pomocí zásobníku implementováno předávání parametrů u funkcí. V programech je často výhodné použití zásobníku. Například program, který má ze vstupního souboru přečíst posloupnost znaků a vytisknout je v obráceném pořadí. Realizace takového programu je jednoduchá - jen opakovaně provádíme uložení znaků do zásobníku a následně odebrání znaků ze zásobníku. Dalším příkladem využití zásobníku může být převod aritmetického výrazu do postfixu a následné vyhodnocení, nebo přímo vyhodnocení aritmetického výrazu v infixovém tvaru. Tyto techniky jsou podrobně popsány v kapitole Oddíl
9 2.2. FRONTA 2.2 Fronta Fronta je datová struktura, která umožňuje uchovávat posloupnost prvků téhož typu. Může z ní být odebrán pouze ten prvek, který do ní byl uložen jako první, tj. je v čele fronty. Nový prvek se do fronty ukládá za ten prvek, který do ní byl uložen jako poslední - na konec fronty. Proto bývá fronta nazývána seznamem typu FIFO (first in first out) aneb kdo dřív přijde, ten dřív mele. Kromě přidávání a odebírání prvků se používá nahlédnutí na čelo fronty bez odebrání, test na prázdnost a vyprázdnění. Na rozdíl od zásobníku, který manipuluje s prvky pouze na jednom konci, fronta umožňuje manipulaci s prvky na obou jejích koncích. Frontu lze implementovat např. pomocí dvou zásobníků nebo použitím cyklického pole. Fronta nachází uplatnění především v úlohách z oblasti hromadné obsluhy, do kterých spadají i některé problémy, které jsou součástí operačních systémů. 2.3 Spojový seznam Spojový seznam je datová struktura umožňující uchovávat posloupnost proměnného počtu prvků téhož typu. Zásobník a fronta jsou jeho speciální případy. Základní operace prováděné nad datovou strukturou jsou uložení prvku do seznamu a odebrání prvku ze seznamu. Tyto operace je možné aplikovat v kterémkoli místě seznamu. Často definujeme složitější operace (zpřístupnění n-tého prvku, rozdělení seznamu na dva, spojení dvou seznamů,...) a během výpočtu seznamy vytváříme a rušíme. Implementace seznamů se provádí obvykle pomocí dynamických proměnných. Spojový seznam je jednou z nejobecnějších datových struktur používaných zejména v oblasti nenumerického zpracování dat. Druhy seznamů jsou - jednosměrný, obousměrný a kruhový seznam. 2.4 Binární strom Strom je bud prázdný nebo vrchol základního typu spolu s konečným počtem připojených disjunktních stromových struktur základního typu, které nazýváme podstromy. Stromy mají řadu zajímavých vlastností a nalezneme je v mnoha aplikacích. Binární strom je strom, jehož každý uzel má nejvýše dva potomky (levý a pravý). Je nejvhodnějším kandidátem na reprezentaci slov vyskytujících se v textu. Jednou z nejdůležitějších operací nad stromem je procházení vrcholů. Pro průchod stromem můžeme použít různé strategie: preorder - zpracuje vrchol, projde levý podstrom, projde pravý podstrom inorder - projde levý podstrom, zpracuje vrchol, projde pravý podstrom postorder - projde levý podstrom, projde pravý podstrom, zpracuje vrchol 5
10 Kapitola 3 Použitý software 3.1 Programovací jazyk Java Projekt byl vytvořen v programovacím jazyku Java. Tento objektově orientovaný jazyk, který se syntaxí velmi podobá jazyku C++, je nezávislý na konkrétní platformě. Výsledné programy se tak mohou spouštět v nejrůznějších systémech. To je možné díky tomu, že Java běží na abstraktně definovaném virtuálním stroji (Java VM), který je v cílovém systému emulován. Tomuto prostředí pro spouštění Javy se říká Java Runtime Environment (JRE). Vývojář pracující v Javě vytvoří pouze jeden univerzální zdrojový kód. Ten přeloží do binárního kódu pro Java VM, tzv. bajtkód. Nejedná se však o spustitelný soubor, ale o soubor, který je spuštěn zadáním parametru pro interpret Javy (JRE) pomocí příkazu java název_souboru To byla možnost spuštění programu jako aplikace. Java má však další způsob, a tím jsou aplety. Aplety jsou speciální třídy, které běží na webovém prohlížeči, který podporuje Javu. Tato podpora je již integrována, ale v Netscape Navigatoru či Internet Exploreru se může pomocí zásuvného modulu Javy od Sunu nahradit aktuální verzí. Aplety jsou do webových stránek vkládány pomocí speciální instrukce jazyka HTML a uloženy většinou na webovém serveru. Mohou komunikovat s prohlížečem a případně i s webem, kde jsou uloženy. Bezpečnostní omezení v apletech by měla zajistit, aby neznámý kód nahraný webovým serverem nemohl poškodit či špehovat systém. 3.2 Výběr grafického uživatelského prostředí Zejména kvůli možnosti spuštění v internetovém prohlížeči byl projekt vytvořen jako aplet. Bylo nutné si vybrat ze dvou grafických uživatelských rozhraní, které Java nabízí - Awt nebo Swing. Obě mají své výhody a nevýhody. Starší a jednodušší AWT nechává vykreslování komponent na operačním systému. Je tedy rychlejší, ale výsledný program má jiný vzhled v různých operačních systémech. Naproti tomu Swing, který je v podstatě rozšířením AWT, je pomalejší, protože si sám vykresluje komponenty. Programy mají ve všech operačních systémech stejný vzhled, a tedy odpadá testování na jiných systémech. Největší nevýhodou Swingu je ovšem malá podpora v internetových prohlížečích. Podporován je v podstatě jen na těch nejnovějších a to znamená, že uživatelé některých prohlížečů budou nuceni doinstalovat plug-iny, protože jinak aplet nespustí. V budoucnosti bude ale pravděpodobně výhradně používáno grafické rozhraní Swing, a proto bylo použito na realizaci projektu. 6
11 Kapitola 4 Řešení projektu 4.1 Popis programu Výběr datového typu Po spuštění programu z internetového prohlížeče se objeví základní aplet Výběr datového typu (obr. 4.1): Obrázek 4.1: Výběr datového typu Zde si může uživatel vybrat z nabízených možností a po provedení tlačítka Spustit se provede otevření formuláře s vybraným abstraktním datovým typem. Po jeho případném ukončení je možno z apletu znovu spustit některý z abstraktních datových typů. Uzavřením okna se základním apletem se program ukončí Vizualizace zásobníku Po spuštění formuláře se zásobníkem se uživatel dostane do režimu Vizualizace zásobníku (obr. 4.2) a má následující možnosti: Vybere z menu položku Spustit : 7
12 Zásobník neprovede se nic, protože uživatel má zásobník již spuštěný 4.1. POPIS PROGRAMU Fronta ukončení formuláře se zásobníkem a otevření nového formuláře s frontou Spojový seznam ukončení formuláře se zásobníkem a otevření nového formuláře se spojovým seznamem Binární strom ukončení formuláře se zásobníkem a otevření nového formuláře s binárním stromem Konec ukončení formuláře se zásobníkem Vybere z menu položku Možnosti : Vizualizace zásobníku neprovede se nic, protože uživatel má vizualizaci zásobníku právě spuštěnou Vyhodnocování aritmetických výrazů přepnutí do režimu vyhodnocování aritmetických výrazů Vybere z menu položku Nápověda : O zásobníku otevření okna s nápovědou o zásobníku Provede nějakou akci na panelu: Přidat přidání prvku do zásobníku Odebrat odebrání prvku ze zásobníku Vyprázdnit vyprázdnění zásobníku Vrchol vypíše prvek, který je na vrcholu zásobníku Animace zaškrtnutí znamená, že se při přidání a odebrání bude prvek animovat Zadávání prvků zaškrtnutí znamená, že se do zásobníku budou přidávat prvky, které zadá uživatel Obrázek 4.2: Vizualizace zásobníku 8
13 4.1. POPIS PROGRAMU Vyhodnocování aritmetických výrazů Po přepnutí do režimu Vyhodnocování aritmetických výrazů (obr. 4.3) má uživatel následující možnosti: Vybere z menu položku Spustit : Zásobník neprovede se nic, protože uživatel má zásobník již spuštěný Fronta ukončení formuláře se zásobníkem a otevření nového formuláře s frontou Spojový seznam ukončení formuláře se zásobníkem a otevření nového formuláře se spojovým seznamem Binární strom ukončení formuláře se zásobníkem a otevření nového formuláře s binárním stromem Konec ukončení formuláře se zásobníkem Vybere z menu položku Možnosti : Vizualizace zásobníku přepnutí do režimu vizualizace zásobníku Vyhodnocování aritmetických výrazů neprovede se nic, protože uživatel má vyhodnocování aritmetických výrazů právě spuštěné Vybere z menu položku Nápověda : O zásobníku otevření okna s nápovědou o zásobníku Vybere z možností převedení nebo zobrazení na panelu: Infix na postfix nastavení převodu z infixu na postfix, které se spustí po stisknutí tlačítka Spustit Postfix na výsledek nastavení převodu z postfixu na výsledek, které se spustí po stisknutí tlačítka Spustit Infix na výsledek nastavení převodu z infixu na výsledek, které se spustí po stisknutí tlačítka Spustit Postup nastavení zobrazení výsledku s postupem Jen výsledek nastavení zobrazení výsledku bez postupu Provede nějakou akci na panelu: Spustit nebo Zastavit pokud je spuštěný převod, tak ho zastaví a pokud není tak ho spustí Jeden krok provede jeden krok převodu Dokonči dokončí převod výrazu Animace po zaškrtnutí se bude prvek při přidávání a odebírání ze zásobníku animovat Zadá aritmetický výraz nebo vybere z nabízených možností. 9
14 4.2. POUŽITÉ ALGORITMY Obrázek 4.3: Vyhodnocování aritmetických výrazů O zásobníku Po vybrání položky O zásobníku z menu se zobrazí okno s informacemi o zásobníku (obr. 4.4). 4.2 Použité algoritmy Jako ukázku použití zásobníku jsem ve třídě Zásobník vytvořil funkce pro práci s aritmetickými výrazy. Použil jsem tři algoritmy - převod infixu na postfix, postfixu na výsledek a infixu na výsledek. Vzhledem k tomu, že jsem od programu požadoval, aby mohl uživatel provádět převod po jednotlivých krocích a dokonce s animací, musel jsem vytvořit takové funkce, které by prováděly vždy jen jeden krok výpočtu. To se mi podařilo díky příkazu return, kterým jsem funkce přerušoval. Nyní uvedu algoritmy, které jsem použil při vyhodnocování aritmetických výrazů Převod infixu na postfix IN - vstupní řetězec v infixu, OUT - výstupní řetězec v postfixu, ST - zásobník pro odkládání operátorů a závorek, Na vstupu IN je: číslo X, pak jde na OUT pak v ST není ještě žádný operátor, pak jde do zásobníku ST v ST je na vrcholu operátor #, pak if priorita(#)>=priorita(@), pak # jde na jde do ST if priorita(#)< priorita(@), jde do ST levá závorka, pak ( jde do ST (vytváří tzv. logické dno) pravá závorka, pak vyhazuje z ST operátory na OUT, dokud nenarazí na první logické dno (levou závorku, tu zruší) nic, pak vyprázdní ST (přesune všechny operátory z ST na OUT) 10
15 4.2. POUŽITÉ ALGORITMY Obrázek 4.4: Okno s informacemi o zásobníku Převod postfixu na výsledek algoritmus nastav se na začátek řetězce; repeat čti prvek; case prvek of číslo x: zapiš x do zásobníku Z; vyjmi ze zásobníku tolik operandů, jaká je arita proved příslušnou matematickou operaci její výsledek ulož do Z; end; until na vstupu je prázdný řetězec; výsledek:=hodnota, která zůstala v zásobníku (jediná) poznámky položka v zásobníku Z musí být typu real (kvůli dělení) ošetření chyb (syntakticky nesprávně zapsané výrazy v infixové notaci) Převod infixu na výsledek Následující algoritmus využívá dva pomocné zásobníky. Jeden operátorový (pro odkládání operátorů a závorek) a druhý hodnotový (jen pro odkládání čísel). 11
16 Základem jeho rozhodnutí v každém kroku je to, co se načetlo ze vstupu (1): Číslo je vždy bez jakékoliv další akce uloženo do zásobníku hodnot (3) POUŽITÉ ALGORITMY Operátor putuje do zásobníku operátorů (2), kde může dojít k těmto situacím: V případě, že je zásobník prázdný, tak operátor prostě uložíme. Pokud zásobník není prázdný, postupně z něj vybíráme a vyhodnocujeme všechny operátory, které mají vyšší a stejnou prioritu jako operátor načtený ze vstupu, jenž následně do zásobníku uložíme. Vyhodnocování operátorů ze zásobníku končí když: vyprázdníme operátorový zásobník nebo narazíme na levou závorku (ta hraje dočasně roli dna zásobníku a zde ji ještě neodstraňujeme) narazíme na uložený operátor (ten také z operátorového zásobníku neodstraňujeme ani nevyhodnocujeme), který má nižší prioritu jako vstupující operátor Levá závorka je vždy bez jakékoliv další akce uložena do operátorového zásobníku (2). Pravá závorka značí, že je nutno vyhodit všechny operátory z operátorového zásobníku až do prvního výskytu uložené levé závorky, kterou je potřeba odstranit. Vyprázdní-li se během tohoto vyhodnocování operátorový zásobník (bez vybrání levé závorky), potom je ve vstupním výrazu chyba (chybí levá závorka). Konec výrazu znamená, že je třeba dovyhodnotit všechny operátory z operátorového zásobníku a z hodnotového zásobníku si vyzvednout výsledek celého výrazu (4). Poté by měl být zásobník hodnot prázdný, jinak byla ve vstupním výrazu chyba. Objeví-li se během dovyhodnocování operátorů v operátorovém zásobníku levá závorka, je to, jak jinak, chyba ve vstupním výrazu (chybí pravá závorka). Zbývá upřesnit, co znamená vyhodnotit operátor z operátorového zásobníku : spočívá to ve vyzvednutí příslušného počtu operandů ze zásobníku hodnot (kolik - arita operátoru), provedení operace určené operátorem (např. -, pozor na obrácené pořadí operandů u nekomutativních operací) a uložení výsledku do zásobníku hodnot. 12
17 Kapitola 5 Závěr V rámci projektu jsem vytvořil abstraktní datový typ Zásobník, který je součástí balíčku ADT. V tomto balíčku jsou čtyři základní abstraktní datové typy - Zásobník, Fronta, Spojový seznam a Binární strom. Jsou vytvořeny kompletně objektově, proto je lze snadno využít. Zásobník umí navíc pracovat s aritmetickými výrazy - vyhodnocovat je a převádět do postfixu. Výsledný program (aplet) je pak určen k porozumění základním abstraktním datovým typům. Přehlednou formou a pomocí animace ukazuje, jak fungují základní operace nad těmito typy. Jako ukázku použití zásobníku jsem zvolil vyhodnocování aritmetických výrazů. Program umožňuje vyhodnocení aritmetických výrazů po jednotlivých krocích a pomocí animace. Dá se tedy dobře pochopit celý princip převodu. 13
18 Literatura [Hawlitzek] [Herout] [Sedláček] [Skřivan] [Snášel] [Škarvada] [Wirth] JAVA 2 příručka programátora, Florian Hawlitzek, 2002, Grada publishing, Praha. JAVA grafické uživatelské prostředí a čeština, Pavel Herout, 2001, nakladatelství KOPP České Budějovice. Poznámky k semináři z Návrhu algoritmů, Martin Sedláček, 2000, FI MU Brno. I065 - Seminář z Návrhu algoritmů, Jaromír Skřivan, 2000, FI MU Brno. Datové struktury, Václav Snášel, 1991, rektorát Univerzity Palackého Olomouc. I002 - Návrhu algoritmů, Libor Škarvada, 2000, FI MU Brno. Algoritmy a štruktúry údajov, Niklaus Wirth, 1989, vydavatel stvo technickej a ekonomickej literatury ALFA Bratislava. 14
19 Příloha A Dokumentace V programovacím jazyku JAVA existuje speciální typ komentáře pro generování autorské dokumentace, který rozeznává kompilátor javadoc a převádí jej do formátu HTML. Je to poměrně dobrá možnost tvorby dokumentace, a proto jsem ji také využíval. Vzhledem k obsáhlosti dokumentace uvádím v příloze pouze základní třídy balíčku ADT, které používá formulář pro práci se zásobníkem. 15
20 package ADT Class Prvek public class Prvek extends JComponent implements Cloneable Title: Prvek Description: Základní grafický element - obdélníček s vepsaným textem. Pro napojení šipek poskytuje metody gettop(), getleft(), getbottom(), getright(). Pohyb prvku po úsečce umožňuje metoda moveto(). Copyright: Copyright (c) 2002 Version: 1.0 Author: Pavel Drášil, Jiří Winkler, Martin Herodes, Tomáš Udržal Field Detail label private String label Text, který označuje tento prvek x private int x X-ová souřadnice levého horního rohu y private int y Y-ová souřadnice levého horního rohu width private int width Šířka obdélníku 16
21 height private int height Výška obdélníku Constructor Detail Prvek public Prvek(String label, int x, int y, int width, int height) Konstruktor, ve kterém se specifikují všechny parametry prvku label - text, který označuje tento prvek x - X-ová souřadnice levého horního rohu y - Y-ová souřadnice levého horního rohu width - šířka obdélníku height - výška obdélníku Prvek public Prvek(String label, int x, int y, Dimension size) Konstruktor, určený pro použití při práci s větším počtem Prvků stejné velikosti (jako parametr "size" může být opakovaně používán stejný objekt) label - text, který označuje tento prvek x - X-ová souřadnice levého horního rohu y - Y-ová souřadnice levého horního rohu size - objekt, který nastaví šířku a výšku obdélníku Method Detail clone public Object clone() Vrací kopii tohoto prvku 17
22 getlabel public String getlabel() Vrací text, který označuje tento prvek String název prvku getx public int getx() Vrací X-ovou souřadnici levého horního rohu int X-ová souřadnice gety public int gety() Vrací Y-ovou souřadnici levého horního rohu int Y-ová souřadnice gettop public Point gettop() Vrací souřadnice středu horní strany prvku Point souřadnice getbottom public Point getbottom() Vrací souřadnice středu dolní strany prvku Point souřadnice getleft public Point getleft() Vrací souřadnice středu levé strany prvku Point souřadnice 18
23 getright public Point getright() Vrací souřadnice středu pravé strany prvku Point souřadnice setlabel public void setlabel(string s) Nastaví text, který označuje tento prvek String - název prvku moveto public void moveto(int newx, int newy) Posune prvek na nové souřadnice newx - nová X-ová souřadnice levého horního rohu newy - nová Y-ová souřadnice levého horního rohu moveto public void moveto(int newx, int newy, long timeout) Posune prvek na nové souřadnice a přitom ho zobrazuje newx - nová X-ová souřadnice levého horního rohu newy - nová Y-ová souřadnice levého horního rohu timeout - rychlost pohybu moverel public void moverel(int dx, int dy) Posun prvku na relativní pozici moverel public void moverel(int dx, int dy, 19
24 long timeout) Animovaný posun prvku na relativní pozici paintcomponent public void paintcomponent(graphics g) Vykreslí pozadí prvku g - Graphics paintborder public void paintborder(graphics g) Vykreslí rámeček kolem prvku g - Graphics package ADT Class Zasobnik public class Zasobnik extends JComponent Title: Zásobník Description: Třída Zásobník pro práci se zásobníky Copyright: Copyright (c) 2002 Version: 1.0 Author: Martin Herodes 20
25 Field Detail POSUN public static final int POSUN Konstanta - udává délku o kterou se prvek vychýlí od zásobníku při přidání a odebrání prvku TIMEOUT public static final int TIMEOUT Rychlost animace MAXPOCET public static final int MAXPOCET Konstanta - maximální počet prvků v zásobníku z private Prvek[] z Pole pro ukládání prvků maxpocet private int maxpocet Maximální počet prvků, které se mohou zobrazit - podle výšky zásobníku pocet private int pocet Počet prvků v zásobníku size private Dimension size Rozměr prvků, které se mohou vložit do zásobníku x private int x X-ová souřadnice levého horního rohu 21
26 y private int y Y-ová souřadnice levého horního rohu width private int width Šířka zásobníku height private int height Výška zásobníku bod_x private int bod_x Pomocný bod, na který se přidává nový prvek - X-ová souřadnice bod_y private int bod_y Pomocný bod, na který se přidává nový prvek - Y-ová souřadnice Constructor Detail Zasobnik public Zasobnik(int x, int y, int maxpocet, Dimension size) Konstruktor, který vytváří na zadaném místě prázdný zásobník, ve kterém lze zobrazit maximálně "maxpocet" prvků o rozměrech "size" x - X-ová souřadnice y - Y-ová souřadnice maxpocet - maximální počet zobrazitelných prvků v zásobníku size - objekt, který specifikuje rozměry prvků 22
27 Method Detail getpocet public int getpocet() Vrací počet prvků v zásobníku int počet prvků getmaxpocet public int getmaxpocet() Vrací maximální počet prvků, které se mohou zobrazit int maximální počet zobrazitelných prvků getsize public Dimension getsize() Vrací rozměry prvků, které se mohou vložit do zásobníku Dimension objekt s rozměrem prvků getbod_x public int getbod_x() Vrací pomocný bod, na který se přidává nový prvek - X-ová souřadnice int X-ová souřadnice pomocného bodu getbod_y public int getbod_y() Vrací pomocný bod, na který se přidává nový prvek - Y-ová souřadnice int Y-ová souřadnice pomocného bodu isempty public boolean isempty() Zjišťuje, zda je zásobník prázdný boolean jestli je zásobník prázdný 23
28 Push public void Push(Prvek prvek, boolean vizual) Pridává prvek do zásobníku prvek - prvek přidávaný do zásobníku vizual - boolean jestli má být při přidání použita vizualizace Push public void Push(String label, boolean vizual) Pridává řetězec znaků do zásobníku label - String řetězec znaků přidávaný do zásobníku vizual - boolean jestli má být při přidání použita vizualizace Push public void Push(char znak, boolean vizual) Pridává jeden znak do zásobníku znak - char znak přidávaný do zásobníku vizual - boolean jestli má být při přidání použita vizualizace Push public void Push(int cislo, boolean vizual) Pridává celé číslo do zásobníku cislo - int celé číslo přidávané do zásobníku vizual - boolean jestli má být při přidání použita vizualizace Push public void Push(float cislo, boolean vizual) Pridává reálné číslo do zásobníku cislo - float reálné číslo přidávané do zásobníku vizual - boolean jestli má být při přidání použita vizualizace 24
29 Pop public void Pop(boolean vizual) Odebírá prvek ze zásobníku vizual - boolean jestli má být při odebrání prvku použita vizualizace Top public String Top() Nahlédnutí na vrchol zásobníku aniž by byl prvek odebrán String název prvku, který je na vrcholu zásobníku setvisible public void setvisible(boolean visible) Skrývá a zobrazuje zásobník i se všemi jeho prvky visible - boolean jestli má zásobník skrýt nebo zobrazit jscrollbar1_adjustmentvaluechanged private void jscrollbar1_adjustmentvaluechanged(adjustmentevent e) Posun scrollbaru zásobníku e - AdjustmentEvent paintcomponent public void paintcomponent(graphics g) Vykreslí pozadí zásobníku g - Graphics paintborder public void paintborder(graphics g) Vykreslí obrys zásobníku g - Graphics 25
30 Init public void Init() Inicializuje pomocné proměnné v zásobníku isinfix public boolean isinfix(string infix) Otestuje zadaný řetězec, jestli je v infixovém tvaru infix - String řetězec, který testujeme boolean jestli je řetězec v infixovém tvaru ispostfix public boolean ispostfix(string postfix) Otestuje zadaný řetězec, jestli je v postfixovém tvaru postfix - String řetězec, který testujeme boolean jestli je řetězec v postfixovém tvaru Priorita private int Priorita(char ch) Vrátí prioritu zadaného operátoru ch - operator int priorita operatoru Vyhodnoceni private boolean Vyhodnoceni(Zasobnik pom, boolean vizual) Pomocná funkce pro vyhodnocení jednoho operátoru pom - Zasobnik pomocný zásobník na ukládání operátorů vizual - boolean jestli má být při vyhodnocení výrazu použita vizualizace boolean jestli se provedlo vyhodnocení 26
31 Zkraceni private void Zkraceni(String infix, JTextField vystup, boolean zvys) Pomocná funkce, která zkracuje výstupní řetězec infix - String vstupní řetězec vystup - JTextField komponenta, ve které je výstupní řetězec zvys - boolean jestli se má zkrátit až za dalším znakem frominfixtopostfixstep public boolean frominfixtopostfixstep(string infix, JTextField vystup, boolean vizual) Provedení jednoho kroku výpočtu při převodu aritmetického výrazu do postfixového tvaru pomocí zásobníku infix - String aritmetický výraz v infixovém tvaru vystup - JTextField komponenta, ve které se zobrazí výraz v postfixu vizual - boolean jestli má být při převodu výrazu použita vizualizace boolean jestli se krok provedl frominfixtopostfix public void frominfixtopostfix(string infix, JTextField vystup, boolean vizual) Převod aritmetického výrazu do postfixového tvaru pomocí zásobníku infix - String aritmetický výraz v infixovém tvaru vystup - JTextField komponenta, ve které se zobrazí výraz v postfixu vizual - boolean jestli má být při převodu výrazu použita vizualizace frompostfixtointstep public boolean frompostfixtointstep(string postfix, JTextField vystup, boolean vizual) Provedení jednoho kroku výpočtu při vyhodnocení aritmetického výrazu v postfixovém tvaru pomocí zásobníku postfix - String aritmetický výraz v postfixovém tvaru vystup - JTextField komponenta, ve které se zobrazí výsledek 27
32 vizual - boolean jestli má být při vyhodnocení výrazu použita vizualizace boolean jestli se krok provedl frompostfixtoint public void frompostfixtoint(string postfix, JTextField vystup, boolean vizual) Vyhodnocení aritmetického výrazu v postfixovém tvaru pomocí zásobníku postfix - String aritmetický výraz v postfixovém tvaru vystup - JTextField komponenta, ve které se zobrazí výsledek vizual - boolean jestli má být při vyhodnocení výrazu použita vizualizace frominfixtointstep public boolean frominfixtointstep(string infix, JTextField vystup, Zasobnik pom, boolean vizual) Provedení jednoho kroku výpočtu při vyhodnocení aritmetického výrazu pomocí zásobníku infix - String aritmetický výraz v infixovém tvaru vystup - JTextField komponenta, ve které se zobrazí výsledek pom - Zasobnik pomocný zásobník na ukládání operátorů vizual - boolean jestli má být při vyhodnocení výrazu použita vizualizace boolean jestli se krok provedl frominfixtoint public void frominfixtoint(string infix, JTextField vystup, Zasobnik pom, boolean vizual) Vyhodnocení aritmetického výrazu pomocí zásobníku infix - String aritmetický výraz v infixovém tvaru vystup - JTextField komponenta, ve které se zobrazí výsledek pom - Zasobnik pomocný zásobník na ukládání operátorů vizual - boolean jestli má být při vyhodnocení výrazu použita vizualizace 28
Algoritmizace prostorových úloh
INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová
Základní datové struktury
Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013
Datové struktury. alg12 1
Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou
Algoritmizace prostorových úloh
INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová
Da D to t v o é v ty t py IB111: Datové typy
Datové typy IB111: Datové typy Data a algoritmizace jaká data potřebuji pro vyřešení problému? jak budu data reprezentovat? jaké operaci s nimi potřebuji provádět? Navržení práce s daty je velice důležité
Abstraktní datové typy: zásobník
Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní
Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy
Základní pojmy Stromy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Graf uzly hrany orientované / neorientované Souvislý
Dynamické datové struktury I.
Dynamické datové struktury I. Seznam. Fronta. Zásobník. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz
Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz
Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz (2 + 5) * (13-4) * + - 2 5 13 4 - listy stromu obsahují operandy (čísla) - vnitřní uzly obsahují operátory (znaménka)
Datové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12.
Obsah přednášky: Definice pojmů o datový typ, o abstraktní datový typ Datové struktury Abstraktní datové typy a jejich implementace o Fronta (Queue) o Zásobník (Stack) o Množina (Set) Algoritmizace (Y36ALG),
ADT/ADS = abstraktní datové typy / struktury
DT = datové typy obor hodnot, které může proměnná nabývat, s operacemi na tomto oboru určen: obor hodnot + výpočetní operace např. INT = { 2 147 483 648 až +2 147 483 647} + {+,,*,/,} ADT/ADS = abstraktní
Lineární datové struktury
Lineární datové struktury doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Lineární datové
Konstruktory a destruktory
Konstruktory a destruktory Nedostatek atributy po vytvoření objektu nejsou automaticky inicializovány hodnota atributů je náhodná vytvoření metody pro inicializaci, kterou musí programátor explicitně zavolat,
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Virtuální počítač. Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor. PGS K.
Virtuální počítač Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor Virtuální počítač Překladač Překladač : Zdrojový jazyk Cílový jazyk Analytická část:
Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy
Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou
1 2 3 4 5 6 součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:
Úloha č.: max. bodů: skut. bodů: 1 2 3 4 5 6 součet cvičení celkem 20 12 20 20 14 14 100 známka UPOZORNĚNÍ : a) Písemná zkouška obsahuje 6 úloh, jejichž řešení musí být vepsáno do připraveného formuláře.
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
Datové typy a struktury
atové typy a struktury Jednoduché datové typy oolean = logická hodnota (true / false) K uložení stačí 1 bit často celé slovo (1 byte) haracter = znak Pro 8-bitový SII kód stačí 1 byte (256 možností) Pro
ZÁPOČTOVÁ PRÁCE z UIR
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
V případě jazyka Java bychom abstraktní datový typ Time reprezentující čas mohli definovat pomocí třídy takto:
20. Programovací techniky: Abstraktní datový typ, jeho specifikace a implementace. Datový typ zásobník, fronta, tabulka, strom, seznam. Základní algoritmy řazení a vyhledávání. Složitost algoritmů. Abstraktní
5 Přehled operátorů, příkazy, přetypování
5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování
8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
TÉMATICKÝ OKRUH Softwarové inženýrství
TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Semestrální práce 2 znakový strom
Semestrální práce 2 znakový strom Ondřej Petržilka Datový model BlockFileRecord Bázová abstraktní třída pro záznam ukládaný do blokového souboru RhymeRecord Konkrétní třída záznamu ukládaného do blokového
Algoritmizace a programování
Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech
Algoritmizace a programování
Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu
Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace
Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace Číslo projektu Číslo materiálu Autor Průřezové téma Předmět CZ.1.07/1.5.00/34.0565 VY_32_INOVACE_284_Programovací_jazyky
Programování v C++ 2, 4. cvičení
Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva
Java - Kresba. 2/28/11 1/8 Java - kresba
Java - Kresba Základní entity a jejich kresba ve třídě Graphics nemůžeme nastavit linii, šířku a typ, z grafických atributů jí můžeme nastavit pouze barvu Linie (čára)... drawline(int x1, int y1, int x2,
1. Dědičnost a polymorfismus
1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář
Šablony, kontejnery a iterátory
7. října 2010, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 21 Šablona funkce/metody Šablona je obecný popis (třídy, funkce) bez toho, že by
Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.
1 Grafické rozhraní Studijní cíl Tento blok je věnován vytváření programů s využitím grafického rozhraní (GUI). Vysvětlen bude základní filozofie pro vytváření aplikací s GUI ve srovnání s konzolovými
Dynamické datové struktury IV.
Dynamické datové struktury IV. Prioritní fronta. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra
Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013
Předměty Algoritmizace a programování Seminář z programování Verze pro akademický rok 2012/2013 Verze pro akademický rok 2012/2013 1 Přednášky Jiřina Královcová MTI, přízemí budovy A Tel: 48 53 53 521
Teoretické minimum z PJV
Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov
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
Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro
Postupy práce se šablonami IS MPP
Postupy práce se šablonami IS MPP Modul plánování a přezkoumávání, verze 1.20 vypracovala společnost ASD Software, s.r.o. dokument ze dne 27. 3. 2013, verze 1.01 Postupy práce se šablonami IS MPP Modul
Paměť počítače. alg2 1
Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových
Bridge. Známý jako. Účel. Použitelnost. Handle/Body
Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době
Středoškolská technika SCI-Lab
Středoškolská technika 2016 Setkání a prezentace prací středoškolských studentů na ČVUT SCI-Lab Kamil Mudruňka Gymnázium Dašická 1083 Dašická 1083, Pardubice O projektu SCI-Lab je program napsaný v jazyce
III/2 Inovace a zkvalitnění výuky prostřednictvím ICT
Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň
2 Grafický výstup s využitím knihovny
2 Grafický výstup s využitím knihovny Studijní cíl Tento blok je věnován základním principům při vytváření grafického výstupu pomocí standardních metod, které poskytuje grafické rozhraní. V textu budou
ABSTRAKTNÍ DATOVÉ TYPY (ADT)
ABSTRAKTNÍ DATOVÉ TYPY (ADT) hierarchie abstrakcí: nejvyšší úroveň ZOO DruhZvirat celá čísla, řetězce nejnižší úroveň bity Abstrahujeme od - reprezentace (implementace) dat - realizace (implementace) operací
Úvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
5 Rekurze a zásobník. Rekurzivní volání metody
5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení
Překladač a jeho struktura
Překladač a jeho struktura Překladače, přednáška č. 1 Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz http://fpf.slu.cz/ vav10ui Poslední aktualizace: 23. září 2008 Definice
ALGORITMIZACE A PROGRAMOVÁNÍ
Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení
Programovací jazyk Pascal
Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce
Algoritmy a datové struktury
Algoritmy a datové struktury Stromy 1 / 32 Obsah přednášky Pole a seznamy Stromy Procházení stromů Binární stromy Procházení BS Binární vyhledávací stromy 2 / 32 Pole Hledání v poli metodou půlení intervalu
VISUAL BASIC. Přehled témat
VISUAL BASIC Přehled témat 1 ÚVOD DO PROGRAMOVÁNÍ Co je to program? Kuchařský předpis, scénář k filmu,... Program posloupnost instrukcí Běh programu: postupné plnění instrukcí zpracovávání vstupních dat
Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí
Kolekce obecně Seznamy a iterátory doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Kolekce ::= homogenní sada prvků
Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.
Maturitní témata IKT, školní rok 2017/18 1 Struktura osobního počítače Von Neumannova architektura: zakreslete, vysvětlete její smysl a popište, jakým způsobem se od ní běžné počítače odchylují. Osobní
Programátorská příručka
KAPITOLA 1. PROGRAMÁTORSKÁ PŘÍRUČKA Kapitola 1 Programátorská příručka 1.1 Úvod 1.1.1 Technologie Program je psaný v jazyce Java 1.7. GUI je vytvářeno pomocí knihovny SWT. (http://eclipse.org/swt/) Pro
Abstraktní datové typy
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní datové typy BI-PA2, 2011, Přednáška 10 1/27 Abstraktní datové typy Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,
1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10
Úlohy- 2.cvičení 1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10 2. Převeďte dané desetinné číslo do dvojkové soustavy (DEC -> BIN): a) 0,8125 10 b) 0,35 10
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
1. Programování proti rozhraní
1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní
Programování v C++, 2. cvičení
Programování v C++, 2. cvičení 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 Operátory new a delete 2 3 Operátory new a delete minule
Kolekce, cyklus foreach
Kolekce, cyklus foreach Jen informativně Kolekce = seskupení prvků (objektů) Jednu již známe pole (Array) Kolekce v C# = třída, která implementuje IEnumerable (ICollection) Cyklus foreach ArrayList pro
Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické
Jak v Javě primitivní datové typy a jejich reprezentace BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Obsah Celočíselný datový typ Reálný datový typ Logický datový typ, typ Boolean
Výčtový typ strana 67
Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce
Java aplety. Předávání parametrů z HTML
Java aplety Aplety jsou speciální formou Java aplikací - mohou být spouštěny z prostředí WWW prohlížeče. Aby je prohlížeč spustil, musíme vložit do HTML stránky potřebné příkazy:
III/2 Inovace a zkvalitnění výuky prostřednictvím ICT
Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň
Algoritmizace. Cíle předmětu
Cíle předmětu Algoritmizace naučit se sestavovat algoritmy řešení jednoduchých problémů a zapisovat je v jazyku Java Organizace předmětu přednášky (učast nepovinná, ale doporučená) cvičení střídavě u tabule
Pravidla a plánování
Administrátorský manuál TTC TELEKOMUNIKACE, s.r.o. Třebohostická 987/5 100 00 Praha 10 tel.: 234 052 111 fax.: 234 052 999 e-mail: ttc@ttc.cz http://www.ttc-telekomunikace.cz Datum vydání: 7. května 2013
Software602 Form Designer
Software602 Form Designer Javascriptový vyhodnocovací mechanismus výrazů Aktualizováno: 17. 3. 2017 Software602 a.s. Hornokrčská 15 140 00 Praha 4 tel: 222 011 602 web: www.602.cz e-mail: info@602.cz ID
Maturitní otázky z předmětu PROGRAMOVÁNÍ
Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti
Programovací jazyk Java
1 z 8 Programovací jazyk Java Enumerace (výčty) Složitější definice výčtového typu Konstanty anonymních typů Výčtový typ a datové struktury Java packaging JAR archivy CLASSPATH Apache Ant 10. přednáška
Java a XML. 10/26/09 1/7 Java a XML
Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis
Lineární datové struktury
Lineární datové struktury doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 5. března 2019 Jiří Dvorský (VŠB TUO) Lineární datové
1 Nejkratší cesta grafem
Bakalářské zkoušky (příklady otázek) podzim 2014 1 Nejkratší cesta grafem 1. Uvažujte graf s kladným ohodnocením hran (délka). Definujte formálně problém hledání nejkratší cesty mezi dvěma uzly tohoto
KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM
KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM CÍLE KAPITOLY Využívat pokročilé možnosti formátování, jako je podmíněné formátování, používat vlastní formát čísel a umět pracovat s listy. Používat
1 Webový server, instalace PHP a MySQL 13
Úvod 11 1 Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského
24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1
24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE
Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program
Denotační sémantika programovacího jazyka doc. Dr. Ing. Miroslav Beneš katedra informatiky, A-1007 59 732 4213 Obsah přednášky Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup
PŘÍRUČKA PRÁCE SE SYSTÉMEM SLMS CLASS pro učitele
PŘÍRUČKA PRÁCE SE SYSTÉMEM SLMS CLASS pro učitele Vypracoval : Pavel Žemba Obsah Tvorba vlastních testů... 3 Postup tvorby... 3 Test otázky odpovědi... 3 Zadání otázek testu... 5 Test - cvičení na souboru,
ELEKTRONICKÉ PODÁNÍ OBČANA
Strana č. 1 ELEKTRONICKÉ PODÁNÍ OBČANA NÁVOD NA VYPLŇOVÁNÍ A ODESLÁNÍ FORMULÁŘŮ IČ: 63078236, DIČ: CZ63078236, OR: MS v Praze, oddíl B, vložka 3044 Strana 1 / 13 Strana č. 2 1 Obsah 1 Obsah... 2 2 Úvod...
Programování v C++ 3, 3. cvičení
Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového
PŘETĚŽOVÁNÍ OPERÁTORŮ
PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako
PHP tutoriál (základy PHP snadno a rychle)
PHP tutoriál (základy PHP snadno a rychle) Druhá, vylepšená offline verze. Připravil Štěpán Mátl, http://khamos.wz.cz Chceš se naučit základy PHP? V tom případě si prostuduj tento rychlý průvodce. Nejdříve
Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
Vývojové prostředí,průvodce novou aplikací
Vývojové prostředí,průvodce novou aplikací Realizace praktických úloh zaměřených na dovednosti v oblastech: Vývojové prostředí programu Control Web 2000 Vytvoření jednoduchého technologického schéma pomocí
Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo
Operátory, výrazy Tomáš Pitner, upravil Marek Šabo Operátor "Znaménko operace", pokyn pro vykonání operace při vyhodnocení výrazu. V Javě mají operátory napevno daný význam, nelze je přetěžovat jako v
Programování v C++ 1, 5. cvičení
Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal 3.12.2010
Student s Life Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal 3.12.2010 Model Specification Page: 2 Obsah Model architektury... 3 Návrhový model... 3 Bussines
Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)
Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog
Projekt Obrázek strana 135
Projekt Obrázek strana 135 14. Projekt Obrázek 14.1. Základní popis, zadání úkolu Pracujeme na projektu Obrázek, který je ke stažení na http://java.vse.cz/. Po otevření v BlueJ vytvoříme instanci třídy
Semestrální práce z KIV/PC. Kolja Matuševský (A14B0310P)
Semestrální práce z KIV/PC Řešení kolizí frekvencí sítě vysílačů Kolja Matuševský (A14B0310P) mkolja@students.zcu.cz 10. ledna 2016 Obsah 1 Zadání 2 2 Analýza úlohy 3 2.1 Vytvoření grafu..........................
Reliance 3 design OBSAH
Reliance 3 design Obsah OBSAH 1. První kroky... 3 1.1 Úvod... 3 1.2 Založení nového projektu... 4 1.3 Tvorba projektu... 6 1.3.1 Správce stanic definice stanic, proměnných, stavových hlášení a komunikačních
OSTRAVSKÁ UNIVERSITA V OSTRAVĚ Pedagogická fakulta Obor informační technologie ve vzdělávání Kombinované studium
OSTRAVSKÁ UNIVERSITA V OSTRAVĚ Pedagogická fakulta Obor informační technologie ve vzdělávání Kombinované studium Implementace aritmetického stromu pomocí haldy David Farber L06617 16.05.2007 Úvod Aritmetický
1 Uživatelská dokumentace
1 Uživatelská dokumentace Systém pro závodění aut řízených umělou inteligencí je zaměřen na závodění aut v prostředí internetu. Kromě toho umožňuje testovat jednotlivé řidiče bez nutnosti vytvářet závod
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Maturitní témata Školní rok: 2015/2016
Maturitní témata Školní rok: 2015/2016 Ředitel školy: Předmětová komise: Předseda předmětové komise: Předmět: PhDr. Karel Goš Informatika a výpočetní technika Mgr. Ivan Studnička Informatika a výpočetní