OSTRAVSKÁ UNIVERSITA V OSTRAVĚ Pedagogická fakulta Obor informační technologie ve vzdělávání Kombinované studium

Rozměr: px
Začít zobrazení ze stránky:

Download "OSTRAVSKÁ UNIVERSITA V OSTRAVĚ Pedagogická fakulta Obor informační technologie ve vzdělávání Kombinované studium"

Transkript

1 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 L

2 Úvod Aritmetický strom je binární strom, který má ve vnitřních uzlech matematické operátory (+, -, /, *) a v listech (vrcholech) má operandy (např. čísla alebo identifikátory proměnných). Každý jeho uzel má buď dva nebo žádný podřízený uzel (nemůže mít jeden podřízený uzel). Každému aritmetickému výrazu (zcela uzávorkovanému) odpovídá právě jeden aritmetický strom a naopak. Např. strom na obrázku má následující infixový zápis: (( 7 * 3 ) - ( 15 / 3 )) Aplikace Zpracovaná aplikace ukazuje tři příklady vytvoření aritmetického stromu pomocí haldy, jeho vykreslení, výpočet hodnoty aritmetického výrazu, zjištění hloubky stromu a funkce pro infixový, prefixový a postfixový zápis. Metody VYPOCITAT, PREFIX, POSTFIX, INFIX a KRESLI jsou zároveň ukázkou průchodu stromem. Deklarace const Operatory:set of Char = [' ','+','-','*','/']; type TUzel = record operator:char; // ' ',+,-,*,/ hodnota:integer; THalda = array of TUzel; Konstanta Operatory definuje znaky dostupné v atributu operator každého uzlu stromu. Hodnota (mezera) v atributu operator indikuje, že se jedná o vrchol stromu. Metody 2

3 Funkce LEVYSTROM(P) a PRAVYSTROM(P) vracejí index levého resp. pravého podstromu volané pozice. Vlastní haldu implementujeme pomocí dynamického pole, jež má v Delphi základní index 0. Adekvátně je proto upraven obecný vzorec pro výpočet pozice podstromu. function LevyStrom(Pozice:Integer):Integer; result:=2*(pozice+1)-1; function PravyStrom(Pozice:Integer):Integer; result:=2*(pozice+1); Funkce VYPOCITAT(H) Vrátí výsledek výrazu definovaného aritmetickým stromem (strom je poslán parametrem Halda). function Vypocitat( Halda:THalda;Pozice:integer=0):Integer; case Halda[Pozice].operator of '+':Result:=Vypocitat(Halda,l)+Vypocitat(Halda,p); '-':Result:=Vypocitat(Halda,l)-Vypocitat(Halda,p); '*':Result:=Vypocitat(Halda,l)*Vypocitat(Halda,p); '/':Result:=Vypocitat(Halda,l) div Vypocitat(Halda,p); Result:=Halda[Pozice].hodnota; Funkce HLOUBKA(H) Vrátí hloubku aritmetického stromu (strom je poslán parametrem Halda). function Hloubka( Halda:THalda):integer; result:=trunc(log2(length(halda)))+1; Funkce PREFIX(H) Vrátí prefixový zápis aritmetického stromu. function Prefix( Halda:THalda;Pozice:Integer=0):string; 3

4 Result:=IntToStr(Halda[Pozice].Hodnota)+' ' Result:=Halda[Pozice].operator+' '; Result:=Result+Prefix(Halda,l); Result:=Result+Prefix(Halda,p); Funkce POSTFIX(H) Vrátí postfixový zápis aritmetického stromu. function Postfix( Halda:THalda;Pozice:Integer=0):string; Result:=' '+IntToStr(Halda[Pozice].Hodnota) Result:=' '+Halda[Pozice].operator; Result:=Postfix(Halda,p)+Result; Result:=Postfix(Halda,l)+Result; Funkce INFIX(H) Vrátí infixový zápis aritmetického stromu. function Infix( Halda:THalda;Pozice:Integer=0):string; lr,pr:string; Result:=' '+IntToStr(Halda[Pozice].Hodnota) 4

5 lr:=infix(halda,l); pr:=infix(halda,p); Result:='('+lr+' '+Halda[Pozice].operator+' '+pr+')'; Procedura KRESLI(H,Pozice,x,y,uroven) Tato procedura je v aplikaci zapouzdřena do metody Vykreslit. Metoda Vykreslit připraví objekty nutné pro vykreslení v rámci programovacího prostředí Borland Delphi a procedura Kresli vykreslí aritmetický strom (zaslaný do nadřízené metody parametrem Halda). Vstupní parametry x a y udávají počáteční souřadnice pro vykreslování, parametr uroven pak udává kolik uzlů stromu ještě zbývá vykreslit (z důvodů výpočtu souřadnic jednotlivých uzlů v rámci vykreslované úrovně). Konstanta r_uzel udává rozměr vykreslovaného uzlu. procedure TForm1.Vykreslit( Halda:THalda); const r_uzel = 24; Bmp:TBitmap; w:integer; procedure Kresli(Pozice:integer;x,y,uroven:Integer); R:TRect; xc,yc:integer; with Bmp.Canvas do R:=Rect(x,y,x+r_uzel,y+r_uzel); xc:=x+(r_uzel div 2); yc:=y+(r_uzel div 2); uroven:=uroven div 2; MoveTo(xc,yc); LineTo(xc-r_uzel*uroven,yc+r_uzel*2); Kresli(l,x-r_uzel*uroven,y+r_uzel*2,uroven); MoveTo(xc,yc); LineTo(xc+r_uzel*uroven,yc+r_uzel*2); Kresli(p,x+r_uzel*uroven,y+r_uzel*2,uroven); 5

6 Rectangle(R); DrawText(Bmp.Canvas.Handle,PChar(IntToStr(Halda[Pozice ].Hodnota)),Length(IntToStr(Halda[Pozice].Hodnota)),R,DT_VCENT ER or DT_CENTER or DT_SINGLELINE) end Ellipse(R); or DT_CENTER or DT_SINGLELINE); Image1.Picture.Assign(nil); Bmp:=TBitmap.Create; try w:=hloubka(halda); Bmp.Height:=w*r_uzel*2; Bmp.Width:=Trunc(Power(2,w-1)*r_uzel)*2; with Bmp.Canvas do Brush.Color:=clWhite; Pen.Color:=clBlack; Pen.Width:=2; Font.Name:='Arial'; Font.Size:=10; Font.color:=clBlack; Font.Style:=[fsBold]; Kresli(0,(Bmp.Width div 2)-(r_uzel div 2),8,Trunc(Power(2,w-1))); Image1.Picture.Assign(Bmp); finally Bmp.Free; Procedura VYTVORITSTROM testovací metoda pro vytvoření, výpočet a vyčištění stromu. Aplikace obsahuje i další dvě ianty jako ukázky dalších aritmetických stromů. Počet prvků v haldě je dán vzorcem 2^N, kde N je počet úrovní stromu. procedure TForm1.VytvoritStromClick(Sender: TObject); 6

7 Strom:THalda; SetLength(Strom,Trunc(Power(2,3))-1); Strom[0].operator:='-'; Strom[1].operator:='*'; Strom[2].operator:='/'; Strom[3].hodnota:=7; Strom[3].operator:=' '; Strom[4].hodnota:=3; Strom[4].operator:=' '; Strom[5].hodnota:=15; Strom[5].operator:=' '; Strom[6].hodnota:=3; Strom[6].operator:=' '; edhloubka.text:=inttostr(hloubka(strom)); Vykreslit(Strom); edhodnota.text:=inttostr(vypocitat(strom,0)); edinfix.text:=infix(strom); edprefix.text:=prefix(strom); edpostfix.text:=postfix(strom); SetLength(Strom,0); Závěr: Všechny výše uvedené procedury a funkce jsou implementovány v prostředí Borland Delphi 7. 7

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

Implementace aritmetického stromu pomocí směrníků Implementace aritmetického stromu pomocí směrníků Úvod Aritmetický strom je binární strom, který má ve vnitřních uzlech matematické operátory (+, -, /, *) a v listech (vrcholech) má operandy (např. čísla

Více

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 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)

Více

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

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7 Pascal Katedra aplikované kybernetiky Ing. Miroslav Vavroušek Verze 7 Proměnné Proměnná uchovává nějakou informaci potřebnou pro práci programu. Má ve svém oboru platnosti unikátní jméno. (Připadne, musí

Více

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

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů. Základní symboly - písmena A B C Y Z a b c y z - číslice 0 1 2 9 - speciální symboly + - * / =., < > = a další - klíčová slova and array begin case const a další Klíčová slova jsou chráněnými útvary,

Více

Předmět: Algoritmizace praktické aplikace

Předmět: Algoritmizace praktické aplikace Předmět: Algoritmizace praktické aplikace Vytvořil: Roman Vostrý Zadání: Vytvoření funkcí na stromech (reprezentace stromu haldou). Zadané funkce: 1. Počet vrcholů 2. Počet listů 3. Součet 4. Hloubka 5.

Více

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.

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

Více

Programovací jazyk Pascal

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

Více

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

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování. Delphi lekce 6 Minimum z Object Pascalu Vrátíme se ještě k základům Object Pascalu. Struktura programu Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově

Více

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

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

Více

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

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5 Obsah Obsah 1 Programovací jazyk Pascal 1 1.1 Struktura programu v Pascalu.................... 1 2 Proměnné 2 2.1 Vstup a výstup............................ 3 3 Operátory a některé matematické funkce 5

Více

Algoritmizace a programování

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

Více

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

Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu Ukazatel a dynamické datové struktury v prostředí DELPHI Důležitým termínem a konstrukčním programovým prvkem je typ UKAZATEL. Je to vlastně

Více

NPRG030 Programování I, 2015/16 1 / :25:32

NPRG030 Programování I, 2015/16 1 / :25:32 NPRG030 Programování I, 2015/16 1 / 21 22. 10. 2015 13:25:32 Podprogramy Příklad: Vytiskněte tabulku malé násobilky ve tvaru XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X 1 2 3 4 5 6 7 8 9 10 X

Více

Implementace binárního stromu směrníky

Implementace binárního stromu směrníky Téma: Vypracoval: Zdeněk Alčer Implementace binárního stromu směrníky 1. Teorie stromu: Pojem strom je datová struktura, která je v teorii grafů formálně definována jako zvláštní případ grafu bez cyklů.

Více

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. 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:

Více

Úvod do programovacích jazyků (Java)

Ú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

Více

Dynamické datové typy a struktury

Dynamické datové typy a struktury .. a Programovací techniky doc. Ing. Jiří Rybička Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Programovací techniky a 2 / 18 Uchovávají adresu v paměti Programovací techniky a 2 / 18 Uchovávají

Více

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

1. Implementace funkce počet vrcholů. Předmět: Algoritmizace praktické aplikace (3ALGA) Předmět: Algoritmizace praktické aplikace (3ALGA) Vytvořil: Jan Brzeska Zadání: Vytvoření funkcí na stromech (reprezentace stromu směrníky). Zadané funkce: 1. Počet vrcholů 2. Počet listů 3. Součet 4.

Více

ALGORITMIZACE A PROGRAMOVÁNÍ

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í

Více

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T. BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 2/41 Formální překlady BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 4/41 Automaty a gramatiky(bi-aag) 5. Překladové konečné

Více

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

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem Test prvočíselnosti Úkol: otestovat dané číslo N, zda je prvočíslem 1. zkusit všechny dělitele od 2 do N-1 časová složitost O(N) cca N testů 2. stačí zkoušet všechny dělitele od 2 do N/2 (větší dělitel

Více

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

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi) Programovací jazyk - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi) Odlišnosti implementace od normy - odchylky např.: nepovinná hlavička programu odlišná

Více

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

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik; Vícerozměrné pole type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik; M[2,3] := 3145; - počet indexů není omezen (v praxi obvykle nejvýše tři) - více indexů pomalejší přístup k prvku (počítá

Více

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Dynamicky vázané metody. Pozdní vazba, virtuální metody Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:

Více

Algoritmizace prostorových úloh

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á

Více

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

dovolují dělení velkých úloh na menší = dekompozice Podprogramy dovolují dělení velkých úloh na menší = dekompozice Příklad: Vytiskněte tabulku malé násobilky ve tvaru XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X 1 2 3 4 5 6 7 8 9 10 X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Více

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

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

Více

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

Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620 Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620 1. Vymezení pojmů Strom: Strom je takové uspořádání prvků - vrcholů, ve kterém lze rozeznat předchůdce - rodiče a následovníky - syny.

Více

Binární vyhledávací strom. Proč binární? Vyhledávání

Binární vyhledávací strom. Proč binární? Vyhledávání Binární vyhledávací strom J e d n á s e o o d rů d u o b e c ně j š í d a t o v é s t r u k t u r y z v a n é s t r o m. P o j e m p o c h á z í z t e o r i e g r a f ů, k d e j e s t r o m e m n a z ý

Více

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

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

Více

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

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky Vyučovací hodina 1vyučovací hodina: Opakování z minulé hodiny Nová látka Procvičení nové látky Shrnutí 5 min 20 min 15 min 5 min 2vyučovací hodiny: Opakování z minulé hodiny Nová látka Procvičení nové

Více

PODPROGRAMY PROCEDURY A FUNKCE

PODPROGRAMY PROCEDURY A FUNKCE PODPROGRAMY PROCEDURY A FUNKCE Programy bez podprogramů Příklady: a) Napište program, který na obrazovku nakreslí čáru složenou ze znaků pomlčka. program Cara; b) Napište program, který na obrazovku nakreslí

Více

Časová a prostorová složitost algoritmů

Časová a prostorová složitost algoritmů .. Časová a prostorová složitost algoritmů Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Hodnocení algoritmů Programovací techniky Časová a prostorová

Více

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

1. D Y N A M I C K É DAT O V É STRUKTUR Y 1. D Y N A M I C K É DAT O V É STRUKTUR Y Autor: Petr Mik Abychom se mohli pustit do dynamických datových struktur, musíme se nejdřív podívat na datový typ ukazatel. 1. D AT O V Ý TYP U K A Z AT E L Datové

Více

PB161 Programování v jazyce C++ Přednáška 9

PB161 Programování v jazyce C++ Přednáška 9 PB161 Programování v jazyce C++ Přednáška 9 Právo friend Přetěžování operátorů Nikola Beneš 16. listopadu 2015 PB161 přednáška 9: friend, přetěžování operátorů 16. listopadu 2015 1 / 30 Reklama PB173 Tematicky

Více

Výsledky základní statistické charakteristiky

Výsledky základní statistické charakteristiky Výsledky základní statistické charakteristiky (viz - Vyhláška č. 343/00 Sb. o průběhu přijímacího řízení na vysokých školách a Vyhláška 76/004 Sb. kterou se mění vyhláška č. 343/00 Sb., o postupu a podmínkách

Více

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

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ů

Více

CZ.1.07/1.5.00/

CZ.1.07/1.5.00/ Celá čísla Celočíselný typ má označení INTEGER. Kromě tohoto základního jsou k dispozici ještě další celočíselné typy, které uvádí následující tabulka. Každý typ umožňuje definovat určitý rozsah celých

Více

X37SGS Signály a systémy

X37SGS Signály a systémy X7SGS Signály a systémy Matlab minihelp (poslední změna: 0. září 2008) 1 Základní maticové operace Vytvoření matice (vektoru) a výběr konkrétního prvku matice vytvoření matice (vektoru) oddělovač sloupců

Více

Sémantika Tabulka symbolů Intermediální kód Typová kontrola, přetypování Statická a dynamická sémantika. Sémantická analýza.

Sémantika Tabulka symbolů Intermediální kód Typová kontrola, přetypování Statická a dynamická sémantika. Sémantická analýza. Sémantická analýza Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 19. listopadu 2009 Definice (Sémantická analýza) Vstup: konstrukce symbolů vytvořená

Více

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

Reprezentace dat v informačních systémech. Jaroslav Šmarda Reprezentace dat v informačních systémech Jaroslav Šmarda Reprezentace dat v informačních systémech Reprezentace dat v počítači Datové typy Proměnná Uživatelské datové typy Datové struktury: pole, zásobník,

Více

LabView jako programovací jazyk II

LabView jako programovací jazyk II LabView jako programovací jazyk II - Popis jednotlivých funkcí palety Function II.část - Funkce Numeric, Array, Cluster Ing. Martin Bušek, Ph.D. Práce s daty typu NUMERIC Numerické funkce obsahuje funkce

Více

VY_32_INOVACE_In 6.,7.13 Vzorce vložení funkce

VY_32_INOVACE_In 6.,7.13 Vzorce vložení funkce VY_32_INOVACE_In 6.,7.13 Vzorce vložení funkce Anotace: Žák se seznámí se základními druhy funkcí a jejich vložením v programu MS Excel 2010. Pracuje na svém žákovském počítači dle pokynů v prezentaci.

Více

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1 Výraz - syntaxe i sémantika podobné jako v matematice - obsahuje proměnné, konstanty, operátory, závorky, volání funkcí - všechny operátory nutno zapisovat (nelze např. vynechat znak násobení) - argumenty

Více

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

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ů

Více

Algoritmizace prostorových úloh

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á

Více

Poslední aktualizace: 14. října 2011

Poslední aktualizace: 14. října 2011 Lexikální analýza Překladače, přednáška č. 2 Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz http://fpf.slu.cz/ vav10ui Poslední aktualizace: 14. října 2011 Symboly Co je to

Více

Zápis programu v jazyce C#

Zápis programu v jazyce C# Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač

Více

ABSTRAKTNÍ DATOVÉ TYPY

ABSTRAKTNÍ DATOVÉ TYPY Jurdič Radim ABSTRAKTNÍ DATOVÉ TYPY Veškeré hodnoty, s nimiž v programech pracujeme, můžeme rozdělit do několika skupin zvaných datové typy. Každý datový typ představuje množinu hodnot, nad kterými můžeme

Více

Základy programovacího jazyka Turbo Pascal

Základy programovacího jazyka Turbo Pascal Základy programovacího jazyka Turbo Pascal Programovací jazyk Pascal byl navržen začátkem 70. let profesor Niklaus Wirth z Vysoké školy technické v Curychu Cíle návrhu vytvořit jazyk vhodný pro výuku programování

Více

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

Základní datové struktury III: Stromy, haldy Základní datové struktury III: Stromy, haldy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní

Více

Odhad střední chyby výměry parcely

Odhad střední chyby výměry parcely Odhad střední chyby výměry parcely Lubomír Soukup Ústav teorie informace a automatizace Akademie věd České republiky Pod vodárenskou věží 4 18 08 Praha 8 tel: 66 05 551 e mail: soukup@utia.cas.cz 1 Výpočet

Více

Implementace LL(1) překladů

Implementace LL(1) překladů Překladače, přednáška č. 6 Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 30. října 2007 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku

Více

2 Strukturované datové typy 2 2.1 Pole... 2 2.2 Záznam... 3 2.3 Množina... 4

2 Strukturované datové typy 2 2.1 Pole... 2 2.2 Záznam... 3 2.3 Množina... 4 Obsah Obsah 1 Jednoduché datové typy 1 2 Strukturované datové typy 2 2.1 Pole.................................. 2 2.2 Záznam................................ 3 2.3 Množina................................

Více

Texty k Programování na VŠFS. Petr Kučera () Texty k Programování na VŠFS 29. května 2006 1 / 117

Texty k Programování na VŠFS. Petr Kučera () Texty k Programování na VŠFS 29. května 2006 1 / 117 Texty k Programování na VŠFS Petr Kučera 29. května 2006 Petr Kučera () Texty k Programování na VŠFS 29. května 2006 1 / 117 Obsah Základní informace k předmětu Dynamicky alokovaná paměť Jednoduché dynamicky

Více

Zpracování deklarací a přidělování paměti

Zpracování deklarací a přidělování paměti Zpracování deklarací a přidělování paměti Účel deklarací -pojmenování objektů -umístění objektů v paměti Tabulka symbolů -uchovává informace o objektech -umožňuje kontextové kontroly -umožňuje operace

Více

Pointery II. Jan Hnilica Počítačové modelování 17

Pointery II. Jan Hnilica Počítačové modelování 17 Pointery II 1 Pointery a pole Dosavadní způsob práce s poli zahrnoval: definici pole jakožto kolekce proměnných (prvků) jednoho typu, umístěných v paměti za sebou int pole[10]; práci s jednotlivými prvky

Více

Přetěžování operátorů

Přetěžování operátorů Přetěžování operátorů Cíle lekce Cílem lekce je seznámit se s mechanizmem přetížení operátorů a s použitím tohoto mechanizmu při návrhu a implementaci programů. Po absolvování lekce budete: umět využívat

Více

přetížení operátorů (o)

přetížení operátorů (o) přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - deklarace pomocí funkčního

Více

NMIN102 Programování /2 Z, Zk

NMIN102 Programování /2 Z, Zk NMIN102 Programování 2 --- 2/2 Z, Zk Pavel Töpfer Katedra softwaru a výuky informatiky MFF UK MFF Malostranské nám., 4. patro, pracovna 404 pavel.topfer@mff.cuni.cz http://ksvi.mff.cuni.cz/~topfer Pavel

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

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

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost Amortizovaná složitost. Prioritní fronty, haldy binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost 1. Asymptotické odhady Asymptotická složitost je deklarována na základě

Více

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

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é

Více

8) Jaké jsou důvody pro použití víceprůchodového překladače Dříve hlavně kvůli úspoře paměti, dnes spíše z důvodu optimalizace

8) Jaké jsou důvody pro použití víceprůchodového překladače Dříve hlavně kvůli úspoře paměti, dnes spíše z důvodu optimalizace 1) Charakterizujte křížový překladač Překlad programu probíhá na jiném procesoru, než exekuce. Hlavním důvodem je náročnost překladače na cílovém stroji by ho nemuselo být možné rozběhnout. 2. Objasněte

Více

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:

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: Plán předmětu Název předmětu: Algoritmizace a programování (PAAPK) Školní rok: 2007/2008 Forma studia: Kombinovaná Studijní obory: DP, DI, PSDPI, OŽPD Ročník: I Semestr: II. (letní) Typ předmětu: povinný

Více

Funkcionální programování. Kristýna Kaslová

Funkcionální programování. Kristýna Kaslová Funkcionální programování Kristýna Kaslová Historie Alonzo Church (30. léta) Netypovaný lambda kalkul Základ prvních funkcionálních jazyků Jeho konstrukce i v mnoha současných programovacích jazycích (Python)

Více

Jazyk C++ I. Polymorfismus

Jazyk C++ I. Polymorfismus Jazyk C++ I Polymorfismus AR 2013/2014 Jazyk C++ I Operátory Co to vůbec jsou operátory? Na co je používáme? AR 2013/2014 Jazyk C++ I 2 Operátory Můžeme si upravit operátory pro vlastní objektové typy?

Více

1 Úvod do kompilátorů

1 Úvod do kompilátorů 1 Úvod do kompilátorů 1.1 Úvodem několik slov Tyto texty obsahují úvod do návrhu programovacích jazyků a problematiky překladu programů. Téma pokrývá oblasti zahrnující lexikální analýzu (scanning), regulární

Více

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

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

Více

Algoritmizace prostorových úloh

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 Algoritmus Daniela Szturcová Tento

Více

Syntaktická analýza. Implementace LL(1) překladů. Šárka Vavrečková. Ústav informatiky, FPF SU Opava

Syntaktická analýza. Implementace LL(1) překladů. Šárka Vavrečková. Ústav informatiky, FPF SU Opava Implementace LL(1) překladů Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 6. ledna 2012 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku

Více

ALGORITMIZACE PRAKTICKÉ

ALGORITMIZACE PRAKTICKÉ LOGO IMAGINE Obsah 1. Příkazy 1.1. Základní příkazy 1.2. Vestavěné příkazy Imagine 1.2.1.Příkaz mnohoúhelník 1.2.2.Náhodná procházka 2. Matematické operace 3. Funkce 4. Predikáty 5. Konstruktory 6. Selectory

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

Binární vyhledávací stromy

Binární vyhledávací stromy Binární vyhledávací stromy Definice: Binární vyhledávací strom (po domácku BVS) je buďto prázdná množina nebo kořen obsahující jednu hodnotu a mající dva podstromy (levý a pravý), což jsou opět BVS, ovšem

Více

Uplatnění metod na zvolený jazyk

Uplatnění metod na zvolený jazyk Uplatnění metod na zvolený jazyk Při výběru mezi metodami výše popsanými se řídíme především podle typu symbolů, které jazyk obsahuje. Výhodná bývá často kombinace těchto metod nejdřív použijeme metodu

Více

Západočeská univerzita v Plzni Dokumentace překladače PL/0 v PHP Předmět KIV/FJP

Západočeská univerzita v Plzni Dokumentace překladače PL/0 v PHP Předmět KIV/FJP Západočeská univerzita v Plzni Dokumentace překladače PL/0 v PHP Předmět KIV/FJP Petr Sládek slady@slady.cz 27. ledna 2005 Zadání Cílem této semestrální práce je kontrola zdrojového kódu překladače jazyka

Více

Úvod do programování. Lekce 1

Úvod do programování. Lekce 1 Úvod do programování Lekce 1 Základní pojmy vytvoření spustitelného kódu editor - psaní zdrojových souborů preprocesor - zpracování zdrojových souborů (vypuštění komentářů atd.) kompilátor (compiler) -

Více

Úvod do programování - Java. Cvičení č.4

Ú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í

Více

Generování vnitřní reprezentace programu

Generování vnitřní reprezentace programu Generování vnitřní reprezentace programu Miroslav Beneš Dušan Kolář Možnosti překladu Interpretace Okamžité provádění programu Překlad do instrukcí procesoru Závislost na konkrétním typu procesoru Překlad

Více

Sdílení dat mezi podprogramy

Sdílení dat mezi podprogramy Sdílení dat mezi podprogramy Datové objekty mohou být mezi podprogramy sdíleny pomocí ne-lokálních referenčních prostředí, která jsou vytvářena na základě æ explicitních modifikací (formální parametry

Více

TTreeView je ten strom vlevo (vzhled se dá upravovat) a TListView je ten seznam vpravo (včetně volitelných módů zobrazení jako ikony).

TTreeView je ten strom vlevo (vzhled se dá upravovat) a TListView je ten seznam vpravo (včetně volitelných módů zobrazení jako ikony). Delphi lekce 5 TListView a TTreeView Pomalu přecházíme na složitější komponenty a na složitější příklad (uvedeme jen důležité komponenty, tj. ne všechny). Uvedené dvě komponenty jsou velmi užitečné a často

Více

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01 Anotace sady: Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01 Autor: Blanka Sadovská Klíčová slova: Algoritmus, proměnná, diagram Stupeň a typ vzdělávání: gymnaziální vzdělávání, 3. ročník

Více

7. OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ

7. OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ Page 1 of 7 7. OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ 1. Úvod 2. Obalení 3. Dědičnost 4. Polymorfismus 5. Statické a virtuální metody 6. Dynamické objekty 7.1 ÚVOD Objektově orientované programování (dále

Více

Sada 1 - Základy programování

Sada 1 - Základy programování S třední škola stavební Jihlava Sada 1 - Základy programování 06. Proměnné, deklarace proměnných Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284

Více

Stromy. Jan Kybic.

Stromy. Jan Kybic. Stromy Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 1 / 44 Stromy Binární vyhledávací stromy Množiny a mapy 2 / 44 Strom (Tree) Strom skládá se s uzlů (nodes) spojených hranami (edges).

Více

4 Želva se učí nové příkazy

4 Želva se učí nové příkazy 4 Želva se učí nové příkazy Žofka je nejen inteligentní, ale také velmi učenlivá. Byla schopna nejen provádět základní příkazy, ale také si postupně rozšiřovala slovník příkazů. Když jsem ji naučil něco

Více

Stromy, haldy, prioritní fronty

Stromy, haldy, prioritní fronty Stromy, haldy, prioritní fronty prof. Ing. Pavel Tvrdík CSc. Katedra počítačů FEL České vysoké učení technické DSA, ZS 2008/9, Přednáška 6 http://service.felk.cvut.cz/courses/x36dsa/ prof. Pavel Tvrdík

Více

Problém, jehož různé instance je třeba často řešit Tyto instance lze vyjádřit větami v jednoduchém jazyce

Problém, jehož různé instance je třeba často řešit Tyto instance lze vyjádřit větami v jednoduchém jazyce Interpreter Interpreter Motivace Problém, jehož různé instance je třeba často řešit Tyto instance lze vyjádřit větami v jednoduchém jazyce Příklad: zda daný textový řetězec odpovídá nějakému vzoru (match)

Více

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

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íce

Algoritmizace prostorových úloh

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 Algoritmus Daniela Szturcová Tento

Více

Pseudonáhodná čísla = algoritmicky generovaná náhrada za náhodná čísla

Pseudonáhodná čísla = algoritmicky generovaná náhrada za náhodná čísla Pseudonáhodná čísla = algoritmicky generovaná náhrada za náhodná čísla Použití: - náhodnost při rozhodování např. ve hrách (výběr z více možných stejně dobrých tahů v dané pozici, házecí kostka) - generování

Více

Abstraktní datové typy FRONTA

Abstraktní datové typy FRONTA Abstraktní datové typy FRONTA Fronta je lineární datová struktura tzn., že ke každému prvku s výjimkou posledního náleží jeden následník a ke každému prvku s výjimkou prvního náleží jeden předchůdce. Do

Více

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20 Obsah 5 Obsah Předmluva k aktuálnímu vydání 15 1 Úvod k prvnímu vydání z roku 2000 16 Typografické a syntaktické konvence................ 20 2 Základní pojmy 21 2.1 Trocha historie nikoho nezabije................

Více

Středoškolská technika SCI-Lab

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

Více

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

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

Více

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

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku Znaky - standardní typ char var Z, W: char; - znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku - v TP (často i jinde) se používá kódová

Více

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David Úvod do Prologu Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David Warren (Warren Abstract Machine) implementace

Více

Stručný obsah První týden Druhý týden 211 Třetí týden 451 Rejstřík 787

Stručný obsah První týden Druhý týden 211 Třetí týden 451 Rejstřík 787 Stručný obsah První týden 25 den 1 Začínáme 27 den 2 Anatomie programu C++ 43 den 3 Proměnné a konstanty 57 den 4 Výrazy a příkazy 79 den 5 Funkce 107 den 6 Objektově orientované programování 141 den 7

Více

PŘETĚŽOVÁNÍ OPERÁTORŮ

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

Více

Konečný automat. Jan Kybic.

Konečný automat. Jan Kybic. Konečný automat Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 33 Konečný automat finite state machine Konečný automat = výpočetní model, primitivní počítač Řídící jednotka s

Více