Fronta - a)Implementace s využitím statických struktur (pole) b)Implementace s využitím dynamických struktur (spojového seznamu) odebírá se ze začátku.

Slides:



Advertisements
Podobné prezentace
Třída SIMSET je druhou standardní systémovou třídou, která obsahuje prostředky pro práci se spojovými seznamy. KRUHOVÉ SPOJOVÉ SEZNAMY Spojový seznam –
Advertisements

Vnitřní řazení v poli (in sito)
1 Vnitřní řazení s využitím dynamických struktur Tvorba spojového seznamu je vcelku triviální záležitostí: a)Vytvořím prázdný seznam příkazem LIST:=nil.
10. Dynamické datové struktury
DATOVÝ TYP POLE.
Programování v Pascalu Přednáška 10 RNDr. Hana Havelková.
Programování v Pascalu Přednáška 5 RNDr. Hana Havelková.
Programování v Pascalu Přednáška 9 RNDr. Hana Havelková.
Materiály k přednášce Úvod do programování Ondřej Čepek.
1 Vyhledávání Principy vyhledávání Klasifikace klíče:  Interní klíč – je součástí prohlížených záznamů  Externí klíč – není jeho součástí, je jím např.
Informatika I 3. přednáška
Procedury a funkce Základní charakteristika a použití v programu.
Algoritmy a programovací techniky
Informatika I 7. přednáška RNDr. Jiří Dvořák, CSc.
Informatika I 8. přednáška RNDr. Jiří Dvořák, CSc.
10. Dynamické proměnné Dynamická proměnná se nezavádí deklarací proměnných, ale vzniká za běhu programu provedením speciálního příkazu. Nemá přidělen žádný.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
6. Typ záznam Strukturovaný datový typ - znamená spojení několika elementů stejného nebo různých typů do jedné proměnné. Např. pole je strukturovaný datový.
Cvičení 3-4 Procedury, funkce,řetězce. Procedury Procedura Procedura Procedura je podprogram, který mění stav programu (změnou stavu proměnných nebo změnou.
PROGRAMOVÁNÍ 3ITA,3ITB Jaroslav Burdys Hlavní zdroj:
KÓDOVANIE INFORMÁCIÍ Maroš Malý, 4.C.
Percentá Percentá každý deň a na každom kroku.
NÁZEV: VY_32_INOVACE_05_05_M6_Hanak TÉMA: Dělitelnost
Shodné zobrazení, osová souměrnost, středová souměrnost
Opakování na 4. písemnou práci
Data Science aneb BigData v praxi
Problematika spotřebitelských úvěrů
Elektrikcé pole.
Střední odborná škola a Střední odborné učiliště, Hradec Králové, Vocelova 1338, příspěvková organizace Registrační číslo projektu: CZ.1.07/1.5.00/
Dynamická pevnost a životnost Přednášky
Perspektivy budoucnosti lidstva
NÁZEV: VY_32_INOVACE_08_12_M9_Hanak TÉMA: Jehlan OBSAH: Objem
Změny skupenství Ing. Jan Havel.
Seminář JČMF Matematika a fyzika ve škole
Test: Mechanické vlastnosti kapalin (1. část)
4.2 Deformace pevného kontinua 4.3 Hydrostatika
A ZÁROVEŇ HNED DOKONALÉ
Tělesa –Pravidelný šestiboký hranol
8.1.1 Lineární kombinace aritmetických vektorů
Fyzikální veličiny - čas
Číselné soustavy a kódy
Čas a souřadnice Lekce 3 Miroslav Jagelka.
Agregátní trh práce.
Název prezentace (DUMu): Jednoduché úročení – řešené příklady
Konstrukce překladačů
DYNAMICKÉ VLASTOSTI ZEMIN A HORNIN
Parametry vedení a stejnosměrná vedení
Martina Litschmannová
Proudy a obvody Náboje v pohybu.
Práce s nepájivým (kontaktním) polem
NÁZEV: VY_32_INOVACE_06_11_M7_Hanak
NÁZEV: VY_32_INOVACE_08_01_M9_Hanak TÉMA: Soustavy lineárních rovnic
Umělá Inteligence  .
Výukový materiál zpracován v rámci projektu
Překlad balíčků v Ubuntu (2)
Číslo projektu CZ.1.07/1.5.00/ Číslo materiálu VY_32_INOVACE_22-14
Studená válka.
Škola ZŠ Masarykova, Masarykova 291, Valašské Meziříčí Autor
PRÁVNÍ ZÁKLADY STÁTU - VLAST
Je obtížnější „dělat“ marketing služby nebo hmotného produktu?
Dvacáté století – vznik Československa
Zakavkazsko.
Magnetické pole.
Programovací jazyk C++
Strukturované typy proměnných v programovacím jazyce Pascal - 1.hodina
Uživatelem definované datové typy
Abstraktní datové typy
Strukturované typy proměnných v programovacím jazyce Pascal - 2.hodina
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
Pokus. konec.
Transkript prezentace:

Fronta - a)Implementace s využitím statických struktur (pole) b)Implementace s využitím dynamických struktur (spojového seznamu) odebírá se ze začátku fronty, přidává se na konec fronty. Datová struktura typu FIFO (kolejka)

a) s využitím statických struktur Definice a deklarace: type COSI = string[10]; {popř. COSI=real apod.} PP = 10; FRONTA = array[1..PP] of COSI; Var F1 : FRONTA; ZAC, KON : byte; PRVEK : COSI; Přidej prvek do fronty: begin KON:=KON+1; KON:=0; F1[KON]:= PRVEK ZAC:=1 end Odeber prvek z fronty: begin PRVEK:=F1[1]; for I:=2 to KON do F1[I-1]:=F1[I] end

Uvedené řešení je spíše manuální záležitost, jediná starost je o stav, kdy fronta je plná (KON=PP - nedá se přidat) popř. prázdná (KON=0 - nedá se odebrat) Efekt přináší použití fronty v podobě kruhu, kdy kromě výše uvedených proměnných deklarujeme ještě proměnnou var POC: byte udržující informaci o počtu zákazníků ve frontě (POC <= PP).

Pak přídání prvku do fronty řeší algoritmus begin KON:=(KON+1) mod 10; F1[KON]:=PRVEK; POC:=POC+1 end a odebrání prvku z fronty řeší algoritmus begin PRVEK:=F1[ZAC]; ZAC:=(ZAC+1) mod 10; POC:=POC-1 end Výchozí nastavení KON:=0; ZAC:=1; POC:=0 a starost, aby hodnota POC byla v intervalu 1..PP (ovšem nabývat hodnot může z intervalu 0..PP+1.

b) s využitím dynamických struktur Type COSI = string[10]; WSKAZ = ^STRU; STRU = record IM : COSI; WSK : WSKAZ end; var F1 : FRONTA; nil ZACKON type FRONTA = record ZAC:WSKAZ; KON:WSKAZ end ZAC - START KON - ILOSC F1

Úvodní inicializaci fronty řeší algoritmus Procedure INIT; begin new(F1.ZAC); F1.ZAC^.WSK:=nil; F1.KON:=F1.ZAC end ZACKON F1 nil

Přidání prvku do fronty řeší algoritmus Procedure PRIDEJ(R:COSI); begin F1.KON^.IM:=R; new(F1.KON^.WSK); F1.KON:=F1.KON^.WSK; F1.KON^.WSK:=nil end

Odebrání prvku z fronty řeší algoritmus Procedure ODEBER(var R:COSI); var POM : WSKAZ; begin if F1.ZAC<>F1.KON then begin R:=F1.ZAC^.IM; POM:=F1.ZAC ; F1.ZAC:=F1.ZAC^.WSK; dispose(POM) end

nil ZACKON F1 nil (3) (1) R (2) (4) nil ZACKON F1 (3) (1) R (2) (4) POM Schematicky lze odebrání prvku z fronty znázornit: Schematicky lze přidání prvku do fronty znázornit:

Zásobník (stos) - a)Implementace s využitím statických struktur (pole) b)Implementace s využitím dynamických struktur (spojového seznamu) nil TOP přidává se i odebírá vždy z vrcholu zásobníku. Datová struktura typu LIFO

a) s využitím statických struktur Definice a deklarace: type COSI = string[10]; {popř. COSI=real apod.} FRONTA = array[1..PP] of COSI; var Z1 : FRONTA; VRCH : byte; PRVEK : COSI; Přidej prvek do zásobníku: begin VRCH:=VRCH+1; VRCH:=0; Z1[VRCH]:= PRVEK end Odeber prvek z fronty: begin PRVEK:=Z1[VRCH]; VRCH :=VRCH-1 end

b) s využitím dynamických struktur Type COSI = string[10]; WSKAZ = ^STRU; STRU = record IM : COSI; WSK : WSKAZ end; var Z1 : WSKAZ; nil Z1Z1

Úvodní inicializaci zásobníku řeší algoritmus Procedure INIT; begin Z1:= nil; end Přidání prvku do zásobníku řeší algoritmus Procedure VLOZ(R:COSI); var POM : WSKAZ; begin new(POM); POM^.IM :=R; POM^.WSK:=Z1; Z1 :=POM end

Odebrání prvku ze zásobníku řeší Procedure ODEBER(var R:COSI); var POM : WSKAZ; begin R :=Z1^.IM; POM:=Z1; Z1 := Z1^.WSK; dispose(POM) end

Jak u fronty, tak u zásobníku, je třeba hlídat, zda není prázdný. U zásobníku je algoritmus ve tvaru Function JePrazdny : Boolean; begin if Z1=nil then JePrazdny := true else JePrazdny := false end