ALGORITMY A DATOVÉ STRUKTURY 1. Organizace dat v paměti, datové typy Ing. Igor Kopetschke TUL, NTI http://www.nti.tul.cz
Jednotlivé body Ukládání a a organizace dat Vnitřní paměť Vnější paměť Přístup k datům Konstanty Proměnné Jednoduché datové typy Strukturované datové typy
Data ve vnitřní paměti - popis Paměť, ke které má procesor přímý přístup Názorně von Neumann Rychlá, libovolný přístup Je nestálá (volatilní) při vypnutí PC se obsah ztratí Její správu a alokaci obstarává zpravidla OS Lze ji dále dělit na: Operační paměť zpravidla typu RAM Cache procesoru Registry procesoru a chipsetu Nás bude zajímat operační paměť
Data ve vnitřní paměti přístup k datům Každé paměťové místo v RAM má svou unikátní adresu Adresace pamětí viz. předmět Operační systémy Data lze ukládat a následně k nim přistupovat pomocí výše zmíněných adres Adresy jsou většinou vyjadřovány pomocí hexadecimálních čísel Různé datové typy mohou alokovat různě veliký paměťový prostor Programátor zřídka pracuje přímo s adresami viz dále Konstanty a Proměnné
Jednotlivé body Ukládání a a organizace dat Vnitřní paměť Vnější paměť Přístup k datům Konstanty Proměnné Jednoduché datové typy Strukturované datové typy
Data ve vnější paměti - popis Paměť určená k trvalému ukládání dat Procesor k ní nemá zpravidla přímý přístup Pomalejší než vnitřní paměť, sekvenční nebo libovolný přístup Je stálá při vypnutí PC se obsah neztratí OS k přístupu používá ovladače zařízení, příp. souborový systém aj. Data jsou zpravidla organizovány v souborech
Data ve vnější paměti - popis Příklad vnějších pamětí: Pevný disk (HDD, SSD) Optické disky (CD, DVD, Blu-ray) USB flash paměti Floppy disky (kdo je viděl naposledy? ) Magnetické pásky ještě se používají!!! ZIP mechaniky (dtto floppy) Organizace fyzického uložení dat dle typu paměti HDD magnetický zápis, cylindr-hlava-sektor Optika jedna stopa ve spirále Atd..
Data ve vnější paměti přístup k datům Sekvenční přístup Používají jej magnetické pásky Primárně určeno pro zálohování Nelze okamžitě přejít na konkrétní data, je nutno číst celou sekvenci od počátku vysoká latence (zpoždění) Neexistují adresáře, soubory, žádná organizace
Data ve vnější paměti přístup k datům Přímý přístup Lze okamžitě přejít na konkrétní data - adresace HDD, SSD, optické disky, flash, floppy, ZIP Data uložená v souborech, hierarchie pomocí adresářů Přístup k souborům pomocí souborového systému Data uložena jako textová či binární Rychlost závisí na optimálním uložení dat a technických parametrech Definice souboru a jednotlivých typů, záznamů a klíčů viz přednášky č. 10-12
Jednotlivé body Ukládání a a organizace dat Vnitřní paměť Vnější paměť Přístup k datům Konstanty Proměnné Jednoduché datové typy Strukturované datové typy
Konstanty a proměnné Programátor nepřistupuje většinou k datům v paměti přímo pomocí adresy 0x42f7a8 0x42f7aa 0x42f7ac 45 'a' 23 't' 01101 'x' Místa v paměti lze tzv. "pojmenovat" pomocí identifikátoru vyska pozdrav vyplata 45 'a' 'h' 'o' 'j' 01001
Konstanty a proměnné Společné rysy konstant a proměnných Pojmenované místo v paměti Přístup pomocí jejich identifikátoru, nikoli pomocí adresy Obsazení paměťového prostoru podle datového typu Konstanta jakmile je přiřazena hodnota, nelze ji již programově změnit Proměnná lze ji číst i modifikovat "za běhu"
Jednotlivé body Ukládání a a organizace dat Vnitřní paměť Vnější paměť Přístup k datům Konstanty Proměnné Jednoduché datové typy Strukturované datové typy
Jednoduché datové typy Jsou definovány identifikátorem a datovým typem v deklarační oblasti int vek; boolean pravda; char pismeno = 'a'; Definovány relace Rovnost, nerovnost ( ==,!= ) Větší, menší apod. ( <, <=, >, >= ) V paměťovém prostoru uložena přímo hodnota této proměnné/konstanty Dělí se na ordinální a neordinální
Jednoduché datové typy Ordinální datové typy - vlastnosti Hodnota má svého předchůdce pred(x) následovníka succ(x) Její pozici lze číselně ohodnotit ordinální číslo ord(x) Příkladem je třeba ASCII tabulka Základní ordinální typy integer celé číslo (1, 45, 9, -7.) boolean logická hodnota true/false char znak ('w', 't', '8' ) interval viz dále enum výčtový typ, viz dále
Jednoduché datové typy Ordinální datový typ interval Souvislá neprázdná podmnožina hodnot ordinálního typu Horní a dolní mez dána konstantou daného ordinálního typu Např. 1.. 52 definuje interval hodnot typu integer 'c'.. 't' definuje interval hodnot typu char Příkladem je třeba ASCII tabulka Ordinální datový typ enum Datový typ definovaný uživatelem Jednotlivé hodnoty mají přiřazeny svá ordinální čísla, počínaje 0 Např. enum {pondeli, utery, streda, ctvrtek} dny; ord(pondeli)=0, ord(utery)=1 atd
Jednoduché datové typy Neordinální datový typ real Konečná podmnožina hodnot reálného typu Reálný typ hodnoty a pohyblivou desetinnou čárkou V paměti uložen jako dvojice hodnot (M,N), kde M mantisa N - exponent Má omezení existuje pouze tzv. strojová nula Určena intervalem (0,minreal) minreal - absolutní hodnota minimálně zobrazitelné hodnoty na daném HW S touto konečnou přesností se vykonávají i všechny operace s reálnými čísly Možno provádět konverze integer <==> real ztráta přesnosti
Jednotlivé body Ukládání a a organizace dat Vnitřní paměť Vnější paměť Přístup k datům Konstanty Proměnné Jednoduché datové typy Strukturované datové typy
Strukturované datové typy Skupina proměnných jednoduššího typu Skupina jednoduchých typů Skupina "nižších" strukturovaných typů Jejich kombinace Poskytuje prostředky pro práci s jednotlivými prvky Základní strukturované typy Pole kolekce prvků stejného typu String řetězec, pole znaků Záznam Množina Soubor Dynamické datové struktury
.. A to je pro dnešek vše DĚKUJI ZA POZORNOST