Elementární datové typy

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

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Ing. Igor Kopetschke TUL, NTI

Sada 1 - Základy programování

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

ADT/ADS = abstraktní datové typy / struktury

2 Strukturované datové typy Pole Záznam Množina... 4

Sada 1 - Základy programování

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

Datové typy a struktury

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

Algoritmizace a programování

Číselné soustavy. Binární číselná soustava

Programovací jazyk Pascal

Algoritmy a datové struktury

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

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

Základní principy zobrazení čísla Celá čísla s pevnou řádovou čárkou Zobrazení reálných čísel Aritmetika s binárními čísly

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

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

Algoritmizace a programování

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

5 Přehled operátorů, příkazy, přetypování

Algoritmizace prostorových úloh

Architektury počítačů

LEKCE 6. Operátory. V této lekci najdete:

Čísla v plovoucířádovéčárce. INP 2008 FIT VUT v Brně

Algoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Odvozené a strukturované typy dat

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

NPRG030 Programování I, 2017/18 1 / :22:16

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

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

Algoritmizace prostorových úloh

C2115 Praktický úvod do superpočítání

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

3 Jednoduché datové typy Interpretace čísel v paměti počítače Problémy s matematickými operacemi 5

PA152. Implementace databázových systémů

Třídy a struktury v C++

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Úloha 1 Spojte binární obrazy na obrázku s hodnotami, které reprezentují.

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů

ALGORITMIZACE A PROGRAMOVÁNÍ

Mikroprocesorová technika (BMPT)

Zápis programu v jazyce C#

PJC Cvičení #2. Číselné soustavy a binární reprezentace proměnných

NPRG030 Programování I, 2010/11

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

Sdílení dat mezi podprogramy

Úvod do programovacích jazyků (Java)

NPRG030 Programování I, 2016/17 1 / :58:13

Architektury počítačů a procesorů

KTE / PPEL Počítačová podpora v elektrotechnice

Racionální čísla, operátory, výrazy, knihovní funkce

Souhrn Apendixu A doporučení VHDL

Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

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

4 Datové struktury. Datové struktury. Zobrazení dat v počítači

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

MQL4 COURSE. By Coders guru -4 Operace & Výrazy

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

Úvod do programování. Lekce 1

NPRG030 Programování I, 2018/19 1 / :25:37

Aritmetické operace a obvody pro jejich realizaci

Exponent. Integer 4 bajty až Double Integer 8 bajtů až

Informatika Datové formáty

Principy počítačů I Reprezentace dat

Doňar B., Zaplatílek K.: MATLAB - tvorba uživatelských aplikací, BEN - technická literatura, Praha, (ISBN:

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

7. Datové typy v Javě

Teoretické minimum z PJV

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury Příklad PROG_

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

POČÍTAČE A PROGRAMOVÁNÍ

Úvod do programování 7. hodina

Struktura a architektura počítačů (BI-SAP) 6

v aritmetické jednotce počíta

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Datové typy a jejich reprezentace v počítači.

O datových typech a jejich kontrole

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

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Algoritmizace a programování

CZ.1.07/1.5.00/

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Programování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Fz =a z + a z +...+a z +a z =

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Programování v C++, 2. cvičení

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Racionální čísla, operátory, výrazy, knihovní funkce

LabView jako programovací jazyk II

Jazyk C# a platforma.net

Datové typy strana 29

Základy programování (IZP)

Transkript:

Elementární datové typy Celočíselné typy (integers) Mohou nabývat množiny hodnot, která je podmnožinou celých čísel (někdy existuje implementační konstanta maxint). Operace: aritmetické, relační, bitové, přiřazení. Pamět ová reprezentace je dána HW, základní operace jsou HW implementované. Nejčastěji se používá dvojkový doplňkový kód; znaménková a neznamenková čísla se pak sčítají skoro stejně. Při použití dynamické typové kontroly je někdy třeba navíc přidat deskriptor (bitový řetěz s doplňujícími informacemi). Vpřípadě celočíselných typůsečasto objevuje odvozený typ podinterval; umožňuje snížit pamět ové nároky (někdy vazba na HW) a lepší typovou kontrolu. Reálná čísla s plovoucí řádovou čárkou (Floating-Point Reals) Mohou nabývat hodnot z podmnožiny reálných (přesněji racionálních) čísel. Distribuce mezi max. a min. hodnotu není rovnoměrná. Operace: aritmetické, matematické, relační, přiřazení. Opět silná vazba na HW, základní operace jsou HW implementované (matematický koprocesor). 18

Pamět ová reprezentace obvykle dělí lokaci na mantisu a exponent. Příklad: IEEE Floating Point Format (32 bitů): S E 8bitů M 23 bitů S Znaménko (1 bit). 0 značí kladné číslo. E Exponent. 0 255, značí hodnoty v intervalu,127 až 128 M Mantisa. Jelikož normalizovaná mantisa vždy začíná jedničkou, vynechává se. Dosáhne se tím přesnosti 24 bitů. Reálná čísla s pevnou řádovou čárkou (Fixed-Point Reals) Mohou nabývat hodnotčíselných hodnot, které mají daný (pevně zvolený) počet číslic před a za řádovou čárkou. Operace jsou podobné jako u reálnýchčísel s plovoucí řádovou čárkou. Může existovat i HW podpora, častěji jde však o softwarovou realizaci (volnost při výběru charakteristických atributů). Např. v PL/1 lze psát: DECLARE X FIXED DECIMAL (10,3), Y FIXED DECIMAL (10,2), Z FIXED DECIMAL (10,2); Proměnná X má pak 10 platných míst, z toho 3 za desetinnou tečkou. Číslo s pevnou řádovou čárkou je reprezentováno jako celočíselná hodnota (např. 154:12 è 15412), poloha řádové čárky (tj. počet míst za desetinnou tečkou tzv. měřítko) je dána deklarací. Přiřadíme-li tedy proměnné X hodnotu 13:2, bude uložena jako 13200. 19

Je možné provádět aritmetickéoperace a přiřazení isčísly, která mají různá měřítka např. Z = X + Y.Sceločíselnými hodnotami, které reprezentují X,Y a Z, se pak ve skutečnosti provede operace Z = (X + 10*Y)/10. Komplexní a racionální čísla Komlexní čísla jsou obvykle implementována jako dvojice reálných čísel s plovoucí aritmetikou Racionální čísla jsou dvojice neohraničených celočíselných hodnot (dynamické seznamy). Výčtový typ Výčet je setříděný seznam rozdílných prvků, které představují možné hodnoty výčtového typu. V jazyce C: enum Barva {bila, zluta, modra, cerna} Výčtovému typu se často přiděluje identifikátor. Pascal: type Barva = (bila, zluta, modra, cerna) Operace: relační, následník, předchůdce (ale ne sčítání, odečítání) Pomocí celočíselnýchhodnot menší nárokyna pamět, pro implementaci relačních operátorů mohou být použity HW instrukce To, jaké číslo bude reprezentovat danou hodnotu, je na v uli kompilátoru (C umožňuje vynutit reprezentaci danýmčíslem) 20

Pravdivostní (booleovský) typ Pravdivostní hodnoty jsou dvě true, false. Vněkterých jazycích (Pascal, ADA) jde v podstatě jen o zabudovaný výčtový typ type Boolean = (true,false); Operace: logické (not, and, or), relační. Znaky Stačí jediný bit; nejmenší adresovatelná jednotka paměti je však obvykle větší v jejím rámci se pak používají dva způsoby reprezentace: æ Specifický bit je nastaven na 0 nebo 1, zbytek se ignoruje. æ Nulová hodnota jednotky znamená false, nenulová true (zdroj problémů záměna & a && vc). Jdeovýčtový typ, zabudovaný do jazyka. Operace: relační, znakové. Obvykle HW podpora. Problémy mohou nastat, pokud HW pracuje s jinou množinou znaků, než definuje daný jazyk, případně pokud HW implementace (kódování) neumožňuje přímočarou implementaci relačních operátorů (obvykle je např. A < B pokud ale interní kód toto pořadí nerespektuje, je implementace operace < netriviální. æ Internacionalizace 21

Tento proces výrazně komplikujeimplementaciznaků (a zejména operací nad znaky). Je třeba zohlednit (mimo jiné) následující vlastnosti národních znakových sad: æ Pořadí znaků. Některé znaky (Ø, øa) mají různou interpretacivrůzných jazycích a jejich pozice ve znakové sadě jepak také různá. Některé jazyky nerozlišují mezi malými a velkými písmeny. æ Datum. 26.11. 1995 se v USA zapíše 11/26/95, v Británii 26/11/95, v Itálii 26-XI-95 atd. æ Čas. 17 45 je 5.45 p.m. v USA, 17:45 v Japonsku, 17.40 v Německu, 17h45 ve Francii atd. æ Časová zóna. Netriviální, různá pravidla pro zimní a letní čas. æ Znaková písma. Vynucují velké znakové sady, reprezentované pomocí 16. bitů. æ Měna. 22

Strukturované datové typy Datová struktura je datový objekt obsahující jiné datové objekty. Charakteristické atributy: æ Počet komponent. Může být pevný (záznam, pole) i proměnný (zásobník, fronta). æ Typ každé komponenty. Datová struktura může být homogenní i heterogenní. æ Jména komponent. Nutná pro výběr komponenty. Může jít o speciální identifikátor (záznam), nebo ťreba o index (pole). æ Maximální počet komponent. U datových struktur s proměnným počtem komponent. Operace na datových strukturách: æ Výběr komponenty. Datová struktura může mít definován sekvenční, příp. přímý přístup ke komponentám. æ Operace s celou strukturou. Takových operací bývá v jazyce definováno poměrně málo (součet polí, spojení řetězců, přiřazení struktur). æ Přidání/Odebrání komponenty. Reprezentace v paměti. Sekvenčně nebo pomocí odkazů. Ovlivňuje implementaci operace výběru komponenty. Správa paměti. Datové struktury mohou dynamicky měnit svou velikost, případně dynamicky vznikat a zanikat. Objevují se dva zdroje problémů: æ Nedostupné datové objekty (garbage). æ Neplatné reference (dangling references). 23

Vektory (jednorozměrná pole). Charakteristické atributy æ Počet komponent. æ Datový typ komponenty. æ Rozsah indexů. Operace æ Výběr komponenty. æ Přiřazení vektorů, přiřazení komponentěvektoru,sečtení vektorů stejné délky; přidání/odebrání komponenty povoleno není.. Typickájesekvenční pamět ová reprezentace, někdy může být přítomen deskriptor (pro účely dynamické typové kontroly rozsah indexů apod.) Operace výběru komponenty je obvykle implementována velmi efektivně. Je třeba znát počáteční adresu 1. elementu, dolní rozsah indexu a index samotný jsou-li všechny ťri uvedené hodnoty konstantami, je adresa komponenty konstantou známou při kompilaci. packed vs. unpacked reprezentace. Při implementaci operací které pracují s celými řetězci je někdy nutné vytvářet pomocné datové struktury pro uložení mezivýsledku. (A := (X+Y)[i]). Vícerozměrná pole je v podstatě stejná jako u vektorů, mezi charakteristické atributy přibude rozměr a rozsah indexů pro každou dimenzi. æ Z hlediska pamět ové reprezentace lze vícedimenzionální pole ukládat po řádcích nebo po sloupcích (důležité při kombinování kódu z různých jazyků). 24

æ Někdy bývá implementována operace řez. Vrací pole o jedničku menší dimenze, které vznikne pevnou volbou některého indexu. Při implementaci se často používají deskriptory (má-li řez sdílet data s původním polem). Záznamy Hodnotami jsou n-tice datových objektů stanovených typů charakteristickými atributy tedy jsou: æ Počet komponent æ Datový typ a identifikátor každé komponenty Základní operace je výběr komponenty; narozdíl od pole je vždy určena identifikátorem, nikdy výrazem. Dále bývá k dispozici přiřazení záznamů. Pamět ová reprezentace sestává z jediného bloku paměti; každá komponenta musí být přímo adresovatelná struct zamestnanec { char oddeleni; int ID; } Jelikož adresa datového objektu typu int se zarovnává na hranici slova, dochází k vyplýtvání tří bytů. 25

æ Variabilní záznamy Variabilní záznam může obsahovat krom pevných také variabilní komponenty: type Vyplata = (mesicne, hodinove); var Zamestnanec: record ID: integer; Vek: integer; case Plat: Vyplata of mesicne: (kolik: Real); hodinove: (sazba: Real; prescas: Real); end Pamět ová náročnost záznamu je určena nejnáročnější variantou. Kontrola, zda se nepřistupuje k variabilním komponentám, které nejsou pro danou hodnotu tagu přípustné, se řeší dynamickou typovou kontrolou (pak musí tag existovat), nebo se vůbec neprovádí (unie v C). 26