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.

Slides:



Advertisements
Podobné prezentace
Statistika.
Advertisements

ŘÍDÍCÍ STRUKTURY - PODMÍNKY
Počítače a programování 1 Přednáška 13 Jiří Šebesta.
Seznamy Seznam = očíslovaná posloupnost skalárů Zápis seznamu do kulatých závorek: ("máslo")# jednočlenný seznam (1,2,3)# seznam se 3 členy ("jedna",2,3,"osm",100,$pozdrav)
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 –
10. Dynamické datové struktury
ALGO – Algoritmizace 1. cvičení
Algoritmy I Cvičení č. 5.
Algoritmy I. Cvičení č. 10.
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Principy překladačů Mezikód Jakub Yaghob.
Charakteristiky polohy hodnoty znaku - čísla popisující polohu znaku na číselné ose -můžeme zvolit: -Aritmetický průměr -Modus, medián -Harmonický průměr.
Řadicí algoritmy autor: Tadeáš Berkman.
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Tabulkový procesor.
DalšíPředchozíTÉMA: M. K a d l e c o v á M. K a d l e c o v á.
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
Číslo projektuCZ.1.07/1.5.00/ Číslo materiáluVY_32_INOVACE_258 Název školyGymnázium, Tachov, Pionýrská 1370 Autor Ing. Roman Bartoš Předmět Informatika.
Jemný úvod do MATLABu © Leonard Walletzký, ESF MU, 2000.
Relační databáze.
Algoritmizace a programování Třídící algoritmy - 12
Další abstraktní datové typy
Tabulkové procesory Pelikánová Lucie 2002.
JavaScript Podmínky, cykly a pole.
Abstraktní datové typy doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
Proměnná typu "pole" Mezi proměnné typu "pole" patří všechny superglobální proměnné. Mezi proměnné typu "pole" patří všechny superglobální proměnné. To.
Datové typy a struktury
STROMY Datová struktura sestávající z uzlů
Úpravy v tabulce 4 Je velice užitečné a rozumné předem detailně rozmyslet a navrhnout strukturu tabulek.
Statistika 2 Aritmetický průměr, Modus, Medián
Databázové modelování
Algoritmizace a programování Textové soubory - 13 Mgr. Josef Nožička IKT Algoritmizace a programování
Pole Arrays.
Základy ALgoritmizace 6. cvičení. Program cvičení Kontrolní bod 1 zakončení grafického zápisu algoritmů - vývojových diagramů –identifikátory a proměnné.
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Vazby dynamických proměnných,databázové systémy Přednáška č. 10.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Vícerozměrné statistické metody Vícerozměrné statistické rozdělení a testy, operace s vektory a maticemi Jiří Jarkovský, Simona Littnerová.
Perzistence XML dat Kamil Toman
Algoritmizace a programování Aritmetické, Relační a Logické operátory, Knihovny.
PHP – CYKLY, POLE. CYKLY V PHP Cykly se používají, chceme-li opakovat určitou činnost, několikráte za sebou, opakovaně provádět stejnou proceduru. Postupně.
PROGRAMOVÁNÍ 3ITA,3ITB Jaroslav Burdys Hlavní zdroj:
Překladače 6. Sémantická analýza
MNOŽINY RNDr. Jiří Kocourek. Množina: skupina (souhrn, soubor) nějakých objektů.
Ukládání dat biodiverzity a jejich vizualizace
Programovací jazyk C# 4. část - cykly.
Úvod do programování 11. hodina
Programování ENUM, SWITCH,pole jednorozměrná a vícerozměrná, deklarace, inicializace, kopírování, porovnání Erik Král.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
C# konzole – Podíl dvou čísel, podmínka IF
KIV/ZD cvičení 5 Tomáš Potužák.
Výukový materiál zpracován v rámci projektu
Překladače Syntaktická analýza
Název projektu: Moderní výuka s využitím ICT
Abstraktní datové typy
Vzorové řešení zápočtového testu
Algoritmizace a programování
Programování 2. hodina RNDr. Jan Lánský, Ph.D.
Kurz algoritmizace a programování v jazyce C
ADT zásobník - příklad Prakticky aplikovatelný příklad využití ADT zásobník je vyhodnocování aritmetických výrazů v Postfixové notaci: Pro zápis aritmetických.
Úvod do programování 11. hodina
Abstraktní datové typy
Dynamické proměnné (1) Proměnné, jejichž počet a (nebo) velikost pa-měti využívané těmito proměnnými se v prů-běhu programu mění Dynamické proměnné lze.
Metodologie pro ISK 2 Kontrola dat Popis kategorizovaných dat
MNOŽINY RNDr. Jiří Kocourek.
Algoritmizace a datové struktury (14ASD)
ZAL – 7. cvičení 2016.
Autor: Honnerová Helena
Algoritmizace a datové struktury (14ASD)
Vyhodnocování aritmetického výrazu (1)
Transkript prezentace:

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é

Datový typ –rozsah hodnot, které může proměnná daného typu přijmout –a množina operací, které jsou pro tento datový typ dovoleny/definovány.

Abstraktní datový typ (ADT) specifikuje strukturu a operace nad ní na základě dokumentované funkcionality (případně i složitost) nezávisí na konkrétní implementaci Důležité principy: –Abstrakce –Oddělení specifikace –Implementace

Základní ADT Mezi základní ADT patří: –(lineární) seznam –zásobník –fronta –množina –slovník - asociativní pole –zobrazení –textový řetězec

(Zřetězený) seznam Obsahuje posloupnost prvků Operace: –Přidání prvku Na začátek Na konec Na určité místo (např. za/před určitý prvek) –Odebrání prvku Ze začátku Od konce Konkrétní prvek (daný pozicí, hodnotou apod.) –Test prázdnosti seznamu

Jednosměrně zřetězený seznam Obousměrně zřetězený seznam Typy (zřetězených) seznamů datanext datanextdatanext dataprevnextdataprevnextdataprevnext

Kruhový seznam –Jednosměrný nebo obousměrný Typy (zřetězených) seznamů datanext datanextdatanext

Seznamy v Pythonu (opak.) Seznam prvků oddělený čárkami a uzavřený do hranatých závorek K prvkům můžeme přistupovat např. přes indexy Seznamy lze modifikovat

Seznamy v Pythonu (opak.) Na rozdíl od řetězců lze seznamy modifikovat Počet prvků – funkce len()

Seznamy: Užitečné funkce list.append(x)Přidá prvek x na konec seznamu list.extend(L)Přidá všechny prvky L na konec seznamu list.insert(i, x)Přidá prvek x před prvek na pozici i list.remove(x)Odstraní první prvek s hodnotou x list.pop(i)Odstraní prvek na pozici i list.pop()Odstraní poslední prvek list.index(x)Navrátí index prvního prvku s hodnotou x list.count(x)Navrátí počet výskytů hodnoty x v seznamu list.sort()Setřídí prvky seznamu list.reverse()Přehodí pořadí prvků (od posledního k prvnímu) x in listTest zda seznam obsahuje x

Seznamy: příklady

Seznamy: příkaz del Příkaz del smaže prvek nebo jinou část seznamu Lze smazat i celou proměnnou

Vnořené seznamy Lze použít pro vícerozměrná data

Vnořené seznamy - matice Vnořené seznamy –Vícerozměrná pole –Vhodné pro například pro matice Příklad: vytvoření nulové matice zadaných rozměrů

Příklad: Matice Násobení matic

Příklad: (aritmetický) průměr Statistická veličina –Snaha zjistit „typickou hodnotu“ –Nevýhoda: extrémní hodnoty ovlivňují průměr Výpočet: –součet všech hodnot dělený počtem prvků

Příklad: medián Medián je číslo, které rozdělí řadu podle velikosti seřazených čísel na dvě stejně početné poloviny. Nalezení mediánu: 1.Seřadím čísla podle velikosti 2.Vezmu číslo, která se nalézá uprostřed seznamu. –Pokud není nějaké číslo přesně uprostřed, tj. počet prvků je sudý, pak se obvykle za medián považuje aritmetický průměr hodnot na dvou místech u středu.

Příklad: medián

Zásobník (stack) Operace: –push (vložení) –pop (odstranění) –top (horní prvek) –empty (test prázdnosti) LIFO = Last In First Out Intuitivní příklad: sloupec knih Běžné použití: –procházení grafů –vyhodnocování výrazů –rekurze

Python: zásobník pomocí seznamu

Příklad: postfixová notace Zápis matematických výrazů –Infixová notace Zápis operátorů mezi operandy Např –Prefixová notace Zápis operátorů před operandy Např –Postfixová notace (reverzní polská notace) Operátor následuje operandy Není třeba používat závorky Např

Příklad: postfixová notace

Fronta (queue) operace: –push (vložení) –pop (odstranění) –top (první prvek) –empty (test prázdnosti) FIFO = First In First Out příklad: –zpracování příchozích požadavků serverem

Python a fronta lze pomocí seznamu, ale pomalé –Protože přidávání a odebírání ze začátku seznamu vyžaduje posun všech prvků… použití knihovny collections:

Seznam x zásobník x fronta Zásobník a fronta jsou podobné seznamu –Ale poskytují méně možných operací Např. přidání jen na začátek/konec Proč používáme struktury, které nám nabízejí méně funkcí? Pokud se omezíme na více specifický datový typ mohou být: –operace rychlejší a/nebo –paměťové nároky menší Při návrhu nám pomáhá uvědomit si, že potřebujeme např. zásobník a ne obecně seznam…

Množina (set) operace: –insert (vložení) –find (test na přítomnost) –delete (odstranění) příklady: –evidování navštívených vrcholů při prohledávání –počítání „průniku“ informací ze dvou souborů

Množiny v Pythonu Množina –Neuspořádaná kolekce dat bez duplicitních prvků len(s)počet prvků množiny x in sTest zda prvek x se nachází v množině s s1 <= s2Test zda s1 je podmnožinou s2 union nebo operátor |Sjednocení množin intersection nebo operátor &Průnik množin difference nebo operátor -Rozdíl množin symmetric_difference nebo operátor ^Položky z jedné z množin nenacházející se v množině druhé

Množiny v Pythonu: příklad

N-tice (tuples) v Pythonu N-tice podobné seznamům Nejsou měnitelné (stejně jako řetězce)

Slovník (dictionary, map) Slovník, dictionary, map, asociativní pole –zobecnění množiny, pole dvojice klíč, hodnota –klíče jsou unikátní –neuspořádané příklady: –počet výskytů jednotlivých slov v textu –„kešování“ výsledků časově náročných výpočtů

Slovník v Pythonu {} Klíč a hodnotu oddělujeme dvojtečkou –U jednoduchých klíčů lze použít i = Slovník lze vyrobit i n-tic (tuples) Slovník je modifikovatelný

Slovník v Pythonu: příklad

Výpis slovníku Jednotlivé položky slovníku můžeme iterovat pomocí „.iteritems()“

Příklad: frekvence slov Analyzujeme předložený text Pro každé slovo vypíšeme kolikrát se v textu vyskytuje Výsledek lze využít jako metriku podobnosti dokumentů apod.

Příklad: frekvence slov - výpočet

Příklad: frekvence slov - výpis

Příklad: morseovka

Příklad: převodník