Algoritmizace prostorových úloh

Podobné dokumenty
Algoritmizace prostorových úloh

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh

ADT/ADS = abstraktní datové typy / struktury

Základní datové struktury

Reprezentace dat v informačních systémech. Jaroslav Šmarda

Datové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12.

Dynamické datové struktury I.

Datové typy a struktury

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

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

Lineární datové struktury

Datové struktury. alg12 1

Úvod do programovacích jazyků (Java)

Abstraktní datové typy

Algoritmizace prostorových úloh

Sada 1 - Základy programování

Kolekce, cyklus foreach

Abstraktní datové typy: zásobník

Sada 1 - Základy programování

Algoritmizace prostorových úloh

Algoritmizace a programování

Konstruktory a destruktory

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

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Programovací jazyk Pascal

2 Strukturované datové typy Pole Záznam Množina... 4

součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

ALGORITMIZACE A PROGRAMOVÁNÍ

Šablony, kontejnery a iterátory

Programování v C++ 2, 4. cvičení

Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

ABSTRAKTNÍ DATOVÉ TYPY

Ing. Igor Kopetschke TUL, NTI

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

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

Šablony, kontejnery a iterátory

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Algoritmizace a programování

Algoritmizace prostorových úloh

2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky

Datové struktury 1: Základní datové struktury

Lineární datové struktury

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

Úvod do programování. Lekce 1

NPRG030 Programování I, 2017/18 1 / :22:16

NPRG030 Programování I, 2016/17 1 / :58:13

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

Úvod do programovacích jazyků (Java)

NPRG030 Programování I, 2010/11

7. Datové typy v Javě

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

V případě jazyka Java bychom abstraktní datový typ Time reprezentující čas mohli definovat pomocí třídy takto:

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

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Dynamické datové struktury IV.

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Elementární datové typy

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony.

Binární logika Osnova kurzu

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy

Datové struktury 2: Rozptylovací tabulky

5 Rekurze a zásobník. Rekurzivní volání metody

Sada 1 - PHP. 03. Proměnné, konstanty

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Zadání k 2. programovacímu testu

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) b)

Pole a kolekce. v C#, Javě a C++

ABSTRAKTNÍ DATOVÉ TYPY (ADT)

Dynamické datové struktury III.

O datových typech a jejich kontrole

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

Zápis programu v jazyce C#

Programování v C++, 2. cvičení

4 Datové struktury. Datové struktury. Zobrazení dat v počítači

Maturitní téma: Programovací jazyk JAVA

Lokální definice (1) plocha-kruhu

Semestrální práce 2 znakový strom

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost

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

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

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

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

Základy algoritmizace. Hašování

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

Výčtový typ strana 67

Programování II. Návrh programu I 2018/19

Strukturované typy a ukazatele. Úvod do programování 1 Tomáš Kühr

prohled av an ı graf u Karel Hor ak, Petr Ryˇsav y 16. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

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

Transkript:

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á Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. ESF napomáhá rozvoji lidských zdrojů a podnikatelského ducha.

Datové struktury Při běhu programu je nutno v paměti uchovávat data. Reprezentace dat je dána datovým typem. Volba DT je řešena z hlediska efektivity zpracování dat. Základní datové struktury lze charakterizovat neměnností svého definovaného rozsahu. Abstraktní datové struktury implementovány jako objekty, které za běhu programu svůj rozsah mohou měnit.

Datový typ Datový typ (dále DT) vymezuje množinu hodnot, kterých může nabýt konstanta, proměnná, funkce nebo výraz a množinu operací nad těmito hodnotami. Definice objektu (konstanty, proměnné, funkce) znamená: přiřadit jednoznačné jméno -- identifikátor a určit datový typ. Tím je vyhrazen prostor v paměti pro tento objekt (počet bajtů).

Základní datové typy Jednoduché datové typy Boolean Číselný DT Znak Základní datové struktury

Základní DT Boolean Boolean Logický typ Objekt datového typu boolean se používá v případě pouze dvou opačných hodnot - nepravda a pravda. Nad logickým datovým typem jsou definovány logické operace, kdy výsledkem je opět logická hodnota: negace, (0 1, 1 0) konjunkce (logický součin), (0 & 1) disjunkce (logický součet) (1! 0). Deklarace: boolean boolt = true; boolean boolf = false;

Základní DT - číselné Číselný DT celé číslo je objekt, který nabývá hodnot z množiny celých čísel. Objekt datového typu reálné číslo nabývá hodnot z množiny reálných čísel. V obou případech závisí rozsah, případně přesnost s jakou jsou čísla reprezentována, na konkrétním operačním systému a použitém překladači. Nad číselným DT jsou definovámy tyto operace: aritmetické operace, relační operace.

Rozsah celočíselného DT

Deklarace číselných typů byte b = 100; short s = -30000; int i = 10000; long l = 100; double da = 0.5; double db =.5; double dc = 5E-1; float f = 100.5f

Základní DT znak (char) Množina hodnot DT znak je tvořena znaky abecedy (malá, velká písmena), číslicemi, speciálními znaky. Každému znaku je přiřazena celočíselná hodnota, tzv. kód znaku. Ten je určen pořadím v tzv. kódovací tabulce -- kódování podle norem ASCII, Unicode. Například při řazení podle abecedy je pak využito použité kódování.

Základní datové struktury Složené datové typy: jeden nebo více prvků. Homogenní prvky stejného typu: Pole Array Řetězec Nehomogenní prvky různého DT Struktura Structure Seznam List

DT strukturované pole Polem rozumíme posloupnost prvků stejného DT. Jedinou operací nad DT pole je přístup k jednotlivým prvkům pole pomocí indexu, tj. celého čísla, které udává pozici prvku v poli. Prvkem pole může být opět pole vznikají dvou a vícerozměrná pole. Speciálním případem pole je řetězec, jehož prvky jsou typu znak.

DT pole Int [] prvocisla String [] dnyvtydnu [1, 2, 3, 7, 11, 17, 19] ["pondelí", " úterý", " středa", " čtvrtek", "pátek", "sobota", "neděle"] [42.67, 27.89, -5.3, 7.43, 1.09] [42.67, 27.89, -5.3, 7.43, 1.09 2.67, 2.8, -5.73, 10.12, 107.0] [0,1,0,1, 0, 0, 1, 1, 1, 1, 1, 0]

DT strukturované struktura Struktura je tvořena několika prvky -položkami, obecně různého typu. Definice struktury znamená pojmenování struktury a určení datového typu jednotlivých položek a jejich pojmenování. Pomocí identifikátorů položek se v algoritmu přistupuje k hodnotě příslušné položky.

DT strukturované ukazatel Ukazatel (pointer) neobsahuje přímo data uložená v proměnné, ale určuje pouze polohu této proměnné v paměti. Rozdíl mezi ukazatelem a indexem pole spočívá v tom, že index určuje polohu proměnné v poli i-tý prvek, zatímco ukazatel obsahuje přímo adresu buněk paměti počítače, kde je proměnná uložena. Ukazatele se používají v programovacích jazycích pro práci s proměnnými, které vytváříme při běhu programu. Často neznáme množství dat s nimiž budeme pracovat, proto na dynamicky vytvořenou proměnnou odkazujeme pomocí ukazatele.

DT definované uživatelem Většina jazyků umožňuje programátorovi definovat vlastní datové typy. Uživatel při řešení může potřebovat i jiné datové typy, než nabízí prostředí programovacího jazyka. Mluvíme pak o uživatelem definovaných datových typech (odvozených DT). Zavádí se tehdy, pokud více proměnných má logickou návaznost. Můžeme vytvořit například pole, jehož prvky jsou typu struktura.

Abstraktní datové typy Za abstraktní datový typ označujeme DT, který je na implementaci nezávislý a specifikuje strukturu dat a odpovídající operace nad touto strukturou. Souhrnně jsou označovány pojmem kontejner. Kontejner (kolekce) slouží k organizovanému skladování prvků podle určitých pravidel.

ADT Kontejner Operace kontejneru: Vytvořit prázdný kontejner (konstruktor, init) Zjistit počet uložených prvků (size) Oveřit prázdnost kontejneru (empty) Přístup k prvkům kontejneru (read, top, front,...) Vložit prvek do kontejneru (insert, push, add,...) Odstranit prvek z kontejneru (delete, pop, remove,...) Vymazat všechny uložené prvky (clear)

Abstraktní datové typy Seznam List Fronta Query Zásobník Stack Strom Tree Tabulka Table, Map Množina Set

ADT Fronta delete add

ADT Fronta FIFO - First In, First Out Fronta se používá v případech, kdy potřebujeme zpracovávat (ukládat a vybírat) prvky v stejném pořadí. První uložený prvek bude jako první vybrán. Příklad: Maily jsou řazeny do fronty a odesílány dle pořadí. Speciální případ fronta s prioritou. Je definována priorita prvků, prvky s vyšší prioritou mohou předbíhat prvky s nižší prioritou na výstupu. Příklad: Přenos packetů Skype má přednost před maily.

ADT Fronta Operace pro frontu: add vložit prvek do fronty delete vybrat prvek z fronty (je odstraněn první prvek hlava fronty) get získat hodnotu prvního prvku fronty isempty ověření, zda je fronta prázdná size dotaz na počet prvků obsažených ve frontě

ADT Zásobník pop push

ADT Zásobník LIFO - Last In, First Out Zásobník se většinou využívá v případech, kdy potřebujeme dočasně ukládat a vybírat prvky během jejich zpracování. První uložený prvek bude vybrán jako poslední dno zásobníku. Posledně uložený prvek lze odebrat jako první vrchol zásobníku. Příklad: Rekurze, vyhodnocování výrazů.

ADT Zásobník Operace pro zásobník: push - vloží prvek na vrchol zásobníku pop - odstraní prvek z vrcholu zásobníku top - dotaz na hodnotu prvku z vrcholu zásobníku isempty ověření, zda je zásobník prázdný

ADT Strom kořen uzel list

ADT Strom Strom lze chápat jako zobecněný seznam. Každý prvek může mít více následníků. Prvky uzly stromu, kořen stromu, listy. Hierarchická struktura. Vizualizace - kořen nahoře. Teorie grafů každý souvislý graf bez kružnic. Rekurze každý podstrom stromu je také stromem. Příklad: Vyhledávací strom, rozhodovací problémy.

ADT Strom Operace se stromem: vložení prvku na určitou pozici ve stromu vyhledání prvku vymazání prvku zjištění hloubky stromu, zjištění počtu prvků procházení stromem (do hloubky/do šířky)

Použití datových struktur Základní úlohy třídění, vyhledávání, indexace.

Literatura http://www.algoritmy.net/ Korespondenční seminář z programování, https://ksp.mff.cuni.cz/