Homer. prvky. délka. přední 0 zadní 4. Použití fronty BUS STOP. 3 Lisa. 2 Bart. 4 Maggie. 1 Marge. Grafické znázornění předchozí animace:

Podobné dokumenty
Abstraktní datové typy FRONTA

FRONTA. Podobně jako u zásobníku lze prvek z fronty vyjmout pouze za takové podmínky, že je na řadě. Avšak jeho hodnotu můžeme přečíst kdykoliv.

Datové typy a struktury

ABSTRAKTNÍ DATOVÉ TYPY

Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu

Radomíra Duží L Datový typ množina

Konstruktory a destruktory

Programovací jazyk Pascal

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

Algoritmizace prostorových úloh

Implementace slovníku bitovým vektorem

Lineární datové struktury

1. D Y N A M I C K É DAT O V É STRUKTUR Y

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.

Algoritmizace prostorových úloh

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

Zásobník (LIFO) Opakem zásobníku LIFO je fronta FIFO (First In, First Out první dovnitř, první ven)

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end;

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

Předmět: Algoritmizace praktické aplikace

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

IB015 Neimperativní programování. Časová složitost, Typové třídy, Moduly. Jiří Barnat Libor Škarvada

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

ADT/ADS = abstraktní datové typy / struktury

Tematický celek 03 - Cvičné příklady

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Knihovna WebGraphLib

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

Dynamické datové typy a struktury

Kolekce, cyklus foreach

Abstraktní datové typy

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

Distribuovaná synchronizace. Paralelní a distribuované systémy. 11. Přednáška Vzájemné vyloučení. Centralizovaný algoritmus - fronta procesů

Spojový seznam. Jan Kybic.

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

Basic256 - úvod do programování Příklady. ing. petr polách

Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620

Anotace. Dynamické programování, diskrétní simulace.

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

Základní datové struktury

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

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

Abstraktní datové typy: zásobník

1. Implementace funkce počet vrcholů. Předmět: Algoritmizace praktické aplikace (3ALGA)

dovolují dělení velkých úloh na menší = dekompozice

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Základní datové struktury III: Stromy, haldy

Implementace LL(1) překladů

Lineární datové struktury

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

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Stromy, haldy, prioritní fronty

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

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

Datové struktury. alg12 1

Anotace. Spojové seznamy, haldy. AVL-stromy, A-B stromy. Martin Pergel,

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

Prioritní fronta, halda (heap), řazení

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

Operační systémy Tomáš Hudec. 6 Komunikace procesů (IPC) Obsah: 6.1 Klasické problémy souběhu Obědvající filosofové

Sada 1 - Základy programování

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

ADT prioritní fronta. Haldy. Další operace nad haldou. Binární halda. Binomické stromy. Časová složitost jednotlivých operací.

Služba ve Windows. Služba (service) je program

O datových typech a jejich kontrole

Knihovna DataBoxLib TXV první vydání prosinec 2010 změny vyhrazeny

Soubory. Hung Hoang Dieu. Department of Mathematics Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague 1 / 7

Programování. Psaní čistého kódu. Martin Urza

15. Projekt Kalkulačka

MS Excel Základy maker. Operační program Vzdělávání pro konkurenceschopnost. Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU

VISUAL BASIC. Práce se soubory

Projekt OP VK Inovace studijních oborů zajišťovaných katedrami PřF UHK. Registrační číslo: CZ.1.07/2.2.00/

Poslední nenulová číslice faktoriálu

Digitální učební materiál

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

Implementace aritmetického stromu pomocí směrníků

Algoritmy a datové struktury

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

Algoritmizace. 1. Úvod. Algoritmus

Visual Basic for Applications

Test z programování v jazyce VBA v rámci předmětu Počítače II Vzorová zadání a vypracování

POČÍTAČE A PROGRAMOVÁNÍ

Vyhledávací stromy. Slouží jako pomůcka pro organizaci dat umožňující efektivní vyhledávání.

Skripta ke školení. Základy VBA. vypracoval: Tomáš Herout. tel:

LZ77 KNIHOVNA PRO KOMPRESI A DEKOMPRESI DAT POMOCÍ ALGORITMU LZ77. Příručka uživatele a programátora

Časová a prostorová složitost algoritmů

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

PHP tutoriál (základy PHP snadno a rychle)

20. Projekt Domácí mediotéka

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Inovace a zkvalitnění výuky prostřednictvím ICT Vytváření aplikací pro systém Windows Víceřádkové vstupy komponenta Memo


Synchronizace Mgr. Josef Horálek

Šablony, kontejnery a iterátory

MAXScript výukový kurz

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

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

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Transkript:

Fronta Fronta je sekvence first-in-first-out (první do fronty první z fronty) prvků. Prvky mohou být vkládány pouze nakonec (rear) fronty a odstraňovány pouze zpočátku (front) fronty Délka fronty je počet prvků, které obsahuje Prázdná fronta má délku nula. Animace - fronta osob BUS STOP Grafické znázornění předchozí animace: prvky Homer 1 Marge 2 Bart 3 Lisa Maggie přední zadní délka Použití fronty Print server (tiskový server) udržuje ve frontě požadavky na tisk Disk driver (ovladač disků) udržuje frontu I/O požadavků na disk

Fronta předpoklady předpoklady: 1) musí být možno vytvořit prázdnou frontu 2) musí být možné testovat zda lze vytvořit prázdnou frontu 3) musí být možné zjistit délku fronty ) musí být možné přidat na konec fronty ) musí být možné odstranit zpočátku fronty 6) musí být možný přístup k prvnímu prvku fronty bez možnosti jeho odstranění Implementace fronty pomocí pole berme v úvahu ohraničenou frontu jejíž délka<= maxdélka. Fronta je definována těmito proměnnými : délka rovná se aktuální délce fronty, přední označuje počátek fronty, zadní označuje konec fronty, pole prvků délky maxdélka obsahuje prvky ohraničené směrníky přední a zadní: Pole [ přední.. zadní 1 ] příklad fronty č.1 neobsazený přední zadní přední zadní 1 maxdélka 1 neobsazený speciální příklad fronty přední=zadní maxdélka 1 prázdná fronta

příklad k úvodní animaci (maxdélka = 6) Do příkladu fronty č.1 přidáme na konec fronty Ralpha: 1 2 Bart 3 Lisa Maggie Ralph přední 2 zadní délka Jestliže musíme přesouvat prvky polem operace APPEND a SERVE budou mít časovou složitost O(n). Abychom tomuto předešli používáme místo běžného pole cyklické. Cyklické pole V cyklickém poli a délky n, každý má i svého následovníka i svého předchůdce. Pak: 7 následovník a[n-1] je a[] předchůdce a[] je a[n-1] 6 1 grafické zobrazení cyklického pole: 2 3 1 2 3 6 7 Zkuste si představit pole, do něhož budeme ukládat hodnoty, jako proužek papíru rozdělený na jednotlivé buňky a na koncích slepený tak, že za posledním prvkem pole následuje opět první. Jednotlivé hodnoty pak budeme mít uložené v souvislé řadě kdekoliv v tomto poli, přičemž si budeme pamatovat pouze index, od kterého budeme prvky vybírat, a index, za který budeme prvky vkládat. Pokud by se stalo, že se oba indexy někde potkají, znamená to, že došlo k zaplnění celého pole.

Implementace fronty užitím cyklického pole berme v úvahu ohraničenou fronta jejíž délka<= maxdélka. Fronta je definována těmito proměnnými : délka rovná se aktuální délce fronty, přední označuje počátek fronty, zadní označuje konec fronty, pole prvků délky maxdélka obsahuje prvky ohraničené směrníky přední a zadní: 1.případ: pole [přední..zadní-1] 2.případ: pole [přední maxdélka-1] 3. případ: prvky [..zadní-1] přední zadní-1 maxdélka-1 1.případ zadní-1 přední maxdélka-1 2.případ přední=zadní maxdélka-1 3. případ - prázdná fronta

příklad k úvodní animaci (maxdélka=6) Po vyjmutí prvního prvku: prvky Nelson 1 Martin 2 3 Lisa Maggie Ralph přední 3 zadní 2 délka Fronta: operace operace, vyjádřené v prostředí DELPHI CREATE(Q) - vytvoří prázdnou frontu Q, EMPTY(S) - vrátí TRUE, je-li fronta prázdná, jinak vrátí FALSE, FRONT(Q) - vrátí první fronty Q, APPEND(x, Q) - vloží x na konec fronty Q, SERVE(Q) - vymaže první z Q, Podprogramy pro manipulaci s frontou: Deklarace pole const MAX = 2; type index = 1..MAX; Pole = array [index] of integer; var A : Pole; first, last: integer; Funkce CREATE - Vytvoří prázdnou frontu first:= 1; last := 1; Funkce EMPTY - zjistí zda je fronta prázdná (vrátí true / false): function EMPTY: boolean; if first=last then result:=true else result:=false;

Funkce APPEND přidá nový if last<>max then A[last]:=StrToInt(Edit1.Text); inc(last); Funkce SERVE odebere z fronty if first=max then first:=1; Button3Click(Sender); end else first:=first+1; Funkce Front vrátí první fronty Memo1.Lines.Clear; Memo1.Lines.Add(IntToStr(A[first])); ;