Abstraktní datové typy

Slides:



Advertisements
Podobné prezentace
10. Dynamické datové struktury
Advertisements

Kuchařka na práci s mnohočleny Matematika pro ZŠ Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je David Salač. Dostupné z Metodického portálu.
CorelDRAW – dodatky (19). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro tělesně.
Tabulkový procesor Formuláře – interaktivní prvky v Excelu Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Růžena Hynková. Dostupné z Metodického.
Ověřené výstupy z ISKN elektronická značka Jiří Formánek
Warez scéna, crack. Warez, co to je? Warez je termín počítačového slangu označující autorská díla, se kterými je nakládáno nelegálně, zejména v rozporu.
Informatika pro 5. ročník Úvod do světa počítačů - Hardware.
Číslo projektu: CZ.1.07/1.4.00/ Název DUM: Prostředí internetu Číslo DUM: III/2/VT/2/2/27 Vzdělávací předmět: Výpočetní technika Tematická oblast:
Inf Tabulkový procesor - funkce. Výukový materiál Číslo projektu: CZ.1.07/1.5.00/ Šablona: III/2 Inovace a zkvalitnění výuky prostřednictvím ICT.
NÁZEV ŠKOLY: Masarykova základní škola a mateřská škola Melč, okres Opava, příspěvková organizace ČÍSLO PROJEKTU:CZ.1.07/1.4.00/ AUTOR:Mgr. Vladimír.
Programování v jazyce C++ Dědičnost a polymorfismus.
Elektronické učební materiály - II. stupeň Digitální technologie 9 Autor: Bc. Pavel Šiktanc Práce s grafickým programem GIMP Co se všechno naučíme??? Tvorba.
Jednoduchá HTML stránka Gymnázium a Jazyková škola s právem státní jazykové zkoušky Zlín Tematická oblastTvorba WWW stránky v HTML Datum vytvoření2013.
ZAL – 5. cvičení Martin Tomášek Pole - opakování Základní datový typ. V poli držíme více elementů (jednoho typu) S elementy v poli můžeme manipulovat.
Autor:Ing. Pavel Brož Předmět/vzdělávací oblast:Informační a komunikační technologie Tematická oblast:Práce se standardním aplikačním programovým vybavením.
Výpočetní technika VY_32_INOVACE_12_16_Excel. Excel Tabulkový procesor pro vytváření tabulek a grafů Pochází z kancelářského balíku Microsoft Office Nejčastěji.
Základní škola a Mateřská škola, Liberec, Barvířská 38/6, příspěvková organizace Název : VY_32_inovace_07 Informatika - MS Excel – Vkládání vzorců Autor:
Číslo projektuCZ.1.07/1.5.00/ Číslo materiáluVY_32_INOVACE_30-03 Název školy Střední průmyslová škola stavební, České Budějovice, Resslova 2 AutorRNDr.
Základní škola a mateřská škola Lázně Kynžvart Autor: Mgr. Petra Šandová Název: VY_32_INOVACE_5B_INF3_16_ Téma: pro 4.,5.ročník ZŠ, vytvořeno:
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 10: Tvorba vlastních funkcí Bc. Radek Libovický.
Microsoft Excel verze 2010 Mgr. Přemysl Kejzlar.
Výukový materiál zpracován v rámci projektu
Mocniny, odmocniny, úpravy algebraických výrazů
Výukový materiál zpracovaný v rámci projektu EU peníze školám
Lineární rovnice a nerovnice III.
Uživatelem definované datové typy
Soustava dvou lineárních rovnic se dvěma neznámými
Dělení mnohočlenů mnohočlenem
Programování v jazyce C++
Struktury.
Excel – tabulkový procesor
VY_32_INOVACE_
NÁZEV ŠKOLY: ZŠ J. E. Purkyně Libochovice
Dostupné z Metodického portálu ; ISSN
ADT zásobník - příklad Prakticky aplikovatelný příklad využití ADT zásobník je vyhodnocování aritmetických výrazů v Postfixové notaci: Pro zápis aritmetických.
Filmová animace Náhodné změny Mgr. Jiří Mlnařík
Inf Tabulkový procesor - formátování
Soustava dvou lineárních rovnic se dvěma neznámými
Databáze MS ACCESS 2010.
Algoritmizace a programování
Název projektu: ZŠ Háj ve Slezsku – Modernizujeme školu
Název: Práce s tabulátory Autor: Hokr Jan
METODICKÝ LIST PRO ZŠ Pro zpracování vzdělávacích materiálů (VM)v rámci projektu EU peníze školám Operační program Vzdělávání pro konkurenceschopnost   
Poměr v základním tvaru.
Název projektu: ZŠ Háj ve Slezsku – Modernizujeme školu
MATEMATIKA – GEOMETRIE 7
Soustava dvou lineárních rovnic se dvěma neznámými
Kvadratické nerovnice
Číslo projektu CZ.1.07/1.4.00/ Název sady materiálů
Stavební fakulta ČVUT, B407
Ruční obrábění plastu II
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
Číslicové měřící přístroje
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
Typy Oken, Zobrazení a Konfigurace
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
Word Okraje WordArt Pozadí Vodoznak. Word Okraje WordArt Pozadí Vodoznak.
Zoner Callisto 4 Callisto 2 – barvy, stín, šipky, vrstvy.
Fronta (1) Dynamická datová struktura typu FIFO (First In First Out)
AUTOR: Mgr. Hana Vrtělková NÁZEV: VY_32_INOVACE_M_06_Hra 3 TEMA: Hra 3
Poměr v základním tvaru.
Word Základy Wordu. Word Základy Wordu Ročník: 6 Předmět: Informační a komunikační technologie Učitel: Vojtěch Novotný Téma: Základy Wordu Ověřeno.
Fond malých projektů Školení pro Konečné uživatele Zlín
Algoritmizace a datové struktury (14ASD)
Algoritmizace a datové struktury (14ASD)
Hromadné dokumenty opakující se pro kolekci osob
MATEMATIKA Lineární rovnice o jedné neznámé.
Transkript prezentace:

Abstraktní datové typy Pokud nabízíme omezené rozhraní datového typu pomocí specifikované sady operací, nazýváme takový typ abstraktní datový typ (ADT). Konkrétní struktura nového datového typu je totiž pro jeho uživatele (=programátora) překryta vrstvou funkcí/procedur, které s tímto typem pracují. Uživatel pak získává na tento typ mnohem abstraktnější pohled. Úplná abstrakce (ukrytí jednotlivých datových položek nového typu před uživatelem) je možná až v objektově orientovaných jazycích – v neobjektovém Pascalu nebo ANSI C není možnost, jak toto udělat. V neobjektových jazycích sice uživatel vidí „dovnitř“ daného ADT, ale je v jeho vlastním zájmu, aby k operacím s tímto typem používal poskytovaného rozhraní procedur a funkcí – v opačném případě se vystavuje riziku, že jeho zásah do datových položek způsobí chybu. Další výhodou použití abstraktních datových typu, a tedy především oddělení rozhraní datového typu od jeho implementace, je to, ze můžeme vytvořit různé implementace (např. nové verze) téhož datového typu, aniž se tato změna projeví při jeho používání.

ADT Lineární seznam Lineární seznam (anglicky list ) je datová struktura, která představuje posloupnost položek. Seznam se nejčastěji implementuje tak, že každá položka obsahuje odkaz nebo ukazatel na následující prvek = jednosměrný seznam Pokud položka obsahuje i ukazatel na předchozí prvek, jde o obousměrný seznam Pokud poslední položka ukazuje na první, jedná se o kruhový seznam (v případě obousměrného seznamu i první položka ukazuje na poslední). První prvek seznamu označujeme jako hlavu seznamu (head), zbytek seznamu po odtržení hlavy se někdy označuje jako ohon (tail ). Samotný ADT lineární seznam je nejčastěji deklarován jako struktura se dvěma položkami – ukazatel na první prvek seznamu a ukazatel na aktivní prvek seznamu. Někdy bývá deklarován i ukazatel na poslední prvek (např. u obousměrného seznamu) Seznam může být i prázdný - nemusí obsahovat žádný prvek. Seznamy obvykle používáme jako dynamické datové struktury a jednotlivé prvky seznamu podle potřeby dynamicky alokujeme nebo rušíme. Seznamy se (spolu se stromy) označují jako rekurzivní datové struktury, nebot' každý prvek seznamu obsahuje odkaz na položku stejného typu.

ADT Lineární seznam Deklarace typu Jednosměrný lineární seznam v Pascalu: type tUkPrvek=^tPrvek; tPrvek = record Jmeno, Prijmeni, adresa : string; dalsi: tUkPrvek; end; tList = record First, Active: tUkPrvek; var head: tUkOsoba; Po vložení několika prvků do seznamu bude seznam vypadat v paměti takto: head Pepa Zdepa Nádražní 23 Franta Šiška Milionářská 1

Další možnosti implemetnace V závislosti na velikosti datových prvků je dobré zamyslet se nad paměťovou režií zvolené implementace – např. paměťová režie pro lineární seznam implementovaný jako seznam jednotlivých prvků provázaných ukazateli je = sizeof(tukazatel)/sizeof(tPrvek). Pokud bude velikost ukazatele=4 bajty a velikost prvku 12 bajtů (včetně ukazatele), je výsledná režie=30%!!! V takovém případě je lepší seznam implementovat jako seznam polí prvků: head Pepa Zdepa Nádražní 23 Franta Šiška XXX …

ADT Lineární seznam Příklad sady metod pro práci s lineárním seznamem: procedure ListInit (var L : tList);  Provede inicializaci seznamu před jeho prvním použitím. procedure InsertFirst (var L : tList; s : tStr); Vloží prvek na začátek seznamu. procedure First (var L : tList); Nastaví aktivitu seznamu na první prvek. procedure CopyFirst (L : tList; var s : tStr); Vrátí hodnotu prvního prvku. Pokud je seznam prázdný, volá proceduru Error. procedure DeleteFirst (var L : tList); Ruší první prvek seznamu. Pokud byl aktivní, aktivita se ztrácí. Pokud byl seznam prázdný, nic se neděje. procedure PostDelete (var L : tList); Ruší první prvek seznamu za aktivním prvkem. Pokud nebyl seznam aktivní, nic se neděje. procedure PostInsert (var L : tList; s : tStr); Vloží prvek za aktivní. Pokud nebyl seznam aktivní, nic se neděje. procedure LCopy (L : tList; var s : tStr); Vrátí hodnotu aktivního prvku. Pokud seznam není aktivní, volá se procedura Error. procedure Actualize (var L : tList; s : tStr); přepíše obsah aktivní položky.  Pokud není žádná položka aktivní, nedělá nic. procedure LSucc (var L : tList);  posune aktivitu na následující prvek seznamu. function Active (L : tList) : boolean; Je-li seznam aktivní, vrací True.  V opačném případě vrací false.

ADT zásobník Zásobník (stack) je dynamická datová struktura, která umožňuje postupné vkládání prvků a jejich odstraňování, ovšem v takovém poradí, že naposledy vložený prvek můžeme odstranit jako první (last in - first out, LIFO). Nad zásobníkem můžeme provádět následující operace: push: vložení hodnoty na vrchol zásobníku, pop: odstranění hodnoty z vrcholu zásobníku, top: čtení hodnoty z vrcholu zásobníku a empty: testování, zda je zásobník prázdný. Příklady použití zásobníku: Tlačítko Undo a Redo v textových editorech Tlačítka Zpět a Vpřed v HTML prohlížeči Vyhodnocování aritmetických výrazů pomocí převodu jejich zápisu z infixového do postfixového tvaru Zásobník lze implementovat jako: Statické pole Dynamické pole Lineární seznam

Implementace zásobníku polem Pokud víme, že pro svůj zásobník potřebujeme pouze předem známý maximální počet položek, můžeme jej implementovat pomocí statického pole: V takovém případě bude ADT zásobník v Pascalu deklarován jako: Type tStack=record pole: array[1..100] of tPrvek; top: integer; End;

Implementace zásobníku seznamem Pokud neznáme maximální počet položek, můžeme zásobník implementovat pomocí lineárního seznamu: V takovém případě bude ADT zásobník v Pascalu deklarován jako: type tStack = tUkPrvek; var zasobnik1: tStack; top