Štruktúry údajov a algoritmy

Podobné dokumenty
Základy algoritmizácie a programovania

PODPROGRAMY. Vyčlenenie podprogramu a jeho pomenovanie robíme v deklarácii programu a aktiváciu vykonáme volaním podprogramu.

Programovanie I. Úvod do programovania Mgr. Stanislav Horal, Katedra informatiky, FPV, UCM

značky spájame spojnicami, šípka musí byť ak ...

Operačný systém Úvodná prednáška

Matematika Postupnosti

Pascal základné pojmy

15. Príkazy vetvenia

Návrh, implementácia a prevádzka informačného systému

Metóda vetiev a hraníc (Branch and Bound Method)

Microsoft Project CVIČENIE 6 1

Množiny, relácie, zobrazenia

Štruktúra údajov pre kontajner XML údajov 1. Dátové prvky pre kontajner XML údajov

Jazykové konštrukcie: Výrazy Rekurzívne algoritmy

MATLAB (1) - úvod do programovania vedeckých problémov. LS 2017, 8.predn.

U N I V E R Z I N S K Á I T A I L V E R E N L N T A S O

Hromadná korešpondencia v programe Word Lektor: Ing. Jaroslav Mišovych

Úroveň strojového kódu procesor Intel Pentium. Adresovanie pamäte

OPAKOVANIE ZÁKLADNÉ POJMY Z INFORMATIKY

UČEBNÉ OSNOVY do ŠkVP

Predaj cez PC pokladňu

Zvyškové triedy podľa modulu

PROGRAMOVANIE A JEHO POZÍCIA VPREDMETE INFORMATIKA. Mgr. Ján Guniš

Manuál na prácu s databázou zmlúv, faktúr a objednávok Mesta Martin.

Strojový kód, assembler, emulátor počítača

Import Excel Univerzál

Technické vybavenie počítača - HARDVÉR (Hardware)

Programovanie v jazyku C - pole treba poorat...

Inventúra účtov- základný popis.

Programovanie PLC a norma IEC

Informatika a jej jednotlivé oblastí

Obsah. Reprezentácia údajov v počítači. Digitalizácia číselnej informácie. Digitalizácia znakov a textovej informácie.

VECIT 2006 Tento materiál vznikol v rámci projektu, ktorý je spolufinancovaný Európskou úniou. 1/4

Programovanie v jazyku C - ti to zratam...

Test. Ktorý valec by ste použili? A. Jednočinný valec B. Dvojčinný valec. Odpoveď:

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

7.1 Návrhové zobrazenie dotazu

Úvodná strana IS ZASIELKY Prvky úvodnej stránky:

Vývojové diagramy Symboly vývojových diagramov Spracovanie Rozhodovanie Príprava

Čo ak program potrebuje pamäť, ktorej veľkosť závisí od konkrétneho vstupu?

P R O L U C. POZNÁMKY individuálnej účtovnej závierky pre rok 2014

Matematika (platný od )

OBOZNÁMTE SA S VAŠÍM TELEFÓNOM

Zachovanie mentálnej mapy pri interakcií s grafom. RNDr. Jana Katreniaková PhD.

Ukladanie údajov a databázové systémy. Prof. MUDr. Martin Rusnák, CSc Prof. MUDr. Viera Rusnáková, CSc PhDr. Marek Psota, PhD

Účtovná dokumentácia. Obsah a forma účtovného záznamu

Externé zariadenia Používateľská príručka

RIEŠENIE NIEKTORÝCH ÚLOH LINEÁRNEJ ALGEBRY V PROSTREDÍ MS EXCEL. 1. Zadáme prvky matice A a B do buniek pracovného hárku zošita MS Excel

Šifrovanie, kódovanie, bit a byte, digitálne informácie. Kódovanie informácií v PC binárna (dvojková) číselná sústava

Pozičné číselné sústavy. Dejiny. Číselná sústava je spôsob, akým sú zapisované čísla pomocou znakov (nazývaných cifry).

Blokové a prúdové šifry

To bolo ľahké. Dokážete nakresliť kúsok od prvého stromčeka rovnaký? Asi áno, veď môžete použiť tie isté príkazy.

Základy optických systémov

Návrh postupu pre stanovenie počtu odborných zástupcov na prevádzkovanie verejných vodovodov a verejných kanalizácií v správe vodárenských spoločnosti

8. Relácia usporiadania

Základy algoritmizácie a programovania

Nové eaukčné siene PROebiz verzia 3.4

1. Formát exportov typu *.gpc (ABO)

Naformátuj to. Naformátuj to. pre samoukov

Spracovanie informácií

1. Delenie funkcionálnych vrstiev. 2. Vrstva dopytu

Špecifikácia testu. z matematiky. pre celoslovenské testovanie žiakov 5. ročníka ZŠ v školskom roku 2016/2017

FORMÁT VÝPISOV Z ÚČTU PRE AUTOMATICKÉ ZAÚČTOVANIE DO ÚČTOVNÍCTVA. Clearingový formát. Formát podpoľa sa vyjadruje pomocou číslic:

Kontrola väzieb výkazu Súvaha a Výkaz ziskov a strát Príručka používateľa

ČÍSELNÉ RADY. a n (1) n=1

Multiplexor a demultiplexor

Ministerstvo školstva Slovenskej republiky

Základné dosky. Na nej sú priamo alebo nepriamo umiestnené všetky komponenty počítača.

Dátové rozhranie pre výmenu dát v stavebníctve NDS. Verzia 1.1

Programovanie v jazyku C - to chce dynamiku

Objektovo orientované programovanie v C# ERIK KUČERA METÓDY VÝPOČTOVEJ INTELIGENCIE PREDNÁŠKA 3

Návod na použite plaftormy ELMARK E- Business obsahuje popis hlavných možností a funkcií programu. Príručka je štruktúrovaná podľa poradia možností.

Technická univerzita v Košiciach

Testovanie 5. v školskom roku 2015/2016. Testovanie sa uskutoční 25. novembra 2015 (streda). Žiaci budú testy písať v nasledovnom poradí:

8 OPATRENIE Národnej banky Slovenska z 1. decembra 2009,

Základná jednotka. - Nastojato TOWER. - Naležato - DESKTOP

Užívateľská príručka systému CEHZ. Základné zostavy Farmy podľa druhu činnosti

Návod k servisnému programu pre fiskálny modul FM2000. manuál. (c)varos

Moderné vzdelávanie pre vedomostnú spoločnosť/projekt je spolufinancovaný zo zdrojov EÚ. Grafy

Registračné listy fyzických osôb od (cesta: Registračné listy FO)

OBOZNÁMTE SA S VAŠÍM TELEFÓNOM

Vyhľadávanie a práca so záznamami - CREPČ 2

Metodické usmernenie č. 4/2007 k poskytovaniu informácií prostredníctvom portálu Úradu pre dohľad nad zdravotnou starostlivosťou

Cenový výmer č. 14/2015

Teória grafov. Stromy a kostry 1. časť

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

Ak stlačíme OK, prebehne výpočet a v bunke B1 je výsledok.

Jazyk C++, některá rozšíření oproti C

PRIEMYSELNÁ INFORMATIKA DISKRÉTNE LINEÁRNE RIADENIE

Energetický audit od decembra po novom

Osoba podľa 8 zákona finančné limity, pravidlá a postupy platné od

NÁVRH NA ZÁPIS ZMENY ZAPÍSANÝCH ÚDAJOV O EURÓPSKOM ZOSKUPENÍ HOSPODÁRSKYCH ZÁUJMOV DO OBCHODNÉHO REGISTRA

AIS2 Hodnotenie študentov po skúške POMÔCKA PRE VYUČUJÚCICH

Task, async, await METÓ DY VÝPOČTOVEJ INTELIGENCIE A C# FA K ULTA E L E K T ROTECHNIKY A INFORMATIKY S LOVENSKÁ T E CHNICKÁ U NIVERZITA

INTEGROVANÝ SYSTÉM RIADENIA RIZÍK

Algoritmizace prostorových úloh

Jemný úvod do spracovania XML

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

Cenový výmer č. 11/2015

Hodnotenie záverečnej práce

Transkript:

Úvod do programovania a sietí Štruktúry údajov a algoritmy Ing. Branislav Sobota, PhD. doc. Ing. Zdeněk Havlice, CSc. 2007

Obsah 1. Základné pojmy 2. Ty údajov 3. Primitívne a štruktúrované typy údajov 4. Algoritmus definícia a vlastnosti 5. Prostriedky na vyjadrenie algoritmov textové grafické vývojové diagramy štruktúrogramy a NS diagramy 6. Základné prvky algoritmov 7. Základné riadiace štruktúry 8. Príklady Štruktúry údajov a algoritmy 2

Základné pojmy Číslicový počítač je definovaný ako zložitý univerzálny číslicový systém (automat), určený na samočinné vykonávanie požadovanej postupnosti operácií (výpočtov) nad údajmi, zobrazenými číslicovým kódom, na základe vopred pripraveného a v pamäti uloženého programu. Výpočtový proces je transformácia vstupných údajov na výstupné. Je to postupnosť operácií, ktoré vedú od počiatočných vstupných údajov ku konečným výsledkom. Štruktúry údajov a algoritmy 3

Základné pojmy Technické prostriedky (hardvér, angl. hardware) sú technické zariadenia číslicového počítača, ktoré umožňujú uchovávanie, spracovanie a prenos binárne kódovaných informácií. Tieto prostriedky sú navzájom poprepájané do určitej architektúry, ktorá charakterizuje spôsob spracovania informácií. Štruktúry údajov a algoritmy 4

Základné pojmy Druhy údajov spracovávaných v počítači inštrukcie operandy Štruktúry údajov a algoritmy 5

Základné pojmy Programové prostriedky (softvér, angl. software) - programy - v užšom význame sú to binárne zakódované informácie o spôsobe spracovania určitých údajov doplnené podľa potreby o binárne zakódované údaje - t.j. program tvorí postupnosť inštrukcií a údajov. Programové prostriedky daného číslicového počítača sú programy, ktoré môže daný počítač vykonávať -sú vykonateľné na danej architektúre. Program môže existovať v rôznych formách. vykonateľná forma, ktorá je binárne kódovaná a je priamo vykonateľná na danom číslicovom počítači. textová forma ako tzv. zdrojový text zapísaný v nejakom programovacom jazyku. Štruktúry údajov a algoritmy 6

Základné pojmy Počítačový systém (výpočtový systém) je systém zahrňujúci číslicový počítač (základné technické vybavenie - technické prostriedky), prídavné technické vybavenie a programové vybavenie (programové prostriedky). Štruktúry údajov a algoritmy 7

Základné pojmy vstupné údaje Výpočtový proces Výpočtový systém Technické prostriedky poč ítač a Programové prostriedky počítača výstupné údaje Štruktúry údajov a algoritmy 8

Typy informácií spracovávaných v logické číselné textové zvukové grafické biometrické... počítači Štruktúry údajov a algoritmy 9

Typ údajov každá konštanta, premenná, výraz alebo funkcia sú určitého typu typ konštanty, premennej alebo funkcie sa explicitne stanovuje v rámci ich deklarácie základné vlastnosti pojmu, ako ich budeme chápať: 1. Typ údajov určuje množinu hodnôt, do ktorej daná konštanta prináleží, alebo ktoré môže daná premenná či výraz nadobudnúť, alebo ktorú môžeme daným operátorom alebo funkciou vypočítať. 2. Typ hodnoty konštanty, premennej alebo výrazu sa dá určiť na základe ich deklarácie alebo zápisu bez nevyhnutnosti uskutočniť vlastný výpočtový proces programu. 3. Každý operátor alebo funkcia predpokladá argumenty presne definovaných typov a poskytuje výsledok tiež presne definovaného typu. V prípade, že operátor pripúšťa argumenty rôznych typov (napr. + pre celé alebo reálne čísla), dá sa typ výsledku určiť podľa špecifických pravidiel príslušného programovacieho jazyka. Štruktúry údajov a algoritmy 10

Primitívne typy údajov Enumeračný typ malý počet hodnôt, reprezentované celými číslami, nad nimi sa nevykonávajú žiadne numerické operácie enum {BIELA, MODRA, CERVENA} farba; typ premenná Celočíselný typ podmnožina množiny celých čísel, ktorej veľkosť je rôzna pre rôzne typy počítačov. Operácie nad nimi spĺňajú bežné aritmetické pravidlá. int a, b; Reálny typ podmnožina reálnych čísel float x; double y; Znakový typ množina znakov vytlačiteľných na danom počítači (ASCII, UNICODE) char c; Typ pre logické pravdivostné hodnoty obsahuje dve hodnoty, zvyčajne sa označujú ako true a false, + logické operátory Štruktúry údajov a algoritmy 11

Štruktúrované typy údajov Základné metódy štruktúrovania: pole (array), záznam (struct, record), množina (set), postupnosť (file - súbor) Zložitejšie štruktúry sa zvyčajne nedefinujú ako statické typy, ale v priebehu výpočtu programu sa vytvárajú dynamicky (viď neskôr spojkové zoznamy, stromy), pričom sa môže meniť ich veľkosť a tvar Pole homogénna štruktúra, ktorá pozostáva z prvkov jediného typu (tzv. bázový alebo základný typ). Štruktúra s náhodným prístupom všetky prvky môžu byť vybraté náhodne a sú rovnako sprítupniteľné Referencia individuálneho prvku meno + index (kardinalita(bázový typ)) n... n je kardinalita typu indexu poľa typ_prvkov identifikátor[počet_prvkov] int a[3]; int x; x = a[0]; //a je pole troch prvkov typu int //celočíselná premenná x //priradenie prvého prvku poľa a do //premennej x Štruktúry údajov a algoritmy 12

Štruktúrované typy (2) Záznam slúži na spájanie ľubovoľných prvkov (zložiek) môžu byť aj štruktúrované, do zložených typov. v matematike sa takýto zložený typ nazýva karteziánsky súčin zložkových typov v oblasti spracovania údajov sa takéto zložené typy nazývajú záznamy kardinalita(typ 1 )* kardinalita(typ 2 )*...* kardinalita(typ n ) struct názov { typ 1 id_prvku 1 ;... typ n id_prvku n ; } zoznam_ premenných; struct bod { //bod je menovka int x; //x je členská premenná štruktúry int y; //y je členská premenná štruktúry } p, q; //p, q sú premenné typu záznam bod p.x = 1; p.y = 2; //p predstavuje bod [1,2] Štruktúry údajov a algoritmy 13

Algoritmus Definícia: Algoritmus je presný popis definujúci výpočtový proces, ktorý vedie od meniteľných vstupných údajov až k požadovaným výsledkom. Vlastnosti: Determinovanosť presnosť a zrozumiteľnosť Po každom kroku je presne určené, aký bude krok nasledujúci. Rezultatívnosť zameranie na získanie hľadaných výsledkov Proces, ktorý vedie vždy k výsledkom. Konečnosť poskytnutie výsledkov za konečný počet krokov Konečnosť v čase rezultatívnosť, konečnosť v priestore reprezentovateĺnosť konečným počtom príkazov. Hromadnosť meniteľné vstupné údaje Štruktúry údajov a algoritmy 14

Vyjadrenie algoritmov Textový popis slovné vyjadrenie algoritmu zvyčajne je to pre nás jednoduché, ale dovoľuje nejednoznačnosť výkladu alebo je rozsiahly. Grafické vyjadrenie: Vývojové diagramy súbor štandardizovaných značiek, pomocou ktorých zobrazujeme postupnosť riešenia úlohy. Štruktúrogramy stromový diagram, ktorý popisuje štruktúru, tok riadenia, prípadne aj tok dát v programe alebo v module programu. Uzly diagramu tvoria bloky zodpovedajúce volaniu podprogramov alebo bloky preddefinovaných činností. Nassi-Schneidermanove diagramy (N-S diagramy) popisujú štruktúru a tok riadenia štruktúrovaným spôsobom. Na rozdiel od štruktúrogramov nie je použitý strom, ale bloky špeciálnych tvarov. Štruktúry údajov a algoritmy 15

Príklad štruktúrogramu Vstup hodnotenia skúšok Vstup záznamu Identifikácia študenta Hodnotenie * povinného predmetu Hodnotenie o voliteľného predmetu Osobné číslo Meno a priezvisko Názov predmetu Známka Názov predmetu Známka Radenie blokov zľava doprava sekvencia, príznak iterácie ( * ) cyklus, príznak voliteľnosti ( o ) - vetvenie Štruktúry údajov a algoritmy 16

Príklad NS-diagramu Čítaj a, b, c D = 2*b - 4*a*c nie Ak D < 0 áno reálne korene x1 = (-b + sqrt(d))/(2*a) x2 = (-b - sqrt(d))/(2*a) komplexné korene Rc = -b/(2*a) Ic = sqrt(-d)/(2*a) Radenie za sebou definuje sekvenciu, vetvenie je reprezentované trojuholníkovým blokom s definovaním podmienky a cyklus má špeciálny tvar Štruktúry údajov a algoritmy 17

Vývojové diagramy (1) Počiatočná a koncová značka START END V počiatočnej značke môže byť aj názov algoritmu alebo podprogramu. Koncových značiek môže byť viac Návestie 1 Touto značkou sa označuje prerušená spojnica v diagrame, napr.ak diagram má viac strán v dokumentácii Štruktúry údajov a algoritmy 18

Vývojové diagramy (2) Vstup/výstup dát týmto symbolom sa označujú všetky vstupy a výstupy periférnych zariadení citaj: X,Y tlac: X,Y Ručný vstup dát vstup údajov z klávesnice A,B,C Spracovanie výpočet, prenos hodnôt, rušenie záznamu,... D = A + B Štruktúry údajov a algoritmy 19

Vývojové diagramy (3) Vetvenie (selekcia) postup spracovania programu sa mení v dôsledku logickej podmienky 2-cestné vetvenie 3-cestné vetvenie viac-cestné vetvenie - prepínač áno A = B nie Samostatne definovaná činnosť (podprogram) samostatný úsek programu, ktorý možno vyvolať z ľubovoľného miesta programu. Jeho definícia je na inom mieste Meno podprogramu (zoznam parametrov) Popis parametrov Štruktúry údajov a algoritmy 20

Základné prvky algoritmov Údajové objekty: atribúty typ, hodnota, umiestnenie (adresa), klasifikácia jednoduché (skalárne, neštruktúrované) a zložené (štruktúrované napr. pole, záznam, množina, sekvenčný súbor), spôsoby reprezentácie v pamäti výskyt objektu v programe ako konštanta alebo premenná, spôsoby odvolávania sa na objekty konštanty označujeme ich hodnotou a na označenie premenných sa používajú identifikátory, spôsoby ukladania štruktúrovaných objektov v pamäti a triedy pamäte pre údajové objekty sa vyhradzuje súvislá oblasť pamäte (možná požiadavka zarovnať objekt na určitú hranicu); statické (existujú počas celého behu programu) a dynamické/automatické údajové objekty (existujú len počas behu určitej časti programu) Štruktúry údajov a algoritmy 21

Základné prvky algoritmov (2) viditeľnosť objektov: lokálne - viditeľné len v rámci určitých častí programu (zvyčajne podprogramov), globálne viditeľné v rámci celého programu. Definícia údajového objektu špecifikácia konkrétneho objektu daného typu. Priamo súvisí s procesom pridelenia pamäťového miesta. Deklarácia údajového objektu popis typu tohto objektu. Deklaráciou určujeme, ako sa má s údajovým objektom v programe zaobchádzať. Spravidla sa používa v podprogramoch, do ktorých sa odovzdávajú údajové objekty. Poznámka: Definíciu objektu môžeme v programe vykonať iba raz, kým deklarácií objektu sa v rámci zdrojového textu môže vyskytnúť ľubovoľný počet. Štruktúry údajov a algoritmy 22

Základné riadiace štruktúry Sekvencia: príkazy sa vykonajú v takom poradí, ako sú uvedené (default tok zhora-nadol) Vetvenie: výber z viacerých (aspoň dvoch) možností Preskok Dvojcestné nie Podmienka áno Činnosť áno nie Podm. Činnosť 1 Činnosť 2 Viaccestné každá vetva je určená pre množinu hodnôt Prepínač každá vetva je určená pre konkrétnu hodnotu výrazu uvedeného v podmienke Štruktúry údajov a algoritmy 23

Základné riadiace štruktúry (2) Cyklus: špecifikovanie opakujúcich sa činností; pozostáva z: 1. Inicializácie 2. Vykonania tela cyklu 3. Testu podmienky ukončenia cyklu 4. Prípravy ďalšieho kroku cyklu aktualizácie. Delíme ich na: Aritmetické (vo fáze inicializácie poznáme presný počet opakovaní cyklu) Logické prefixné test podmienky je pred telom cyklu postfixné test podmienky za telom cyklu Štruktúry údajov a algoritmy 24

Základné riadiace štruktúry (3) prefixný postfixný aritmetický Inicializácia Inicializácia i=ph,kh,krok Podmienka Telo Telo Telo Podmienka Aktualizácia Aktualizácia ph počiatočná hodnota kh konečná hodnota Štruktúry údajov a algoritmy 25

Príklad: Najväčší spol. deliteľ Formulácia úlohy: Pre dve načítané celé čísla z klávesnice zistite a na štandardný výstup vypíšte najväčší spoločný deliteľ. Analýza úlohy: Pre výpočet najväčšieho spoločného deliteľa (NSD) použijeme euklidovský algoritmus pre výpočet NSD dvoch kladných celých čísel. Vychádza z faktu, že NSD dvoch kladných celých čísel x a y je zároveň aj NSD čísel y a zvyšku po delení x/y. Navrh údajových štruktúr: V programe budeme potrebovať tri celočíselné premenné pre uloženie dvoch vstupných čísel (x, y) a pomocnú premennú uchovávajúcu zvyšok po celočíselnom delení (z). Štruktúry údajov a algoritmy 26

Príklad: NSD NSD x, y z=x mod y z 0 nie x = y y = z áno z=x mod y tlac: y Koniec Štruktúry údajov a algoritmy 27

Príklad: NSD #include <stdio.h> NSD main() x, y { int x, y, zvysok; z=x mod y printf( zadaj x: ); scanf( %d, &x); printf( zadaj y: ); z 0 scanf( %d, &y); áno zvysok = x%y; x = y while(zvysok!= 0) { y = z x = y; y = zvysok; zvysok = x%y; z=x mod y } printf( Najvacsi spolocny delitel je: %d\n, y); } tlac: y nie Koniec Štruktúry údajov a algoritmy 28

otázky? Štruktúry údajov a algoritmy 29