Microsoft PowerPoint - Prog_p08.ppt

Podobné dokumenty
Tue Oct 3 22:05:51 CEST Začiatky s jazykom C 2.1 Štruktúra programu Štruktúra programu by sa dala jednoducho popísať nasledovnými časťami, kto

Úroveň strojového kódu procesor Intel Pentium Pamäťový operand Adresovanie pamäte Priama nepriama a indexovaná adresa Práca s jednorozmerným poľom Pra

Zobrazenie čísiel v počítači Celé nezáporné čísla - čísla bez znamienka dvojková sústava iné používané sústavy - šestnástková a osmičková BCD kódovani

2.5. Dotyčnica krivky, dotykový kužeľ. Nech f je krivka a nech P V (f) (t.j. m P (f) 1). Ak m P (f) = r a l je taká priamka, že I P (f, l) > r, potom

Microsoft Word - Algoritmy a informatika-priesvitky02.doc

NÁVRH UČEBNÝCH OSNOV PRE 1

enum

Algoritmizácia a programovanie - Príkazy

Vnútorná reprezentácia údajových typov

Katalóg cieľových požiadaviek k maturitnej skúške

Paralelné algoritmy, cast c. 2

Informačné technológie

Operačná analýza 2

Súkromné gymnázium, Česká 10, Bratislava INFORMATIKA

Úroveň strojového kódu procesor Intel Pentium Úvod Štruktúra procesorov Intel Pentium Základné inštrukcie Vetvenia a cykly Praktické programovanie jed

Teória pravdepodobnosti Zákony velkých císel

Metódy dokazovanie v matematike 1 Základné pojmy Matematika exaktná veda vybudovaná DEDUKTÍVNE ZÁKLADNÉ POJMY základy každej matematickej teórie sú in

Axióma výberu

Matematický model činnosti sekvenčného obvodu 7 MATEMATICKÝ MODEL ČINNOSTI SEKVENČNÉHO OBVODU Konečný automat predstavuje matematický model sekvenčnéh

9.1 MOMENTY ZOTRVACNOSTI \(KVADRATICKÉ MOMENTY\) A DEVIACNÝ MOMENT PRIEREZU

Microsoft PowerPoint - OOP_prednaska_10.pptx

gis5 prifuk

Programátorské etudy - Pascal

Úvod do lineárnej algebry Monika Molnárová Prednášky 2006

8 Cvičenie 1.1 Dokážte, že pre ľubovoľné body X, Y, Z platí X + Y Z = Z + Y X. 1.2 Dokážte, že pre ľubovoľné body A, B, D, E, F, G afinného priestoru

O možnosti riešenia deformácie zemského povrchu z pohladu metódy konecných prvkov konference pro studenty matematiky

Operačná analýza 2

III. Diferenciálny počet funkcie viac premenných (Prezentácia k prednáškam, čast B) Matematická analýza IV (ÚMV/MAN2d/10) RNDr. Lenka Halčinová, PhD.

Identity Lifecycle Management

1

Pokrocilé programovanie XI - Diagonalizácia matíc

Microsoft Word - Argumentation_presentation.doc

Snímka 1

Úrad pre dohľad nad zdravotnou starostlivosťou Žellova 2, Bratislava Dátové rozhranie pre spracovanie lekárskych poukazov - očná optika Strana

1. KOMPLEXNÉ ČÍSLA 1. Nájdite výsledok operácie v tvare x+yi, kde x, y R. a i (5 2i)(4 i) b. i(1 + i)(1 i)(1 + 2i)(1 2i) (1 7i) c. (2+3i) a+bi d

Microsoft Word - 6 Výrazy a vzorce.doc

ECDL Syllabus V50 SK-V01

4. Pravidlo ret azenia. Často sa stretávame so skupinami premenných, ktoré zložitým spôsobom závisia od iných skupín premenných. Pravidlo ret azenia p

Microsoft Word - Transparencies03.doc

Hardwarové prerušenie Nasledujúci kód ukazuje inštaláciu obsluhy časovača vrátane jeho inicializácie // inicializace časovače, přerušení každou milise

iot business hub whitepaper isdd_em_New.pdf

Informačná a modelová podpora pre kvantifikáciu prvkov daňovej sústavy SR

Elektronický ukazovateľ polohy s batériou Návod na použitie

Republika Srbsko MINISTERSTVO OSVETY, VEDY A TECHNOLOGICKÉHO ROZVOJA ÚSTAV PRE HODNOTENIE KVALITY VZDELÁVANIA A VÝCHOVY VOJVODINSKÝ PEDAGOGICKÝ ÚSTAV

1

Úvodná prednáška z RaL

MERANIE U a I.doc

Vzorové riešenia úlohy 4.1 Bodovanie Úvod do TI 2010 Dôvod prečo veľa z Vás malo málo bodov bolo to, že ste sa nepokúsili svoje tvrdenia dokázať, prič

Snímka 1

Externé mediálne karty Používateľská príručka

Microsoft Word - 06b976f06a0Matice - Uzivatelska Dokumentacia

MO_pred1

História

DediĊnosť

PowerPoint Presentation

Matej Kendera - PDF, word, lucene, java

Microsoft Word - skripta3b.doc

Prenosový kanál a jeho kapacita

trafo

Matematika 2 - cast: Funkcia viac premenných

Metódy násobenie v stredoveku

Navigácia po úvodnej stránke elektronickej schránky Dátum zverejnenia: Verzia: 10 Dátum aktualizácie: Navigácia po úvodnej st

fadsgasga

(ıkolské kolo-PYT)

Detail správy a súvisiace prvky Dátum zverejnenia: Verzia: 5 Dátum aktualizácie: Detail správy a súvisiace prvky UPOZORNENIE

ARMA modely čast 3: zmiešané modely (ARMA) Beáta Stehlíková Časové rady, FMFI UK ARMA modely časť 3: zmiešané modely(arma) p.1/30

8

Hellboy je 5-valcový, multi-líniový výherný video prístroj. Hrať možno, v závislosti od rozhodnutia hráča, na 1 až 20-tich herných líniách. V spodnej

Čísla Nájdite všetky dvojice prirodzených čísiel, ktoré vyhovujú rovnici: 2 ( a+ b) ( a b) + 2b ( a+ 2b) 2b = 49 RIEŠENIE ( ) ( ) ( ) 2 a+ b a

PowerPoint Presentation

MATEMATICKÁ OLYMPIÁDA NA STREDNÝCH ŠKOLÁCH 54. ročník, školský rok 2004/2005 Zadania úloh 3. kola kategórie P 1. súťažný deň Na riešenie úloh máte 4.5

Operačná analýza 2

Stravné - přecenění

Funkcie viac premenných

Ďalšie vlastnosti goniometrických funkcií

Microsoft Word - 16.kapitola.doc

03_ControlFlow.dvi

Dovoz jednotlivých vozidiel – Úvod do problematiky a základné predpisy

Poznámky k cvičeniu č. 2

PYROMETER AX-6520 Návod na obsluhu

PowerPoint Presentation

CVČ Považská Bystrica

Pokrocilé programovanie II - Nelineárne iteracné schémy, chaos, fraktály

Slide 1

SK MATEMATICKÁOLYMPIÁDA skmo.sk 2009/ ročník MO Riešenia úloh česko-poľsko-slovenského stretnutia 1. Určte všetky trojice (a, b, c) kladných r

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE Fakulta informatiky a informačných technológií STU Ústav počítačových systémov a sietí ZADANIE SEMESTRÁLNE

Smernica_VO_po_

Doplňujúce údaje k vyzvaniu č. OPII-2018/7/5-NP Zoznam iných údajov Zoznam iných údajov UPOZORNENIE: Iné údaje poskytuje prijímateľ výlučne počas impl

O babirusách

Obsah tejto príručky Microsoft Prechod na program Access 2010 z programu Access 2003 Vzhľad programu Microsoft Access 2010 sa výrazne odlišuje od prog

SAEAUT SNMP OPC Server

Criss Cross je 3-valcový výherný prístroj, ktorý sa hrá až na 27 výherných líniách na všetkých pozíciách valcov. Hra je prístupná aj prostredníctvom m

Súkromná stredná odborná škola technická, Dr. Janského 10, Žiar nad Hronom Odbory otvárané v školskom roku 2017/18 a kritériá prijímania do týc

Operačné systémy Prednáška č. 2 Windows 95 Windows 95 má povesť ľahko ovládateľného systému pre užívateľov a ťažkého systému pre programátorov. Začiat

Jadrova fyzika - Bc.

Priebeh funkcie

Pokročilé programovanie mikropočítačov v jazyku C. Diel č.2 Publikované: , Kategória: Mikroprocesory Skúmame ADCčko Ahoj

Gem o rama Je 5-valcový, multi-líniový výherný video prístroj s desiatimi fixnými hernými líniami. Hra je prístupná aj prostredníctvom mobilnej verzie

Postupy na uplatnenie práv dotknutých osôb

Hranoly (11 hodín) September - 17 hodín Opakovanie - 8. ročník (6 hodín) Mesiac Matematika 9. ročník 5 hodín/týždeň 165 hodín/rok Tematický celok Poče

Prepis:

Štruktúra záznam Operácie s bitovými údajmi 1. Štruktúra záznam zložený typ štruktúry záznam varianty štruktúr záznam reprezentácia štruktúry záznam použitie štruktúry záznam v jazyku C 2. Operácie s bitovými údajmi operácie s bitovými údajmi v jazyku C operátory a výrazy s bitovými údajmi bitové polia Programovanie - prednáška č. 8 1 Štruktúrované údajové objekty Najbežnejší spôsob vytvárania štruktúrovaných typov Spájanie ľubovoľných prvkov (zložiek) do zložených typov Príklady komplexné čísla zložené z dvoch reálnych čísel súradnice bodov zložené z dvoch alebo viacerých reálnych čísel opis osoby pomocou niekoľkých charakteristík (meno, dátum narodenia, pohlavie, atď.) Programovanie - prednáška č. 8 2

Zložený typ Zložený typ je kartziánsky súčin jeho zložkových typov Množina hodnôt zloženého typu je tvorená všetkými možnými kombináciami hodnôt jednotlivých typov zložiek Kardinalita zloženého typu je daná súčinom kardinalít typov zložiek Programovanie - prednáška č. 8 3 Štruktúra záznam V oblasti spracovania údajov sa zložené typy používajú na štruktúrovaný opis osôb alebo predmetov zaznamenávajú podstatné charakteristiky osôb alebo predmetov Najčastejšie sa tieto údaje vyskytujú ako záznamy v súboroch alebo databázach Pri opise zložitých štruktúr takejto povahy uprednostňujeme termín záznam pred pojmom karteziánsky súčin Programovanie - prednáška č. 8 4

Definícia štruktúry záznam Definícia štruktúry záznam (zjednodušene štruktúry) v jazyku C struct [názov] { typ 1 zložka 1 ; typ 2 zložka 2 ;... typ n zložka n ; } [zoznam_premenných]; Ak je definovaný názov štruktúry, môžeme ho použiť ako nový typ na definíciu ďalších premenných struct názov zoznam_premenných; Programovanie - prednáška č. 8 5 Príklady použitia Reprezentácia súradníc bodu štruktúrou struct bod { double x; double y; }; Definícia konkrétnych bodov pomocou štruktúry struct bod a; struct bod b = {10, 20}; Reprezentácia osoby štruktúrami struct datum { int den, mesiac, rok }; struct osoba { char meno[30]; struct datum datum_narodenia; unsigned long evidencne_cislo; }; Definícia konkrétnych osôb a dátumov pomocou štruktúr struct osoba zamestnavatel, zamestnanci[20], *p; struct datum dnes, splatnost; Programovanie - prednáška č. 8 6

Výber zložiek štruktúry záznam Identifikátory zložiek záznamov sú uvedené v rámci definície zloženého typu Prístup ku zložkám je možný pomocou operátora sprístupnenia zložky záznamu (selektora) aplikovaného na premenné typu záznam premenná.zložka i Príklady a.x zamestnavatel.meno zamestnanec[i].datum_narodenia.mesiac dnes.den Programovanie - prednáška č. 8 7 Výber zložiek štruktúry záznam Ak je premenná typu záznam definovaná ako smerník na štruktúru záznam, môžeme použiť namiesto (*smerník).zložka i iný operátor výberu zložky záznamu pre jednoduchší zápis smerník->zložka i Príklad p->meno Programovanie - prednáška č. 8 8

Vlastnosti štruktúr záznam Ľubovoľný prístup k jednotlivým zložkám, podobne aj v poli Všeobecnejšia ako pole, pretože jednotlivé zložky nemusia byť rovnakého typu Selektory zložiek záznamov sú pevne dané identifikátormi v rámci definície záznamu pri použití poľa môžu byť selektory (indexy) vypočítateľné hodnoty, čo je flexibilnejší prístup So štruktúrami pracujeme ako s celkom, môžeme ich kopírovať resp. priraďovať ako celok Môžeme získať adresu štruktúry a pracovať so smerníkom na štruktúru pri použití štruktúr ako parametrov funkcií si treba uvedomiť, že sa odovzdávajú ako jedna komplexná hodnota, ktorá sa musí celá prekopírovať je efektívnejšie odovzdávať smerníky na štruktúry, to isté platí o odovzdávaní štruktúry ako návratovej hodnoty funkcie Programovanie - prednáška č. 8 9 Varianty štruktúr záznam Z praktického hľadiska je výhodné považovať dva typy za varianty toho istého typu Napr. typ súradnice môžeme považovať za zjednotenie dvoch variantov kartéziánskej (dve dĺžky) a polárnej (jedna dĺžka, jeden uhol) súradnicovej sústavy Takáto definícia štruktúry záznam umožňuje, aby údajový objekt bol interpretovaný rôznym spôsobom Kardinalita takejto štruktúry je daná súčtom kardinalít jednotlivých typov variantov Programovanie - prednáška č. 8 10

Definícia štruktúry záznam s variantmi Definícia štruktúry záznam s variantmi (zjednodušene union) v jazyku C union [názov] { typ 1 zložka 1 ; typ 2 zložka 2 ;... typ n zložka n ; } [zoznam_premenných]; Takto definovaný union umožňuje prístup k jednému údaju pomocou rôznych n zložiek rôznych typov V jazyku C je práca s unionom je rovnaká ako práca so štruktúrou treba si uvedomiť, že všetky zložky unionu uchovávajú ten istý údaj a nie n rôznych údajov prístup ku konkrétnej zložke unionu závisí od toho, akým spôsobom chceme s údajom pracovať (máme n rôznych spôsobov) Programovanie - prednáška č. 8 11 Príklady použitia Pri používaní štruktúr záznam s variantmi často kombinujeme použitie štruktúr a unionov Pre identifikáciu konkrétnej varianty často zavádzame zložku nazývanú diskriminátor typu alebo rozlišovacia zložka Definícia bodu pomocou štruktúry s dvoma variantmi (karteziánske alebo polárne súradnice) struct bod { enum {KARTEZIANSKE, POLARNE} druh; union { struct {double x, y;} kartezianske; struct {double r, fi;} polarne; } suradnice; }; struct bod a; Programovanie - prednáška č. 8 12

Výber variantov zložiek štruktúry Selektor pre výber jednotlivých zložiek takéhoto záznamu je daný úrovňami definície jednotlivých štruktúr a unionov a.druh a.suradnice.kartezianske.x a.suradnice.polarne.fi Vo všeobecnosti môže programátor použiť ktorúkoľvek variantu záznamu suradnice, čo môže spôsobiť vážne sémantické chyby programu Odporúča sa, aby príslušné operácie s jednotlivými variantmi boli striktne rozlíšené (použitie vetvenia) pomocou rozlišovacej zložky druh takto môžeme v programe jednoducho overiť správnosť použitia selektora stačí overiť, či každá vetva obsahuje iba korektné selektory switch (a.druh) { case KARTEZIANSKE: printf("kartézske: x = %g, y = %g\n", a.suradnice.kartezianske.x, a.suradnice.kartezianske.y); break; case POLARNE: printf("polárne: r = %g, ϕ = %g\n", a.suradnice.polarne.r, a.suradnice.polarne.fi); break; } Programovanie - prednáška č. 8 13 Reprezentácia štruktúr záznam Záznamy sú zobrazované do pamäti postupným zobrazovaním ich jednotlivých zložiek Adresu i-tej zložky záznamu vzhľadom na začiatočnú adresu záznamu nazývame posunutie (alebo offset) a i zložky i a i = s 1 + s 2 +... + s i 1 pričom s j je veľkosť j-tej zložky záznamu Celková veľkosť záznamu je daná súčtom veľkostí jej zložiek Zložky záznamu sú prístupné len prostredníctvom presne stanovených identifikátorov každé s j môže mať inú hodnotu a výpočet posunutia sa preto nedá automaticky vypočítať z pozície zložky Posunutia zložiek sú známe už počas kompilácie nie je potrebné vykonávať výpočet pozície zložky (ako napr. v prípade indexov poľa) počas realizácie programu Programovanie - prednáška č. 8 14

Reprezentácia štruktúr záznam s variantmi Štruktúra záznam s variantmi (union) reprezentuje jednu informáciu prístupnú viacerými spôsobmi Z toho vyplýva, že každá zložka takéhoto unionu je zobrazená na začiatočnej adrese celého záznamu Celková veľkosť unionu je daná veľkosťou najväčšej zložky unionu struct { int a; float b; char c; }; a b union { int a; float b; char c; }; c a b c Programovanie - prednáška č. 8 15 Operácie s bitovými údajmi Tvorba výrazov pre vykonávanie základných operácií s jednotlivými bitmi alebo segmentmi bitov (napr. bajtmi alebo bitovými poliami) Prostriedok pre prístup k údajom na najnižšej strojovej úrovni Používajú sa na manipuláciu bitov v rámci údajových objektov celočíselných typov (char, int, long, unsigned) Programovanie - prednáška č. 8 16

Použitie operácií s bitmi Programovanie ovládačov (driver) rozličných technických zariadení a aplikácií s priamym prístupom k nim Pamäťovo úsporná implementácia logických údajových objektov (stačí 1 bit) a údajov, ktoré majú užší interval hodnôt, ako základné typy (napr. pre zakódovanie 8 hodnôt nám stačia iba 3 bity) Programovanie emulátorov operácií v pohyblivej rádovej čiarke, ak nie je k dispozícii príslušný procesor Programovanie - prednáška č. 8 17 Bitové operátory Operátor Význam Priorita Asociatívnosť ~ jednotkový doplnok 14 bitov v slove >> posun bitov v slove 11 vpravo << posun bitov v slove 11 vľavo & logický súčin bitov 8 dvoch slov ^ neekvivalencia bitov 7 dvoch slov logický súčet bitov 6 dvoch slov Programovanie - prednáška č. 8 18

Jednotkový doplnok bitov v slove Táto operácia vykoná inverziu všetkých bitov v slove bit s hodnotou 1 zmení hodnotu na 0 a bit s hodnotou 0 zmení hodnotu na 1 ~slovo Používa sa tiež na vytváranie implementačne nezávislých konštánt slovo typu int môže byť na rôznych počítačových systémoch implementované rôzne (napr. 16 bitové slovo alebo 32 bitové slovo) 0177777 šestnásťbitové slovo so všetkými bitmi hodnoty 1 ~0 slovo so všetkými bitmi hodnoty 1 bez ohľadu na koľkých bitoch je implementované Programovanie - prednáška č. 8 19 Posun bitov v slove Bity v slove sú posúvané o konkrétny počet v slove doprava alebo doľava slovo << n slovo >> n Posun o n bitov doľava predstavuje násobenie slova číslom 2 n Posun o n bitov doprava predstavuje delenie slova číslom 2 n Pri posune doľava sa sprava do slova nasúvajú bity s hodnotou 0 Pri posune doprava sa zľava do slova nasúva znamienkový bit aritmetický posun bit s hodnotou 0 logický posun je to implementačne závislé, pričom pre nezávislú implementáciu je potrebné definovať slovo typu unsigned (potom sa vždy realizuje logický posun) Programovanie - prednáška č. 8 20

Logický súčin bitov dvoch slov Táto operácia vykoná logický súčin jednotlivých bitov na tých istých pozíciách dvoch slov slovo1 & slovo2 Používa sa často na nulovanie bitov v bitovom segmente int a; a = a & 0177400; spôsobí vynulovanie nižších 8 bitov v premennej a, za predpokladu, že typ int je realizovaný na 16 bitoch lepšie je použiť implementačne nezávislú konštantu a = a & ~0377; Programovanie - prednáška č. 8 21 Logický súčet bitov dvoch slov Táto operácia vykoná logický súčet jednotlivých bitov na tých istých pozíciách dvoch slov slovo 1 slovo 2 Používa sa často na nastavenie bitov v bitovom segmente int a, b; b = b << 4; a = a & ~0360; a = a b; zápis celočíselnej hodnoty z premennej b do premennej a do bitového segmentu od 4. po 7. bit (v premennej b predpokladáme hodnotu 0 15) Programovanie - prednáška č. 8 22

Bitové polia Umožňujú štruktúrovaný pohľad na neštruktúrovaný typ int Definujú (deklarujú) sa ako jedna zložka štruktúry záznam Umožňujú odkazovať sa na zložky, veľkosť ktorých je špecifikovaná v bitoch Vhodné ak chceme považovať údajový objekt za súbor bitov (napr. kvôli šetreniu pamäťového miesta, pri komunikácii s V/V zariadeniami, atď.) Programovanie - prednáška č. 8 23 Definícia bitového poľa Definícia bitového poľa je v jazyku C realizovaná pomocou štruktúry struct [názov] { unsigned [zložka 1 ] : velkosť 1 ; unsigned [zložka 2 ] : velkosť 2 ;... unsigned [zložka n ] : velkosť n ; } [zoznam_premenných]; Hodnota velkosť i nesmie presiahnúť veľkosť typu unsigned int Ak je velkosť i rovná 0, potom ďalšia zložka bitového poľa bude začínať na novom slove unsigned int Ak je vynechaný identifikátor zložka i, potom bude ďalšie bitové pole posunuté o veľkosť uvedenú za : Programovanie - prednáška č. 8 24

Operácia s bitovým poľom S bitovým poľom sú dovolené všetky operácie ako s typom int, okrem operátora výpočtu adresy & V bitovom poli nie je dovolené použiť ako prvok pole Bitové polia sú implementačne závislé Programovanie - prednáška č. 8 25 Príklady použitia bitového poľa Príklad použitia bitových polí ako komunikačného rozhrania nejakého zariadenia struct device_interface { unsigned R_W : 1; // bitové pole o veľkosti 1 bit unsigned : 0; // prechod na nové slovo unsigned Dir1 : 1; unsigned Dir2 : 1; unsigned Dir3 : 1; unsigned : 4; // 4 bity budú nevyužité unsigned Mode : 3; } device; // definícia premennej pozostávajúcej z bitových polí Bitové polia pre prácu v pohyblivej rádovej čiarke (predpokladáme int aj float na 32 bitov) a union s variantami použitia reálneho čísla struct PHRC { unsigned znamienko_mantisy : 1; unsigned exponent : 8; unsigned mantisa : 23; }; union { float x; struct PHRC y; } realne_cislo; Programovanie - prednáška č. 8 26