Download as pdf or txt
Download as pdf or txt
You are on page 1of 86

OKRUHY OTÁZOK NA ŠTÁTNE ZÁVERČNÉ SKÚŠKY

1. STUPEŇ - BAKALÁRSKE ŠTÚDIUM


Ak. rok 2023/ 2024

Obsah
I. Predmet „Základy informatiky“ .......................................................................................... 1
1. Základy programovania ................................................................................................. 1
2. Dátové štruktúry a algoritmy ....................................................................................... 13
3. Objektovo orientované programovanie........................................................................ 19
4. Operačné systémy ........................................................................................................ 27
II. Predmet „Aplikácie informatiky“ ..................................................................................... 48
1. Webové technológie a dizajn ....................................................................................... 48
2. Modelovanie podnikových systémov .......................................................................... 67
3. Projektový manažment................................................................................................. 75

I. Predmet „Základy informatiky“

1. Základy programovania

ZI.1.1. Základné dátové typy v C: signed, unsigned, char, short, int, long, float, double,
aritmetické jazyku Java, rozsah člena triedy, životný
a relačne operácie, ich priority, pretečenie, podtečenie a presnosť aritmetických
operácii, pevná a pohyblivá desatinná čiarka, celé a reálne čísla, single precision,
double precision, exponenciálny tvar reálnych čísel. Uveďte jednoduché príklady.

1. signed a unsigned: Tieto dva pojmy definujú, či daná premenná môže byť záporná
(signed) alebo iba nezáporná (unsigned). Pre signed premennú sú rezervované dva
komplementárne bity pre záporné hodnoty. Unsigned premenné sú používané pre
hodnoty, ktoré nikdy nemajú byť záporné. Napríklad, signed integer môže mať hodnotu -5
až 5, kým unsigned integer môže mať hodnoty 0 až 10.
2. char, short, int, long: Tieto sú základné typy pre reprezentáciu celých čísel rôznych
veľkostí. Char reprezentuje znak, short a int sú celé čísla rôznych veľkostí (short je
zvyčajne 2 bajty, int môže byť 2 alebo 4 bajty), long je väčší typ ako int, obvykle 4 alebo
8 bajtov na 64-bitovom systéme.
3. float, double: Tieto sú dátové typy používané na reprezentáciu reálnych čísel. Float je
jednoduchá presnosť (single precision) a zvyčajne zaberie 4 bajty, zatiaľ čo double je
dvojitá presnosť (double precision) a zvyčajne zaberie 8 bajtov. Double poskytuje vyššiu
presnosť ako float.

1
4. aritmetické a relačné operácie: Aritmetické operácie sú základné matematické operácie
ako sčítanie, odčítanie, násobenie a delenie. Relačné operácie slúžia na porovnávanie
hodnôt, ako sú väčší ako, menší ako, rovné atď.

V jazyku C existuje niekoľko aritmetických a relačných operácií, ktoré sa používajú na


manipuláciu s hodnotami a porovnávanie výrazov. Tu je zoznam niektorých základných operácií:

Aritmetické operácie:

Sčítanie (+): Používa sa na sčítanie dvoch hodnôt.

Odpocítanie (-): Používa sa na odčítanie jednej hodnoty od druhej.

Násobenie (*): Používa sa na násobenie dvoch hodnôt.

Delenie (/): Používa sa na delenie jednej hodnoty druhou.

Zvyšok po delení (%): Vráti zvyšok po celočíselnom delení dvoch hodnôt.

Relačné operácie:

Rovná sa (==): Porovnáva, či sú dve hodnoty rovnaké.

Nerovná sa (!=): Porovnáva, či sú dve hodnoty rôzne.

Menší (<): Porovnáva, či je jedna hodnota menšia ako druhá.

Menší alebo rovná sa (<=): Porovnáva, či je jedna hodnota menšia alebo rovnaká ako druhá.

Väčší (>): Porovnáva, či je jedna hodnota väčšia ako druhá.

Väčší alebo rovná sa (>=): Porovnáva, či je jedna hodnota väčšia alebo rovnaká ako druhá.

Tieto operácie sa používajú na vytváranie výrazov a podmienok v jazyku C, čo umožňuje


programátorom manipulovať s rôznymi typmi hodnôt a riadiť tok programu.

5. priority operácií: Každá operácia má svoju vlastnú prioritu, ktorá určuje poradie, v akom
sa operácie vykonávajú vo výraze. Napríklad, násobenie a delenie majú vyššiu prioritu
ako sčítanie a odčítanie.

V jazyku C je dôležité porozumieť priorite operácií, aby ste vedeli, v akom poradí sa vykonávajú
matematické operácie a logické operácie vo vašom kóde. Tu je zoznam priorit operácií v jazyku C,
usporiadaný od najvyššej priority po najnižšiu:

1. Zátvorky (): Ak sú prítomné, operácie vo vnútri zátvoriek sú vykonané ako prvé.

2
2. Prefixné a postfixné operátory: Tieto zahŕňajú operátory ako inkrementácia (++) a
dekrementácia (--). Ich priorita závisí od toho, či sú použité ako prefixové alebo postfixové
operátory.
3. Unárne operátory: To zahŕňa unárne mínus (-) a unárny plus (+).
4. Násobenie (*) a delenie (/): Tieto operácie sú vykonávané v poradí, v ktorom sa nachádzajú
výskyty výrazu.
5. Sčítanie (+) a odčítanie (-): Podobne ako násobenie a delenie, sčítanie a odčítanie sú vykonávané
v poradí, v ktorom sa nachádzajú výskyty výrazu.
6. Porovnávacie operátory: To zahŕňa operácie ako rovná sa (==), nerovná sa (!=), menšie ako (<),
menšie alebo rovné (<=), väčšie ako (>), a väčšie alebo rovné (>=).
7. Logické operátory: To sú operátory ako AND (&&) a OR (||).
8. Priraďovací operátor: Priraďovací operátor (=) má najnižšiu prioritu. Je to operátor, ktorý priradí
hodnotu na pravú stranu výrazu do premennej na ľavej strane.

Poradie operácií môže byť ovplyvnené aj pomocou zátvoriek, ktoré môžete použiť na
jasné definovanie požadovaného poradia operácií

6. pretečenie a podtečenie: Pretečenie nastáva, keď sa výsledok aritmetickej operácie


nepodarí reprezentovať v danom dátovom type. Podtečenie je opak pretečenia. Napríklad,
ak sa sčíta dve veľké čísla, ktoré presahujú maximálnu hodnotu daného dátového typu,
dojde k pretečeniu.
7. presnosť aritmetických operácií: Presnosť aritmetických operácií závisí od dátového
typu použitého na ich vykonanie. V prípade reálnych čísel môže dochádzať k
zaokrúhľovaniu a stratám presnosti.

Presnosť aritmetických operácií v jazyku C môže byť kritická v niektorých situáciách, najmä pri manipulácii
s číslami s pohyblivou desatinnou čiarkou a pri veľkých číslach. Tu sú niektoré základné záležitosti, ktoré
treba zvážiť:

1. Celé čísla: V jazyku C sú celé čísla obvykle reprezentované buď ako int alebo long int. Pri
bežných operáciách s celými číslami je presnosť zvyčajne zachovaná, pokiaľ sa neprekrývajú s
maximálnymi hodnotami reprezentácie (napr. pre int 32-bitový systém je to 2^31 - 1). Pri delení
celých čísel sa pamätá iba celočíselný výsledok a zvyšok.

2. Čísla s pohyblivou desatinnou čiarkou: V jazyku C sú čísla s pohyblivou desatinnou čiarkou


(floats a doubles) obmedzené na konečnú presnosť. Preto sa pri niektorých operáciách môže
stratiť presnosť, čo môže viesť k chybám zaokrúhľovania. To môže byť zvlášť problematické pri
iteratívnych výpočtoch.

3. Veľké čísla: Ak sa pracuje s veľkými číslami, ktoré prekračujú rozsah bežných typov (int, long
int, float, double), môže dôjsť k strate presnosti a presnosti číselného zobrazenia. V takýchto
prípadoch sa používajú knižnice alebo vlastné implementácie, ktoré podporujú veľké celé čísla
alebo riešenia s pohyblivou desatinnou čiarkou s väčšou presnosťou (napr. long double).

4. Porovnávanie pohyblivej desatínnej čiarky: Pri porovnávaní čísel s pohyblivou desatinnou


čiarkou je potrebné byť opatrný kvôli chybám zaokrúhľovania. Porovnávanie priamo s plávajúcou
desatinnou čiarkou môže viesť k neočakávaným výsledkom kvôli presnosti reprezentácie v pamäti.

3
5. Aritmetické operácie s rôznymi typmi: Pri vykonávaní aritmetických operácií s rôznymi typmi v
jazyku C dochádza k automatickej konverzii typov, čo môže viesť k stratám presnosti, ak nie je
správne riadená.

6. Zmenšovanie pri konverzii: Konverzia medzi typmi s menšou a väčšou presnosťou môže viesť k
stratám presnosti. Napríklad, konverzia z double na float môže spôsobiť stratu presnosti, ak číslo
je príliš veľké alebo má veľa desatinných miest.

Zachovanie presnosti aritmetických operácií si vyžaduje starostlivú manipuláciu s typmi,


konverziami a manipuláciami s číslami, aby sa minimalizovali chyby a strata presnosti. V
niektorých prípadoch je potrebné použiť špeciálne knižnice alebo implementácie, ktoré
podporujú vyššiu presnosť číselných operácií.

8. pevná a pohyblivá desatinná čiarka: Pevná desatinná čiarka používa fixný počet
desatinných miest, zatiaľ čo pohyblivá desatinná čiarka umožňuje posúvať desatinnú
čiarku na základe potreby.

V jazyku C existujú dva základné typy pre reprezentáciu čísel s desatinnou čiarkou: pevná
desatinná čiarka a pohyblivá desatinná čiarka. Každý z týchto typov má svoje vlastnosti a
použitia.

1. Pevná desatinná čiarka:

• Charakteristika: V pevnej desatinnej čiarke sa desatinná čiarka nachádza na určenom


mieste v čísle a nepohybuje sa. To znamená, že počet desatinných miest je predom
stanovený.

• Príklad: Typ fixed v C je príkladom pevnej desatinnej čiarky. Napríklad, fixed(2, 5)


reprezentuje čísla s pevnou desatinnou čiarkou a 5 desatinnými miestami.

• Výhody: Pevná desatinná čiarka je výhodná, ak potrebujete presnú kontrolu nad počtom
desatinných miest a presnosťou. Často sa používa v aplikáciách, kde sú známe konkrétne
požiadavky na presnosť.

• Nevýhody: Nevýhodou pevnej desatinnej čiarky je, že neposkytuje takú flexibilitu ako
pohyblivá desatinná čiarka. Čísla s pevnou desatinnou čiarkou môžu byť obmedzené na
určitý rozsah a presnosť.

2. Pohyblivá desatinná čiarka:

• Charakteristika: Pohyblivá desatinná čiarka umožňuje flexibilnú presnosť, pretože


desatinná čiarka sa môže pohybovať v čísle podľa potreby.

• Príklad: Typy float a double v jazyku C sú príkladmi pohyblivej desatinnej čiarky. float
má menšiu presnosť a zaberá menej pamäte ako double.

4
• Výhody: Pohyblivá desatinná čiarka poskytuje väčšiu flexibilitu a rozsah pre reprezentáciu
čísel s desatinnou čiarkou. Je ideálna pre situácie, kde nie je potrebné striktne kontrolovať
počet desatinných miest a presnosť.

• Nevýhody: Pohyblivá desatinná čiarka môže byť náchylná na chyby zaokrúhľovania a


straty presnosti pri operáciách s číslami s veľmi veľkými alebo veľmi malými hodnotami.

V praxi sa používa pohyblivá desatinná čiarka (typy float a double) pre bežné výpočty,
pretože poskytuje primeranú presnosť a rozsah s dostatočnou flexibilitou. Avšak, v
niektorých prípadoch môže byť lepšie použiť pevnú desatinnú čiarku, ak sú presné počty
desatinných miest dôležité.

9. celé a reálne čísla: Celé čísla sú čísla bez desatinných miest, zatiaľ čo reálne čísla môžu
mať desatinnú čiarku.
10. exponenciálny tvar reálnych čísel: Exponenciálny tvar reprezentuje reálne čísla
pomocou exponentu a základu. Napríklad, číslo 3.14 môže byť reprezentované ako
3.14e0.

Jednoduché príklady môžu zahŕňať:

c
#include <stdio.h>

int main() {
// signed a unsigned
signed int a = -5;
unsigned int b = 10;

// char, short, int, long


char c = 'A';
short d = 100;
int e = 1000;
long f = 1000000;

// float, double
float g = 3.14;
double h = 3.14159265359;

// aritmetické operácie
int result1 = e + d;
float result2 = g * 2;

// relačné operácie
if (a < b) {
printf("a je menšie ako b\n");
}

return 0;
}

ZI.1.2. Reťazce a súbory v jazyku C: vstup z klávesnice a výstup na monitore, práca s


reťazcami, práca so súbormi a práca s knižnicami. Uveďte jednoduché príklady.

5
Reťazce (Strings):

Reťazce v jazyku C sú postupnosti znakov ukončené nulovým znakom ('\0'). Každý znak v
reťazci je uložený v pamäti na po sebe nasledujúcich pozíciách. Pre prácu s reťazcami sa
zvyčajne používa knižnica string.h, ktorá poskytuje funkcie na manipuláciu s reťazcami.

Knižnica string.h v jazyku C poskytuje funkcie na manipuláciu s reťazcami, ktoré sú veľmi


užitočné pri práci s textovými dátami. Obsahuje niekoľko funkcií na kopírovanie,
porovnávanie, hľadanie, spojovanie a manipuláciu s reťazcami. Tu je prehľad niektorých
kľúčových funkcií v knižnici string.h:

1. strcpy():

• Táto funkcia slúži na kopírovanie reťazcov.


• Syntax: char *strcpy(char *dest, const char *src);
• Parametre: dest je cieľový reťazec, do ktorého sa skopíruje obsah src, ktorý je zdrojový
reťazec.

2. strcat():
• Funkcia strcat() slúži na spojenie dvoch reťazcov.
• Syntax: char *strcat(char *dest, const char *src);
• Parametre: dest je cieľový reťazec, ku ktorému sa pridáva obsah src.

3. strlen():

• Táto funkcia vracia dĺžku reťazca.


• Syntax: size_t strlen(const char *str);
• Parameter: str je reťazec, pre ktorý chcete zistiť dĺžku.

4. strcmp():

• Funkcia strcmp() porovnáva dva reťazce a vráti hodnotu, ktorá indikuje, či sú reťazce
rovnaké, menšie alebo väčšie.
• Syntax: int strcmp(const char *str1, const char *str2);
• Parametre: str1 a str2 sú reťazce, ktoré sa porovnávajú.

5. strchr() a strrchr():
• Funkcie strchr() a strrchr() hľadajú prvý alebo posledný výskyt určitého znaku v
reťazci.
• Syntax: char *strchr(const char *str, int c); (hľadá prvý výskyt), char
*strrchr(const char *str, int c); (hľadá posledný výskyt).
• Parametre: str je reťazec, v ktorom sa vyhľadáva znak c.

6. strstr():

• Táto funkcia vyhľadá podreťazec v reťazci.


• Syntax: char *strstr(const char *haystack, const char *needle);
• Parametre: haystack je reťazec, v ktorom sa vyhľadáva podreťazec needle.

7. strtok():

6
• Funkcia strtok() slúži na tokenizáciu reťazca na základe oddelovačov.
• Syntax: char *strtok(char *str, const char *delim);
• Parametre: str je reťazec, ktorý sa má tokenizovať, a delim je reťazec s oddelovačmi.

Tieto sú len niektoré z najčastejšie používaných funkcií v knižnici string.h. Táto knižnica
poskytuje ďalšie funkcie na manipuláciu s reťazcami, ktoré umožňujú efektívne a
robustné operácie so znakmi a reťazcami v jazyku C.

c
• #include <stdio.h>
#include <string.h>

int main() {
// Deklarácia a inicializácia reťazca
char str1[] = "Hello";
char str2[10];

// Kopírovanie reťazca
strcpy(str2, str1);

// Výstup reťazca na obrazovku


printf("str1: %s\n", str1);
printf("str2: %s\n", str2);

// Získanie dĺžky reťazca


int length = strlen(str1);
printf("Dĺžka str1: %d\n", length);

return 0;
}

• Súbory (Files):

Práca so súbormi v jazyku C sa vykonáva pomocou štandardných knižníc stdio.h. Pre otvorenie
súboru sa používa funkcia fopen(), pre čítanie a zápis sa používajú funkcie fread() a
fwrite(), a nakoniec súbor treba uzavrieť pomocou fclose().

c
• #include <stdio.h>

int main() {
FILE *file;
char text[] = "Hello, World!";

// Otvorenie súboru pre zápis


file = fopen("example.txt", "w");

// Zápis textu do súboru


fprintf(file, "%s", text);

// Uzavretie súboru
fclose(file);

return 0;
}

7
• Vstup z klávesnice a výstup na monitore:

Pre získanie vstupu z klávesnice sa používa funkcia scanf(), ktorá číta vstup zo štandardného
vstupu (klávesnice), a pre výstup na monitor sa používa funkcia printf().

c
• #include <stdio.h>

int main() {
int number;

// Vstup z klávesnice
printf("Zadaj číslo: ");
scanf("%d", &number);

// Výstup na monitor
printf("Zadal si číslo: %d\n", number);

return 0;
}

• Práca s knižnicami:

Knižnice v jazyku C sú súbory, ktoré obsahujú definície funkcií a premenných, ktoré môžu byť
použité v rôznych programoch. Pre použitie knižnice sa musí pridať príkaz #include na začiatok
zdrojového súboru.

c
1. #include <stdio.h> // Štandardná knižnica pre vstupno-výstupné operácie
2. #include "mylibrary.h" // Užívateľsky definovaná knižnica
3.
4. int main() {
5. int result = add(5, 3); // Volanie funkcie z užívateľskej knižnice
6. printf("Výsledok sčítania: %d\n", result);
7.
8. return 0;
9. }
10.

Tieto príklady ukazujú základnú funkcionalitu pre prácu s reťazcami, súbormi, vstupom z
klávesnice a výstupom na monitor, ako aj prácu s knižnicami v jazyku C.

ZI.1.3. Smerníky a dynamické údaje v jazyku C: typ smerník, pojem dynamického údaju,
prideľovanie a uvoľňovanie dynamickej pamäte, vysvetlite pojem diery v pamäti a
vystrčené smerníky, statické a dynamické pole. Uveďte jednoduché príklady.

Typ smerníka (Pointer):

Smerník je premenná, ktorá obsahuje adresu v pamäti. To znamená, že umožňuje manipuláciu s


hodnotami uloženými na konkrétnych miestach v pamäti. Typ smerníka určuje, na aký typ údajov
odkazuje smerník.

8
c
• int *ptr; // Smerník na celé číslo
char *ptr_char; // Smerník na znak

• Pojem dynamického údaju:

Dynamické údaje sú údaje, ktoré sú vytvorené a uvoľnené za behu programu. To znamená, že


pamäť pre tieto údaje sa alokuje a dealokuje dynamicky počas behu programu.

• Prideľovanie a uvoľňovanie dynamického pamäte:

Na alokáciu dynamického údaju v jazyku C sa používa funkcia malloc() alebo jej varianty ako
calloc() alebo realloc(). Na uvoľnenie pamäti sa používa funkcia free(). Je dôležité, aby
sme uvoľnili pamäť, ktorú sme alokovali dynamicky, aby sme predišli úniku pamäte.

c
• int *ptr;
ptr = (int *)malloc(sizeof(int)); // Alokácia pamäti pre celé číslo
free(ptr); // Uvoľnenie pamäti

• Pojem diery v pamäti a vystrčené smerníky:

Diera v pamäti je situácia, kedy sa medzi dvomi alokovanými úsekmi pamäti nachádza
nealokovaná pamäť. Vystrčené smerníky sú smerníky, ktoré odkazujú na diery v pamäti, čo môže
viesť k nežiaducemu správaniu programu alebo k haváriám.

• Statické a dynamické pole:

Statické pole má statickú veľkosť a pamäť preň sa rezervuje pri kompilácii programu. Naopak,
dynamické pole má dynamickú veľkosť a pamäť sa alokuje a dealokuje počas behu programu.

c
1. // Statické pole
2. int static_array[10];
3.
4. // Dynamické pole
5. int *dynamic_array;
6. dynamic_array = (int *)malloc(10 * sizeof(int));
7.

Jednoduchý príklad ukazuje vytvorenie smerníka na celé číslo a alokáciu pamäte pre neho:

c
#include <stdio.h>
#include <stdlib.h>

int main() {
int *ptr;
ptr = (int *)malloc(sizeof(int)); // Alokácia pamäti pre celé číslo

if (ptr == NULL) {
printf("Chyba pri alokácii pamäti.\n");
return 1;
}

*ptr = 10; // Priradenie hodnoty pomocou smerníka

9
printf("Hodnota: %d\n", *ptr);

free(ptr); // Uvoľnenie pamäti

return 0;
}

Tento príklad dynamicky alokuje pamäť pre celé číslo a následne uvoľní túto pamäť po jej
použití.

ZI.1.4. Programátorom definované údajové typy v C: pole, reťazec, typedef, enum, struct,
union a sizeof. Uveďte jednoduché príklady.

Pole (Array):

Pole je kolekcia rovnakých typov údajov, ktoré sú usporiadané za sebou v pamäti. Každý prvok
poľa má index, ktorý sa začína od 0.

c
• int numbers[5]; // Deklarácia poľa s 5 celými číslami

• Reťazec (String):

Reťazec v jazyku C je pole znakov ukončené nulovým znakom ('\0'). Tento nulový znak
označuje koniec reťazca.

c
• char str[] = "Hello"; // Deklarácia reťazca

• Typedef:

Typedef v C umožňuje programátorovi definovať nový názov pre existujúci typ. To uľahčuje
zmeny typov a zlepšuje čitateľnosť kódu.

c
• typedef unsigned int uint; // Nový názov pre typ unsigned int
uint number = 10;

• Enum (Enumeration):

Enum v C je spôsob definovania sady symbolických menovitých konštánt s priradenými


hodnotami.

c
• enum Color {RED, GREEN, BLUE}; // Definícia enumerácie
enum Color color = RED; // Použitie enumerácie

• Struct (Structure):

Štruktúra v C je spôsob, ako zoskupiť rôzne typy údajov do jednej jednotky.

10
c
• struct Person {
char name[50];
int age;
}; // Definícia štruktúry

struct Person person1; // Deklarácia premenného typu struct Person

• Union:

Union je špeciálny dátový typ v C, ktorý umožňuje viacerým členom používať rovnaký úsek
pamäti.

c
• union Data {
int i;
float f;
char str[20];
}; // Definícia unionu

union Data data; // Deklarácia premenného typu union Data

• Sizeof:

Sizeof je operátor v C, ktorý vráti veľkosť daného typu alebo premennej v bajtoch.

c
1. int size = sizeof(int); // size bude obsahovať veľkosť typu int v
bajtoch
2.

Jednoduchý príklad ukazuje použitie štruktúry na reprezentáciu osoby:

c
#include <stdio.h>

// Definícia štruktúry
struct Person {
char name[50];
int age;
};

int main() {
// Deklarácia a inicializácia premenných typu struct Person
struct Person person1 = {"John", 30};
struct Person person2;

// Prístup k členom štruktúry


printf("Osoba 1: %s, %d rokov\n", person1.name, person1.age);

// Priradenie hodnôt členom štruktúry


person2.age = 25;
strcpy(person2.name, "Alice");

printf("Osoba 2: %s, %d rokov\n", person2.name, person2.age);

return 0;
}

11
Tento príklad demonštruje použitie štruktúry na reprezentáciu osoby, kde každá osoba má meno a
vek.

ZI.1.5. Binárne a logické operátory v C: logické a binárne AND, logické a binárne OR, logické
a binárne NOT, bitové posuvy doprava a doľava, bitové makrá. Uveďte jednoduché
príklady.

Logické a binárne AND:

Logický operátor && vyhodnocuje sa na true iba vtedy, ak sú obe jeho operandy true, inak sa
vyhodnocuje na false. Binárny operátor & vykonáva bitovú konjunkciu na každom bite svojich
operandov.

c
• int a = 5, b = 3;
if (a > 0 && b < 5) {
printf("Oba podmienky sú splnené.\n");
}
int c = a & b; // Bitová konjunkcia

• Logické a binárne OR:

Logický operátor || vyhodnocuje sa na true, ak je aspoň jeden z jeho operandov true, inak sa
vyhodnocuje na false. Binárny operátor | vykonáva bitovú disjunkciu na každom bite svojich
operandov.

c
• int x = 5, y = 3;
if (x == 5 || y == 3) {
printf("Aspoň jedna podmienka je splnená.\n");
}
int z = x | y; // Bitová disjunkcia

• Logické a binárne NOT:

Logický operátor ! invertuje hodnotu svojho operandu (ak je operand true, vráti false a
naopak). Binárny operátor ~ vykonáva bitovú negáciu, čo znamená, že invertuje každý bit svojho
operandu.

c
• int p = 1, q = 0;
if (!p) {
printf("Hodnota p je false.\n");
}
int r = ~q; // Bitová negácia

• Bitové posuvy doprava a doľava:

Operátory << a >> vykonávajú bitové posuny operandov doľava alebo doprava o určitý počet
bitov.

12
c
• int num = 8; // Binárne: 0000 1000
int left_shift = num << 2; // Binárne: 0010 0000 (32 v desiatkovej)
int right_shift = num >> 1; // Binárne: 0000 0100 (4 v desiatkovej)

• Bitové makrá:

Bitové makrá v C sú definície, ktoré umožňujú pracovať s bitmi v pamäti, čo sa používa najmä
pri manipulácii s registrovými bitmi.

c
#define SET_BIT(x, n) ((x) |= (1 << (n)))
#define CLEAR_BIT(x, n) ((x) &= ~(1 << (n)))

Tieto makrá nastavia alebo vymažú bit na určitej pozícii v čísle x:

c
1. int num = 0; // Binárne: 0000 0000
2. SET_BIT(num, 3); // Binárne: 0000 1000
3. CLEAR_BIT(num, 3); // Binárne: 0000 0000
4.

Tieto príklady demonštrujú použitie logických a bitových operátorov v jazyku C a ich použitie na
manipuláciu s bitmi v pamäti.

2. Dátové štruktúry a algoritmy

ZI.2.1. Smerníky a dynamické údaje, typ smerník, pojem dynamického údaju, prideľovanie
a
uvoľňovanie dynamickej pamäte, vysvetlite pojem diery v pamäti a vystrčené
smerníky v C++, konštruktory a deštruktory dynamických objektov, dynamické pole
ako trieda a virtuálne funkcie.

Typ smerníka (Pointer):

Smerník je premenná, ktorá obsahuje adresu v pamäti. To umožňuje manipulovať s hodnotami a


údajmi uloženými na konkrétnych miestach v pamäti. Typ smerníka určuje, aký typ údajov
môže byť uložený na adrese, na ktorú smerník odkazuje.

cpp

int *ptr; // Smerník na celé číslo

Pojem dynamického údaju:

Dynamický údaj je údaj, ktorý je vytvorený a uvoľnený za behu programu. To znamená, že pamäť
pre tento údaj sa alokuje a dealokuje dynamicky počas behu programu.

Prideľovanie a uvoľňovanie dynamickej pamäte:

13
Na alokáciu dynamického údaju v jazyku C++ sa používa operátor new, a na uvoľnenie pamäte sa
používa operátor delete.

cpp

int *ptr = new int; // Alokácia pamäti pre celé číslo


delete ptr; // Uvoľnenie pamäti

Pojem diery v pamäti a vystrčené smerníky:

Diera v pamäti je situácia, keď medzi dvoma alokovanými úsekmi pamäti existuje nealokovaný
úsek. Vystrčené smerníky sú smerníky, ktoré odkazujú na takéto diery v pamäti, čo môže
viesť k neočakávanému správaniu programu alebo k haváriám.

Konštruktory a deštruktory dynamických objektov:

Konštruktor je špeciálna metóda triedy, ktorá sa volá pri vytváraní objektu. Deštruktor je tiež
špeciálna metóda triedy, ktorá sa volá pri zániku objektu. Ich úlohou je inicializovať a
uvoľniť zdroje spojené s objektom.

cpp

class MyClass {
public:
MyClass() { // Konštruktor
cout << "Objekt vytvorený." << endl;
}
~MyClass() { // Deštruktor
cout << "Objekt zničený." << endl;
}
};

Dynamické pole ako trieda a virtuálne funkcie:

Dynamické pole môže byť reprezentované ako trieda, ktorá obsahuje dynamicky alokované pole
ako svoj atribút. Virtuálne funkcie v C++ sú funkcie, ktoré sa môžu prekryť alebo prepísať
v odvodených triedach.

cpp

class DynamicArray {
private:
int *array;
int size;
public:
DynamicArray(int s) : size(s) { // Konštruktor s parametrom
array = new int[size];
}
virtual ~DynamicArray() { // Virtuálny deštruktor
delete[] array;
}

14
};

Tieto príklady demonštrujú použitie smerníkov a dynamických údajov v jazyku C++, ako aj
použitie konštruktorov a deštruktorov dynamických objektov. Ich správne použitie je
kľúčom k úspešnému riadeniu pamäte a správnej funkčnosti programu.

ZI.2.2. Pamäťová a výpočtová zložitosť algoritmov: hrubá miera na porovnanie zložitosti


algoritmov, kritický kód programu, vyhľadávanie kľúča v zozname, hašovacie
tabuľky a spôsoby rozriešenia kolízie, algoritmy usporiadania s kvadratickou
zložitosťou, algoritmy a so zložitosťou n log n. Uveďte aspoň dva príklady algoritmov
usporiadania.

Pamäťová a výpočtová zložitosť algoritmov:

Pamäťová zložitosť algoritmu je miera pamäťových zdrojov, ktoré algoritmus vyžaduje na


vykonanie. Výpočtová zložitosť algoritmu je miera výpočtových zdrojov, ako je čas a
výkon procesora, ktoré sú potrebné na vykonanie algoritmu.

Hrubá miera na porovnanie zložitosti algoritmov:

Hrubá miera na porovnanie zložitosti algoritmov poskytuje hrubý odhad toho, ako sa algoritmy
porovnávajú vzhľadom na ich výkon a pamäťové nároky. Tento odhad sa zvyčajne
vyjadruje v big O notácii.

Kritický kód programu:

Kritický kód programu je časť kódu, ktorá má významný vplyv na celkový výkon alebo
fungovanie programu. Tieto časti kódu sú obvykle optimalizované pre maximalizáciu
výkonu a minimalizáciu pamäťových nárokov.

Vyhľadávanie kľúča v zozname:

Vyhľadávanie kľúča v zozname je proces nájdenia konkrétneho prvku alebo kľúča v zozname
údajov. Najznámejšími algoritmami na vyhľadávanie sú lineárne vyhľadávanie a binárne
vyhľadávanie.

Hašovacie tabuľky a spôsoby rozriešenia kolízie:

Hašovacia tabuľka je dátová štruktúra, ktorá umožňuje rýchle vyhľadávanie a vkladanie údajov
pomocou hašovacej funkcie. Kolízia nastáva, keď dve alebo viacero kľúčov má rovnakú
hašovaciu hodnotu. Spôsoby riešenia kolízií zahŕňajú rôzne techniky, ako sú otvorené
adresovanie, zretelenie a hašovanie so zretelením.

Algoritmy usporiadania s kvadratickou zložitosťou:

Algoritmy usporiadania s kvadratickou zložitosťou majú časovú zložitosť O(n2)O(n2). Medzi


najznámejšie patria vkladací sort, výberový sort a bublinkový sort.

Algoritmy s zložitosťou nlog⁡nnlogn:

15
Algoritmy s časovou zložitosťou nlog⁡nnlogn sú efektívne algoritmy usporiadania a
vyhľadávania, ktoré majú lepšiu výkonnosť ako algoritmy s kvadratickou zložitosťou.
Medzi najznámejšie patria quicksort, mergesort a heap sort.

Dva príklady algoritmov usporiadania sú:

Quicksort:

Quicksort je efektívny rekurzívny algoritmus usporiadania, ktorý využíva princíp rozdeľovania


a panovania. Rozdeľuje pole na menšie podproblémy, usporiadava ich a potom spája
výsledky.

Mergesort:

Mergesort je ďalší efektívny rekurzívny algoritmus usporiadania, ktorý využíva princíp


rozdeľovania a panovania. Rozdeľuje pole na polovicu, rekurzívne ich usporiadava a potom
zlučuje výsledky.

Tieto algoritmy sú základom pre efektívne riešenia problémov usporiadania a vyhľadávania v


rôznych aplikáciách.

ZI.2.3. Formálne definujte pojem zásobníka, vysvetlite špecifikáciu a dve rôzne možnosti
implementácie abstraktného údajového typu zásobník, vysvetlite pretečenie
a podtečenie zásobníka. Uveďte aspoň dva jednoduché príklady jeho použitia.
Formálna definícia zásobníka:

Zásobník je abstraktný dátový typ, ktorý reprezentuje kolekciu prvkov usporiadaných podľa
LIFO (Last-In-First-Out) princípu. To znamená, že prvok, ktorý bol posledný pridaný
(vrchol zásobníka), je prvý, ktorý je vybraný.

Špecifikácia zásobníka:
Operácie:
push(item): Pridá položku na vrchol zásobníka.
pop(): Odstráni a vráti položku z vrcholu zásobníka.
peek(): Vráti hodnotu položky na vrchole zásobníka bez jej odstránenia.
isEmpty(): Vráti true, ak je zásobník prázdny, inak false.
isFull(): Vráti true, ak je zásobník plný (v prípade obmedzenej veľkosti), inak false.

Možnosti implementácie abstraktného údajového typu zásobníka:

Pole (statické zásobníky):


Vytvára sa pole s fixnou veľkosťou.
Operácie push() a pop() menia veľkosť poľa.
Obmedzené veľkosťou poľa.
Výhodné pre zásobníky s malým počtom prvkov alebo s predvídateľným maximálnym
počtom prvkov.

Dynamický zoznam (dynamické zásobníky):


Implementovaný pomocou spojového zoznamu – Linked List.
Dynamicky sa pridávajú a odoberajú prvky.
Nevýhodou je potreba spravovať dynamickú pamäť.

16
Flexibilnejší a efektívnejší pre zásobníky s neobmedzenou alebo veľkou kapacitou.

Pretečenie a podtečenie zásobníka:

Pretečenie:
Pretečenie zásobníka nastáva, keď sa do plného zásobníka pokúšame pridať ďalší prvok.
V prípade statického zásobníka môže dôjsť k pretečeniu pamäte.
V dynamickom zásobníku môže dôjsť k dynamickému rozšíreniu zásobníka, alebo sa môže
vyvolať výnimka (ak nie je možné alokovať ďalšiu pamäť).

Podtečenie:
Podtečenie zásobníka nastáva, keď sa z prázdneho zásobníka pokúšame odstrániť prvok.
V prípade podtečenia je vrátená chybová hodnota (napríklad ak sa snažíme vykonať pop()
na prázdnom zásobníku).

Príklady použitia zásobníka:

Zásobník pri vyhodnocovaní aritmetických výrazov:


Pri zpracovaní aritmetického výrazu môžeme použiť zásobník na ukladanie operandov a
operátorov a vykonávanie operácií v správnom poradí.

Spätné vyhľadávanie (backtracking):


Pri algoritmoch spätného vyhľadávania, ako je napríklad hľadanie cesty v grafe, sa
zásobník používa na ukladanie aktuálnej cesty a návrat k predchádzajúcemu stavu v
prípade, že aktuálna cesta vedie do slepej uličky.

ZI.2.4. Formálne definujte pojem obecného stromu, vysvetlite špecifikáciu a možnosti


implementácie abstraktného údajového typu binárny strom, definujte prechod cez
binárny strom: inorder, preorder, postorder, binárny prehľadávajúci strom,
vyvážený binárny strom. Uveďte dva príklady jeho použitia.

Formálna definícia obecného stromu:

Obecný strom je hierarchická štruktúra dát, ktorá pozostáva z vrcholov a hrán, kde každý vrchol
má jeden nadriadený vrchol a môže mať viacero podriadených vrcholov. Každý vrchol v
strome sa nazýva uzol.

Špecifikácia a možnosti implementácie abstraktného údajového typu binárny strom:


Špecifikácia:
Binárny strom je špeciálny typ stromu, v ktorom každý vrchol môže mať najviac dve deti:
ľavého a pravého.
Každý uzol obsahuje dáta a odkazy na svojich potomkov.
Implementácia:
Pomocou štruktúry alebo triedy, ktorá reprezentuje uzol binárneho stromu.
Ukladanie dát a odkazov na ľavého a pravého potomka.
Operácie na pridávanie, odstraňovanie a prehľadávanie uzlov v strome.

Prechod cez binárny strom:

Inorder (V-stred-O):
Najprv navštívi ľavého potomka, potom aktuálny uzol a nakoniec pravého potomka.

17
Preorder (V-O-stred):
Najprv navštívi aktuálny uzol, potom ľavého potomka a nakoniec pravého potomka.

Postorder (O-ľavý-pravý):
Najprv navštívi ľavého potomka, potom pravého potomka a nakoniec aktuálny uzol.

Binárny prehľadávajúci strom (BST):


Binárny strom, kde ľavý potomok uzlu obsahuje hodnoty menšie ako hodnota uzlu a pravý
potomok obsahuje hodnoty väčšie ako hodnota uzlu.

Vyvážený binárny strom:


Binárny strom, v ktorom sa snažíme minimalizovať rozdiel v hĺbke podstromov. Tým sa
zabezpečí, že operácie v strome majú logaritmickú zložitosť.

Príklady použitia binárneho stromu:

Binárne vyhľadávacie stromy:


Používajú sa na efektívne vyhľadávanie, vkladanie a odstraňovanie prvkov.
Napríklad pri implementácii slovníka, databázového indexu alebo operačného systému
(napríklad súborového systému).

Matematické výrazy:
Binárny strom môže byť použitý na reprezentáciu a vyhodnotenie matematických výrazov.
Napríklad výraz "((3 + 4) * 5)" môže byť reprezentovaný ako binárny strom, kde uzly sú
operátory (+, *) a listy sú hodnoty (3, 4, 5).

ZI.2.5. Formálne definujte pojem grafu, vysvetlite špecifikáciu a dve rôzne možnosti
implementácie abstraktného údajového typu graf, definujte minimálnu cestu v grafe
a vysvetlite algoritmus pre jej nájdenie. Uveďte aspoň dva jednoduché príklady
použitia grafu.

Formálna definícia grafu:

Graf je matematická štruktúra, ktorá sa skladá z množiny vrcholov a množiny hrán, ktoré
spájajú tieto vrcholy. Hrany môžu byť orientované alebo neorientované a môžu mať váhy.

Špecifikácia a možnosti implementácie abstraktného údajového typu graf:


Špecifikácia:
Graf sa dá reprezentovať pomocou matice susednosti, zoznamu susednosti alebo inými
štruktúrami.
Môže byť orientovaný alebo neorientovaný, vážený alebo nevážený.
Implementácia:
Matica susednosti:
Matica n×n n×n, kde nn je počet vrcholov.
Prvky matice určujú existenciu hrany medzi vrcholmi.
Zoznam susednosti:
Pre každý vrchol máme zoznam jeho susedov.
Efektívnejší pre grafy s malým stupňom vrcholov.

Minimálna cesta v grafe:

18
Minimálna cesta medzi dvomi vrcholmi v grafe je najkratšia cesta, ktorá spája tieto dva
vrcholy.
Môže byť definovaná ako minimálny počet hrán alebo minimálna váha na ceste.

Algoritmus pre nájdenie minimálnej cesty v grafe:


Dijkstrov algoritmus:
Používa sa na nájdenie najkratších ciest z jedného zdrojového vrcholu ku všetkým
ostatným vrcholom v grafe.
Začína v zadanom zdrojovom vrchole a postupne hľadá najkratšie cesty k ostatným
vrcholom, pričom postupuje podľa najmenšej celkovej váhy hrany.

Príklady použitia grafu:


Systém dopravy:
Vrcholy grafu môžu reprezentovať miesta a hrany môžu reprezentovať cesty medzi týmito
miestami.
Minimálna cesta v grafe môže byť využitá na plánovanie najkratších cest pre dopravu.
Sociálna sieť:
Vrcholy grafu môžu reprezentovať ľudí a hrany môžu reprezentovať vzťahy medzi nimi
(napríklad priateľstvo).
Analýza grafu a nájdenie minimálnych ciest môže byť využitá na odhalenie vzorov alebo
influencerov v sieti.

3. Objektovo orientované programovanie

ZI.3.1. Vstupno-výstupne prúdy v Jave: bajtové a znakové prúdy, riadkovo-orientovaný


vstup a výstup, prúdy s vyrovnávajúcou pamäťou, štandardné triedy pre vstup
a výstup, práca so súbormi, reťazce v jazyku Java, práca s reťazcami. Uveďte
jednoduché príklady.

1. Bajtové a znakové prúdy:


o Bajtové prúdy:
▪ Reprezentujú tok bajtov, teda binárne dáta.
▪ Používajú sa na prácu so súbormi alebo sieťovou komunikáciou.
▪ Napríklad: FileInputStream, FileOutputStream, SocketInputStream,
SocketOutputStream.
o Znakové prúdy:
▪ Reprezentujú tok znakov, teda textové dáta.
▪ Automaticky prevádzajú znaky na bajty podľa zvolenej kódovacej tabuľky.
▪ Používajú sa na prácu so znakovými súbormi alebo na spracovanie textu.
▪ Napríklad: FileReader, FileWriter, BufferedReader,
BufferedWriter.
2. Riadkovo-orientovaný vstup a výstup:
o Riadkovo-orientovaný vstup a výstup umožňuje čítať a zapisovať údaje riadok po
riadku.
o Pre čítanie riadkov je bežne používaná trieda BufferedReader, ktorá poskytuje
metódy ako readLine() pre čítanie jedného riadku.
o Pre zapisovanie riadkov sa používa trieda BufferedWriter, ktorá má metódu
write() na zápis textu, a newLine() pre vloženie nového riadku.
3. Prúdy s vyrovnávajúcou pamäťou:

19
o Prúdy s vyrovnávajúcou pamäťou ukladajú údaje do vyrovnávacej pamäte pred ich
skutočným zápisom na disk alebo odoslaním cez sieť.
o To zvyšuje efektivitu operácií vstupu a výstupu tým, že minimalizuje počet
skutočných prístupov k zariadeniam.
o Triedy ako BufferedReader a BufferedWriter poskytujú vyrovnávanie pamäte
pre čítanie a zápis textu.
4. Štandardné triedy pre vstup a výstup:
o Java poskytuje niekoľko štandardných tried pre vstup a výstup, ako sú
FileInputStream, FileOutputStream, FileReader, FileWriter,
BufferedReader, BufferedWriter a ďalšie.
o Tieto triedy umožňujú interakciu so súbormi, sieťovými spojeniami a ďalšími
zdrojmi a cieľmi dát.
5. Práca so súbormi:
o V Jave je práca so súbormi implementovaná pomocou tried ako File,
FileInputStream, FileOutputStream, FileReader, FileWriter.
o Súbory môžu byť otvorené, čítané, zapisované a zatvárané pomocou týchto tried.
6. Reťazce v jazyku Java:
o V Jave je reťazec objektom triedy String.
o Reťazce sú nezmeniteľné, čo znamená, že ich obsah sa nemôže po vytvorení
zmeniť.
o Poskytujú množstvo metód na manipuláciu a prácu s textom.
7. Práca s reťazcami:
o Manipulácia s reťazcami sa vykonáva pomocou metód triedy String.
o Tieto metódy zahŕňajú operácie ako získanie dĺžky reťazca, vyhľadávanie
podreťazcov, nahradenie podreťazcov, rozdelenie reťazca na časti a mnoho
ďalších.

Príklady:

java
// Čítanie zo súboru riadok po riadku
try (BufferedReader reader = new BufferedReader(new FileReader("subor.txt")))
{
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}

// Zápis do súboru
try (BufferedWriter writer = new BufferedWriter(new FileWriter("vystup.txt")))
{
writer.write("Hello, world!");
} catch (IOException e) {
e.printStackTrace();
}

Tieto príklady demonštrujú základnú prácu so súbormi a riadkovo-orientovaným vstupom a


výstupom v jazyku Java.

20
ZI.3.2. Triedy a objekty v jazyku Java, rozsah člena triedy, životný cyklus objektov triedy,
metódy a konštruktory tried, garbage collector, rôzne typy prístupu k metódam
triedy, združovanie
príbuzných tried, tvorba a využitie balíkov a podbalíkov tried. Uveďte jednoduché
príklady.

1. Triedy a objekty v jazyku Java:


o Trieda:
▪ Trieda je šablóna, ktorá definuje atribúty a metódy, ktoré budú mať
objekty danej triedy.
▪ Je to základný stavebný prvok objektovo-orientovaného programovania.
▪ Napríklad: public class Car { ... }.
o Objekt:
▪ Objekt je inštancia triedy. Je konkrétnou reprezentáciou šablóny danej
triedy.
▪ Objekt obsahuje stav (hodnoty atribútov) a správanie (metódy) definované
v triede.
▪ Napríklad: Car myCar = new Car();.
2. Rozsah člena triedy:
o Rozsah člena triedy (či už atribút alebo metóda) určuje dostupnosť danej časti
triedy v rámci tej istej triedy, podtriedy alebo iných tried v balíku.
3. Životný cyklus objektov triedy:
o Vytvorenie (inicializácia):
▪ Objekt je vytvorený pomocou kľúčového slova new. V tomto štádiu sa volá
konštruktor triedy.
o Použitie:
▪ Objekt je používaný na vykonávanie operácií, ktoré sú definované v triede.
o Zničenie (deštrukcia):
▪ Objekt je zničený, keď už nie je potrebný a nie je naň žiadna referenčná
premenná. Java má zabudovaný garbage collector, ktorý automaticky
zisťuje a odstraňuje nepoužívané objekty.
4. Metódy a konštruktory tried:
o Metódy:
▪ Metódy sú funkcie definované v triede, ktoré vykonávajú operácie na
objektoch danej triedy.
▪ Môžu byť verejné, súkromné, chránené alebo na úrovni balíka.
o Konštruktory:
▪ Konštruktory sú špeciálne metódy, ktoré sú volané pri vytváraní nového
objektu.
▪ Slúžia na inicializáciu objektu a môžu prijímať parametre.
5. Garbage collector:
o Garbage collector je súčasťou Java Virtual Machine (JVM), ktorá automaticky
spravuje pamäť a odstraňuje nepoužívané objekty z pamäte.
6. Rôzne typy prístupu k metódam triedy:
o Verejný (public):
▪ Metóda je prístupná zvonku triedy.
o Súkromný (private):
▪ Metóda je prístupná iba zvnútra triedy.
o Chránený (protected):
▪ Metóda je prístupná v triede, podtriedach a triedach v rovnakom balíku.

21
oNa úrovni balíka (package-private):
▪ Metóda je prístupná v rovnakom balíku.
7. Združovanie príbuzných tried:
o Združovanie (agregácia a kompozícia) je spôsob, ako triedy môžu byť vzájomne
prepojené tak, že jedna trieda obsahuje referenciu na inú triedu ako svoj atribút.
8. Tvorba a využitie balíkov a podbalíkov tried:
o Balík je skupina súborov a tried, ktoré sú zaradené do toho istého adresára.
Používa sa na organizáciu a štruktúrovanie kódu.
o Podbalíky môžu byť vytvorené pre ďalšie štruktúrovanie kódu a lepšiu
organizáciu.

Príklady:

java
// Jednoduchá trieda Car s konštruktorom a metódou
public class Car {
private String brand;
private String model;

public Car(String brand, String model) {


this.brand = brand;
this.model = model;
}

public void drive() {


System.out.println("Driving the car");
}

public String getBrand() {


return brand;
}
}

// Vytvorenie objektu a použitie metódy


Car myCar = new Car("Toyota", "Corolla");
myCar.drive();
System.out.println("Brand: " + myCar.getBrand());

Tento príklad demonštruje vytvorenie triedy Car, vytvorenie objektu tejto triedy a volanie jej
metód.

ZI.3.3. Dedičnosť v jazyku Java: typy a výhody dedenia, jeho cena: rýchlosť, veľkosť a
zložitosť
programu, blokovanie dedičnosti, rozsah člena pri dedení, konštruktory pri dedení,
predefinovanie a preťažovanie metód, polymorfizmy, abstraktné metódy a triedy,
rozhrania. Uveďte jednoduché príklady.

Dedičnosť v jazyku Java je kľúčovou vlastnosťou objektovo orientovaného programovania, ktorá


umožňuje vytváranie nových tried na základe existujúcich tried. Tu je podrobný opis a definícia
pojmov súvisiacich s dedičnosťou:

1. Typy a výhody dedenia:

22
o Typy dedenia:
▪ V Jave môžete dediť z inej triedy alebo implementovať jedno alebo viac
rozhraní.
▪ Jednoduchá dedičnosť: Jedna trieda môže dediť z inej triedy.
▪ Viacnásobná dedičnosť nie je povolená v Jave.
o Výhody dedenia:
▪ Znovupoužiteľnosť kódu: Existujúce triedy môžu poskytnúť funkcionality
novým triedam.
▪ Zjednodušená správa kódu: Dedičnosť môže viesť k lepšej organizácii
kódu a jeho štruktúre.
▪ Flexibilita a rozšíriteľnosť: Nové triedy môžu rozširovať funkcionality
existujúcich tried.
2. Cena dedenia: rýchlosť, veľkosť a zložitosť programu:
o Rýchlosť:
▪ Pri dedení môže dôjsť k určitej miere zrýchlenia vývoja, ale zároveň môže
byť vyššia cena výpočtových zdrojov počas behu programu kvôli
dynamickému prehľadávaniu a volaniu metód.
o Veľkosť:
▪ Dedičnosť môže zvýšiť veľkosť kódu a potrebných zdrojov, pretože nové
triedy môžu obsahovať dodatočný kód navyše k tomu, čo dedia.
o Zložitosť programu:
▪ Dedičnosť môže zvýšiť zložitosť programu tým, že vytvára vzťahy medzi
triedami a vďaka možnosti preťažovania a predefinovania metód môže byť
kód menej prehľadný.
3. Blokovanie dedičnosti:
o Blokovanie dedičnosti je mechanizmus, ktorý bráni iným triedam v dedení od
určitej triedy.
o Používa sa v prípadoch, keď je potrebné zamedziť istým triedam využívať
funkcionalitu z inej triedy.
4. Rozsah člena pri dedení:
o Rozsah člena triedy definuje dostupnosť daného člena triedy pre iné triedy.
o Môže byť verejný, chránený, súkromný alebo na úrovni balíka.
5. Konštruktory pri dedení:
o Konštruktory nie sú dedené, ale konštruktor nadradenej triedy je volaný implicitne
pri vytvorení objektu podradenej triedy.
o Konštruktor podradenej triedy môže volať konštruktor nadradenej triedy pomocou
super().
6. Predefinovanie a preťažovanie metód:
o Predefinovanie metód:
▪ Podradená trieda môže definovať metódu s rovnakým názvom, ako má jej
nadradená trieda.
▪ Táto metóda sa nazýva predefinovaná a preberá kontrolu nad metódou
rovnakého mena v nadradenej triede.
o Preťažovanie metód:
▪ Preťažovanie metód umožňuje definovať viacero metód s rovnakým
názvom, ale rôznymi parametrami.
▪ Java rozlišuje medzi nimi na základe počtu a typu parametrov.
7. Polymorfizmus, abstraktné metódy a triedy, rozhrania:
o Polymorfizmus:
▪ Polymorfizmus v Jave umožňuje objektom rôznych tried vykonávať
rovnaké operácie rôznymi spôsobmi.

23
▪ Môže byť dosiahnutý pomocou predefinovania metód (polymorfizmus
bežný).
o Abstraktné metódy a triedy:
▪ Abstraktná metóda je metóda bez implementácie, ktorá je označená
kľúčovým slovom abstract.
▪ Abstraktná trieda je trieda obsahujúca aspoň jednu abstraktnú metódu.
▪ Nesmie byť vytvorený objekt abstraktnej triedy, ale môže byť použitá ako
nadradená trieda.
o Rozhrania:
▪ Rozhranie je zbierka abstraktnych metod, ktoré musia byť implementované
triedami, ktoré implementujú toto rozhranie.
▪ Všetky metódy v rozhraní sú implicitne verejné a abstraktné.
▪ Rozhrania umožňujú vytvárať plne polymorfné aplikácie.

Príklady:

java
// Dedičnosť: Tvorba podradenej triedy z nadradenej triedy
class Vehicle {
public void move() {
System.out.println("Vehicle is moving");
}
}

class Car extends Vehicle {


public void move() {
System.out.println("Car is moving");
}
}

// Použitie dedičnosti a polymorfizmu


Vehicle myCar = new Car();
myCar.move(); // Vypíše: "Car

ZI.3.4. Programovanie do rozhraní v jazyku Java: pojem kolekcie, rozhranie Collection


a jeho základné metódy, iterátor kolekcie, rozhrania Set, SortedSet, List, Queue a ich
možné implementácie. Uveďte jednoduché príklady.

Rozhrania v jazyku Java poskytujú abstrakciu nad konkrétnymi implementáciami a umožňujú


programátorom pracovať s rôznymi typmi dát bez potreby závislosti na konkrétnych
implementáciách. Tu je podrobný opis a definícia pojmov týkajúcich sa programovania do
rozhraní v jazyku Java:

1. Pojem kolekcie:
o Kolekcia v jazyku Java je objekt, ktorý umožňuje uchovávať a manipulovať s
množinou prvkov.
o Kolekcie môžu byť rôzne typy, ako sú zoznamy, množiny, mapy a fronty.
o Kolekcie sú dôležitou súčasťou štandardnej knižnice jazyka Java a nachádzajú sa
v balíku java.util.
2. Rozhranie Collection a jeho základné metódy:
o Rozhranie Collection je základným rozhraním pre všetky kolekcie v jazyku
Java.

24
o Obsahuje základné metódy na manipuláciu s prvkami v kolekcii, ako sú add(),
remove(), contains(), size(), isEmpty() a ďalšie.
o Toto rozhranie nezaručuje poradie prvkov a môže obsahovať duplicitné prvky.
3. Iterátor kolekcie:
o Iterátor je objekt, ktorý umožňuje prechádzať cez prvky v kolekcii.
o Rozhranie Iterator definuje metódy ako hasNext() na overenie existencie
ďalšieho prvku a next() na získanie tohto ďalšieho prvku.
4. Rozhrania Set, SortedSet, List, Queue a ich možné implementácie:
o Rozhranie Set:
▪ Reprezentuje množinu unikátnych prvkov.
▪ Nepodporuje indexovanie.
▪ Nie je zaručené poradie prvkov.
▪ Implementácie: HashSet, LinkedHashSet, TreeSet.
o Rozhranie SortedSet:
▪ Podobné ako rozhranie Set, ale zaručuje triedenie prvkov podľa ich
poradia.
▪ Implementácie: TreeSet.
o Rozhranie List:
▪ Reprezentuje zoznam prvkov, ktoré sú indexované.
▪ Podporuje duplicitné prvky a zachováva poradie, v akom boli pridané.
▪ Implementácie: ArrayList, LinkedList, Vector.
o Rozhranie Queue:
▪ Reprezentuje frontu prvkov, ktorá dodržiava princíp FIFO (First-In-First-
Out).
▪ Implementácie: LinkedList, ArrayDeque, PriorityQueue.
5. Príklady:

java
// Príklad vytvorenia HashSetu a pridania prvkov
Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("apple"); // Duplicitný prvok, nebude pridaný

// Príklad vytvorenia ArrayListu, pridania prvkov a iterácie cez ne


List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);

Iterator<Integer> iterator = list.iterator();


while (iterator.hasNext()) {
System.out.println(iterator.next());
}

// Príklad vytvorenia PriorityQueue a pridania prvkov


Queue<Integer> queue = new PriorityQueue<>();
queue.add(5);
queue.add(3);
queue.add(7);

System.out.println(queue.poll()); // Vypíše: 3
System.out.println(queue.poll()); // Vypíše: 5

25
ZI.3.5. Paralelné programovanie v Jave: pojem vlákna a jeho tvorba, životný cyklus vlákna,
priorita, rozvrhovanie a synchronizácia vlákien, uviaznutie vlákna, užívateľské
a démonické vlákna, skupiny vlákien, súvislosť s bezpečnosťou programu. Uveďte ich
výhody a jednoduché príklady použitia.

Pojem vlákna a jeho tvorba:

• Vlákno:
o Vlákno je jednotka spracovania, ktorá umožňuje vykonávanie kódu súčasne s
inými vláknami v rámci rovnakého procesu.
o V Jave môžete vytvoriť vlákno pomocou triedy Thread alebo implementovaním
rozhrania Runnable.
• Tvorba vlákna pomocou triedy Thread:

java
• Thread thread = new Thread() {
public void run() {
// Kód, ktorý sa má vykonať vo vlákne
}
};
thread.start(); // Spustenie vlákna

• Tvorba vlákna implementovaním rozhrania Runnable:

java

1.
o Runnable myRunnable = new Runnable() {
o public void run() {
o // Kód, ktorý sa má vykonať vo vlákne
o }
o };
o Thread thread = new Thread(myRunnable);
o thread.start(); // Spustenie vlákna
o
2. Životný cyklus vlákna:
o Nové: Vlákno je vytvorené, ale ešte nebolo spustené.
o Spustené: Vlákno je spustené a vykonáva sa jeho kód.
o Zastavené alebo ukončené: Vlákno skončilo svoj beh alebo bolo ukončené.
3. Priorita, rozvrhovanie a synchronizácia vlákien:
o Priorita vlákna:
▪ Každé vlákno má prioritu, ktorá určuje, akým spôsobom má byť
vykonávané v porovnaní s ostatnými vláknami.
▪ Priorita vlákna je celé číslo od 1 do 10, pričom 1 je najnižšia priorita a 10
je najvyššia.
o Rozvrhovanie vlákien:
▪ Rozvrhovanie je proces rozhodovania, ktoré vlákno bude vykonávané v
akom čase.
▪ Rozvrhovanie je riadené plánovačom vlákien JVM.
o Synchronizácia vlákien:
▪ Synchronizácia je mechanizmus, ktorý umožňuje viacerým vláknám
pristupovať k zdieľaným zdrojom bezpečne.

26
▪ Používa sa k zablokovaniu prístupu k zdieľaným zdrojom počas ich
používania iným vláknom.
4. Uviaznutie vlákna:
o Uviaznutie (deadlock) nastáva, keď dva alebo viac vlákien čakajú navzájom na
uvoľnenie zdrojov, ktoré drží jeden z nich, a žiadne z týchto vlákien nie je ochotné
uvoľniť zdroje, ktoré drží.
5. Užívateľské a démonické vlákna:
o Užívateľské vlákno:
▪ Sú to vlákna, ktoré majú rovnakú prioritu ako ostatné vlákna.
▪ JVM čaká na ich ukončenie pred ukončením programu.
o Démonické vlákno:
▪ Sú to vlákna, ktoré nebránia ukončeniu programu.
▪ Ak zostane jediným bežiacim vláknom v JVM, JVM ukončí svoj beh.
6. Skupiny vlákien:
o Skupiny vlákien sú kolekcie vlákien, ktoré sa zdieľajú spoločné vlastnosti, ako
napríklad priorita a kontrola.
7. Súvislosť s bezpečnosťou programu:
o Paralelné programovanie môže viesť k rôznym problémom spojeným s
bezpečnosťou, ako je súčasné prístupovanie k zdieľaným zdrojom, deadlocky a
úniky pamäte.

Výhody paralelného programovania:

• Zlepšená výkonnosť aplikácií s využitím viacjadrových procesorov.


• Možnosť paralelizácie úloh a zvýšenie efektivity výpočtov.
• Rýchlejšia odozva aplikácií a zvýšená škálovateľnosť.

Jednoduchý príklad použitia:

java
public class Main {
public static void main(String[] args) {
// Vytvorenie a spustenie nového vlákna pomocou anonymnej triedy
Thread thread = new Thread() {
public void run() {
System.out.println("Hello from thread");
}
};
thread.start();
}
}

4. Operačné systémy

ZI.4.1. Vytvorenie procesu a jeho životný cyklus. Pojem vlákno (thread). Preemptívny
multitasking. Plánovanie procesov a priorita. Spravovanie procesov operačným
systémom: tabuľka procesov. Hardvérová podpora pre správu procesov: prerušenie
a privilegovaný režim procesora.
Prostredníctvom procesu – interpretera príkazov môže používateľ spúšťať
programy/procesy, ktoré potrebuje. Aby proces mohol spustiť iný proces,

27
existujú v jadre operačných systémov nasledujúce služby, ktoré môžu byť
procesmi volané:
fork(), exec(), exit() (vytvorenie, vykonanie a skončenie procesu)
FORK(),
RODIČOVSKÝ
PROCES,
POTOMOK,
PID, GID
Služba fork() („vidlička“) vytvára z bežiaceho procesu druhý jemu identický
a samostatne bežiaci proces. Keď proces volaním požiada o túto systémovú
službu, dôjde ku vzniku kópie a od toho okamihu beží v systéme o jeden proces
viac, obr. 1.5. Proces ktorý o túto službu požiadal je bežiaci program
pozostávajúci z vykonávaných inštrukcií a po vykonaní fork() sám v princípe
nevie, či je rodičovským procesom ktorý obsluhu volal (parent process), alebo
potomkom (offspring, child), teda bežiacou kópiou. Túto informáciu sa dozvedá
z vonkajšieho okolia, podľa hodnoty vrátenej funkciou fork() do programu:

_ proces()
{
int pid;
pid=fork(); // pid oznamuje, kto som odteraz
if(pid==0) printf("som potomok s číslom %d", getpid());
else printf("som rodič a mám nového potomka %d", pid);
. . .
}
Rodič sa tu dozvie číslo procesu svojho potomka (PID), takže s ním môže
nadviazať komunikáciu, alebo ho kontrolovať, pretože pri volaní príslušných
požiadaviek na systémovú obsluhu oznámi toto PID.
Vytváraním procesov potomkov a ich potomkov vzniká v operačnom systéme
rodinná hierarchia navzájom príbuzných procesov, ktoré sa poznajú a operačný
systém im prideľuje určité právomoci vzájomne spolu komunikovať alebo na
seba vplývať. V operačnom systéme UNIX majú procesy okrem PID prideľované
aj skupinové identifikačné číslo GID (Group ID), takže procesy s rovnakým GID
sú systémom rozpoznávané že patria k sebe. Ak v operačnom systéme naraz
bežia procesy patriace viacerým používateľom, je zrejmé že budú patriť do
oddelených skupín.

Riadiaci bod procesu je adresa tej inštrukcie, ktorá sa v procese vykonáva


v danom okamihu. V doterajšom texte sme predpokladali, že proces má jeden
riadiaci bod, ktorý putuje po vykonávanej postupnosti inštrukcií. V rámci
jedného procesu však môže existovať viac riadiacich bodov. Znamená to, že
jeden proces môže byť rozparalelnený na viacero nezávisle vykonávaných
činností v rámci rovnakej postupnosti inštrukcií, pričom sa spoločne zdieľajú
údaje a prostredie v rámci jedného procesu. Takéto nezávislé paralelne bežiace

28
aktivity v rámci jedného procesu sa nazývajú vlákna (threads).
Pokiaľ konkrétny operačný systém umožňuje používanie vlákien, tak jeho služba
fork() má dve podoby: buď požiadame jadro systému, aby vytvorilo nový
proces, alebo aby sa vytvorilo nové vlákno. Ak je jadro systému požiadané, aby
vytvorilo nové vlákno, tak situácia na obr. 1.5 nie je sprevádzaná vytvorením
kópie procesu v pamäti. Zaznamenajú sa len informácie o vytvorení ďalšieho
riadiaceho bodu v rámci existujúceho rodičovského procesu.
Výhodou rozdelenia jednej úlohy na paralelne bežiace vlákna namiesto paralelne
bežiacich procesov je jednoduchá komunikácia a zdieľanie dát medzi vláknami,
pretože vlákna predstavujú jeden program, ktorý je v sebe vykonávaný na
viacerých miestach súčasne. Tiež aj vytvorenie nového procesu je pre jadro
operačného systému zložitejšia činnosť ako len vytvorenie nového vlákna.
Predovšetkým sa pri novom vlákne nemusí obsadiť pamäť počítača pre ďalší
samostatne existujúci proces.
1 Paralelné procesy 31
PRÍKLAD S TROMA
VLÁKNAMI
V nasledujúcom príklade sa proces postupne rozdelí na vlákna, reprezentované
funkciami main(), vlákno1(), vlákno2(). Proces vytvára na výstupe
postupnosť striedajúcich sa znakov A, B. Ak predpokladáme takú konvenciu, že
pri skončení hlavného vlákna main() sa automaticky nútene ukončia všetky
ostatné vlákna (teda celý proces), potom hlavné vlákno musí počkať na
dokončenie ostatných vlákien. To je realizované pomocou premenných stop1 a
stop2. Keďže všetky vlákna existujú v rámci jedného procesu, všetky majú
prístup k týmto premenným.

_ int stop1 = stop2 = 1;


void main(void) {
vytvor_vlákno(vlákno1());
vytvor_vlákno(vlákno2());
while(stop1==1); // čakám v cykle na skončenie vlákna
while(stop2==1);
return;
}
void vlákno1(void) { // obsahom činnosti vlákna je táto funkcia
for(int x=0;x<100;x++) printf("A");
stop1=0;
return;
}
void vlákno2(void) { // obsahom činnosti vlákna je táto funkcia
for(int x=0;x<100;x++) printf("B");
stop2=0;
return;
}
proces je spustený na určený časový interval, po ktorom je zvonku prerušený
a nasleduje spustenie ďalšieho procesu, a tak ďalej. Vykonávanie procesov je
takto objektívne prerušované v pravidelných časových intervaloch bez ohľadu na
ich vnútornú potrebu dokončiť niektorú časť svojej činnosti bez prerušenia.
Takáto organizácia paralelného vykonávania procesov sa nazýva preemptívny
multitasking. („preempcia“ = „pred vyčerpaním svojho plánu práce“).
Preemptívne plánovanie je teda organizácia vykonávania úloh, pri ktorej sa
vykonávané činnosti prerušujú a striedajú, zatiaľ čo nepreemptívne plánovanie je
prechod na ďalšiu úlohu vždy až po dokončení predošlej. Ako príklad možno
uviesť situáciu, keď viaceré procesy súbežne posielajú znaky textu, ktorý má byť
vytlačený na tlačiarni. Pri preemptívnom plánovaní sa na jednom papieri
zmiešajú texty od viacerých procesov, pri nepreemptívnom plánovaní bude
zabezpečené, že najprv vytlačí celý svoj text jeden proces a potom ďalší proces.
V praxi je to riešené zmenou organizácie – spustením ďalšieho obslužného
procesu, ktorý ako jediný má prístup na tlačiareň. Všetky procesy vybavujú svoje
požiadavky na tlač ukladaním súborov s textom do osobitného adresára,
kontrolovaného týmto obslužným procesom, ktorý tie súbory postupne otvára,
číta a po vytlačení vymaže.

29
V ďalšom texte budeme mať na mysli preemptívny multitasking, ako obvyklý
spôsob organizácie vykonávania procesov v operačných systémoch.

Operačné systémy používajúce organizáciu prepínania paralelných procesov na


jednom zdieľanom procesore sa tiež označujú ako systémy so zdieľaním času
(time sharing). Optimálne plánovanie poradia, v akom sa procesy opakovane
spúšťajú, by malo zabezpečiť napríklad nasledujúce ciele:
• dostatočnú interaktívnosť procesov (používateľ očakáva minimálne
oneskorenie pri komunikácii so systémom),
• odsunúť menej súrne úlohy na menej exponovaný čas (kontrola systému,
zálohovanie, posielanie dát a podobne),
• zabezpečiť procesy bežiace v reálnom čase proti výpadku toku dát
(neprerušovaná audio a video projekcia).
1 Paralelné procesy 27
KRITÉRIÁ
PLÁNOVANIA
Kritériá na efektívne plánovanie procesov sú:
• spravodlivosť (fairness) – aby sa pre každý proces poskytlo primerané
percento času vykonávania na procesore,
• efektívnosť (efficiency) – aby sa procesor nezdržiaval častým spúšťaním
procesu, čakajúceho na pomalý vstup,
• obrat (turnaround) – aby čas života každého procesu bol podľa možnosti
čo najkratší (najskoršie možné vykonanie úlohy),
• čas čakania (waiting time) – priemerný čas čakania procesu na časové
kvantum, v ktorom je spustený,
• priepustnosť (throughput) – aby sa za časovú jednotku dokončilo čo
najviac procesov,
• rýchla odozva (response time) – aby interaktívny používateľ nečakal
dlho na odozvu, keď komunikuje so svojimi procesmi.
METÓDY
PLÁNOVANIA
Okrem správcu úloh, ktorý spúšťa procesy, je v jadre operačného systému
aktívny plánovač (scheduler), ktorý určuje poradie spúšťania jednotlivých
procesov podľa zvolenej metódy plánovania (scheduling policy) tak, aby sa
dosiahli vyššie uvedené kritériá. Samozrejme splniť všetky uvedené kritériá
súčasne a optimálnym spôsobom nie je v praxi reálne, pričom algoritmus
plánovania má byť čo najrýchlejšie vykonateľný, aby zbytočne nezvyšoval
režijné náklady pri prepínaní procesov. Tu je uvedených len niekoľko
základných metód plánovania, ktoré možno rôznymi spôsobmi modifikovať
alebo kombinovať.
PLÁNOVANIE
PODĽA PORADIA
Základná metóda plánovania „ide pieseň dokola“ (round Robin) ja taká, keď
procesy sú usporiadané do zoznamu a sú spúšťané cyklicky podľa poradia v
zozname. Každý proces je periodicky spúšťaný na rovnaké časové kvantum.
PLÁNOVANIE
PODĽA PRIORITY,
STATICKÁ
A DYNAMICKÁ
PRIORITA
Predchádzajúca metóda je pre všetky procesy príliš demokratická a nerozlišuje
medzi procesmi, ktoré si v danej chvíli vyžadujú rýchlejšie spracovanie a
procesmi, ktoré môžu čakať dlhšie v rade. Pri metóde „plánovania podľa
priority“ (priority scheduling) možno použiť napríklad takýto jednoduchý
algoritmus:
Každý proces má pridelené číslo, určujúce jeho prioritu. Toto číslo sa po každom
časovom kvante, kedy proces bežal, znižuje a akonáhle je nižšie ako číslo
niektorého iného procesu, spustí sa ten čakajúci proces. K tomu je ešte určené
poradie vykonávania, ak v niektorom okamihu majú dva procesy toto číslo
rovnaké. Keď čísla pri všetkých procesoch dosiahnu nulu, nastavia sa na
pôvodné počiatočné hodnoty a pokračuje sa v ďalšom kole. Napríklad tri procesy

30
A, B, C sa s číslami určujúcimi ich prioritu A (5), B (3), C (2) vykonajú
v nasledujúcom poradí:
28 Základy operačných systémov
A: 5 4 3 2 - - - - - 1 (5 krát)
B: - - - - 3 2 1 - - - (3 krát)
C: - - - - - - - 2 1 - (2 krát)
Okrem pevne pridelenej statickej priority môže byť priorita dynamická, ktorá
sa nastavuje podľa momentálnej situácie. Napríklad ak vieme, že proces A zo
svojho vyhradeného času strávil určité percento nečinným čakaním na pomalú
komunikáciu (napríklad s pamäťovým diskom), jeho priorita sa v nasledujúcom
kole zníži. Takže ak sa dá v systéme napríklad stanoviť percento času, ktoré
proces v jemu vyhradenej dobe strávil užitočnou činnosťou, jeho číslo priority
pre nasledujúce kolo sa nastavuje s prihliadnutím na tento údaj, prípadne aj na
iné údaje o správaní sa procesu, ak ich je možné v systéme zisťovať.
Procesory používané v počítačoch sú bežne vybavené možnosťou prepnúť svoj
stav, režim činnosti. V princípe sa rozlišujú dva režimy činnosti – tzv.
privilegovaný režim, teda režim správcu systému (privileged mode, supervisor
mode) a neprivilegovaný režim určený pre procesy používateľa systému.
V neprivilegovanom režime nemožno na procesore vykonať niektoré typy
strojových inštrukcií, niektoré registre procesora sú inštrukciám neprístupné,
alebo fyzicky interpretované ako iné registre, niektoré adresy v pamäti nemožno
vygenerovať (vznikne signál chyby) a podobne. Procesory bývajú konštruované
na rozlíšenie aj viac ako dvoch rôznych režimov, avšak v operačných systémoch
sa bežne používajú len spomenuté dva režimy.
Zavedenie dvoch režimov procesora umožňuje rozdeliť bežiace programy a
paralelné procesy na dve množiny. Jedna je privilegovaná, ktorá má možnosť
ovplyvňovať celý systém a sú to procesy patriace operačnému systému. Druhá je
neprivilegovaná, čo sú procesy spúšťané používateľom operačného systému,
ktoré sú takto pod kontrolou a nemôžu zasahovať do činnosti privilegovaných
procesov, kým naopak je to možné. Privilegovaný režim procesora sa teda
označuje aj ako režim jadra, alebo režim správcu operačného systému (kernel
mode, superuser mode), neprivilegovaný sa označuje ako režim používateľa
(user mode). Proces alebo program bežiaci v režime jadra môže pristupovať do
registrov a do pamätí patriacich iným procesom, napríklad môže vykonať
prepnutie kontextu medzi procesmi a potom prepnúť režim procesora na
neprivilegovaný. Proces bežiaci v neprivilegovanom režime používateľa nemá
takéto právomoci, môže vykonávať len svoju izolovanú činnosť a ak
chce komunikovať s okolím, tak musí požiadať jadro operačného systému
o sprostredkovanie tejto komunikácie, pomocou inštrukcie prerušenia seba
samého.
18 Základy operačných systémov
Príklad využitia prepínania režimov pri striedavom spúšťaní procesov: hodiny
vyvolajú prerušenie procesu, teda skok procesora na adresu obslužnej procedúry,
ktorá má možnosť prepnúť režim procesora na privilegovaný a začne vykonávať
inštrukcie, ktorými odloží kontext práve bežiaceho procesu A na určené miesto
v pamäti a z iného miesta pamäti prečíta a nastaví kontext ďalšieho procesu B.
Potom je osobitnou inštrukciou prepnutý režim procesora na používateľský
a vykoná sa skok na adresu, na ktorej je inštrukcia patriaca spúšťanému procesu
B. Vtedy procesor začne vykonávať inštrukcie procesu B, pričom tento proces už
beží na procesore nastavenom do používateľského režimu a nemôže svojvoľne
prepnúť režim (cesta naspäť je zatvorená), aby získal prístup do kontextu iných
procesov a do priestoru operačného systému. Prepnutie režimu môže nastať len
nepriamo vonkajšou akciou, nie priamou činnosťou procesu vovnútri.
PLÁNOVAČ
PROCESOV
Privilegovaný a neprivilegovaný režim procesora umožňujú programátorovi
operačného systému organizovať a riadiť množinu paralelne bežiacich procesov
tak, že v privilegovanom režime sa pravidelne vykonáva riadiaci program,
ktorého úlohou je prepínanie kontextu používateľských procesov, ktoré bežia na

31
neprivilegovanej úrovni. Tento riadiaci program sa nazýva správca úloh (task
manager) a informácie o procesoch spravuje v tabuľke procesov (process
table). Každá položka tabuľky procesov obsahuje informácie o stave jedného
existujúceho používateľského procesu, predovšetkým údaje o kontexte procesu,
aby bolo možné každý prerušený proces znova spustiť.
Správca úloh je pravidelne automaticky spúšťaný pri prerušení spôsobenom
hodinami, pretože na adrese toho prerušenia sú umiestnené privilegované
inštrukcie na vykonanie akcie správcu úloh. Akciou je výber ďalšieho procesu na
spustenie a prepnutie kontextu na tento proces. Správca by mal byť v princípe na
procesoch nezávislý a nemal by skúmať, či prerušenie procesu bolo pre ten
proces v danom okamihu optimálne. Vykonáva sa teda preemptívny multitasking,
vynútené striedanie paralelne bežiacich procesov po časových kvantách,
ohraničených prerušením hodinami. Takéto kvantá majú na počítačoch veľkosť
rádovo 10 - 100 ms.

ZI.4.2. Komunikácia procesov: služby systému, signály, zdieľanie pamäti. Synchronizácia


procesov: kritická oblasť a korektné vzájomné vylúčenie. Lístkový algoritmus (ticket
algorithm). Atomické inštrukcie procesora. Zámka a semafor. Uviaznutie
a vyhladovanie procesov.
V predošlom texte bola opísaná nezávislá existencia paralelných procesov,
bežiacich v rámci jedného počítača. V rámci spoločného prostredia procesy
spravidla zdieľajú prístup k poskytovaným prostriedkom, takže je potrebná
organizácia postupného prideľovania prístupu jednotlivým žiadateľom. Takéto
zdieľané prostriedky (shared resources) majú z pohľadu programátora
procesov formu údajov, údajových štruktúr, alebo volaných služieb. Ďalej, aby
mohli procesy spolupracovať, musia mať možnosť komunikovať – odovzdávať si
informácie. To je možné realizovať buď priamo zdieľaním prostriedkov (údaje),
alebo osobitnými službami pre prenos údajov. Zdieľanie prostriedkov a
komunikácia si vyžadujú zaviesť do systému procesov synchronizáciu, pretože
procesy bežia nezávisle paralelne. Tá časť operačného systému, ktorá
zabezpečuje komunikáciu a synchronizáciu paralelne bežiacich procesov, sa
spravidla označuje skratkou IPC (Inter-Process Communication) a pozostáva z
množiny služieb, programov a údajových štruktúr, ktoré sú poskytované a
kontrolované jadrom operačného systému. Najznámejšie používané druhy
prostriedkov na zdieľanie údajov a komunikáciu medzi procesmi:
• zdieľanie súborov,
• zdieľanie pamäte,
• rúra,
• signály,
• posielanie správ.
ZDIEĽANIE
SÚBOROV
Jedným zo spôsobov prenosu informácií medzi procesmi je použitie spoločne
zdieľaného súboru (shared file), do ktorého jeden proces zapíše informácie
a druhý ich prečíta. Služby operačných systémov umožňujú, aby aj viaceré
procesy mohli zároveň pristupovať k jednému súboru (otvorenie, zápis a čítanie).
Operačný systém zabezpečuje kontrolu prístupových práv procesov k súboru a
34 Základy operačných systémov
tiež zabezpečuje konzistentnú manipuláciu so súborom (jeden proces nemôže
súbor vymazať, pokiaľ ho má druhý proces otvorený). Vecou programátora
procesov je však riešiť problém synchronizácie, aby jeho procesy pristupovali
k súboru v správnom očakávanom poradí. Príkladom z praxe je napríklad
vyriešenie systému na predaj cestovných lístkov s miestenkami, pri ktorom sú
miestenky rezervované a prideľované súbežne mnohými predavačmi v rovnakom
čase.
ZDIEĽANIE PAMÄTE Zdieľanie pamäte (memory sharing) je podobné ako zdieľanie súborov, avšak
prenos údajov je rýchlejší, pretože sa deje len v pracovnej pamäti počítača.
Zdieľanie sa spravidla z pohľadu programátora inicializuje tak, že služba
dynamickej alokácie pamäti malloc() je doplnená volaním požiadavky na
zdieľanie takto alokovaného priestoru v pamäti s určeným susedným procesom,

32
ktorý tiež musí vykonať podobnú činnosť, aby získal smerník na zdieľaný
priestor (viac k alokácii je uvedené v kapitole o správe pamäte).
RÚRA Rúra (pipe) je súbor, ktorý sa pri zápise a čítaní správa ako prenosový kanál na
údaje, tzv. dátovod. To znamená, že čítaním sa údaje z neho vyberajú, inak
povedané, vymazávajú. Pri zápise a čítaní je vkladanie a vyberanie znakov
organizované metódou FIFO (First in First out):
zápis znakov … štvrtý tretí druhý prvý... čítanie znakov
(viac k rúram je uvedené v kapitole o systéme súborov)
SIGNÁLY
V OPERAČNOM
SYSTÉME:
PODANIE,
DORUČENIE,
OBSLÚŽENIE,
KILL
Signál je prostriedok na prenos jednobitovej informácie medzi procesmi o tom,
že v operačnom systéme nastala určitá udalosť. Neslúži na prenos dát, ale na
organizáciu činnosti bežiacich procesov. Každý proces má na príjem signálov
vyhradenú vo svojej pamäti jednu premennú, ktorá sa používa ako bitové pole, v
ktorom stav každého bitu je informáciou o výskyte určitého konkrétne
dohovoreného signálu. Signálov je v operačných systémoch typicky 16, alebo 32,
alebo iný násobok čísla 2, pretože sa obvykle spravujú ako jedno pamäťové
slovo, v ktorom každý bit zodpovedá jednému signálu.
Zdrojmi signálov sú buď softvérové udalosti (napríklad problémy pri behu jadra
operačného systému, delenie nulou, preplnenie pamäte a podobne), alebo
hardvérové udalosti (odpoveď vstupno/výstupných zariadení, napríklad disku).
Zdrojom signálov môžu byť aj procesy, keď použijú volanie systémovej služby
s uvedením typu signálu (ktorý signál) a adresáta (ktorý proces, prípadne ktorá
skupina procesov).
ynchronizácia je zabezpečenie požiadavky časovo usporiadať udalosti.
Nasledujúce dva nezávisle bežiace procesy sú usporiadané v čase pomocou
telefonickej správy:
Jano Juro
1 raňajkujem A raňajkujem
2 pracujem B čakám na telefón
3 zavolám Jura C obedujem
4 obedujem
Správa telefónom usporiada udalosť 3 a udalosť B tak, že sa vykonajú sekvenčne
po sebe v určenom poradí. Telefón je tu prostriedkom na zabezpečenie
synchronizácie. Keďže iná synchronizácia tu nie je zabezpečená, nemožno
rozhodnúť kto raňajkuje skoršie, alebo či Jano pracuje až po Jurových raňajkách,
alebo pred nimi, alebo zároveň. Podobne nie je určené, ako to bude s obedom. To
znamená, že najprv raňajky (s prácou) a potom obedy obidvoch prebiehajú
súbežne, paralelne. Synchronizácia telefónom však umožňuje zabezpečiť, že
udalosť C je sekvenčne vykonaná po udalostiach 1,2.
Pokiaľ udalosti v uvedenom príklade chápeme ako inštrukcie vykonávané na
jednom procesore, ktorý je striedavo prideľovaný jednému alebo druhému
procesu, tak paralelné vykonávanie znamená, že nie je vopred stanovená
postupnosť, v akej sa procesor medzi procesmi prepína. Správca úloh a plánovač
vykonávajú svoju činnosť nezávisle na procesoch a neskúmajú, čo kedy procesy
robia a kedy by mali. Ak je potrebné procesy zosynchronizovať tak, aby udalosť
C nastala určite po udalosti 2, potom musia byť v systéme zavedené osobitné
prostriedky pre programátora, ktorými urobí požadovanú synchronizáciu.
ZDIEĽANIE
PROSTRIEDKOV,
SERIALIZÁCIA,
VZÁJOMNÉ
VYLÚČENIE,
KRITICKÁ OBLASŤ
Zmyslom synchronizácie paralelne bežiacich procesov v počítači je zdieľanie
spoločných prostriedkov (sharing the resources) pre vstup a výstup informácií.
V opačnom prípade by nebol dôvod procesy vzájomne synchronizovať a mohli
by bežať nezávisle na sebe. Zdieľanie sa deje zápisom a/alebo čítaním údajov na
spoločne prístupnom mieste (súbor s údajmi, adresa v pamäti, poštová schránka,

33
komunikačná linka a podobne). Vtedy sa musí zabezpečiť, aby boli operácie
zápisu a čítania usporiadané v čase v určenej sekvencii po sebe, teda
serializované podľa požiadaviek. Iným prípadom je, keď síce nezáleží na poradí
vykonania operácií, avšak záleží na vykonaní celej operácie bez prerušenia iným
procesom. Takáto požiadavka sa nazýva vzájomné vylúčenie (mutual exclusion).
V nasledujúcom príklade jeden paralelne bežiaci proces Producent vkladá
znaky do zásobníka a proces Konzument tieto znaky vyberá. Premenná x
odovzdáva informáciu, po ktoré miesto je zásobník naplnený znakmi. Udalosti
vyprázdnenia alebo preplnenia zásobníka tu neriešime. Napriek tomu môže
nastať problém pri paralelnom vykonávaní týchto procesov, keď Producent už
inkrementoval premennú , avšak ešte nestihol zapísať znak a medzitým
40 Základy operačných systémov

_
_
inkrementoval premennú x, avšak ešte nestihol zapísať znak a medzitým
Konzument už číta x-tý prvok poľa.
Producent Konzument
for(;;){ for(;;){
x++; znak = zásobník[x];
zásobník[x] = znak; x--;
} }
Je potrebné zabezpečiť požiadavku vzájomného vylúčenia, aby sa vykonanie tej
dvojice inštrukcií udialo v každom procese určite naraz, bez striedania druhým
procesom. Uvedená dvojica inštrukcií sa nazýva kritická oblasť (critical
section) a z pohľadu programátora je optimálne mať k dispozícii špeciálne
operácie, pomocou ktorých ohraničí kritické oblasti vo svojich programoch a
oznámi tak operačnému systému, na ktorom mieste proces vstupuje do kritickej
oblasti a kde ju opúšťa, vystupuje z nej:
Producent Konzument
for(;;){ for(;;){
vstup(oblasť_A); vstup(oblasť_A);
x++; znak = zásobník[x];
zásobník[x] = znak; x--;
výstup(oblasť_A); výstup(oblasť_A);
} }
Pomocou takýchto operácií vstup/výstup možno zabezpečiť aj vyššie uvedenú
požiadavku serializácie, keď programátor do kritickej oblasti vloží inštrukcie,
pomocou ktorých procesy vzájomne počítajú svoje aktuálne poradie a v prípade
potreby čakajú na seba v cykle.
PROSTRIEDKY NA
VZÁJOMNÉ
VYLÚČENIE
Operácie pre vstup do kritickej oblasti a výstup z nej možno technicky realizovať
rôznymi spôsobmi, buď softvérovo (vytvoria sa osobitné programy), alebo
hardvérovo (osobitné typy inštrukcií pre procesor). V ďalšom texte sú opísané
tieto základné riešenia:
• zákaz prerušenia (inštrukcia procesora),
• uzamknutie pomocou premenných (inštrukcia procesora),
• algoritmické prostriedky (softvérové riešenie).
ZÁKAZ
PRERUŠENIA
Jednoduchým riešením, ako zabrániť konkurenčným procesom vstúpiť do
kritickej oblasti, je využitie strojovej inštrukcie zákazu prerušenia procesora
(interrupt disable). Pokiaľ proces vykoná na túto inštrukciu, procesor prestane
reagovať na prerušenie a nemôže dôjsť k prepnutiu kontextu na iný proces.
Avšak akákoľvek chyba alebo negatívny zámer v bežiacom procese môže takto
neželane pozastaviť činnosť všetkých ostatných procesov natrvalo, alebo ich
vykonávanie veľmi obmedziť. Preto použitie tejto inštrukcie nemožno povoliť
pre procesy používateľa (procesor v režime používateľa ju nemôže vykonať).
Programy operačného systému ju môžu používať, pretože sú privilegované.

34
2 Komunikácia a synchronizácia 41
UZAMKNUTIE,
ZÁMKA

_
Uzamknutie pomocou premennej (locking) je použitie takej premennej zdieľanej
paralelne bežiacimi procesmi, ktorej stavom sa oznamuje povolenie alebo zákaz
vstupu do kritickej oblasti. Takáto premenná sa nazýva zámka (lock) a v princípe
môže nadobúdať dva rôzne logické stavy 0,1 (zamknuté, odomknuté). Ak proces
nájde zámku odomknutú (v stave 1), zamkne ju (nastaví 0) a môže vstúpiť do
kritickej oblasti. Ostatné procesy nájdu zámku v zamknutom stave a vedia, že
musia počkať. Pri opustení kritickej oblasti musí proces zámku odomknúť:
while(lock==0); // zámka je zamknutá, čakaj v cykle
lock=1; // vôjdi a zamkni za sebou
# // začiatok kritickej oblasti
#
# // koniec kritickej oblasti
lock=0; // odomkni zámku
Bohužiaľ synchronizačný problém nie je týmto vyriešený, iba je presunutý ďalej.
Procesy vykonávajú svoje inštrukcie paralelne, teda v nedefinovanom poradí.
Vtedy sa môže vyskytnúť taká postupnosť, pri ktorej zámka nebude fungovať.
Napríklad pri paralelnom behu procesov na jednom procesore môže dôjsť k
takémuto striedaniu:

_ if(lock==0) // proces1 vyhodnotí logický výraz (1)


prepnutie kontextu
if(lock==0) // proces2 vyhodnotí logický výraz (1)
lock=1; // proces2 nastaví zdieľanú premennú
prepnutie kontextu
lock=1; // proces1 tiež pokračuje, nastaví premennú
Problém sa vrátil – inštrukcie manipulujúce s premennou, ktorá má mať funkciu
zámky, sú samotné tiež kritickou oblasťou a je potrebné ich uzamknúť. Je teda
potrebné zabezpečiť, aby určité postupnosti operácií boli vykonávané bez
prerušenia. Takéto postupnosti sa nazývajú atomické operácie. Ak by bol celý
úsek programu {while(lock==0);lock=1;} atomickou operáciou, vtedy
by zámka fungovala spoľahlivo, nezávisle od prepínania procesov. Pre daný účel
obsahujú procesory špeciálne inštrukcie, ktoré súčasne vykonajú viac operácií.
42 Základy operačných systémov
ATOMICKÁ
OPERÁCIA,
INŠTRUKCIA TSL,
ROTUJÚCA ZÁMKA
Príkladom špeciálnej strojovej inštrukcie je inštrukcia TSL (Test & Set Lock).
Jej použitie je nasledovné:
TSL REG, LOCK // REG <- LOCK, LOCK = 1
CMP REG, #0 // je obsah REG nulový?
LOCK je premenná s funkciou zámky. Ak má hodnotu 1, tak je príslušná kritická
oblasť uzamknutá. Ak má hodnotu 0, tak nie je uzamknutá. Inštrukcia TSL je na
procesore vykonaná ako jedna atomická operácia, v rámci ktorej je najprv
prekopírovaný pôvodný obsah premennej LOCK do registra REG a potom sa do
LOCK zapíše hodnota 1. Inštrukcia CMP dodatočne zisťuje, či bola predošlá
hodnota LOCK rovná 1, alebo 0. Znamená to, že proces pomocou atomickej
inštrukcie TSL zamkne zámku a potom niekedy v ďalšej inštrukcii zisťuje, či
zamkol on, alebo už zamknuté bolo. Ak vykonajú túto inštrukciu naraz viaceré
procesy, tak pri akomkoľvek prepínaní medzi nimi vždy len jeden (prvý) sa
dozvie že zamkol on a ostatné procesy zistia, že neboli prvé.
Opustenie kritickej oblasti a odomknutie zámky si už nevyžaduje osobitnú
inštrukciu, postačuje jednoduchý zápis MOV LOCK,#0. Okrem uvedenej
inštrukcie TSL existujú v procesoroch aj iné inštrukcie, ktoré sú realizované ako
atomické operácie, napríklad: Fetch-and-add, Exchange, Compareand-
swap, Decrement. Už samotné názvy vyjadrujú, čo inštrukcie vykonajú
atomicky, pričom napríklad dekrementácia premennej pozostáva za normálnych

35
okolností z troch strojových inštrukcií: kopírovanie obsahu premennej do registra
procesora, odpočítanie jednotky a kopírovanie nazad. V podobe jednej atomickej
inštrukcie sú tieto tri kroky vykonané procesorom naraz ako jeden a nemožno ich
prerušiť inými krokmi iného procesu.
Procesor je teda možné prerušovať pri vykonávaní postupnosti jeho strojových
inštrukcií, nie však v rámci vykonávania obsahu jednej inštrukcie. Keď je k
dispozícii inštrukcia TSL, tak vstup do kritickej oblasti možno naprogramovať
bez problémov.
2 Komunikácia a synchronizácia 43

_
STOCHASTICKÁ
A REKURZÍVNA
ZÁMKA
ALGORITMUS NA
VSTUPENKY
Zostáva tu však jedna nevýhoda – procesy, ktoré čakajú v cykle na uvoľnenie
zámky sa vlastne neustále vykonávajú, správca úloh ich opakovane spúšťa, aj
keď vlastne nič nerobia, len vykonávajú naprázdno príkaz cyklu v ktorom zostali
čakať. Takéto čakanie v cykle sa nazýva rotujúca zámka (spin lock). Rotujúce
zámky je efektívne používať len v prípadoch, kde sa predpokladá skoré
uvoľnenie kritickej oblasti. Riešením je použitie volania služby sleep(), čím
proces požiada správcu úloh o svoje uspanie. Program optimálne pracujúcej
zámky má potom nasledujúci tvar:
while(1){ // po zobudení znova testujem zámku
TSL(reg,lock);
if(reg==1) { sleep(lock); continue; }
else break;
}
# // začiatok kritickej oblasti
#
# // koniec kritickej oblasti
lock=0; // odomkni zámku
wakeup(lock); // nech sa ďalší zobudí
V hornom obdĺžniku je procedúra pre vstup do kritickej oblasti, v dolnom
procedúra pre výstup z nej a programátor má už tieto procedúry v určitej forme
syntaxe a sémantiky hotové k dispozícii v knižnici funkcií. Volaním systémovej
služby sleep() oznamuje proces jadru operačného systému, že chce byť
pozastavený v súvislosti so zámkou lock. Volaním služby wakeup() oznamuje
proces jadru, aby zobudilo niektorý z tých procesov, ktoré boli v súvislosti s
touto zámkou uspané (ak také v danej chvíli existujú) a zobudený proces potom
pokračuje príkazom continue a vykoná ďalší testovací cyklus while().
Procedúra vstupu do kritickej oblasti môže byť modifikovaná tak, že proces
nebude uspaný natrvalo, ale na vopred náhodne zvolený čas, po ktorom
pokračuje a znova otestuje zámku. Takáto zámka je vlastne ako rotujúca, avšak
prerušovaná uspávaním. Takáto zámka sa nazýva stochastická.
Ak proces vstúpil do kritickej oblasti a zavolá procedúru, ktorá explicitne
požaduje vstup tiež do tej istej kritickej oblasti, je potrebné rozpoznať, že ide o
ten istý proces a umožniť vstup. Zámka, ktorá to rozpoznáva, sa nazýva
rekurzívna.
Jednoduchý algoritmus synchronizácie vstupu do kritickej oblasti založený na
princípe rozdávania vstupeniek (Ticket algorithm) umožňuje dodržať poradie, v
akom procesy požiadali o vstup. Princíp je používaný v bežnej realite: pri vstupe
do úradu si klient prevezme lístok s prideleným poradím a čaká, až sa zjaví
na tabuli rovnaké číslo, aké má na lístku (proces je vpustený do kritickej
oblasti). Po obslúžení (výstup z kritickej oblasti) sa číslo na tabuli inkrementuje
o jednotku a je pripustený ďalší klient.

Uviaznutie (deadlock) stolovania môže nastať v prípade, keď všetci naraz držia
v ruke každý jednu vidličku a naveky čakajú na druhú. Výskyt takejto situácie je
pravdepodobný, pretože prepínanie a plánovanie procesov beží v operačnom
systéme nezávisle od obsahu činnosti procesov. Triviálnym riešením tohoto
problému je prístup, označovaný ako takzvaný pštrosí algoritmus (ostrich

36
algorithm). Je to kalkulácia, že ak by bolo bezchybné riešenie príliš zložité alebo
nákladné, ak zároveň problém nastáva s malou pravdepodobnosťou a ak sú
následky relatívne zanedbateľné, tak je uvedené jednoduché riešenie vyhovujúce.
Riešenie možno modifikovať tak, že ak je po odobratí prvej vidličky druhá
vidlička ešte stále obsadená, potom prvú vidličku vrátime, počkáme náhodne
dlhú chvíľu a pokus začneme odznova. Zostane tu potom menej pravdepodobná
možnosť vyhladovania (starvation), keď budú všetci opakovane naraz dvíhať
a odkladať vidličky a pritom sa niektorý z účastníkov tak dlho nedostane k jedlu,
že to pre neho bude znamenať problém. Ďalšou úpravou na zníženie
pravdepodobnosti takýchto problémov je náhodné striedanie poradia pri
prepínaní procesora medzi týmito procesmi.

_
Jedno z možných riešení tohto problému pomocou semaforov je uvedené v
literatúre [2] a [3], pričom sa pripomína, že tiež nezaručuje korektnosť za
všetkých okolností. Riešenie používa pole semaforov a pole premenných, pričom
každá položka z týchto polí patrí jednému filozofovi. Okrem toho je použitý
jeden semafor mutex na výlučný prístup len jedného zároveň k manipulácii
s riadiacim poľom stav.
semafor sem[N]; // pole semaforov inicializovaných na 0
int stav[N]; // pole premenných inicializovaných na NEJEM
semafor mutex; // binárny semafor inicializovaný na 1
void zober_vidličky(int i) // i-ta osoba vezme obidve
{
down(mutex);
// nasledujúcu sekvenciu dvoch príkazov
// nemôžu vykonať súčasne dve alebo viac osôb
stav[i] = ŽIADAM; // chcem vidličky
testuj(i); // budem jesť?
up(mutex);
down(sem[i]);
// ak medzitým nebolo vykonané up() v procedúre
// testuj(), tak zaspím
}
void polož_vidličky(int i) // vráti obe vidličky
{
down(mutex);
// nasledujúcu sekvenciu troch príkazov
// nemôžu vykonať súčasne dve alebo viac osôb
stav[i] = NEJEM;
testuj(ľavý(i)); // ponúkni suseda vľavo
testuj(pravý(i)); // ponukni suseda vpravo
up(mutex);
}
2 Komunikácia a synchronizácia 51

_ void testuj(int i)// i-ta osoba zistí, či bude jesť


{
if(stav[i] == ŽIADAM && // ja chcem jesť
stav[ľavý(i)] != JEM && // ľavý kolega neje
stav[pravý(i)] != JEM) // pravý kolega neje -
{ stav[i] = JEM; up(sem[i]); }} // - teda ja budem
Ak testovacia funkcia overí, že i-ty filozof môže začať jesť, tak stav i-teho
semaforu je nastavený na 1 a procedúra zober_vidličky() sa dokončí bez
uspania, takže i-tý proces vstúpi do kritickej oblasti: filozof má obidve vidličky a
začne jesť. Semafor mutex zabezpečuje prístup vždy len jedného procesu k poľu
stavových premenných stav a k testovaniu situácie. Pri štúdiu tohoto príkladu je
potrebné si všímať umiestnenie operácií so semaforom sem[i].

ZI.4.3. Rozdelenie pamäťového priestoru pre proces: text, statické dáta, dynamické dáta,
zásobník (stack), systémová oblasť. Pamäť fyzická, virtuálna a odkladací priestor
(swap space). Stránkovanie, tabuľka stránok, výpadok stránky. MMU (Memory
Management Unit) a jeho funkcia.

37
Prideľovanie pamäte (memory allocation) je určovanie vhodného voľného
miesta v pamäti pre procesy a ich údaje. Pri vzniku procesu (operácia fork) je
potrebné prideliť preňho miesto. Pokiaľ proces potomka pokračuje vo
vykonávaní rovnakej postupnosti inštrukcií ako rodičovský proces, môžu
spoločne zdieľať tú oblasť pamäte, v ktorej sú inštrukcie uložené. Tiež môžu
3 Správa pamäte 65
spoločne zdieľať tú oblasť pamäte, v ktorej sú inštrukcie uložené. Tiež môžu
spoločne zdieľať tie údaje, ktoré len čítajú. Akonáhle dôjde ku zápisu, zdieľanie
je zrušené a pridelí sa ďalšie miesto v pamäti.
Ak nie je v primárnej pamäti dostatok priestoru pre všetky paralelne bežiace
procesy, tak operačný systém obsahuje automatickú službu, ktorá dočasne
odkladá práve nebežiace procesy (buď celé, alebo len časti ich priestoru) do
externej pamäte, zvyčajne do špeciálneho súboru na disku. Nazýva sa to
odkladací priestor (swap space) v externej pamäti.
STATICKÉ
PRIDEĽOVANIE

_
Pri statickom prideľovaní (statickej alokácii) je trvale pridelený pamäťový
priestor nemennej veľkosti. To je vyhovujúce pre uloženie množiny inštrukcií,
ktorá sa počas behu procesu nemení. Tiež sa nemení objem tých údajov, ktorých
veľkosť bola staticky nastavená programátorom:
int a,b,c;
int alfa[10000];
char text[80];
tu je bežiacemu procesu vopred staticky pridelená pamäť pre tri celé čísla, pre
pole o veľkosti 10000 celých čísiel a pre pole 80 znakov. Špecifikátory typov
int,char oznamujú, koľko adresových miest v pamäti zaberú jednotlivé typy
premenných. Pri kompilácii programu do strojových inštrukcií je manipulácia s
premennými transformovaná do manipulácie s pevne pridelenými adresami.
DYNAMICKÉ
PRIDEĽOVANIE,
SMERNÍK

_
Pri dynamickom prideľovaní (dynamickej alokácii) je pamäťový priestor
prideľovaný priebežne, podľa okamžitých potrieb bežiacich procesov. Napríklad
žiadosť o alokáciu pamäte pre pole o veľkosti 1000 čísiel v programovacom
jazyku C vyzerá nasledovne:
int *pole;
pole = (int *)malloc(1000 * sizeof(int));
if(pole == NULL) exit(); // nepodarilo sa
pole[999] = 2005; // používame premennú
free(pole); // uvoľníme túto pamäť
pole[999] = 2004; // chyba, teraz už nemôžeme
Premenná pole je typu smerník (ukazovateľ, pointer), pri vykonaní operácie
malloc() (memory allocation) je do nej zapísaná adresa začiatku prideleného
priestoru v pamäti. Pridelenie tu znamená, že na pozadí, do ktorého programátor
– používateľ priamo nevidí, sa urobil záznam o pridelení miesta veľkého tisíc
krát počet miest, potrebných pre uloženie čísla typu int. Pri každej ďalšej
požiadavke na alokáciu je toto miesto už považované za obsadené a hľadá sa iné
miesto. Pokiaľ už niet miesta s požadovanou veľkosťou, oznámi sa to vhodným
spôsobom, napríklad nastavením adresy na konštantu NULL, pretože žiadna
alokácia pre premenné programu nikdy takúto adresu nepoužíva. Pri dynamickej
alokácii je možné požiadať o zmenu veľkosti prideleného priestoru v pamäti
operáciou realloc(), alebo ho uvoľniť, prestať používať, čo sa oznamuje
operáciou free().
66 Základy operačných systémov
Treba si všimnúť, že pri používaní premenných typu smerník v programoch sa
nikdy nezisťuje, aký je ich konkrétny obsah počas vykonávania programu,
pretože ten závisí od aktuálnej situácie v okamihu pridelenia pamäte. S obsahom
smerníkov sa v programe pracuje len relatívnym spôsobom – možno k nim

38
pripočítavať veľkosť indexu pri pohybe v poli.
Operácia malloc() je pre programátora k dispozícii v knižnici funkcií a jej
obsahom je algoritmus, ktorý vyberá miesto v pamäťovom priestore, ktorý patrí
procesu a vedie záznam o pridelených úsekoch.
Pri vytvorení bežiaceho procesu je mu operačným systémom pridelený priestor v
pracovnej pamäti počítača s určenou počiatočnou veľkosťou, ktorá sa podľa
potreby môže na požiadanie dynamicky meniť. Na úrovni operačného systému je
alokácia pamäte jeho službou pre jadro a pre procesy, v Unixe sa nazýva brk().
Pri alokácii pamäte pre nový proces je potrebné túto časť pamäte vymazať,
pretože sú v nej údaje, zostávajúce po predošlých procesoch. Bola by to
bezpečnostná chyba, ak by používateľský proces vo svojom priestore pamäte
mohol čítať predchádzajúce informácie.

Pamäť používaná v počítači pozostáva z dvoch základných druhov: pracovná


pamäť (working memory, tiež nazývaná aj primárna primary, hlavná main,
alebo operačná) a vonkajšia pamäť (externá external, tiež sekundárna,
secondary).
Pracovná pamäť je tá, s ktorou je procesor prepojený a spolupracujúci
prostredníctvom adresovej a údajovej zbernice. Externá pamäť je označenie pre
všetky ostatné, trvale alebo dočasne k počítaču pripojené pamäťové zariadenia
(disky pevne zabudované alebo pripojiteľné, prenosné pamäťové čipy, miesta
v počítačovej sieti a podobne), ku ktorým procesor pristupuje nepriamo cez
určené vstupno/výstupné rozhranie.
V tejto kapitole sa zaoberáme len pracovnou pamäťou, v nasledujúcej kapitole o
systémoch súborov ide o externú pamäť. Pre úplnosť je potrebné uviesť, že
pamäťou sú aj registre procesora, ktoré sú „adresované“ svojimi názvami,
používanými v strojových inštrukciách. Okrem registrov procesora patrí do
klasifikácie pamäte aj systém vyrovnávacích pamätí (cache memory), ktorý je
určený na podporu efektívnej komunikácie na rôznych miestach v počítači a v
operačnom systéme. Vyrovnávacia pamäť je určená na dočasné uloženie
prenášaných údajov, aby sa vyrovnali rozdiely medzi potrebami komunikujúcich
strán, napríklad pri rôznej rýchlosti prenosu a spracovania údajov.
Každý proces, keď práve beží, musí byť prítomný v pracovnej pamäti, kde má
uložený svoj text (vykonávané inštrukcie programu) a svoje údaje (konštanty a
premenné). Paralelné vykonávanie viacerých procesov si vyžaduje rozdeliť
pracovnú pamäť počítača na úseky, pridelené jednotlivým procesom (obr. 1.1 v
prvej kapitole). Pri prepínaní činnosti medzi jednotlivými procesmi je potrebné
posunúť adresu generovanú procesorom tak, aby sa nachádzala v úseku práve
bežiaceho procesu. Pre tento účel je v procesoroch zabudovaná podpora vo forme
výpočtu adresy pomocou viacerých registrov (obr. 3.1):

VIRTUÁLNA PAMÄŤ
VIRTUÁLNA PAMÄŤ,
ODKLADACÍ
PRIESTOR
Šírka adresovej zbernice procesora určuje maximálnu použiteľnú adresu pre
bežiaci proces. Napríklad pri 64–bitovej adresovej zbernici je priestor adries od 0
do 264, pričom ale kapacita reálnej fyzickej pamäte v bežnom počítači je z
ekonomických a praktických dôvodov obmedzená. V praxi sa požíva také
riešenie, pri ktorom bežiaci proces môže adresovať väčší priestor v pamäti, než je
veľkosť fyzickej pracovnej pamäte počítača: tento väčší priestor sa pomocou
určitých technických prostriedkov simuluje, že akoby existoval. Je to metóda
takzvanej virtuálnej pamäte (virtual memory). Pri tejto metóde sa využíva
externá pamäť, kde sa do určeného odkladacieho priestoru (swap space)
automaticky premiestňujú tie úseky z pracovnej pamäte, ktoré sa momentálne
nepoužívajú a tak uvoľnujú miesto iným úsekom.
3 Správa pamäte 71
Kvôli zjednodušeniu organizácie sa virtuálna pamäť spravidla stránkuje. Vo
fyzickej pamäti sa nachádzajú momentálne používané stránky a v odkladacom
priestore (čo je obvykle súbor na disku) sa nachádzajú momentálne nepoužívané
stránky.
MMU, PREKLAD

39
ADRESY, TABUĽKA
STRÁNOK
Simulácia virtuálnej pamäte je realizovaná v procesoroch priamo na úrovni ich
hardvéru, predovšetkým kvôli rýchlosti vykonávania. Procesory majú osobitnú
hardvérovú časť, označovanú ako MMU (Memory Management Unit), ktorá
zabezpečuje takzvaný preklad virtuálnej adresy (virtual address) na fyzickú
adresu (physical address). Tam je uložená tzv. tabuľka stránok (page table),
obsahujúca informáciu o prítomnosti/neprítomnosti každej stránky vo fyzickej
pamäti alebo v odkladacom priestore. Princíp funkcie tabuľky stránok a schéma
činnosti MMU pri preklade virtuálnej adresy na fyzickú adresu je na obr. 3.4.

Na Obr. 3.4. je príklad automatického prekladu jedenásťbitovej adresy na


desaťbitovú, teda virtuálna pamäť tu má priestor adries dvakrát väčší, ako je
priestor skutočnej fyzickej pamäte. Stránkovanie používa stránky s veľkosťou 28
adries, takže dolných osem bitov adresy sa kopíruje bez zmeny na fyzickú
adresu. Horné tri bity adresy sú číslom stránky a podľa tabuľky sa konvertujú na
dva bity s hodnotou podľa aktuálnej polohy prideleného stránkového rámu vo
fyzickej pamäti. Ak je stránka v odkladacom priestore (na obrázku má uvedenú
poznámku „v súbore“), tak samozrejme je tam potom prítomná informácia, akú
má polohu. Ak je uvedené že stránka nejestvuje, znamená to, že proces ešte
nepoužil adresu smerujúcu do takejto stránky a preto nebolo potrebné vytvoriť o
nej záznam, taká stránka ešte nič neobsahuje.
72 Základy operačných systémov
Virtuálnu jedenásťbitovú adresu generuje proces bežiaci na procesore, fyzická
adresa ide potom po adresovej zbernici do fyzickej pamäti. Tabuľka stránok je
uložená v registroch MMU. Procesor má do tejto tabuľky prístup
prostredníctvom osobitných strojových inštrukcií (prepísanie jej obsahu).
Pri spracovaní virtuálnej adresy v MMU môžu nastať tieto štyri situácie:
a) virtuálna adresa ukazuje do takej stránky, ktorá je prítomná vo fyzickej
pamäti. Vtedy je virtuálna adresa preložená na fyzickú adresu a pamäť
na tejto adrese umožní zapísať alebo prečítať údaj, situácia uvedená
podľa Obr. 3.4;
b) virtuálna adresa ukazuje do stránky, odloženej v odkladacom priestore.
Vtedy sa automaticky vyvolá na procesore prerušenie, po ktorom sa
spustí procedúra, ktorá vykoná výmenu stránky (swapping the page)
medzi odkladacím priestorom a fyzickou pamäťou, zmení záznam v

40
tabuľke stránok v MMU a prerušený proces je znovu spustený
zopakovaním jeho poslednej vykonávanej inštrukcie. Potom je všetko v
poriadku, potrebná stránka sa už nachádza vo fyzickej pamäti;
c) virtuálna adresa ukazuje do takej stránky, kam ešte neukazovala a v
tabuľke stránok nie je o tejto stránke záznam. Vtedy sa tiež vyvolá
prerušenie aby sa v tabuľke stránok vytvoril nový záznam a vo fyzickej
pamäti pridelilo miesto pre novú stránku;
d) virtuálna adresa ukazuje do takej stránky, kde nemá bežiaci proces
povolený prístup a vyvolá sa prerušenie. Ak je adresa mimo rozsahu
jemu povolenej veľkosti virtuálnej pamäti, potom pri obsluhe prerušenia
môže operačný systém rozšíriť povolený priestor procesu. Tiež sú
situácie, keď virtuálna adresa ukazuje do existujúcej stránky, avšak
proces chce vykonať nepovolenú operáciu, napríklad vykonať zápis na
takú adresu, kde má povolené len čítanie a vtedy je rozpoznaná chyba.
Ku každej stránke sa pridáva informácia o prístupových právach a
pravidlách použitia (read only a podobne).
Situácie opísané v bodoch b), c), d) nazývame výpadok stránky (page fault),
pričom aj keď b) a c) nie sú chybným stavom, ošetrovanie výpadkov stránok
určite spomaľuje činnosť procesov a preto je v operačných systémoch
realizované čo najúspornejším spôsobom.
Každý bežiaci proces má vlastnú nezávislú virtuálnu pamäť a vlastnú tabuľku
stránok. Pri prepnutí medzi procesmi je potrebné odložiť tabuľku stránok
predchádzajúceho procesu a vložiť do MMU tabuľku stránok ďalšieho procesu.
Vo fyzickej pamäti sa potom v rozličných stránkových rámoch nachádzajú
stránky patriace rozličným procesom, pričom aktuálny obsah MMU ukazuje len
na tie stránkové rámy, kde sú stránky práve bežiaceho procesu.
Veľmi veľká tabuľka stránok môže byť hierarchicky organizovaná ako
viacúrovňová tabuľka stránok (multilevel page table), keď tabuľka stránok
odkazuje na podtabuľku stránok a až hierarchicky posledná odkazovaná tabuľka
obsahuje samotnú informáciu o stránke.

ZI.4.4. Súbor ako dáta typu prúd (stream), atribúty súboru. Tabuľka otvorených súborov
a presmerovanie zápisu do súboru, rúra. Súborový systém založený na i-uzloch.
Súborový systém typu FAT a modernejšie súborové systémy. Žurnálový súborový
systém a kontrola ukončenia transakcií. RAID. Súborový systém ako sieťová služba.
Novší systém súborov NTFS (Windows NT FileSystem)
organizuje súbor ako množinu údajových reťazcov (streams) a existujú aj iné
metódy
Atribúty súboru sú
všetky sprievodné informácie týkajúce sa súboru, počnúc prístupovými právami
(napríklad je povolené len čítanie, len pre určených používateľov a podobne)
a končiac napríklad grafickou ikonou, ktorou je súbor označovaný na obrazovke
Rúra (pipe) je súbor, ktorého funkciou je prenášať údaje medzi procesmi
v podobe frontu FIFO (First In First Out). Jeden proces do takéhoto súboru
zapisuje a druhý z neho číta, pričom prečítané sa automaticky vymazáva. Rúra sa
vytvára volaním služby operačného systému, avšak na rozdiel od regulárneho
súboru nedostanú procesy jeden deskriptor súboru (číslo ukazujúce na súbor), ale
dva, kde jeden je pre vstup do rúry a druhý pre výstup. Tieto deskriptory si
potom komunikujúce procesy rozdelia medzi sebou, každý používa iný.

Informácia o polohe súboru na logickom disku môže byť realizovaná rôznymi


spôsobmi. Klasický operačný systém Unix ukladá informácie o umiestnení
súborov na logickom disku pomocou takzvaných i-uzlov (index, i-node).

Na Obr.4.4 je schéma vzťahov medzi blokmi, ktoré patria jednému súboru.


Vľavo hore je prvý blok, v ktorom je uložený i-uzol súboru. V tomto bloku sú
uložené čísla ďalších blokov, ktoré buď sú blokmi obsahujúcimi súbor, alebo
blokmi obsahujúcimi čísla na ďalšie bloky. Číslo bloku, v ktorom je časť obsahu
súboru, sa nazýva priamy (direct) index, číslo bloku obsahujúceho indexy sa

41
nazýva nepriamy (indirect) index. Blok obsahujúci indexy sa nazýva nepriamy
blok. Uvedená schéma stromu priamych a nepriamych (jednoducho alebo
viacnásobne nepriamych) indexov umožňuje kaskádovite adresovať aj veľmi
veľké množiny blokov pre uloženie veľkého súboru. Keďže často existujú aj
malé súbory, ktoré obsadzujú malý počet blokov, tak i-uzol obsahuje aj priame
indexy na bloky, aby nemuseli vzniknúť nadbytočné nepriame bloky.
Pri vytváraní súboru postupným zapisovaním zo strany používateľa vykonáva
systém súborov algoritmus, ktorý postupne zapisuje do voľných blokov na
logickom disku údaje a vytvára uvedenú schému na Obr. 4.4. Táto schéma má
vždy v rámci jedného systému súborov jeden konkrétne určený tvar (koľko akých
nepriamych indexov sa použije), podľa ktorého sa jednotne pristupuje ku
všetkým súborom. Tu uvedená schéma je len všeobecný príklad. I-uzol môže, ale
nemusí mať v praxi veľkosť jedného bloku a môže obsahovať aj atribúty súboru.

FAT (File Allocation Table), ktorý sprevádzal klasický


operačný systém MS-DOS
a zatiaľ prežíva v niektorých zdedených systémoch (USB
kľúče)
RAID - Redundant Array of Independent Disks
namiesto jedného pamäťového disku/čipu môžeme
pracovať s celým poľom
takýchto zariadení, aby sme buď rozšírili kapacitu, alebo
zvýšili rýchlosť prístupu,

42
alebo hlavne aby sme dosiahli spoľahlivé zálohovanie a
obnovu dát pri havárii
jednotlivého zariadenia, alebo tiež aj aby sme vôbec
mohli detekovať chybné dáta
pre zvýšenie rýchlosti prístupu: posielanie častí súboru
strips postupne viacerým
diskom, nečakáme na jeden kým spracuje požiadavku,
tento spôsob je RAID 0
pre zvýšenie spoľahlivosti zrkadlíme (mirror) zapísaný
obsah na viacerých diskoch,
alebo obsah inak usporiadame pre detekciu a opravu
chyby
na realizáciu RAID je potrebné mať v počítači radič
diskov, ktorý toto umožňuje,
pričom veľké profesionálne diskové polia počítajú s
nonstop prevádzkou, kde
chybný disk je oznámený a za jazdy ho možno fyzicky
vymeniť a nový zaradený disk
sa automaticky začne napĺňať obsahom a stáva sa ďalšou
novou zálohou

43
Žurnálový systém súborov (Journal file
system)
obsahuje komponent “log file” ktorý funguje ako
žurnálový súbor, kam sa zapisujú akcie
so súbormi a až potom sú akcie vykonávané na reálnom
pamäťovom médiu
committed changes - vykonané zmeny
not yet committed changes - zmeny zaznamenané do
logu, ešte nevykonané,
po páde systému sa najprv urobí upratovanie čítaním
logu, to zrýchľuje reštart
nevýhody:
- nutnosť "zrekonštruovať" prostredníctvom logu každý
súbor ktorý chceme čítať
(data retrieval) je nutná dostatočne veľká CACHE, kde sa
poznamenáva štruktúra i-uzlov

44
a podobné veci, aby nebolo nutné stále prečítavať log
- nie je možné dostatočne dobre odmerať zostávajúce
voľné miesto na disku, ťažko sa
definuje
- log súbor je potrebné čistiť od starých neaktuálnych
záznamov,
je to tzv. garbage collection process, resp. cleaner process
záznam akcií do logu:
a) metadáta súborov a aj ich dáta(obsahy) (physical
journal)
b) len metadáta - výkon sa zvýši, ale aj riziko zmätkov
(logical journal)
príklad postupnosti akcií pri vymazaní súboru -
opakujeme predošlé obrázky:
1. remove dir entry
2. release i-node to the pool of free inodes
3. return used blocks of file to the free pool of blocks
čo sa stane, ak systém havaruje pri niektorom kroku?
následne fsck (file system check) - čítaním
žurnálového súboru ušetríme čas
žurnálový súbor máva záznamy s kontrolnými súčtami
(ext4)
externý žurnálový súbor - na inom zariadení
základná otázka: vykonáva sa zápis jednotlivých blokov
súboru atomicky?
ZI.4.5. Komunikácia používateľa s operačným systémom prostredníctvom terminálu.
Terminál a skriptové programovanie. Textové filtre awk a grep. Operačné systémy
reálneho času (Real Time Operating Systems).

45
Komunikácia používateľa s operačným systémom prostredníctvom terminálu je základným
spôsobom interakcie s počítačom. Terminál, tiež nazývaný príkazový riadok alebo konzola,
poskytuje užívateľovi prostredie na zadávanie príkazov a manipuláciu súborov a adresárov
pomocou textového rozhrania.

V tomto prostredí užívateľ pracuje s textovými príkazmi, ktoré systému poskytujú inštrukcie na
vykonanie určitých úloh. Príkazy môžu zahŕňať manipuláciu súborov (ako napríklad kopírovanie,
presúvanie alebo vymazávanie), správu procesov (ako spúšťanie, zastavovanie alebo sledovanie
behu programov) alebo nastavenie rôznych systémových parametrov.

Komunikácia s operačným systémom cez terminál zvyčajne vyžaduje znalosť príkazového jazyka
(napríklad Bash pre systémy založené na Unixe, alebo Command Prompt pre systémy Windows).
Užívateľ zadáva príkazy do terminálu, kde sú spracované a vykonané systémom. Výstup z
príkazov sa zobrazuje priamo v termináli, čo umožňuje užívateľovi okamžite vidieť výsledky
svojich akcií.

Komunikácia s operačným systémom prostredníctvom terminálu môže byť veľmi efektívna a


výkonná, najmä pre pokročilých užívateľov a vývojárov, ktorí preferujú textové rozhranie a majú
rádi možnosť presnej kontroly nad svojím systémom. Terminál tiež poskytuje možnosť
automatizácie úloh pomocou skriptovania, čo umožňuje vytváranie sady príkazov, ktoré sa môžu
vykonávať automaticky podľa definovaných podmienok.

Celkovo je komunikácia s operačným systémom cez terminál dôležitou súčasťou práce s


počítačom a poskytuje užívateľovi mocné nástroje na manipuláciu a riadenie systému
prostredníctvom jednoduchého textového rozhrania.

Tento súbor sa nazýva skriptový súbor (script file) a je to vlastne program


činnosti pre interpreter príkazov, ktorý ho po riadkoch číta a vykonáva
(interpretuje ako príkazy) bez účasti používateľa. Interpretery príkazov
v operačných systémoch dokážu rozpoznávať a interpretovať v skriptových
súboroch aj niektoré prvky programovacieho jazyka (napríklad príkazy cyklu,
deklarácie premenných a podobne), čo umožňuje používateľom naprogramovať
rôzne automatické činnosti pri správe a používaní operačného systému.
Interpreter príkazov je bežiaci proces, takže často je používateľom operačných
systémov umožnené, aby si sami zvolili niektorý z rôznych existujúcich druhov
interpretera, ktorý chcú spustiť a používať na prácu a komunikáciu so systémom.
Názvy niektorých známych voliteľných interpreterov príkazov pre operačný
systém UNIX: csh (C-shell), bash (Bourne-again shell), ksh (Korn shell).

Textové filtre awk a grep:

Grep:
Grep je príkazový riadok používaný na vyhľadávanie reťazcov v textových súboroch
alebo výstupe iných príkazov.
Jeho syntax je jednoduchá: grep pattern file, kde "pattern" je reťazec, ktorý sa má
vyhľadať, a "file" je súbor, v ktorom sa má vyhľadávať.

46
Grep umožňuje použitie rôznych možností na upresnenie vyhľadávania, ako napríklad
hľadanie iba celých slov, ignorovanie veľkosti písmen alebo výpis počtu výskytov.

Awk:
Awk je výkonný programovací jazyk a nástroj na manipuláciu s textom a dátami v
textových súboroch.
Jeho syntax sa skladá z pravidla a akcií: awk 'pattern { action }' file, kde "pattern"
určuje, kedy sa má vykonať akcia, a "action" určuje, čo sa má vykonať.
Awk má bohatú sadu funkcií na manipuláciu s textom, ako sú rozdelenie riadkov na
polia, aritmetické operácie a formátovanie výstupu.

Operačné systémy reálneho času (RTOS):

Operačné systémy reálneho času sú špeciálne typy operačných systémov, ktoré sú


navrhnuté tak, aby poskytovali garantované časové odozvy pre kritické aplikácie. Tu je
niekoľko kľúčových bodov:

Determinizmus:
RTOS sa musí správať deterministicky, čo znamená, že časy odozvy musia byť
konzistentné a známe.

Riadne plánovanie:
RTOS používajú špeciálne plánovacie algoritmy, ktoré zabezpečujú, že kritické úlohy
budú vykonávané včas a bez prerušenia.

Nízka latencia:
Jednou z kľúčových vlastností RTOS je nízka latencia, čo znamená, že systém musí
reagovať na udalosti v minimálnom čase.

Hard a soft real-time:


Existujú RTOS, ktoré poskytujú "hard" real-time garantie, kde je nemožné tolerovať
oneskorenia, a "soft" real-time, kde sú oneskorenia tolerované do určitej miery.

Príklady:

47
Niektoré príklady RTOS zahŕňajú VxWorks, FreeRTOS, QNX a RTLinux.

Tieto systémy sú nevyhnutné pre aplikácie, kde časové obmedzenia sú kľúčové, ako sú
letecké riadenie, lekárske zariadenia, riadenie priemyselných procesov a ďalšie kritické
systémy. Ich spoľahlivosť a garancie časovej správnosti sú základnými vlastnosťami, ktoré
ich odlišujú od bežných operačných systémov.

II. Predmet „Aplikácie informatiky“


1. Webové technológie a dizajn

AI.1.1. Dizajn web stránok (funkčný dizajn, logická štruktúra, navigácia, grafický dizajn).
Grafické formáty súborov pre web (rastrové a vektorové).

Vo svete webu existuje obrovský rozdiel medzi estetickým príjemnou stránkou a vytvorením
stránky, ktorá bude funkčná a bude mať najlepšia šancu na úspech.
Ľudia často navrhujú svoje stránky tak, akoby boli umeleckým dielom, má veľa krásnej grafiky,
animácií, vizuálu efekty atď. Aj keď všetky tieto veci môžu určite vytvoriť krásnu stránku,
sú to tak tiež jedna z najväčších prekážok úspechu firmy. Na internete sú dve kľúčové veci,
ktoré musí mať webmaster vždy na pamäti: pri navrhovaní stránky; návštevníka a
vyhľadávacích nástrojov. Ak musí návštevník čakať je príliš dlhá na to, aby sa stránka
mohla stiahnuť, alebo vyhľadávací modul nedokáže web správne indexovať, nezáleží na
tom, aký pekný a informatívny je web, nebude generovať biznis potrebný na prežitie, tým
menej excelovať. Pozrime sa na niekoľko najbežnejších vecí, ktoré by ste si mali uvedomiť.
Veľkosť stránky
Odhaduje sa, že ak sa stránka nenačíta do 8 - 10 sekúnd, stratíte 1/3 z vašich návštevníkov. To
znamená, že stránka by nemala mať viac ako 30 kilobajtov celkom vrátane textu, grafiky,
html, JavaScriptu atď.
Logo, pozadie a ďalšie obrázky sú vynikajúce, ale vaše stránky sa načítavajú príliš pomaly,
spôsobujú viac škody ako úžitku. Celkom úprimne, vaši návštevníci sa nestarajú o vaše
logo, grafiku, pozadie atď. sú tu z jedného dôvodu a iba z jedného dôvodu ... aby zistili, čo
im môžete ponúknuť.
Ak musíte použiť grafiku, udržujte ich veľkosť súboru čo najmenšiu optimalizáciou súboru grafiku
v maximálnej možnej miere a udržiavať malú veľkosť obrázka. Splash Pages / Flash Intros
Sú priepasťou internetu. Ak máte úvodnú stránku, zostavenú z veľkej grafiky alebo pekného
úvodného videa, znižujete svoje šance. Dizajnéri firmy často radi prehovoria svojich
klientov na tieto stránky, pretože sú kreatívni (ach ... a účtovať viac).
Pravdou je, že vytvorenie jednej z týchto stránok ako vstupnej cesty na vaše stránky je jedna z
najhorších vecí, ktoré môžete urobiť. Návštevníci nenávidia úvodné stránky, pretože ich
stiahnutie často trvá príliš dlho a neposkytnú návštevníkovi nič. Pamätajte, že návštevníci
sú tu z jedného dôvodu, aby zistili, čo ponúkate a získali informácie, ktoré hľadajú.
Obrovská grafika nezodpovedá ktorúkoľvek z ich otázok, iba zdržuje ich hľadanie. Flash
úvod je takmer rovnaký, aj keď sa spravidla stiahne veľmi rýchlo, stále zdržuje návštevníka
pri hľadaní toho, čo hľadá. Jedným z najväčších pravidiel, ktoré by ste si mali pamätať, je
udržiavať počet kliknutí, ktoré musí návštevník urobiť, aby sa dostal ku kvalitným
informáciám na nevyhnutné minimum. S každým následným kliknutím, ktoré musí
návštevník urobí, existuje väčšia šanca, že sa vzdá a pôjde niekam inam.

48
Vidíme správy z rôznych webov, ktoré používali (všimnite si minulý čas) flash úvodné stránky.
Ťažko prekvapujúca je skutočnosť, že v priemere je to ohromných 20 - 30% návštevníkov
opustilo stránku po vstupe IBA na domovskú stránku (kde úvodná stránka alebo flash).
Druhým dôvodom, prečo sa od nich držať, je to, že majú obrovský vplyv na vyhľadávače.
Vyhľadávacie nástroje môžu indexovať iba text, veľká grafika alebo flash úvod nevie
poskytnúť vyhľadávačom čokoľvek na indexovanie. Výsledkom je domovská stránka,
ktorá je často stránka s najvyšším stránkou, nemá takmer žiadnu šancu na dobrý celkový
ranking. V navyše v závislosti na tom, ako odkazy z grafiky alebo odkazované na interné
stránky, vyuhlkadávače pravdepodobne nebudú schopné sledovať odkazy na zvyšné
stránky na webe, čo znamená, že váš web nebude správne namapovaný. Ak to zhrnieme,
drž sa ďalej od úvodných obrazoviek a flash úvodov. Dajte návštevníkovi nejaký skutočný
text na čítanie a vyhladávačom niečo na indexovanie. Udržanie vašich návštevníkov sa
zvýši, rovnako ako aj prevádzka vášho vyhľadávacieho nástroja. Hypertextové odkazy
Hypertextové odkazy sú základom pri jednaní s vyhľadávacími nástrojmi. Sú spôsobom, ktorým
vyhľadávacie nástroje vyhľadajú všetky stránky na webe a indexujú ich. Ak internetové
prehľadávače nemôže nasledovať hypertextový odkaz, nebude môcť indexovať cieľovú
stránku, čo znamená, že časti vášho webu môžu byť pre internetové prehľadávače
neviditeľné.
Na svojom webe používajte iba skutočné hypertextové odkazy. Existuje veľa stránok, ktoré
používajú namiesto skutočných hypertextových odkazov niektoré odkazy v jazyku
JavaScript. Zatiaľ čo tieto budú fungovať pre väčšinu prehľadávačov (asi 90%), nedávajú
pre internetové prehľadávače čo sledovať.
Skutočný hypertextový odkaz by mal povedať: href = ”URL_of_page_here.html”
Akýkoľvek iný typ odkazu nebude pravdepodobne sledovaný správne. Body Text
Ako sme už spomenuli, internetové prehľadávače môžu indexovať iba text. Príliš často sa
stretávame s webmi, ktoré používajú grafické textové reprezentácie alebo grafiku, ktorá ich
obsahuje dôležitý text. Robte všetko pre to, aby ste sa od toho držali čo najďalej. Ak tvoje
najdôležitejšie slová sú v grafickom formáte, internetové prehliadača potrebujú správne
indexovanie a hodnotenie vašich stránok. Prehliadače tiež chcú vidieť kontinuitu v štruktúre
stránky. Keď správca webu používa veľa tabuliek, rámov a iných dizajnových prvkov,
rozdeľuje tok súboru text na stránke a môže to mať negatívny vplyv na vaše hodnotenie.
Kedykoľvek je to možné, použite čo najmenej tabuliek. Ak používate tabuľky, snažte sa nerozdeliť
odsek alebo vetu do samostatných buniek v tabuľke, zničí sa tak plynulosť textu a slová sa
budú považovať za nesúvisiace fragmenty namiesto časti tej istej súvislej vety / odseku. je
dôležité si uvedomiť, že internetové prehľadávače nevidia stránky rovnako ako návštevník
robí. Zatiaľ čo návštevník vidí stránku správne zobrazenú a všetok plynulý text pekne,
prehľadávač vidí za stránkou, ktorá sa rozpadne, iba HTML kód plynulosť textu. Všeobecne
platí, že čím je stránka jednoduchšia a HTML za ňou, tým bude lepšie hodnotená.
Zhrnutie
Vždy si uvedomte, aký dopad bude mať konkrétny dizajnový prvok na vašich návštevníkov aj na
schopnosť internetových prehliadačov správne indexovať vaše stránky.
Pochopením toho, ako prehliadače pracujú, čo hľadajú, čo môžu a nemôžu, výrazne zvýšite svoje
šance na úspešné dosiahnutie poradia, aby bolo vaše podnikanie úspešné. Navigácia
Navigácia na webe je dôležitá pre úspešnosť zážitku návštevníkov vášho webu na váš web.
Navigačný systém webu je ako cestovná mapa k rôznym oblastiam a informáciám
obsiahnutým na webovej stránke. Používanie konzistentnej navigačnej schémy zo stránky
na stránku pomáha návštevníkovi webu naučiť sa váš navigačný systém webových stránok.
Typy navigácie na webových stránkach
Existujú rôzne typy navigácie na webových stránkach: Hierarchická navigácia na webových
stránkach
Štruktúra navigácie na webových stránkach je zostavená od všeobecnej po konkrétnu.

49
Poskytuje to jasnú a jednoduchú cestu ku všetkým webovým stránkam odkiaľkoľvek na webovú
stránku. Globálna navigácia na webových stránkach
Globálna navigácia na webových stránkach zobrazuje sekcie / stránky na najvyššej úrovni webu.
Je k dispozícii na každej stránke a obsahuje zoznam hlavných sekcií / stránok s obsahom webovú
stránku.
Navigácia na miestnej webovej stránke
Miestna navigácia umožňuje prepojenie textu vašich webových stránok s inými stránkami v rámci
webovej stránky.
Štýly navigácie na webových stránkach
Štýly navigácie na webe odkazujú na spôsob zobrazenia navigačného systému. Textové odkazy
Textové odkazy sú slová (text), ktoré sú obklopené ukotvenou sadou značiek pre vytvorenie textu,
na ktorý sa dá kliknúť, ktorý privedie návštevníka na inú webovú stránku v rámci vášho
webu, dokument na stiahnutie z vášho webu alebo na iné webové stránky na internete.
Breadcrumbs navigačná lišta
Navigácia v navigácii zobrazuje návštevníkovi webu cestu na stránku, na ktorej sa práve nachádza.
Navigačná lišta
Navigačná lišta je kolekcia zoskupených navigačných odkazov na webové stránky. Navigačná lišta
môže byť vodorovná alebo zvislá. Navigácia na tabulátore
Navigácia na tabulátore je miesto, kde sa odkazy na navigáciu na webe zobrazujú ako podobné
tabulátory ty, ktoré používate v zakladačoch na rozdelenie obsahu do sekcií. Sitemap
Sitemap je stránka na vašom webe, ktorá obsahuje zoznam všetkých sekcií a webových stránok
stránky (ak ich nemáte príliš veľa), ktoré obsahuje web. Toto sa líši od súborov Sitemap
Google a Sitemap Yahoo. Tradičný súbor Sitemap poskytuje navigáciu pre návštevníkov
vašich webových stránok - a
kratšia cesta k rôznym oblastiam webu pre tých, ktorí to vedia presne čo hľadajú, a prostriedok,
pomocou ktorého môžu vyhľadávače nájsť všetky stránky na vašom webe.
Rozbaľovacia ponuka
Rozbaľovacia ponuka je štýl navigácie webových stránok, kde je iná ponuka je zobrazená, keď
návštevník umiestni myš nad položku ponuky. Rozbaľovacia ponuka ponuka môže
obsahovať rozbaľovaciu ponuku (pozri nasledujúcu položku). Systém rozbaľovacej ponuky
môže vytvárať problémy s prístupnosťou a problém ako pokiaľ vyhľadávače nie sú schopné
čítať odkazy v ponuke, ale ak sú správne zostavené, je možné ich prekonať.
Flyout - Rozbaľovacie menu
Flyout - Rozbaľovacie menu je zostavené podobne ako dropdown rozbaľovacia ponuka. Keď
návštevník umiestni myš nad odkaz, ďalšie menu sa zobrazí, zvyčajne na vpravo od odkazu,
kde je umiestnená myš.
Flyout rozbaľovacie ponuky čelia rovnakým výzvam ako dropdown rozbaľovacie ponuky, ale ak
sú zostavené správne, môžu byť vyhľadávacími nástrojmi prístupné a čitateľné. Named
Anchors
Named Anchors sú typom odkazov, ktoré vás dovedú priamo na miesto na webe aktuálnej stránke
alebo na inej webovej stránke.
Používanie navigácie na webových stránkach
Aby bol webový navigačný systém efektívny, potrebuje:
Byť konzistentný na celom webe.
Návštevníci webových stránok sa opakovaním naučia, ako sa pohybovať vo webovej stránke.
Držať hlavné navigačné odkazy pohromade. Návštevník sa tak ľahšie dostane do hlavných častí
webových stránok. Zredukovaný neporiadok zoskupovaním odkazov do sekcií.
Ak je zoznam navigačných odkazov na webové stránky zoskupený do sekcií a do všetkých a sekcia
má iba 5 - 7 odkazov, uľahčí to čítanie navigačnej schémy.
Minimálne kliknutie, aby ste sa dostali tam, kam sa chce návštevník dostať.

50
Ak je počet kliknutí na webovú stránku, ktorú si návštevník želá navštíviť, minimálny, to vedie k
lepšej skúsenosti.
Niektorí návštevníci môžu byť pri kliknutí na veľa ľudí zmätení alebo nedočkaví odkazy, aby sa
dostali tam, kde chcú byť. Na veľkých webových stránkach to môže byť ťažké zredukovať.
Používanie strúhanky je jedným zo spôsobov, ako pomôcť návštevníkovi zistiť, kde sa
nachádza sú v rámci webovej stránky a cesty späť po navigačnej ceste, po ktorej sa vybrali.
LOGICKÁ STRUKTURA
Rozdělme web na jednotlivé logické celky.
Jak obsáhlé vaše budoucí stránky mají být? Budou prezentovat pouze základní informace o vás
nebo budete chtít poskytnout uživatelům i podrobnější informace? Jaké položky budou
součástí menu a jaké množství položek bude potřeba? Jakým způsobem budou jednotlivé
stránky provázány?
Rozdělte web na jednotlivé logické celky. Tyto celky, „rodiče“, mají podcelky, „děti“, jež mohou
mít další děti – vzniká struktura webu v podobě tzv. stromu. Většinou je lepší rozdělit obsah
na více stran, než vytvořit jednu velice dlouhou stranu. Logická a jasná struktura webu je
pro orientaci návštěvníka iklíčovým faktorem. Vizuální podobou struktury webu je tzv.
mapa webu (site map).

Grafický dizajn
Farby vo webdizajne Možno si neuvedomujete, aké dôležité sú farby vo webdizajne. Ak je webová
stránka zelená, pokojne môže byť aj modrá; na tom nezáleží. A zatiaľ čo som si to myslel,
nedávno prišiel na to, že farba vlastne spraví obrovský rozdiel a vyjadrí publiku niečo iné.
Ľudské zmysly sa reagujú na veľa vecí. Jeden z najúčinnejších spôsobov, ako niekoho
vzrušiť, že na steny svojej izby premietne červenú farbu. Je to tak už skôr robili vedci a
dospeli k jasnému záveru. Človek, ktorý život v červenej miestnosti má vyššiu srdcovú
frekvenciu a krvný tlak ako človek, ktorý žije v modrej miestnosti. Je to preto, že červená
farba symbolizuje vzrušenie, všetci to vieme.
Existuje dôvod, prečo si spoločnosti rýchleho občerstvenia vyberajú ako svoju hlavnú alebo
druhoradú červenú farba.
Dobrými príkladmi sú Coca-Cola, McDonald’s, Burger King alebo Pepsi (aj keď modrá je ich
hlavná farba).
Farby stimulujú zmysly Farby môžu ľudí stimulovať a vzrušovať, zvyšovať ich apetít, cítiť ich
teplo alebo sa v nich cítiť pokojne. Červená vás jednoducho nadchne podľa tých, ktorí
študujú chromodynamiku. Web spoločnosti Coke je červený - dodáva vám pocit lenivého,
horúceho letného dňa - práve vtedy, keď cítite potrebu piť colu.
Farby vo webdizajne majú nielen emocionálny faktor. Ľudia majú tendenciu hazardovať viac za
podmienok červeného svetla ako za modrého svetla. Toto je hlavný dôvod, prečo mestá ako
Las Vegas používajú veľa červených svetiel. Farby mať vplyv na výkon. Červené svetlá
umožňujú ľuďom konať rýchlejšie a cítiť sa viac silný, čo nie je vždy výhodné, zatiaľ čo
modrá farba núti ľudí premýšľať viac pred konaním. Existuje dôvod, prečo sú značky STOP
červené - musíte konať okamžite a zastavte vozidlo, ktoré riadite, inak by ste boli v
nebezpečenstve.
Miešanie farieb
Miešanie farieb je prospešné, ak sa robí správnym spôsobom. Miešanie veľmi doplnkové farby tiež
ľudia robia, ale malo by sa to robiť iba príležitostne. To nemali by ste to preháňať, pretože
to má zlý vplyv na oči ľudí. Môžete si myslieť čierneho webu s ružovým textom.
Za spoločným používaním doplnkových farieb je veľmi dobrý trik. Kreslenie tenká neutrálna biela,
sivá alebo čierna čiara okolo dvoch farebných tvarov bude aby oči videli obidve farby
zvlášť. Stačí sa pozrieť na logo Pepsi: červené a modré sú oddelené nielen tenkou vrstvou
bielej, ale aj celkom veľkou. Toto biely tvar spája červenú a modrú lepšie, ako keby boli
umiestnené priamo na vrchu navzájom. Farby a kultúry

51
Farby navyše znamenajú v rôznych častiach sveta niečo iné. Zatiaľ čo červená znamená šťastie v
Číne, znamená to nedostatok v Nemecku. Obrovské spoločnosti s množstvom finančných
zdrojov použije veľké množstvo peňazí na štúdium rôznych účinkov farby majú na rôznych
kultúrach pred vstupom na nový trh. Veľa ľudí si myslí, že je to nemožné, ale klienti sa
môžu stratiť kvôli nesprávnym farbám. A hoci obrovské korporácie zvyčajne najímajú
odborníkov, aby pre nich robili tento výskum, výsledky nie sú vždy dobré. Každý dizajnér
(a každý človek všeobecne) má tendencia páčiť sa farbám alebo kombináciám farieb a
používať ich v rôznych farbách situácie, pretože to je to, čo sa im osobne páči. Farby pre
web
Výber farby pre web znamená oveľa viac ako výber vašej obľúbenej farbu a premeniť ju na
rozloženie. Znamená to zvoliť správnu farbu, aby ste dosiahli požadované reakcie publika.
Ak dobre poznáte svoje publikum a zistili ste, ktorá farba sa k nim najlepšie hodí, už ste v
polovici cesty v procese tvorby. Je tiež nepravdepodobné, že si vyberiete farbu, ktorá sadne
každému návštevník vášho webu, preto je ešte dôležitejšie vedieť to určiť ktorá farba a tón
fungujú najlepšie pre väčšinu používateľov, na ktorých zacielite. Podľa rôznych zdrojov
polovica ľudí navštevujúcich webové stránky nepríde späť kvôli farbe vzoru. Prvá vec,
ktorú ľudia musia uznať keď vidia vaše stránky, sú vo farbách značky
(branding). Ak máte viac farieb a návštevníci nevidia tú dominantnú, treba prerobiť.
Responzívny webový dizajn
Responzívny webový dizajn (RWD) je prístup k webdizajnu zameranému na vytváranie webov pre
zaistenie optimálneho zážitku zo sledovania - ľahké čítanie a navigácia pomocou
minimálnej zmeny veľkostí, posúvania a skrolovania - na širokej škále zariadení (od
mobilných telefónov po monitory stolových počítačov).
Stránka navrhnutá s programom RWD prispôsobuje rozloženie prostrediu na prezeranie pomocou
pomocou plynulých, proporcionálnych mriežok, flexibilných obrázkov a mediálnych
dotazov CSS3, rozšírenie pravidiel @media.
• Koncept fluidnej mriežky vyžaduje, aby veľkosť prvkov stránky bola v relatívnych
jednotkách, ako je percentá, nie absolútne jednotky, ako sú pixely alebo body.
• Flexibilné obrázky sa tiež zväčšujú v relatívnych jednotkách, aby sa zabránilo ich
zobrazeniu mimo ich obsahujúceho prvku.
• Mediálne dotazy umožňujú stránke používať rôzne pravidlá štýlu CSS na základe
charakteristík zariadenia, na ktorom sa web zobrazuje, najčastejšie šírka prehliadača.
• Komponenty na strane servera (RESS) v spojení s komponentmi na strane klienta ako napr.
mediálne dotazy môžu vytvoriť stránky s rýchlejším načítaním pre prístup cez mobilné siete
a tiež poskytujú bohatšiu funkčnosť / použiteľnosť, aby sa predišlo niektorým nástrahám
riešení iba na strane zariadenia.
Farebné modely pre webdizajn
Vo webdizajne používame farebný model RGB. Je to dôležité, pretože naše primárne zobrazovacie
médiá sú zariadenia vyžarujúce svetlo. Farebný model RGB je doplnkový farebný model,
v ktorom sa spája červené, zelené a modré svetlo rôznymi spôsobmi reprodukovať širokú
škálu farieb. Názov modelu pochádza z iniciálok troch aditívnych základných farieb,
červenej, zelenej a modrej. Hlavným účelom farebného modelu RGB je snímanie,
reprezentácia a zobrazovanie obrazov v elektronických systémoch, ako sú televízory a
počítače, aj keď sa používa aj v konvenčnej fotografii. RGB je farebný model závislý od
zariadenia: rôzne zariadenia ho detekujú alebo reprodukujú danú hodnotu RGB odlišne,
pretože farebné prvky (napríklad fosfor alebo farbivá) a ich reakcia na jednotlivé hladiny
R, G a B sa líši od výrobcu výrobcovi alebo dokonca v rovnakom prístroji. Teda RGB
hodnota nedefinuje rovnakú farbu naprieč zariadeniami bez nejakého druhu farby
zvládanie.
Na obrázkoch s 8 bitmi na kanál sú hodnoty intenzity od 0 (čierne) do 255 (biela) pre každú z
komponentov RGB (červená, zelená, modrá) vo farebnom obrázku.

52
Napríklad jasne červená farba má hodnotu R 246, hodnotu G 20 a B hodnotu 50. Keď sú hodnoty
všetkých troch zložiek rovnaké, výsledkom je a odtieň neutrálnej šedej. Keď sú hodnoty
všetkých komponentov 255, výsledkom je čistá biela; keď sú hodnoty 0, čisto čierna. Na
reprodukciu farieb na obrazovke používajú obrázky RGB tri farby alebo kanály. V
obrázkoch s 8 bitmi na kanál, tri kanály sa prekladajú do 24 (8 bitov x 3 kanály) bitov
farebnej informácie na pixel. Pri 24-bitových obrázkoch sú to tri kanály dokáže
reprodukovať až 16,7 milióna farieb na pixel.
Webové farby sú farby použité pri navrhovaní webových stránok a spôsoby ich použitia popisujúce
a špecifikujúce tieto farby. Farby môžu byť špecifikované ako RGB triplet alebo v
hexadecimálnom formáte (hexadecimálny triplet). Môžu byť tiež uvedené podľa ich
bežných anglických názvov v niektorých prípadoch. Často farebný nástroj alebo iný
grafický softvér sa používa na generovaniefarebných hodnôt. Priniektorých použitiach
(kasjádové šablóny štýlov), hexadecimálne farebné kódy začínajú znakom čísla (#). A
farba je určená podľa intenzity jej červenej, zelenej a modrej zložky, každý predstavuje
osem bitov.
Rastrové formáty obrazových súborov
JPEG / JFIF – JPEG (Joint Photographic Experts Group) je metóda kompresie; Komprimované vo
formáte JPEG obrázky sa zvyčajne ukladajú vo formáte JFIF (JPEG File Interchange
Format) formát súboru. Kompresia JPEG je (vo väčšine prípadov) stratová kompresia.
Prípona názvu súboru JPEG / JFIF je JPG alebo JPEG. Môže to takmer každý digitálny
fotoaparát ukladať obrázky vo formáte JPEG / JFIF, ktorý podporuje 8-bitové obrázky v
odtieňoch sivej a 24-bitové farebné obrázky. JPEG aplikuje stratovú kompresiu na obrázky,
ktoré môžu mať za následok výrazné zmenšenie veľkosti súboru. Množstvo kompresie
môže a veľkosť kompresie ovplyvňuje vizuálnu kvalitu súboru výsledok. Ak nie je príliš
veľká, kompresia jej to nijako výrazne neuberá kvalitu obrazu, ale súbory JPEG opakovane
trpia generačnou degradáciou upravené a uložené (JPEG tiež poskytuje bezstratové
ukladanie obrázkov, ale bezstratové verzia nie je široko podporovaná).
GIF - GIF (Graphics Interchange Format) je obmedzený na 8-bitovú paletu alebo 256 farieb. Vďaka
tomu je formát GIF vhodný na relatívne ukladanie grafiky niekoľko farieb, ako sú
jednoduché diagramy, tvary, logá a obrázky v kreslenom štýle. Formát GIF podporuje
animáciu a stále sa často používa na zabezpečenie obrázkovej animácie účinky. Používa
tiež bezstratovú kompresiu, ktorá je efektívnejšia, ak veľké oblasti majú jednu farbu a sú
neúčinné pre podrobné obrázky alebo obrázky s rozptýlenými farbami.
PNG – Formát súborov PNG (Portable Network Graphics) bol vytvorený ako bezplatný, open-
source nástupca GIF.
Formát súboru PNG podporuje 8-bitové obrázky palety (s voliteľnou priehľadnosťou pre všetky
farby palety) a 24-bit truecolor (16 miliónov farby) alebo 48-bitový truecolor s alebo bez
alfa kanála - zatiaľ čo GIF podporuje iba 256 farieb a jednu priehľadnú farbu. V porovnaní
s JPEG PNG vyniká, keď má obrázok veľké, rovnomerne sfarbené oblasti. PNG poskytuje
náhradu GIF bez patentu a môže tiež nahradiť mnoho bežných použití TIFF. Podporované
sú obrázky s indexovanou farbou, v odtieňoch šedej a truecolor, plus voliteľný alfa kanál.
PNG je navrhnutý tak, aby dobre fungoval v online prezeracích aplikáciách, ako sú webové
prehliadače takže je plne streamovateľný s možnosťou progresívneho zobrazenia. PNG je
robustný a poskytuje ako úplná kontrola integrity súborov, tak jednoduchá detekcia
spoločného prenosu chyby. PNG tiež môže na vylepšenie ukladať údaje o gama a farebnosti
prispôsobenie farieb na heterogénnych platformách. Animované formáty odvodené z PNG
sú MNG a APNG. Posledný menovaný je podporovaný od Mozilla Firefox a Opera a je
spätne kompatibilný s PNG.

Formáty súborov vektorových obrázkov

53
Na rozdiel od vyššie uvedených formátov rastrových obrázkov (kde údaje popisujú charakteristiky
formátov vektorových obrázkov obsahujú geometrický popis ktoré je možné plynulo
vykresliť pri ľubovoľnej požadovanej veľkosti displeja. V určitom okamihu, všetka
vektorová grafika musí byť rastrovaná, aby sa mohla zobrazovať na digitálnych
monitoroch.
SVG (Scalable Vector Graphics) je otvorený štandard, ktorý bol vytvorený a vyvinutý konzorciom
pre sieť WWW s cieľom vyriešiť potrebu (a pokusy niekoľkých z nich) spoločnosti) pre
všestranný, skriptovateľný a univerzálny vektorový formát pre web a inak. Formát SVG
nemá svoju kompresnú schému vlastné, ale kvôli textovej povahe XML je možné grafiku
SVG komprimovať pomocou programu ako gzip. SVG je vzhľadom na svoj skriptovací
potenciál kľúčom komponent vo webových aplikáciách: interaktívne webové stránky, ktoré
vyzerajú a fungujú aplikácie.
SVG je formát vektorového obrázka založený na XML pre dvojrozmernú grafiku, ktorá má
podporu interaktivity a animácie. Obrázky SVG a ich správanie sú definované v textových
súboroch XML. To znamená, že ich možno prehľadávať, indexovať, skriptované a tiež
komprimované. Ako súbory XML je možné vytvárať obrázky SVG a upravovať pomocou
ľubovoľného textového editora, ale často je pohodlnejšie ich vytvárať pomocou kresliace
programy ako Inkscape. SVG umožňuje tri typy grafických objektov: vektorová grafika,
rastrová grafika a text. Grafické objekty vrátane PNG a rastrové obrázky JPEG možno
zoskupovať, vytvárať štýly, transformovať ich a skladať do nich predtým poskytnuté
objekty. SVG priamo nepodporuje indexy, ktoré oddeľujú poradie kreslenia z poradia
dokumentu pre prekrývajúce sa objekty, na rozdiel od niektorých ďalších vektorových
značkovacích jazykov ako VML. Text môže byť v ľubovoľnom mennom priestore XML
vhodnom pre aplikáciu, ktorá zvyšuje možnosti vyhľadávania a prístupnosť súboru SVG.
Sada funkcií obsahuje vnorené transformácie, orezania, alfa masky, efekty filtrov, objekty
šablón a rozšíriteľnosť.

AI.1.2. Webové šablóny HTML5 (štruktúra jazyka HTML, elementy a atribúty, syntax
jazyka HTML, minimálna požadovaná štruktúra, relatívne a absolútne cesty).

HTML5 bude nový štandard pre HTML. Predchádzajúca verzia HTML, HTML 4.01, vyšla v roku
1999. Web sa odvtedy veľmi zmenil. HTML5 je stále nedokončená. Hlavné prehľadávače
však mnohé podporujú nových prvkov
HTML5 a API (Application Programming Interface). HTML5 je spolupráca medzi World Wide
Web Consortium (W3C) a pracovná skupina pre webovú hypertextovú aplikačnú
technológiu (WHATWG). WHATWG pracoval s webovými formulármi a aplikáciami a
W3C pracoval s XHTML 2.0. V roku 2006 sa rozhodli spolupracovať a vytvoriť novú
verziu HTML.
Boli stanovené niektoré pravidlá pre HTML5:
•• Nové funkcie by mali byť založené na HTML, CSS, DOM a JavaScript
•• Znížte potrebu externých doplnkov (napríklad Flash)
•• Lepšie spracovanie chýb
•• Viac značiek, ktoré nahradia skriptovanie
•• HTML5 by malo byť nezávislé na zariadení
•• Proces vývoja by mal byť viditeľný pre verejnosť
Je to tiež pokus o definovanie jedného značkovacieho jazyka, ktorý je možné zapísať v syntaxi
HTML alebo XHTML. Zahŕňa podrobné modely spracovania do formátu podporovať
interoperabilnejšie implementácie; rozširuje, zdokonaľuje a racionalizuje označenie
dostupné pre dokumenty a zavádza označenie a aplikáciu programovacie rozhrania (API)
pre zložité webové aplikácie. Za to isté dôvodov je HTML5 tiež potenciálnym kandidátom
na mobilné aplikácie pre rôzne platformy. Mnoho funkcií jazyka HTML5 bolo vytvorených

54
s ohľadom na to, že sú schopné fungovať na zariadeniach s nízkou spotrebou energie, ako
sú napríklad smartfóny a tablety. HTML5 predovšetkým pridáva mnoho nových
syntaktických funkcií. Medzi ne patrí aj nový prvky <video>, <audio> a <canvas>, ako aj
integrácia škálovateľného vektora grafický obsah (SVG) (ktorý nahrádza použitie
všeobecných značiek <object>) a MathML pre matematické vzorce. Tieto funkcie sú
navrhnuté tak, aby to dokázali ľahko zahrnúť a zvládnuť multimediálny a grafický obsah
na webe bez musieť uchýliť sa k proprietárnym pluginom a API. Ostatné nové prvky, napr
ako <section>, <article>, <header> and <nav>, are designed to enrich the semantic obsah
dokumentov. Na ten istý účel boli zavedené nové atribúty, zatiaľ čo niektoré prvky a
atribúty boli odstránené. Niektoré prvky, ako <a>, <cite> a <menu> boli zmenené,
predefinované alebo štandardizované. Rozhrania API a dokumentový objektový model
(DOM) už nie sú dodatočnými myšlienkami, ale sú základnou súčasťou špecifikácie
HTML5. HTML5 tiež definuje v niektoré podrobnosti požadovaného spracovania
neplatných dokumentov, aby sa zabezpečili chyby syntaxe bude so všetkými vyhovujúcimi
prehľadávačmi a inými používateľskými agentmi zaobchádzané jednotne. Funkcie HTML5
sú:
Markup (Značka)
HTML5 predstavuje prvky a atribúty, ktoré odrážajú typické použitie v modernej podobe webové
stránky. Niektoré z nich sú sémantické náhrady bežného použitia generických block
(<div>) a vložené (<span>) prvky, napríklad <nav> (navigácia na webe blok), <footer>
(obvykle odkazujúce na spodok webovej stránky alebo na posledné riadky kódu HTML)
alebo <audio> a <video> namiesto <object>. Niektoré zastarané prvky z HTML 4.01 boli
zahodené, vrátane čisto prezentačných prvkov ako <font> a <center>, ktorých účinky sú
dlhodobé boli nahradené schopnejšími kaskádovými štýlmi. K dispozícii je tiež obnovený
dôraz na dôležitosť skriptovania DOM (napr. JavaScript) vo webovom správaní. Syntax
HTML5 už nie je založená na SGML (Standard Generalized Markup Language) napriek
podobnosti svojho označenia. Boli navrhnuté tak, aby boli spätne kompatibilné s bežnou so
staršími verziami HTML. Prichádza s novým úvodným riadkom, ktorý vyzerá ako
dokument SGML deklarácia typu, <! DOCTYPE html>, ktorá spustí vyhovujúci
štandardný režim vykresľovania. Od 5. januára 2009 obsahuje HTML5 aj webové
formuláre 2.0, a predtým samostatná špecifikácia WHATWG. Nové API
Okrem určenia značiek(markup) určuje program HTML5 skriptovacie programovanie aplikácií
rozhrania (API), ktoré možno použiť s JavaScriptom. Existujúce dokumentové rozhrania
objektových modelov (DOM) sú rozšírené a de facto sú zdokumentované ich funkcie.
Existujú aj nové rozhrania API, napríklad:
•• The canvas element pre 2D kreslenie v okamžitom režime. Viď Canvas 2D API Specification
1.0
•• Načasované prehrávanie médií
•• Offline webové aplikácie
•• Úpravy dokumentov
•• Presunutie Drag-and-drop
•• Posielanie správ medzi dokumentmi
•• Správa histórie prehľadávača
•• Registrácia typu MIME a obsluhy protokolu
•• Microdata
•• Webové úložisko, rámec úložiska párov kľúč - hodnota, ktorý poskytuje podobné správanie na
cookies, ale s väčšou úložnou kapacitou a vylepšeným API. Nie všetky vyššie uvedené
technológie sú zahrnuté v špecifikácii W3C HTML5, aj keď sú v špecifikácii WHATWG
HTML. Niektoré súvisiace technológie, ktoré nie sú súčasťou W3C HTML5 ani
WHATWG Špecifikácia HTML je nasledovná. W3C k nim zverejňuje špecifikácie
oddelene: •• Geolokácia

55
•• Web SQL Database, lokálna databáza SQL (už nie je udržiavaná)
•• Indexované databázové API, indexované hierarchické úložisko kľúč - hodnota (predtým
WebSimpleDB)
•• HTML5 File API, zvláda nahrávanie súborov a manipuláciu so súbormi
•• Adresáre a systém, API určené na uspokojenie využitia úložiska na strane klienta pre prípady,
ktoré databázy neposkytujú správne
•• File Writer, API na zápis do súborov z webových aplikácií
•• Web Audio API, vysoko kvalitné JavaScript API pre spracovanie a syntézu zvuku vo webových
aplikáciách
Samotný formát HTML5 nemôže poskytovať animáciu na webových stránkach. Sú potrebné buď
JavaScript alebo CSS3 na animáciu prvkov HTML. Je tiež možná animácia pomocou
JavaScriptu a HTML 4 a v rámci prvkov SVG prostredníctvom SMIL, aj keď podpora
prehliadača zostáva od roku 2011 nerovnomerná.
XHTML5
XHTML5 je XML serializácia HTML5. Dokumenty XML musia byť poskytované s internetovým
typom XML XML (často zamieňané s typom MIME) ako napríklad application / xhtml +
xml alebo application / xml. XHTML5 vyžaduje prísne XML, dobre formovaná syntax. Na
výber je medzi HTML5 a XHTML5 až po výber typu MIME / obsahu: určuje sa typ média
aký typ dokumentu by sa mal použiť. V XHTML5, doctype HTML5 html je voliteľný a
možno ho jednoducho vynechať. HTML, do ktorého bol napísaný vyhovujú špecifikáciám
HTML aj XHTML, a teda budú vytvoriť ten istý strom DOM, či už analyzovaný ako HTML
alebo XML, sa nazýva
„Polyglot markup“.
Error handling (Spracovanie chyby)
HTML5 je navrhnutý tak, aby staré prehliadače mohli bezpečne ignorovať nové konštrukcie
HTML5. Na rozdiel od HTML 4.01 poskytuje špecifikácia HTML5 podrobné pravidlá pre
lexing a parsing (syntaktickú analýzu) so zámerom, že pre rôzne vyhovujúce prehľadávače
spôsobí rovnaký výsledok v prípade nesprávnej syntaxe. Aj keď HTML5 definuje
konzistentné správanie pre dokumenty „tag soup“, tieto dokumenty sa nepovažujú za
vyhovujúce štandardu HTML5.
Štruktúra www a webstránky
Struktura HTML nie je zlozita. Sklada sa z niekolkych blokov, ktore si tu popiseme. Niektore
bloky su povinne, ine zasa nie, takze je na vas, ktore z nepovinnych si do stranky date.

HTML
Tento prikaz oznacuje zaciatok a koniec celej stránky. Je to najdolezitejsi blok, ktory je povinny.
Medzi zaciatok a koniec tohto prikazu piseme vsetky ostatne prikazy a text.

<HTML>
tu budu dalsie prikazy a text
..

</HTML>

HEAD
Tento prikaz definuje hlavicku stranky. Ta vacsinou obsahuje poznamku o autorovi, ktoru sem
uklada program, v akom vytvarame stranku - ak ju nerobime rucne. Dalej obsahuje TITLE,
cize nazov stranky. Blok HEAD nie je povinny, ale TITLE sa odporuca nastavit. Nasa
stranka teda bude:

56
<HTML> <HEAD>
...stranka...
</HEAD>
</HTML>

TITLE
Definuje nazov stranky, ktory sa zobrazuje v kazdom prehliadaci stranky. Mal by byt uvedeny v
kazdej stranke. Piseme ho bud hned za zaciatok stranky, alebo do hlavicky.

<HTML>
<HEAD>
<TITLE>Nazov stranky</TITLE>
...stranky...
</HEAD>
</HTML>

alebo, ak vypustime hlavickovy blok HEAD:

<HTML>
<TITLE>Nazov stranky</TITLE>
...stranky...
</HTML>

BODY
Oznacuje telo stranky. Ak budete svoju stranku editovat v textovom editore pre textovy browser,
je zbytocne sa zatazovat parametrami. Inak vam tento prikaz umozni nastavit farebne
prostredie stranky (farba pozadia, tapeta na pozadi, farba textu a liniek). Pouzitie pre
textovy browser je velmi jednoduche:

<HTML>
<TITLE>Nazov stranky</TITLE>
<BODY>
...stranok...
</BODY>
</HTML>

No a ak chceme grafiku, pozrime sa na dalsie parametre:

BODY BACKGROUND="CESTA/SUBOR" BGCOLOR="#FARBA" TEXT="#FARBA"


LINK="#FARBA" VLINK="#FARBA" ALINK="#FARBA"

BACKGROUND="cesta/subor" je subor, ktory sa pouzije ako tapeta na pozadi pod strankou v


grafickom prezeraci. Musite uviest cestu vzhladom na adresar, v ktorom sa nachadzate,
alebo absolutnu. Ak sa subor nenajde, alebo nie je pozadovaneho formatu, bude
ignorovany.

BGCOLOR="#farba" definuje farbu pozadia pod strankou. Dalsie informacie o zadavani farieb
najdete tu.

57
TEXT="#farba" definuje farbu textu. Dalsie informacie o zadavani farieb najdete tu.

LINK="#farba" definuje farbu liniek, cize odkazov na ine subory, stranky alebo sluzby. Dalsie
informacie o zadavani farieb najdete tu.

VLINK="#farba" definuje farbu linky, ktoru sme uz navstivili (V = visited). Dalsie informacie o
zadavani farieb najdete tu.

ALINK="#farba" definuje farbu linky pri stlaceni tlacidla na mysi (A = activated). Dalsie
informacie o zadavani farieb najdete tu.

ADDRESS
Tento nepovinny blok sa pouziva vacsinou za koncom bloku BODY na definovanie a vypisanie
adresy autora (alebo akehokolvek textu), lebo v praxi to robi len nastavenia urcitej velkosti
pisma a jeho typu.

<HTML>
<TITLE>Nazov stranky</TITLE>
<BODY>
...stranka...
</BODY>
<ADDRESS>
moja adresa alebo hocico ;-)
</ADDRESS>
</HTML>

AI.1.3. Kaskádové štýly. Základné selektory a syntax jazyka CSS. Oddelenie obsahu
a vzhľadu. Spôsoby definície vzhľadu (inline, interne, externe).

Cascading Style Sheets (CSS) je výkonný nástroj, ktorý transformuje prezentáciu dokumentu alebo
zbierky dokumentov a rozšíril sa takmer do všetkých kútov webu a do mnohých zdanlivo
iných než webových prostredí. Napríklad prehliadače založené na technológii Gecko
používajú CSS na ovplyvnenie prezentácie samotného prehliadača Chrome. Mnoho
klientov RSS vám umožňuje použiť CSS na informačné kanály a položky informačného
kanála a niektorí klienti okamžitých správ, ako napríklad Adium, používajú CSS na
formátovanie chatovacích okien. Aspekty CSS možno nájsť v syntaxi používanej rámcami
JavaScript, ako je jQuery.
CSS vám dáva väčšiu kontrolu nad dizajnom vašej stránky. CSS má veľa nastavení formátovania,
ktoré samotné HTML neposkytuje. Vďaka tomu môžete mať oveľa väčšiu kontrolu nad
vzhľadom svojej webovej stránky, ak používate CSS, ako keby ste používali obyčajný
HTML.
CSS vám umožňuje oddeliť obsah vašich stránok od pokynov na formátovanie. Dokument HTML
sa preto stane miestom, kde pracujete s obsahom, a šablóna štýlov CSS slúži ako miesto na
nastavenie vašich štýlov.
CSS vám umožňuje spravovať štýly na vašom webe na jednom centrálnom mieste. Aj keď štýly
CSS môžete definovať na jednej webovej stránke, jej skutočná sila sa prejaví, keď použijete
samostatnú šablónu štýlov CSS, ku ktorej má prístup každá stránka na vašom webe. Keď
nastavíte svoj web takto, môžete ľahko dať celému svojmu serveru konzistentný vzhľad a
dojem. Globálne zmeny môžete vykonať aj z jedného miesta.

58
CSS je budúcnosť. Styling v HTML je zastaraný a v skutočnosti je čoraz ťažšie a ťažšie ho robiť,
keď sú zastarané značky špecifické pre formátovanie. Keď sa teda naučíte CSS, investujete
do technológie, ktorá tu bude ešte roky. Nakoniec vám CSS umožní vytvoriť atraktívnejší
a dobre navrhnutý produkt pracujúci vo viacužívateľskom prostredí, v ktorom navrhujete
stránku, zatiaľ čo niekto iný programuje HTML alebo skriptovací kód. S CSS môže návrhár
primárne pracovať so samostatnou šablónou štýlov namiesto toho, aby ste sa museli brodiť
programátorom Súbory HTML.
Jedným zo spôsobov, ako môžete pridať štýl na webovú stránku, je vloženie požadovaných
výrokov do záhlavia stránky medzi značky <head> a </head>. Takže, aby zmeňte štýl
značky <h1>, môžete použiť nasledujúci kód (vysvetlíme syntax neskôr):
<štýl> h1 {farba: červená; veľkosť písma: 3em; rodina fontov: Arial; } </style>
Ak chcete upraviť štýl celého webu a nie jednej stránky, je to lepší spôsob spravovať štýly je
presunúť ich z vašich webových stránok do samostatných súborov s názvom štýly a potom
importujte tie, ktoré potrebujete.
Existuje niekoľko rôznych spôsobov, ako to možno dosiahnuť, z ktorých prvý je spôsob pomocou
smernice CSS @import, napríklad takto:
<štýl>
@import url („styles.css“); </style>
Toto vyhlásenie hovorí prehliadaču, aby načítal šablónu štýlov s názvom styles.css. Príkaz
@import je dosť flexibilný v tom, že môžete vytvárať šablóny štýlov, ktoré sami vtiahnu
ďalšie štýly atď. Len sa uistite, že tam nie sú žiadne
Značky <style> alebo </style> v ktorejkoľvek z vašich externých šablón štýlov, alebo nebudú
práca. Môžete tiež zahrnúť šablónu štýlov so značkou HTML <link>, napríklad takto: <link
rel = ‘stylesheet’ type = ‘text / css‘ href = ’styles.css’ />
Toto má úplne rovnaký efekt ako smernica @import, až na to, že <link> je značka iba HTML a
nejde o platnú smernicu o štýle, takže ju nemožno použiť z v rámci jednej šablóny štýlov
vtiahnuť do inej.
Existuje tiež možnosť pridať štýl ku každému prvku v štruktúre HTML Páči sa ti to:
<div style = ‘font-style: italic; color: blue; ‘> Ahoj tam </div> Môže nastať problém, keď
používateľ pridá rôzne štýly pre jeden prvok pomocou externej šablóny štýlov, internej
definície štýlu v hlavičke a pomocou pomocou vloženého štýlu. Riešenie je prioritné.
Priorita je nastavená nasledovne, od najnižšej po najvyššiu:
1. Externá štýlová tabuľa
2. Vnútorný štýl
3. Inline štýl
Základná štruktúra pre pridanie štýlu k ľubovoľnému prvku HTML je nastavená takto:
Selektor {property-name: property-value; }
Selektor je zvyčajne prvok HTML, ktorý chcete upraviť. Každé vyhlásenie pozostáva z vlastnosti
a hodnoty. Vlastnosť je požadovaný atribút štýlu
zmeniť. Každá vlastnosť má svoju hodnotu. Deklarácia CSS sa vždy končí bodkočiarkou, a skupiny
vyhlásení sú obklopené zloženými zátvorkami. Vytvoriť CSS čitateľnejšie, na každý riadok
môžete vložiť jednu deklaráciu, napríklad takto: p { farba: červená; zarovnanie textu: na
stred; }
Selektory môžu byť veľmi jednoduché, ale tiež vnorené alebo založené na atribútoch. V ďalšom
tabuľka [19] obsahuje rôzne vzory pre selektory.
Vlastnosti CSS ovplyvňujúce rozloženie stránky sú založené na ráme model, vnorená sada
vlastností obklopujúcich prvok. Prakticky všetky prvky mať (alebo môže mať) tieto
vlastnosti vrátane tela dokumentu, ktorého okraj môžete (napríklad) odstrániť pomocou
nasledujúceho pravidla: body {margin: 0px; }

59
Krabicový model objektu sa začína zvonka s okrajom objektu. Vo vnútri toto je ohraničenie a
potom polstrovanie medzi ohraničením a vnútorným obsahom. A konečne je tu obsah
objektu. Okraje prvku môžu byť
hromadne zmenené pomocou vlastnosti margin alebo jednotlivo s left-left, okraj hore, okraj vpravo
a okraj dole. Úroveň okraja poľa model je podobný marži, až na to, že nedochádza ku
kolapsu. Najhlbšie úrovní polí (okrem obsahu prvku) je polstrovanie, ktorý sa používa vo
vnútri akýchkoľvek okrajov a / alebo okrajov. Hlavné vlastnosti bývali upraviť polstrovanie
sú polstrovanie, polstrovanie vľavo, polstrovanie hore, polstrovanie vpravo, a polstrované
dno. Hlboko v krabici, v jeho strede, leží prvok ktoré je možné štylizovať všetkými
spôsobmi, o ktorých sa už diskutovalo v tejto kapitole, a ktoré môže (a zvyčajne bude)
obsahovať ďalšie čiastkové prvky, ktoré naopak môžu obsahovať čiastkové prvky a ďalšie,
každý s vlastným štýlom a nastavením modelu škatule.
Ďalšími dôležitými vlastnosťami modelu krabice sú šírka a výška.
Obr. 11 Krabicový model Polohovanie
CSS 2.1 definuje tri pozičné schémy:
Normálny prietok
Vkladané položky sú usporiadané rovnakým spôsobom ako jednotlivé písmená v texte druhý cez
dostupné miesto, až kým nebude viac miesta, potom začnite a nový riadok nižšie. Blokujte
položky zvisle, rovnako ako odstavce a položky v
zoznam s odrážkami. Normálny tok tiež zahrnuje relatívne umiestnenie bloku alebo vloženého
riadku položky a zabehávacie boxy. Plaváky
Plávajúci predmet je vyňatý z normálneho toku a posúva sa doľava alebo doprava pokiaľ je to
možné na dostupnom mieste. Ďalší obsah potom prúdi popri plávajúci predmet.
Absolútne umiestnenie
Absolútne umiestnená položka nemá miesto a nemá na normálny tok žiadny vplyv ďalších
položiek. Vo svojom kontajneri obsadzuje svoju pridelenú pozíciu nezávisle na ostatné
veci. [42]
Pozícia: hore, dole, vľavo a vpravo.
Existujú štyri možné hodnoty vlastnosti position. Ak je položka umiestnená v iným spôsobom ako
statickým, potom ďalšie vlastnosti hore, dole, vľavo a vpravo sa používajú na určenie
offsetov a pozícií. Statický
Predvolená hodnota umiestni položku do normálneho toku. Relatívne
Položka sa umiestni do normálneho toku a potom sa z tejto polohy posunie alebo posunie.
Následné položky toku sú usporiadané tak, akoby položka nebola presunutá. Absolútne
Určuje absolútne umiestnenie. Prvok je umiestnený vo vzťahu k jeho najbližšej nestatický predok.
Opravené
Položka je na obrazovke absolútne umiestnená v pevnej polohe, rovnako ako zvyšok dokumentu
sa posúva.
Plávajúce a čisté
Vlastnosť float môže mať jednu z troch hodnôt. Absolútne umiestnené alebo pevné položky
nemôžu plávať. Ostatné prvky bežne tečú okolo plávajúcich vecí, pokiaľ im v tom nebráni
ich jasný majetok.
vľavo
Položka pláva naľavo od riadku, v ktorom by sa objavila; ostatné veci môže tiecť okolo jeho pravej
strany. správny
Položka pláva napravo od riadku, v ktorom by sa objavila; ostatné veci môže tiecť okolo jeho ľavej
strany. jasný
Vynúti, aby sa prvok objavil pod („číry“) plávajúce prvky vľavo
(jasný: vľavo), pravý (jasný: pravý) alebo obe strany (jasný: oba).
4.1 CSS3

60
CSS3 [20] je úplne spätne kompatibilný, takže nebudete musieť meniť existujúce vzory.
Prehliadače budú vždy podporovať CSS2. CSS3 je rozdelený do „modulov“.
Stará špecifikácia bola rozdelená na menšie kúsky a taktiež sú pridané nové. Medzi najdôležitejšie
moduly CSS3 patria:
•• Selektory
•• Krabicový model
•• Pozadie a hranice
•• Textové efekty
•• 2D / 3D transformácie
•• Animácie
•• Rozloženie viacerých stĺpcov
•• Užívateľské rozhranie
Špecifikácia CSS3 je stále vo vývoji W3C. Avšak veľa z nové vlastnosti CSS3 boli
implementované do moderných prehľadávačov.

AI.1.4. Skriptovanie na strane klienta. Javascript – spôsob vloženia, syntax. Javascriptové


knižnice a frameworky.

Skriptovanie na strane klienta sa všeobecne vzťahuje na triedu počítačových programov na webe,


ktoré sa na strane klienta spúšťajú pomocou webového prehliadača používateľa, a nie na
strane servera (na webovom serveri). [21] Tento typ počítačového programovania je
dôležitou súčasťou konceptu Dynamic HTML (DHTML), ktorý umožňuje skriptovanie
webových stránok; to znamená mať odlišný a meniaci sa obsah v závislosti od vstupu
používateľa, podmienok prostredia (napríklad dennej doby) alebo iných premenných.
Skripty na strane klienta sú často vložené do dokumentu HTML alebo XHTML (teda
označovaného ako „vložený skript“), ale môžu byť tiež obsiahnuté v samostatnom súbore,
na ktorý odkazuje dokument (alebo dokumenty), ktoré ho používajú (preto „externý
skript“). Na požiadanie sa potrebné súbory odošlú do počítača používateľa webovým
serverom (alebo servermi), na ktorom sa nachádzajú. Webový prehliadač používateľa
vykoná skript a potom zobrazí dokument vrátane všetkých viditeľných výstupov zo skriptu.
Skripty na strane klienta môžu obsahovať aj pokyny, ktoré má prehliadač dodržiavať pri
reakcii na určité akcie používateľa (napríklad kliknutie na tlačidlo). Tieto pokyny možno
často dodržať bez ďalšej komunikácie so serverom.
Prezeraním súboru, ktorý obsahuje skript, môžu používatelia vidieť jeho zdrojový kód. Mnoho
autorov webu sa naučí písať skripty na strane klienta čiastočne preskúmaním zdrojového
kódu pre skripty iných autorov.
Naopak, skripty na strane servera, napísané v jazykoch ako Perl, PHP, ASP.NET, Java a VBScript
na strane servera, vykonáva webový server, keď používateľ požaduje dokument. Produkujú
výstup vo formáte zrozumiteľnom webovým prehliadačom (zvyčajne HTML), ktorý sa
následne odosiela do počítača používateľa. Používateľ nevidí zdrojový kód skriptu (pokiaľ
autor nezverejní kód osobitne) a nemusí si byť vedomý ani toho, že bol skript vykonaný.
Dokumenty produkované skriptmi na strane servera môžu naopak obsahovať skripty na
strane klienta.
Skripty na strane servera vyžadujú, aby bol na serveri nainštalovaný tlmočník ich jazyka server a
produkujú rovnaký výstup bez ohľadu na operačný prehliadač klienta systému alebo iných
podrobností systému. Skripty na strane klienta nevyžadujú ďalšie softvér na serveri (robia
ich obľúbenými u autorov, ktorí nemajú administratívu prístup na ich servery); Vyžadujú
však webový prehliadač používateľa rozumie skriptovaciemu jazyku, v ktorom sú napísané.
Je to tak pre autora nepraktické písať skripty v jazyku, ktorý nepodporuje populárne webové
prehliadače.

61
Z dôvodu bezpečnostných obmedzení nemusí byť povolený prístup skriptom na strane klienta k
počítaču používateľa nad rámec aplikácie webového prehliadača. Techniky ako ActiveX
na vylúčenie tohto obmedzenia je možné použiť ovládacie prvky.
Skriptovanie na strane klienta nie je vo svojej podstate nebezpečné. Používateľom sa odporúča,
aby vždy udržiavať ich webové prehliadače aktuálne, aby nedošlo k odhaleniu ich počítača
a údajov na odhalené zraniteľné miesta.
Posledná skupina webových prehľadávačov a webových stránok zvyčajne zamestnáva veľké
množstvo skriptovania na strane klienta, čo predstavuje vylepšené užívateľské rozhranie, v
ktorom používateľ namiesto toho nezažije nepriateľské „osvieženie“ webovej stránky
možno uvidí animovaný súbor GIF, ktorý naznačuje, že sa vyskytla požiadavka, a stránka
bude čoskoro aktualizovaná. Ajax (asynchrónny skript Java a XML) je dôležitý doplnok
jazyka JavaScript, ktorý umožňuje webovým vývojárom komunikovať s webovým
serverom na pozadí bez potreby úplného nová verzia stránky, ktorá sa má vyžiadať a
vykresliť. To vedie k mnohým vylepšený užívateľský zážitok vo všeobecnosti.
Bohužiaľ, dokonca aj jazyky, ktoré podporuje široká škála prehľadávačov nemusia byť
implementované úplne rovnako vo všetkých prehľadávačoch a v prevádzke systémov.
Autorom sa odporúča, aby skontrolovali správanie svojich klientov skripty na rôznych
platformách predtým, ako ich uvedú do používania. Zoznam skriptovacích jazykov na
strane klienta •• JavaScript (v zásade skriptovací jazyk na strane klienta - zvyšok sú
varianty) z toho)
•• ActionScript (používa sa na vytváranie animovaných interaktívnych webových aplikácií pre
Adobe Flash Player pomocou aplikácie Adobe Flash Pro) JavaScript (JS) je interpretovaný
počítačový programovací jazyk. Ako súčasť webové prehliadače, implementácie umožňujú
interakciu skriptov na strane klienta s používateľom, ovládať prehliadač, komunikovať
asynchrónne a meniť obsah dokumentu ktorý sa zobrazí. Stalo sa to tiež bežné v
programovaní na strane servera, vývoj hier a vytváranie desktopových aplikácií.
JavaScript je prototypový skriptovací jazyk s dynamickým písaním a má prvotriedne funkcie. Jeho
syntax bola ovplyvnená C. JavaScript kopíruje mnohé názvy a konvencie pomenovania z
jazyka Java, ale tieto dva jazyky sú inak nesúvisiace a majú veľmi odlišnú sémantiku.
Kľúčové princípy návrhu v rámci JavaScriptu je prevzatý z programovacích jazykov Self a
Scheme. to je jazyk s viacerými paradigmami, ktorý podporuje objektovo, imperatívne a
funkčné štýly programovania.
Aplikácia JavaScriptu na použitie mimo webových stránok, napríklad v PDF dokumenty,
prehliadače špecifické pre jednotlivé stránky a widgety pre pracovnú plochu. Novšie a
rýchlejšie virtuálne počítače a na nich postavené rámce JavaScriptu (najmä Node.js) tiež
zvýšili popularitu JavaScriptu pre webové aplikácie na strane servera.
JavaScript bol formalizovaný v jazykovom štandarde ECMAScript a je ním predovšetkým používa
sa ako súčasť webového prehliadača (JavaScript na strane klienta). Toto umožňuje
programatické prístup k výpočtovým objektom v hostiteľskom prostredí. Knižnice
JavaScriptu
Knižnica JavaScript je knižnica vopred napísaného JavaScriptu, ktorá umožňuje jednoduchšie
práce vývoj aplikácií založených na JavaScripte, najmä pre Ajax a ďalšie webcentrické
technológií. Zatiaľ čo JavaScript bol vyvinutý spoločnosťou Netscape (a neskôr) Mozilla)
má už dlho prítomnosť na webe pre mnoho webových stránok, získal si najmä s nástupom
éry výpočtovej techniky Web 2.0, v ktorej funguje JavaScript a čoraz viac využívajú na
vývoj používateľských rozhraní pre aplikácie, na webe aj na počítači. JavaScript bol tiež
kombinovaný s CSS do vytvárať dynamické webové stránky, ktoré sa tiež stali populárnymi
ako efektívnejšie a prístupná alternatíva k webovým stránkam založeným na formáte Flash.
S rozšírenými požiadavkami pre JavaScript je to pre programátorov ľahší prostriedok na
vývoj takýchto dynamických rozhraní bolo treba. Knižnice jazyka JavaScript, napríklad
Prototype, script.aculo.us, Ext Knižnice miniaplikácií Core, jsPHP, MooTools a jQuery a

62
JavaScript, napríklad Ext JS, Boli vyvinuté súbory DHTMLX a Dojo Toolkit, ktoré
vývojárom umožnili sústrediť sa viac pri výraznejších aplikáciách Ajaxu. To viedlo k
ďalším spoločnostiam a skupiny, napríklad Microsoft a Yahoo! vývoj vlastných
JavaScriptových kódov knižnice používateľského rozhrania, ktoré sa dostanú do
vyvinutých webových aplikácií týmito spoločnosťami. Niektoré knižnice JavaScriptu
umožňujú ľahšiu integráciu JavaScriptu s inými technológiami pre vývoj webových
aplikácií, ako sú CSS, PHP, Ruby a Java. Mnoho knižníc obsahuje kód na zisťovanie
rozdielov medzi runtime prostrediami, a odstrániť potrebu aplikácií, ktoré by umožňovali
takéto nezrovnalosti. Takmer všetky knižnice JavaScriptu sa vydávajú buď pod
copycentrom alebo copyleftom licenciu na zabezpečenie bezlicenčnej distribúcie,
používania a úprav.

AI.1.5. Synchrónny a asynchrónny prenos dát pomocou HTTP a ich výhody a nevýhody. Čo
je AJAX a aké má kľúčové prvky (xmlhttprequest object a jeho stavy).

Synchronný prenos dát pomocou HTTP:

Princíp:
Synchronný prenos dát znamená, že klient (napr. webový prehliadač) očakáva, že dostane
odpoveď od servera predtým, ako pokračuje ďalšou činnosťou.
Po odoslaní požiadavky na server klient čaká na odpoveď, ktorá môže byť zvyčajne
spracovaná okamžite alebo do zreteľného časového intervalu.

Výhody synchronného prenosu:


Jednoduchosť implementácie: Synchronný prenos dát je jednoduchší na implementáciu,
pretože klient jednoducho čaká na odpoveď od servera a nemusí sa zaoberať riadením
viacerých požiadaviek naraz.
Jednoduchá logika riadenia: Synchronné prenosy sú intuitívnejšie a jednoduchšie na riadenie
v porovnaní s asynchrónnymi prenosmi, čo môže byť v niektorých prípadoch výhodou.

Nevýhody synchronného prenosu:


Blokovanie vlákien: Počas čakania na odpoveď od servera môže synchronný prenos blokovať
vlákna, čo znamená, že ďalšie činnosti v aplikácii sú pozastavené, čo môže viesť k zníženej
výkonnosti a efektívnosti.
Nižšia škálovateľnosť: Synchronné požiadavky môžu zahltiť serverové zdroje, najmä pri
veľkom počte súčasných pripojení, čo môže viesť k nižšej škálovateľnosti aplikácie.

Asynchrónny prenos dát pomocou HTTP:

Princíp:
Asynchrónny prenos dát umožňuje klientovi odoslať požiadavku na server a pokračovať
ďalšou činnosťou bez čakania na odpoveď.
Po odoslaní požiadavky klient môže pokračovať v práci a následne spracovať odpoveď, keď
ju dostane.

Výhody asynchrónneho prenosu:


Neblokuje vlákna: Asynchrónny prenos dát nepožaduje blokovanie vlákien, čo umožňuje
aplikácii pokračovať v práci aj počas čakania na odpoveď od servera.
Vyššia škálovateľnosť: Asynchrónne prenosy umožňujú efektívnejšie využívanie serverových
zdrojov a lepšiu škálovateľnosť, pretože umožňujú obsluhu viacerých požiadaviek naraz.

63
Nevýhody asynchrónneho prenosu:
Komplexnejšia implementácia: Asynchrónne prenosy vyžadujú komplexnejšiu
implementáciu, pretože klient musí byť schopný riadiť viacero požiadaviek naraz a správne
spracovať ich odpovede.
Ťažšia logika riadenia: Riadenie asynchrónnych požiadaviek môže byť zložitejšie, pretože
klient musí správne sledovať stav každej požiadavky a zabezpečiť, aby boli odpovede
správne spracované.

Oba typy prenosu majú svoje výhody a nevýhody a ich vhodnosť závisí od konkrétnych
požiadaviek aplikácie a preferencií vývojára. Synchronný prenos je často jednoduchší na
implementáciu a použitie vo väčšine prípadov, zatiaľ čo asynchrónny prenos sa často
uprednostňuje v prípadoch, keď je potrebné dosiahnuť vyššiu výkonnosť a efektívnosť.
Ajax (skratka pre asynchrónny JavaScript a XML) je skupina vzájomne súvisiace techniky
vývoja webu používané na strane klienta na vytváranie asynchrónnych webové aplikácie.
Vďaka Ajaxu môžu webové aplikácie odosielať údaje do a načítať dáta zo servera
asynchrónne (na pozadí) bez zasahovania so zobrazením a správaním existujúcej stránky.
Dajú sa načítať údaje pomocou objektu XMLHttpRequest. Napriek uvedenému názvu
použitie XML nie je povinné (namiesto nich sa často používa JSON. Pozri AJAJ) a
požiadavky nie sú potrebné byť asynchrónny. Ajax nie je jediná technológia, ale skupina
technológií. HTML a CSS môžu byť použité v kombinácii na označenie a štýlové
informácie. DOM je prístupný s JavaScriptom na dynamické zobrazenie a umožnenie
používateľovi komunikovať s predložené informácie. JavaScript a objekt XMLHttpRequest
poskytujú a metóda asynchrónnej výmeny údajov medzi prehliadačom a serverom do
vyhnúť sa opätovnému načítaniu celej stránky.
Termín Ajax začal predstavovať širokú skupinu webových technológií, ktoré môžu sa používa na
implementáciu webovej aplikácie, ktorá komunikuje so serverom v serveri na pozadí, bez
zásahu do aktuálneho stavu stránky. V článku ktorý zaviedol výraz Ajax, vysvetlil Jesse
James Garrett nasledujúce technológie sú zapracované:
•• HTML (alebo XHTML) a CSS na prezentáciu
•• Objektový model dokumentu (DOM) na dynamické zobrazovanie a interakciu s údajmi
•• XML na výmenu údajov a XSLT na jeho manipuláciu
•• Objekt XMLHttpRequest pre asynchrónnu komunikáciu
•• JavaScript na spojenie týchto technológií
Odvtedy však došlo k mnohým vývojom v oblasti technológií použitý v aplikácii Ajax a pri
definícii pojmu Ajax.
XML sa nevyžaduje na výmenu údajov, a preto sa XSLT nevyžaduje pre server manipulácia s
údajmi. JavaScript Object Notation (JSON) sa často používa ako alternatívny formát na
výmenu údajov, aj keď iné formáty, napríklad predformátované Možno použiť aj formát
HTML alebo obyčajný text. Asynchrónne HTML a HTTP (AHAH) zahŕňajú použitie
XMLHTTPRequest na získanie (X) fragmentov HTML, ktoré sa potom vložia priamo do
webu stránke.

AI.1.6. Jazyk XML, jeho syntax, využitie. Definujte, čo je DTD, SCHEMA a XSLT. Uveďte
aspoň dva značkovacie jazyky vychádzajúce z jazyka XML.

XML – Extensible Markup Language (XML) je značkovací jazyk, ktorý definuje množinu
pravidiel pre kódovanie dokumentov vo formáte, ktorý je čitateľný pre človeka aj pre stroj.
Je definovaná v špecifikácii XML 1.0, ktorú vypracovala W3C, a niekoľkých ďalších
súvisiacich špecifikáciách, čo sú všetky otvorené otvorené štandardy. Ciele návrhu XML
kladú dôraz na jednoduchosť, všeobecnosť a použiteľnosť cez internet. Jedná sa o textový
dátový formát so silnou podporou jazykov sveta pomocou Unicode. Aj keď sa návrh XML

64
zameriava na dokumenty, často sa používa na reprezentáciu ľubovoľných dátových
štruktúr, napríklad vo webových službách. Bolo vyvinutých veľa aplikačných
programovacích rozhraní (API), ktoré majú vývojárom softvéru pomôcť pri spracovaní
údajov XML, a existuje niekoľko schémových systémov, ktoré uľahčujú definíciu jazykov
založených na XML. Od roku 2009 byly vyvinuty stovky formátov dokumentu
využívajúcich syntax XML, včetně RSS, Atom, SOAP a XHTML. Formáty založené na
XML sa stali predvolenými pre mnoho nástrojov na zvýšenie produktivity v kancelárii,
vrátane Microsoft Office (Office Open XML), OpenOffice.org a LibreOffice
(OpenDocument) a Apple iWork. XML sa tiež použil ako základný jazyk pre komunikačné
protokoly, napríklad XMPP. XML bolo navrhnuté na prenos údajov, nie na zobrazovanie
údajov. Značky XML nie sú preddefinované. Musíte si definovať svoje vlastné značky.
XML je koncipovaný tak, aby popisoval každý sám seba. Je dôležité si uvedomiť, že XML
nenahrádza HTML. Vo väčšine webových aplikácií sa na prenos údajov používa XML,
zatiaľ čo HTML na formátovanie a zobrazenie údajov. Príklad údajov XML:
<?xml version=”1.0” encoding=”ISO-8859-1”?>
<note>
<to>Someone</to>
<from>Me</from>
<heading>Example</heading>
<body>Example of XML document!</body> </note>
Pravidlá syntaxe XML sú veľmi jednoduché a logické. Pravidlá sa dajú ľahko naučiť, a ľahko
použiteľný.
•• Všetky prvky XML musia mať uzatváraciu značku
•• V značkách XML sa rozlišujú veľké a malé písmená
•• Prvky XML musia byť správne vnorené
•• Dokumenty XML musia mať koreňový prvok
•• Niektoré špeciálne znaky (<,>, &, ‘,”) musia byť nahradené entitou
•• Všetky atribúty musia byť správne citované DTD a schéma Definícia typu dokumentu (DTD) je
sada deklarácií značiek, ktoré definujú a typ dokumentu pre značkovací jazyk rodiny SGML
(SGML, XML, HTML). DTD používa stručnú formálnu syntax, ktorá presne deklaruje,
ktoré prvky a môžu sa zobraziť odkazy, kde v dokumente konkrétneho typu a čo obsah a
atribúty prvkov sú. DTD môže tiež vyhlásiť subjekty, ktoré sa môžu použiť v dokumente
inštancie.
XML používa podmnožinu SGML DTD. Od roku 2009 novšie jazyky schémy podporujúce priestor
názvov XML (napríklad W3C XML Schéma a ISO RELAX NG) do značnej miery
nahradili DTD. Mená verzia DTD sa vyvíja ako časť 9 ISO DSDL. DTD pretrvávajú v
aplikáciách, ktoré vyžadujú špeciálne publikovacie znaky, ako sú XML a Odkazy na entity
znakov HTML, ktoré boli odvodené z väčších množín definované ako súčasť štandardného
úsilia ISO SGML. DTD je spojená s dokumentom XML alebo SGML pomocou dokumentu
deklarácia typu (DOCTYPE). DOCTYPE sa objaví v syntaktickej podobe fragment
doctypedecl blízko začiatku dokumentu XML. Vyhlásenie zisťuje, že dokument je
inštanciou typu definovaného odkazom DTD. DTD vydávajú dva druhy vyhlásení:
•• voliteľná externá podmnožina
•• voliteľná interná podskupina
Vyhlásenia v internej podmnožine tvoria súčasť DOCTYPE v dokumente sám. Vyhlásenia v
externej podmnožine sa nachádzajú v samostatnom texte spis. Na externú podmnožinu je
možné odkazovať prostredníctvom verejného identifikátora a / alebo systému identifikátor.
Programy na čítanie dokumentov nemusia byť potrebné na čítanie dokumentu externá
podmnožina. Jednou z nich je schéma XML, publikovaná ako odporúčanie W3C v máji
2001 niekoľkých jazykov schémy XML. Bol to prvý samostatný jazyk schémy pre XML
na dosiahnutie stavu odporúčania W3C. Kvôli zmätku medzi schémou XML ako

65
konkrétnou špecifikáciou W3C a jej použitím pojem, ktorý všeobecne popisuje niektoré
jazyky schémy, niektoré časti komunity používateľov označoval tento jazyk ako WXS
(W3C XML Schema), inicializmus pre W3C Dokumenty schémy sú usporiadané podľa
menného priestoru: všetky pomenované komponenty schémy patrí do cieľového priestoru
mien a cieľový priestor mien je vlastnosťou dokument schémy ako celok. Dokument
schémy môže obsahovať inú schému dokumenty pre rovnaký priestor mien a môže
importovať dokumenty schémy pre a iný menný priestor.
Hlavné komponenty schémy sú:
•• Deklarácie prvkov, ktoré definujú vlastnosti prvkov. Tie obsahujú názov prvku a cieľový menný
priestor.
Dôležitou vlastnosťou je typ prvku, ktorý obmedzuje, aké atribúty a deti môže prvok obsahovať
mať. V XSD 1.1 môže byť typ prvku podmienený hodnotami jeho atribúty. Prvok môže
patriť do substitučnej skupiny; ak prvok E je v substitučnej skupine prvku H, potom všade,
kde to schéma umožňuje Ak sa objaví H, na jeho mieste sa môže zobraziť E. Prvky môžu
mať obmedzenia integrity:obmedzenia jedinečnosti určujúce, že konkrétne hodnoty musia
byť jedinečné v rámci podstromu zakoreneného v prvku a referenčné obmedzenia určenie,
že hodnoty sa musia zhodovať s identifikátorom iného prvku. Element deklarácie môžu byť
globálne alebo lokálne a umožňujú používať rovnaký názov pre nesúvisiace prvky v
rôznych častiach dokumentu inštancie.
•• Deklarácie atribútov, ktoré definujú vlastnosti atribútov. Opäť vlastnosti zahrňte názov atribútu
a cieľový menný priestor Typ atribútu obmedzuje hodnoty, ktoré môže atribút nadobúdať.
Deklarácia atribútu môže zahŕňajú aj predvolenú hodnotu alebo pevnú hodnotu (ktorá je
potom jedinou hodnotou môže trvať).
•• Jednoduché a zložité typy. Tieto sú popísané v nasledujúcej časti.
•• Definície modelovej skupiny a skupiny atribútov. V zásade ide o makrá: pomenované skupiny
prvkov a atribútov ktoré možno opakovane použiť v mnohých rôznych formách definície
typov.
•• Použitie atribútu predstavuje vzťah komplexného typu a atribútu vyhlásenie a označuje, či je
atribút povinný alebo voliteľný keď sa používa v tomto type.
•• Častica prvku podobne predstavuje vzťah komplexného typu a deklarácia prvku a označuje
minimálny a maximálny počet koľkokrát sa prvok môže objaviť v obsahu. Rovnako ako
častice prvkov,modely obsahu môžu obsahovať častice modelovej skupiny, ktoré fungujú
ako iné terminály v gramatike: definujú jednotky výberu a opakovania v rámci postupnosť
povolených prvkov. Ďalej sú povolené zástupné častice, ktoré umožňujú súbor rôznych
prvkov (možno akýkoľvek prvok, ak je v určitom mennom priestore). Medzi ďalšie
špecializovanejšie komponenty patria anotácie, tvrdenia, notácie,
XSLT (Extensible Stylesheet Language Transformations) [31] je jazyk
na transformáciu dokumentov XML do iných dokumentov XML alebo iných objektov ako je
HTML pre webové stránky, obyčajný text alebo do formátovacích objektov XSL, ktoré
potom možno previesť na PDF, PostScript a PNG.
Pôvodný dokument sa nezmení; nový dokument sa vytvorí skôr o obsahu existujúceho. Vstupnými
dokumentmi sú zvyčajne súbory XML, ale čokoľvek, z čoho môže procesor zostaviť dáta
XQuery a XPath
Možno použiť model [32], napríklad tabuľky relačnej databázy, alebo geografické informačné
systémy.
XSLT je Turingov úplný jazyk, čo znamená, že môže určiť akýkoľvek výpočet ktoré môže vykonať
počítač.
Vo svojom jadre má XSLT jednoduchý prípad použitia: vziať existujúci dokument XML a
transformovať do iného formátu. Nový formát môže byť XML, HTML alebo iba obyčajný text,
napríklad súbor s hodnotami oddelenými čiarkami (CSV). Toto je mimoriadne spoločný
scenár. Jedným z hlavných dôvodov XML je mať zariadenie na ukladanie údaje v

66
neutrálnom prezentačnom a aplikačne neutrálnom formáte, aby ich bolo možné ľahko
vykonaťznovu použité. XSLT sa používa v dvoch bežných situáciách:
•• Prevod XML do formátu špecifického pre prezentáciu, napríklad HTML.
•• Konverzia z formátu, ktorému rozumie jedna aplikácia, do štruktúry vyžaduje iný. Toto je
obzvlášť bežné pri výmene údajov medzi rôznymi organizáciami.
Odkedy bol XSLT pôvodne koncipovaný, rozrástol sa a teraz má tiež svoje schopnosti na
spracovanie súborov iných ako XML, takže si môžete vziať súbor vo formáte obyčajného
textu a transformovať ho do XML alebo iný formát. Procesor XSLT prijíma jeden alebo
viac zdrojových dokumentov XML a jeden alebo viac viac modulov šablón so štýlmi XSLT
a spracuje ich na vytvorenie výstupného dokumentu. Šablóna so štýlmi XSLT obsahuje
zbierku pravidiel šablón: pokyny a ďalšie smernice, ktoré usmerňujú procesor pri výrobe
výstupu dokument. Jazyk XSLT je deklaratívny: namiesto vypisovania imperatívnej
sekvencie znakov akcie, ktoré sa majú vykonať v stavovom prostredí, pravidlá šablón
určujú iba ako spracovať uzol zodpovedajúci konkrétnemu vzoru podobnému XPath, ak by
to procesor mal náhodou sa s jedným stretnete a obsah šablón účinne obsahuje funkčné
výrazy, ktoré priamo reprezentujú ich hodnotenú formu: výsledok strom, ktorý je základom
výstupu procesora. Procesor postupuje podľa pevne stanoveného algoritmu: za
predpokladu, že šablóna so štýlmi už bola prečítané a pripravené, procesor vytvorí zo
vstupného dokumentu XML zdrojový strom. Potom to začne spracovaním koreňového uzla
zdrojového stromu a nájdením v šablóna so štýlmi najlepšie zodpovedajúca šablóna pre
daný uzol a hodnotenie šablóny ‘ s obsahom.
Pokyny v každej šablóne všeobecne smerujú na procesor buď na vytvorenie uzlov vo strome
výsledkov, alebo na spracovanie viacerých uzlov v zdroji rovnakým spôsobom ako
koreňový uzol. Výstup je odvodený zo stromu výsledkov.

2. Modelovanie podnikových systémov

AI.2.1. Vývoj, architektúry a klasifikácia priemyselných výrob. Nové formy a princípy


modelovania a riadenia výrob. Industry 4.0., vznik, výhody, nevýhody a prínosy pre
malé a stredné podniky. Kyberneticko-fyzikálne princípy modelovania a riadenia
podnikových výrobných systémov.

Prvá priemyselná revolúcia(Priemysel1.0) - technicko-vedecká revolúcia–


začiatokkoniec18.storočia(1779).
Zásadnézmeny:poľnohospodárstvo,výroba,ťažbasurovínaďalšiehospodárskeipriemyselnésektory.
Charakteristika: Priemysel1.0-
zmenaprevažujúcehospôsobudopravy,energetickýchzdrojovaprenosuinformácií.
•Novézariadeniapoháňanévodnouaparnouenergiou.Parnýstroj,(1765),symbolpriemyselnejrevolúci
e-JamesWatt.

67
•Výroba-ručnávýroba-manufaktúry-zapomocinovýchzdrojovenergie(hlavne uhlie,voda). Deľba
práce a silný rozvoj industrializácie.
•Zmeny-spoločenské, kultúrne a politické
•Významné vedecké a technologické objavy(hlavne pohony) •Parný stroj je symbolom
prvejpriemyselnejrevolúcie.
Druhá priemyselná revolúcia (Priemysel 2.0) -obdobie elektrifikácie a motorizácie.
Začiatokonecelýchstorokovneskôr-vroku1870.
Charakteristika-
masovávýroba(novádeľbapráce)zapomocielektrickejenergie,jepretotoobdobiesymbolom.
•Elektrina-osvetlenie,pohonstrojov,automobilov,električiekkinematografia,
•Vynálezy(T.Edison-žiarovkavroku1879,N.Tesla,F.Křižík,A.Jedlík)
•Prvá elektrotechnická továreň(Emil Kolben)
•Automobilový priemysel začiatok–prvé továrne(linky)
Tretia priemyselná revolúcia (Priemysel 3.0) – obdobie digitalizácie, automatizácie a robotizácie
Rok1969zrodtretejpriemyselnejrevolúcieapretotoobdobiejecharakteristickýpríchodmikroprocesor
ovavyužitiapočítačo vnariadenie(DDC).
•Automatizáciavýrobnasadenieelektroniky,riadiacichsystémovainformatiky,vizualizácieaslužbyp
odporujúceautomati
záciuvýroby(chemickýpriemysel,elektrárne,automobilovýaleteckýpriemysel).
•Prvé štruktúry a algoritmy riadenia strojova procesov, začiatok digitalizácie výrob (Slovnaft,
Trinecke železiarne, ChZJD, Duslo Šaľa, Nováky, Vojany, Gabčíkovo,...a pod,(SR-
RPP16,DEC,Foxboro,...).
•Vývojnovýchprogresívnychmateriálovsvysokoupevnosťouahúževnatosťouavynikajúcimifyzikáln
ymi,mechanickými ichemickýmivlastnosťami.
•Nové výrobné postupy(aditívnetechnológie-3Dtlač, rapid prototyping, reverzné inžinierstvo) a
široká škála internetových služieb, podpora výroby, zdieľanie informácií medzi ľuďmi.
•Alternatívnezdrojeenergiedomyaautásastávajúmalýmielektrárňamivyužívajúpresvojpohonalterna
tívnychzdrojovenergie.
•Výrobu elektriny solárnych ohrevov, fotovoltaiky, oknáobsahujúc eneviditeľné kvantovej bodky
či dômyselné fotovoltické nátery s nanočasticami.
•Novésystémyzdieľanieaprenosudát,chytrételefónyadotykovézariadenia
•Štvrtá priemyselná revolúcia Industry 4.0 (Priemysel 4.0)
Spojenie a kombinácia pokročilých výrobných technológií s informačnými technológiami, dátami
a virtuálnou realitou je hnacou silou ďalšej priemyselnej revolúcie, ktorá umožňuje lídromv
oblasti výroby kombinovať informačné technológie a procesnými technológiami
prevytváranie vysokoefektívnych výrobných procesov.
Industry4.0(Priemysel4.0)štvrtápriemyselnárevolúciajepomenovanierozsiahlychzmienprudkovstu
pujúcichdosúčasnéh
opriemyslu.Nositeľomtýchtozmienjemodernáautomatizácia,digitalizáciavýrobkov,digitali
záciaaoptimalizáciavšetkýc hpodnikových procesov, vrátane služieb.
Piliere konceptu Industry 4.0, Priemysel 4.0
1. Kyber-fyzikálne systémy
2. Internet vecí (Internet of Things)
3. Internet služieb (Cloudové služby)
4. Big dáta
5. Cloud – úložiská dát
4. Digitálna ekonomika
•Schopnosť urobiť výrobok inteligentným, a taktiež rozumieť obchodným príležitostiam, ktoré
inteligentné produkty ponúkajú. •Typickým použitím IoT sú monitorovacie a meracie smart
senzory (priemysel, poľnohospodárstvo, životné prostredie, domácnosti) Náhrada doteraz
používané zariadenia a systémy na báze mobilných sietí.

68
•Snímače, stroje, výrobky a prostriedky IT sú vzájomne prepojené a budú na seba reagovať
pomocou štandardných komunikačných protokolov, aby mohli predvídať prípadné chyby
či poruchy, konfigurovať samy seba a v reálnom čase sa prispôsobovať zmeneným
podmienkam. Internet vecí –Industry 4.0: Na internet je napojené:
-každé výrobné zariadenia,-každý výrobok (i nedokončený),-každý nosič výrobku
Jedná sa o fyzickej napojenie / HW určené na priamu komunikáciu medzi fyzickými systémami.
Internet služieb -Industry 4.0 :
-každé zariadenie reprezentované SW entitou, tá si môževyvolať ľubovoľnú službu (HW
nezávislú)-prístup k ontológiám, www, k dátam v cloudoch či iných
úložiskách-môže bežať na rovnakom fyzickom procesore, ale aj na úplne inom
Cloud Computing „pojem“ pre
využívaniesoftvérualebohardvéruformouslužiebprostredníctvominternetu. V súčasnosti
jeden z najdôležitejších trendov tejto oblasti, na ktorý prechádzajú aj najväčší
poskytovatelia podnikových softvérových služieb
Smart fabrika v ére Industry 4.0 -tri kľúčové komponenty:
•prvý-vybavenie procesov snímačmi (smart) ktoré neustále automaticky zbierajú dáta zo strojov,
zariadení, výrobných pásov, skladov, materiálov a iných komponentov vo výrobe.
•druhý-komunikačná infraštruktúra, cez ktorú dokážu stroje komunikovať medzi sebou, s ľuďmi,
aj s rôznymi IT systémami.
•tretí-využívanie softvéru ktorý dokáže všetky dáta nielen zhromažďovať, ale následne ich aj
vyhodnocovať, analyzovať a vyvodzovať z nich závery. Inými slovami, SW vnáša do
zhluku dát inteligenciu a poriadok.

AI.2.2. Princípy modelovania podnikových systémov. Klasifikácia matematických modelov


podnikových systémov.
Model určitého systému alebo objektu je taký etalon správania, ktorý vyjadruje a zahŕňa
charakteristické a signifikantné vlastnosti určitého systému alebo objektu.
Matematický model reprezentuje taký abstraktný model skúmaného systému, ktorý využíva
matematické relácie a vzťahy pre opis chovania sa systému.
Matematické modely sú využívané pri skúmaní vlastnosti chovania sa procesov, návrhu ich
riadenia a simuláciu chovania sa najmä v prírodných vedách, inžinierskej priemyselnej
praxi, fyzike, biológii, mechanike, elektrotechnike, riadení procesov, ale taktiež v
sociálnych vedách, ekonomike, sociológii, politických vedách, zdravotníctve, počítačových
systémoch a pod
Vývoj nových systémov nutnosť poznania statických a dynamických vlastnosti systému
prostredníctvom matematických modelov. Vlastnosti - chovanie procesu, objektu) sa dajú
vyjadriť matematickým opisom systému – tj. jeho matematickým modelom vo vhodnom
tvare:
(statické systémy – algebraické rovnice, dynamické systémy diferenciálne a diferenčné rovnice,
obrazové prenosy, algebraické a logické vzťahy a pod.
Matematický model možno získať v podstate dvojakým spôsobom:
Meraním na reálnom systéme počas prevádzky alebo meraním na fyzikálne podobnom
laboratórnom modeli systému s následným vyjadrením nameraných výsledkov
matematickými vzťahmi medzi vstupmi a výstupmi pomocou vhodných aproximácií.
Matematickým vyjadrením statických a dynamických pochodov v elementárnych útvaroch
(vhodne zvolenej veľkosti ), matematickým vyjadrením na základe známych
prírodovedných zákonov. Identifikácia systému je proces (tvorby modelu) pomocou
ktorého získavame (hľadáme, odhadujeme) jeho matematický model.
Hlavným výsledkom identifikácie je matematický model teda tak jeho štruktúra ako aj optimálne
parametre (koeficienty) (štruktúru-opis a parametre).

69
Optimálna štruktúra a optimálne parametre modelu sa hľadajú (odhadujú) podľa kritéria, ktoré
vyjadruje najlepšiu mieru zhody medi identifikovaným systémom a jeho modelom.
Štruktúra identifikovaného systému pomocou matematického modelu je realizovaná
matematickým opisom vyjadrujúcim podstatné vlastnosti identifikovaného systému.
Metódy identifikácie systému môžeme rozdeliť do dvoch základných skupín:
✓ identifikácia systému na základe znalosti fyzikálnych, chemických, ekonomických a
biologických zákonov vyjadrujúcich chovanie sa procesu. Matematický model je vyjadrený
prostredníctvom algebraických, diferenciálnych, diferenčných rovníc, prenosových funkcií
v s-z oblasti, fuzzy množinami, neurónovými sieťami, resp kombináciou uvedených opisov.
✓ identifikácia systému na základe meraní (experimentov) vstupov a výstupov a merateľných
porúch). Matematický model, ktorý takto vznikne môže byť parametrický a
neparametrický.
1. Parametrické modely reprezentujú také matematické modely, ktoré sa dajú opísať
prostredníctvom algebrických, diferenciálnych, diferenčných rovníc, prenosových funkcií
v s-z oblasti.
2. Neparametrické modely reprezentujú taký druh matematických modelov pri ktorých sa
identifikáciou neodhadujú parametre systému. Medzi takéto modely patrí napr model
reprezentovaný frekvenčnou prenosovou funkciou, prechodovou a impulznou
charakteristikou, ale aj modelmi na báze fuzzy množín, umelých neurónových sietí, resp
kombináciou metód soft computingu.

AI.2.3. Statické a dynamické modely systémov a ich využitie v modelovaní, simulácii a


riadení. Matematické formy a opisy statických modelov výrob. Optimalizácia
parametrov matematických modelov na základe meraných I/O údajov.
Statické modely – identifikácia parametrov
Statické modely predstavujú také typy modelov u ktorých vstupné a výstupné veličiny nie sú
funkciami času a identifikovaný model teda jeho výstup je funkciou vstupných veličín
(modely trenia, prevodové charakteristiky ventilov, klapiek a pod.)
Statické matematické modely sa dajú opísať algebrickými rovnicami (lineárne, nelineárne, SISO
(jeden vstup/jeden výstup), MISO (viac vstupov/viacvýstupov), MIMO (viac vstupov/viac
výstupov). Statické modely – identifikácia parametrov systémov metódou regresnej
analýzy.
Cieľom modelovania (aproximácie) je nájsť vhodnú analytickú funkciu-model (polynóm,
hyperbolickú, exponenciálnu závislosť a pod.), ktorá “dostatočne presne” vystihuje
závislosť výstupnej meranej veličiny od vstupnej meranej veličiny.
Aproximovaná funkcia potom tvorí statický model príslušnej závislosti: vstupná (nezávisle
premenná) – výstupná (závisle premenná) veličina. Postup pri identifikácii:

70
Predpokladáme, že máme n nameraných údajov, t.j. dvojíc: vstupná veličina, výstupná veličina.
Označme xi i-tu nameranú hodnotu vstupnej veličiny a yi i-tu nameranú hodnotu výstupnej
veličiny (zodpovedajúcu hodnote xi) .
Hľadáme teda funkčnú závislosť y = f(x) metódou najmenších štvorcov, tak, aby sme
minimalizovali súčet kvadrátov odchýlok nameraných hodnôt od “regresnej” náhrady f(x):
n 2
kritérium
E= yi − f (xi ) → min
i=1

Meran é údaje Modelované údaje – hľadaný matem.model obsahuje neznáme parametre modelu

Metódy výpočtovej inteligencie v modelovaní procesov


Fuzzy modely
Neurónové modely
Hybridné fuzzy
- neuro modely

Identifikácia dynamického systému je proces (tvorby modelu) pomocou ktorého


získavame (hľadáme, odhadujeme) jeho matematický model.
Hlavným výsledkom identifikácie má byť matematický model teda tak jeho štruktúra ako
aj optimálne parametre (koeficienty) (štruktúru-opis a parametre).
Optimálna štruktúra a optimálne parametre modelu sa hľadajú (odhadujú) podľa kritéria,
ktoré vyjadruje najlepšiu mieru zhody medi identifikovaným systémom a jeho modelom.
Štruktúra identifikovaného systému pomocou matematického modelu je realizovaná
matematickým opisom vyjadrujúcim podstatné vlastnosti identifikovaného systému.
Metódy identifikácie systému môžeme rozdeliť do dvoch základných skupín:
Identifikácia systému na základe znalosti fyzikálnych, chemických, ekonomických a
biologických zákonov vyjadrujúcich chovanie sa procesu. Matematický model je
vyjadrený prostredníctvom algebraických, diferenciálnych, diferenčných rovníc,
prenosových funkcií v s-z oblasti, fuzzy množinami, neurónovými sieťami, resp
kombináciou uvedených opisov.
Identifikácia systému na základe meraní (experimentov) vstupov a výstupov a
merateľných porúch). Matematický model, ktorý takto vznikne môže byť parametrický a
neparametrický.
1.Parametrické modely reprezentujú také matematické modely, ktoré sa dajú opísať
prostredníctvom algebrických, diferenciálnych, diferenčných rovníc, prenosových funkcií
v s-z oblasti.
2. Neparametrické modely sú reprezentujú taký druh matematických modely pri ktorých
sa identifikáciou neodhadujú parametre systému. Medzi takéto modely patrí napr model

71
reprezentovaný frekvenčnou prenosovou funkciou, prechodovou a impulznou
charakteristikou, ale aj modelmi na báze fuzzy množín, umelých neurónových sietí, resp
kombináciou metód soft computingu.

AI.2.4. Metódy výpočtu optimálnych parametrov matematických modelov. Kvalita modelov,


kritéria pre posudzovania kvality. SW prostredia pre modelovanie, simuláciu a
výpočet optimálnych parametrov modelov.

1. Analytické vzťahy založené na fyzikálnych zákonoch a diferenciálnych rovniciach:


o Tieto metódy vychádzajú z pochopenia fyzikálnych zákonov a mechanizmov,
ktoré riadia daný systém. Na základe týchto znalostí môžeme zostaviť
diferenciálne rovnice, ktoré popisujú dynamiku systému. Potom sa analyticky
riešia tieto rovnice na získanie vzťahov medzi vstupmi a výstupmi systému a jeho
parametrov.
2. Octave, MATLAB – Ident-Simulink (ToolboxOptim, Ident):
o Identifikácia a optimalizácia parametrov dynamických modelov v prostrediach ako
Octave alebo MATLAB často využíva nástroje a balíky ako Ident a
ToolboxOptim. Identifikácia parametrov v týchto prostrediach môže zahŕňať
použitie rôznych modelovacích štruktúr a optimalizačných algoritmov na
zlepšenie zhody medzi modelom a reálnymi dátami. Simulink potom umožňuje
vizualizovať a simulovať správanie sa systému na základe získaných parametrov.
3. Preurčený systém rovníc SISO (Single Input Single Output) aj MISO (Multiple
Input Single Output):
o Tento termín sa týka systémov s jedným alebo viacerými vstupmi a jedným
výstupom. Preurčený systém rovníc sa používa na popis takýchto systémov, kde
počet parametrov v modeli presahuje počet dostupných dát. To môže viesť k
viacero riešeniam alebo potrebe dodatočných obmedzení na získanie
jednoznačného riešenia.
4. ToolboxIdent (arx, armax, oe, bja a iné, help ident):
o ToolboxIdent je sada nástrojov v MATLABe, ktorá poskytuje rôzne metódy
identifikácie parametrov modelov. Medzi tieto metódy patria ARX
(AutoRegressive with eXogenous inputs), ARMAX (AutoRegressive Moving
Average with eXogenous inputs), OE (Output Error) a ďalšie. Tieto metódy majú
rôzne predpoklady o štruktúre modelu a môžu byť vhodné pre rôzne typy
systémov.

Tieto metódy a nástroje umožňujú identifikovať a optimalizovať parametre dynamických


modelov, čo je kritický krok pri modelovaní a riadení komplexných systémov v rôznych
odvetviach, ako je napríklad automobilový priemysel, priemyselná automatizácia, biotechnológia
a ďalšie.

72
AI.2.5. Modelovanie a simulácia výrobných procesov a výrobných liniek . Klasifikácia
výrobných procesov podľa usporiadania výrobných prostriedkov.

Rozvoj modelovania a simulácie výrobných procesov a liniek prináša do priemyselného prostredia


efektívne nástroje na analýzu, optimalizáciu a plánovanie výroby. Tu je podrobný pohľad
na túto tému bez zamerania sa na využitie umelej inteligencie:
1. Modelovanie a simulácia výrobných procesov:
a. Modelovanie:

Vytvorenie abstraktného reprezentácie: Identifikácia kľúčových procesov, zariadení a ich


vzájomných vzťahov s cieľom vytvoriť abstraktný model výrobného systému.
Simulácia toku materiálu a informácií: Modelovanie pohybu materiálu a informácií v rámci
výrobných procesov a identifikácia potenciálnych obmedzení alebo prekážok.

b. Simulácia:

Virtuálna reprezentácia výrobného prostredia: Vytvorenie virtuálnej verzie výrobných zariadení


a prostredia, ktorá umožňuje simulovať rôzne scenáre a podmienky bez fyzického
nasadenia.
Analýza výkonnosti a efektivity: Simulácia umožňuje hodnotiť výkonnosť výrobných procesov
a identifikovať oblasti pre zlepšenie a optimalizáciu.

2. Klasifikácia výrobných procesov podľa usporiadania výrobných prostriedkov:


a. Podľa topológie:

Lineárne výrobné linky: Procesy organizované do jedného lineárneho toku materiálu alebo
produktu.

Paralelné výrobné linky: Rôzne procesy prebiehajú súčasne, pričom každý má vlastný tok
materiálu alebo produktu.
Kombinované výrobné linky: Kombinácia lineárnych a paralelných procesov v rámci výrobného
prostredia.

b. Podľa typu výrobných prostriedkov:

Diskrétna výroba: Procesy, kde jednotlivé kroky sú diskretizované a oddelené, čo umožňuje


jasnú identifikáciu jednotlivých výrobkov.
Kontinuálna výroba: Nepretržitý tok materiálu alebo produktu, ktorý nepretržite prechádza cez
výrobný systém.

Modelovanie a simulácia výrobných procesov a liniek sú kľúčové nástroje pre optimalizáciu a


plánovanie výroby v priemysle. Pomáhajú pri identifikácii možných problémov, testovaní
nových technológií a zlepšovaní efektivity výrobných procesov.

AI.2.6. Prostredia pre modelovanie, optimalizáciu a simuláciu výrobných liniek


(Tecnomantics, Plant simulation. Opis a využitie jednotlivých modulov pre
modelovanie a simuláciu výrob. Prínosy simulačných modelov výroby a výrobných
liniek pri projektovaní a konfigurácií nových výrob.

73
Tecnomatix PLANT SIMULATION
• vyvinutý spoločnosťou Siemens PLM
• umožňuje modelovanie výrobných systémov, procesov, toku materiálu a logistických
operácií
• je ale samostatne fungujúcim celkom
• dostupný aj menším podnikom, ktorým sa neoplatí (či už finančne, alebo zložitosťou
výrobné procedúry) používať ostatný softvér z balíka Tecnomatix či Teamcenter.
• Ide o takzvaný DES Software (Discrete Event Simulation Software)
• analýza všetkých procesov prebieha v diskrétnom čase
• vytváranie rôznych scenárov a výber najlepšieho
• je orientovaný na už bežiaci výrobu a jej vyladenie, môžeme ho však rovnako tak využiť
ešte pred samotnou stavbou výrobnej haly.
Kľúčové vlastnosti:
• objektovo orientované modely s hierarchiou a odkazmi
• otvorená architektúra
• správa knižníc a objektov
• optimalizácia pomocou genetických algoritmov
• simulácia a analýza spotreby energie
• automatická analýza výsledkov simulácie
• tvorca HTML zostáv/reportov
• 2D a 3D prezentácie
• jazyk SimTalk pre tvorbu vlastných metód
Udávané hlavné prínosy (orientačne):
• až 6% úspory pre počiatočnú investíciu
• zvýšenie produktivity existujúceho systému až o 20%
• zníženie nákladov na nový systém až 20%
• optimalizácia spotreby prostriedkov a opakované použitie
• zníženie zásob až o 60%
• skrátenie doby priepustnosti až o 60%
• optimalizácia systémov pre zníženie spotreby energie
Frame window
• okno pre vkladanie objektov a vytváranie schematického modelu pre simuláciu

Modelovanie:
• Objektovo orientovaný softvérový nástroj
• Proces výroby je modelovaný za pomoci objektov
• znázorňujú celé stroje, ich časti, pracovníkov, dopravníky a ďalšie zariadenia
• obmedzený počet základných objektov
• Ak sa nedá proces popísať dostupnými objektami, musíme ho dekomponovať o
zjednodušenie na podsystémy

74
Adresovanie
• Hierarchická štruktúra umožňuje jednoduché a presné adresovanie za pomoci bodkovej
notácie
• Každý objekt špecifikujú jeho vlastnosti napr. pre robot: rýchlosť, spotreba, procesný čas,
poruchy atď.
• Vlastnosti sa nazývajú atribúty
• Každý atribút má svoj názov (attribute type) a hodnotu (attribute value)
• K atribútom pristupujeme rovnakým spôsobom ako k objektom a zahŕňame ich na konci
adresy
Triedy
• Základným prvkom objektovo orientovaných programovacích jazykov je trieda (class)
• Umožňuje definovanie a vytváranie vlastných objektov, niektoré vlastnosti a určité
správanie
• Ak chceme použiť nový objekt, bez nadväznosti na už existujúce objekty, vytvoríme pre
neho novú triedu o Nadefinujeme jeho vlastnosti a získame nový dátový typ
• využívame jednotlivé inštancie tejto našej triedy, čo sú už konkrétne objekty, ktoré majú
rovnaké základné vlastnosti (atribúty) ako trieda a niektoré špecifické vlastnosti inštancie
(napríklad meno).
Dedičnosť
• Možnosťou, ako vytvoriť novú triedu, je využitie dedičnosti
• Dedením dostaneme podtriedu (subclass) odvodenú od už existujúcej triedy
• Prevezmú sa vlastnosti ale užívateľ ich môže zmeniť bez zmeny pôvodnej
• Výhoda pri tvorbe objektov s mierne odlišnými vlastnosťami
• Netreba potom vytvárať tiredy od základu
Objekty- triedy
• Štandardnej triedy (objekty) môžeme deliť do šiestich kategórií:
• material flow objects
• resources
• information flow objects
• user interface/statistics objects
• mobile units
• general objects
• User interface/ statistics objects
• Pravdepodobnostné distribúcie
• Exit Strategy
• Modelovanie jednoduchého výrobného postupu

3. Projektový manažment

AI.3.1. Popíšte fázy projektu pre klasický prístup. Vysvetlite zdroje a závislosti úloh v
projekte, význam míľnikov v projekte.

Klasický prístup k riadeniu projektov je založený na lineárnom a sekvenčnom modeli vývoja, kde
sa projekt delí na fázy, pričom každá fáza má presne definované ciele a výstupy. Tu sú
typické fázy projektu:

Inicializácia:
V tejto fáze sa identifikujú potreby a ciele projektu. Definuje sa jeho rozsah, zdroje, časový
plán a rozpočet. Taktiež sa vytvára tímová štruktúra a určujú sa zodpovednosti jednotlivých
členov tímu.

75
Plánovanie:
V tejto fáze sa detailne plánujú všetky aktivity, ktoré je potrebné vykonať na dosiahnutie
cieľov projektu. To zahŕňa stanovenie časových a finančných odhadov, identifikáciu rizík
a ich riadenie, alokáciu zdrojov a stanovenie postupu a metodík práce.

Vykonať:
Po schválení plánu sa projekt začne realizovať. Aktivity sú vykonávané podľa stanoveného
harmonogramu a kontroluje sa dodržiavanie stanovených noriem a postupov.

Kontrola a monitorovanie:
Počas celej realizácie projektu sa pravidelne kontroluje stav a pokrok práce. Monitorujú sa
časové a finančné plány, riešia sa vzniknuté problémy a zabezpečuje sa dodržiavanie kvality
a štandardov.

Dokončenie a overenie:
V tejto fáze sa dokončujú všetky aktivity a výstupy projektu. Sú overené a overené, či spĺňajú
požiadavky a ciele definované v iniciálnej fáze projektu.

Zdroje a závislosti úloh v projekte:

Zdroje môžu zahŕňať ľudské zdroje, materiálne prostriedky, finančné prostriedky a


technologické zdroje.
Úlohy v projekte majú závislosti, ktoré môžu byť buď externé (napríklad dodávateľské
závislosti) alebo interne (napríklad logické závislosti medzi úlohami). Napríklad, nejaké
úlohy nemôžu začať, kým sa nedokončia iná úloha.
Rozoznávame v projektoch minimálne 2 typy zdrojov: pracovné a materiálne zdroje. Zdrojom
môže
byť konkrétna osoba (resp. typová skupina ľudí) alebo zariadenie (materiálne zdroje).
V programoch pre projektové riadenie nie je povinné zdroje zadávať, ale ak ich zadáme, bude náš
plán projektu presnejší a umožní ďalšiu analýzu. Pre pracovné zdroje zadávame náklady na
jednotku času a na materiálne zdroje celkové náklady.

Medzník (Míľnik, Milestone) je obvykle úloha s kratšou dĺžkou trvania, slúžiace k označovaniu
významných miest v projekte, v PRINCE2 je to proces Riadenie hraníc etapy.
Pri míľniku projektu kontrolujeme plnenie jednotlivých súhrnných úloh danej etapy a kontrola
odovzdania úloh v etape (PRINCE2 jednotlivé pracovné balíky WP). Dôležité sú merateľné
ukazovatele projektu, ktoré sa v míľniku kontrolujú. Vysvetlite obrázok pre WP v etape a zelený
proces Riadenie hraníc etapy.

76
AI.3.2. Vysvetlite pojem Časová os projektu, Ganttov diagram a Baseline. Aký je rozdiel
medzi klasickým a agilným prístupom.
Časová os pomáha informovať investora (kľúčových riešiteľov projektu) o celkovom stave
projektu s
hlavnými úlohami (etapami) a medzníkmi (Riadením medzi etapami), ktoré je dobré vidieť v
časovom horizonte riešenia projektu. Význam je pri kontrole a ukončení projektu s porovnaním s
pôvodným plánom projektu a jej časovej osi.

Ganttov diagram je typ grafu, ktorý ilustruje harmonogram projektu, pomenovaný podľa H.
Gantta,
ktorý tento graf vytvoril. Ganttov diagram zobrazuje úlohy; vzťahy závislostí medzi úlohami,
priradené
zdroje a aktuálny stav plnenia projektu k pôvodnému plánu. Všetky informácie sú zobrazené v
mierke
časovej osi. Programy umožňujú meniť mierku časovej osi pre Ganttov diagram. Vysvetlite
obrázok,
kde sú etapy a medzníky (míľniky).

77
Dôležitou časťou projektu je zostavenie (plánovanie), ktoré obsahuje údaje, kedy má každá úloha
začať, ako dlhú dobu každá úloha bude trvať, vzájomné prepojenie úloh a dátum ukončenia
celého projektu. Plán projektu môže tiež obsahovať údaje o využití projektových zdrojov a ich
nákladoch (finančný plán projektu). Pre začiatok projektu nastavujeme pôvodný plán „Baseline“
začiatok realizácie projektu, vzhľadom ku ktorému sa robí porovnávanie pokroku v projekte
počas riešenia (sledovania) projektu. V metodike PRINCE2 Začiatok realizácie projektu je až po
etape Predprojektovej príprave a Inicializačnej etape.

Rozdiel medzi klasickým a agilným PM:


Klasický prístup vychádza z požiadaviek pevnej funkcionality produktu, a tým je aj rozsah fixný,
Pri klasickom prístupe sa stáva, že je potrebné predlžiť čas riešenia projektu, pridávať do vývoja
ďalšie zdroje. Agilný prístup naopak považuje čas a zdroje za fixné (stanovené zadávateľom na
začiatku) a mení sa rozsah - funkčné požiadavky produktu. Často je výhodnejšie čo najrýchlejšie
uvoľniť produkt na trh a následne na základe spätnej väzby dopracovať produkt.

AI.3.3. Popíšte etapy projektu z hľadiska agilného prístupu, aké role rozoznáva Scrum, načo
slúži Produktový Backlog.

Agilný prístup k riadeniu projektov sa líši od klasického prístupu tým, že zdôrazňuje iteratívny a
inkrementálny prístup k vývoju, čo umožňuje pružnosť a schopnosť prispôsobiť sa zmenám
v priebehu projektu. Tu sú typické etapy projektu z hľadiska agilného prístupu:

Iniciácia:
V tejto fáze sa identifikujú potreby a ciele projektu. Stanovuje sa vytváraním produktov,
definujú sa základné požiadavky a určuje sa spôsob, ako tieto požiadavky budú plnené.
Agilný prístup zdôrazňuje spoluprácu s klientom a zainteresovanými stranami už v tejto
rannej fáze, aby sa lepšie pochopili ich potreby a očakávania.

Analýza a plánovanie iterácií:


V agilnom prístupe sa vývoj projektu delí na krátke časové úseky nazývané iterácie alebo
sprinty. V tejto fáze sa analyzujú požiadavky a definujú sa ciele pre každú iteráciu.
Plánovanie je flexibilné a často sa prispôsobuje na základe spätnej väzby zo zákazníka a
pokroku dosiahnutého v predchádzajúcich iteráciách.

78
Vývoj a implementácia:
Počas každej iterácie tímy pracujú na vývoji a implementácii funkcionality, ktorá bola
identifikovaná ako najdôležitejšia pre danú fázu projektu. Tímy sa stretávajú na
pravidelných stotožneniach (napríklad denných scrumových stretnutiach), aby prezentovali
pokrok, zdieľali informácie o prekážkach a plánovali ďalšie kroky.

Overenie a hodnotenie:
Po každej iterácii sa vykonáva overenie a hodnotenie funkcionality vytvorenej tímom. To
zahŕňa testovanie, kontrolu kvality a hodnotenie dosiahnutého pokroku voči cieľom
projektu. Zákazník alebo zainteresované strany sú často zapojené do tohto procesu, aby
poskytli spätnú väzbu a overili, či je vytvorená funkcionalita uspokojivá.

Opakovanie a zdokonaľovanie:
Na základe spätnej väzby a výsledkov overenia a hodnotenia tímy opakovane iterujú cez
cyklus vývoja. Každá iterácia poskytuje príležitosť na zdokonalenie procesov, zvýšenie
efektivity a prispôsobenie sa novým požiadavkám alebo zmenám v priebehu projektu.

Agilný prístup k riadeniu projektov umožňuje flexibilný a adaptívny prístup k vývoju produktu
alebo služby, čo umožňuje rýchlejšiu reakciu na zmeny požiadaviek alebo podmienok trhu.
Taktiež podporuje silnú spoluprácu medzi členmi tímu a zákazníkom, čo vedie k lepšiemu
porozumeniu požiadaviek a lepšiemu výsledku projektu.
SCRUM rozoznáva 3 hlavné role Scrum tímu. Scrum Tím sa skladá z Produktového Vlastníka (z
angl. Product Owner), Vývojového Tímu a Scrum Mastra (z angl. Scrum Master). Scrum Tím
dodáva
Prírastky produkty v iteráciách, čím sa získava väčšia spätná väzba pri vývoji produktu.
Používatelia a akcionári sú nepovinné role, ktorí sa zúčastňujú sprostredkovane.

Produktový Backlog slúži na postupné vytvorenie požadovaného produktu. Produktový Backlog


je
usporiadaný zoznam všetkého, o čom vieme, že bude pre vývoj produktu potrebné. Je to jediný
zdroj
požiadaviek, vzhľadom ku ktorým sa robia zmeny produktu. Vysvetlite obrázok.

79
AI.3.4. Čo riešime počas Šprintu, Šprint Review a Retrospektíve Šprintu. Ako dlho obvykle
sa plánuje Šprint a prečo.

Šprint sa skladá z Plánovania Šprintu, Denného Scrumu (vývoja), Šprint Review a Retrospektíva
Šprintu. Šprint je časovo ohraničený na menej ako jeden mesiac, počas ktorého je vytvorený
použiteľný Prírastok produktu "HOTOVÝ". Počas Denného Scrumu sa robí denne kontrola úloh a
navrhuje ďalší postup. Na záver celého Šprintu, Šprint Review sumarizuje prácu Šprintu a
Retrospektíva Šprintu navrhuje zlepšenia postupu.

Šprint Review sa vyznačuje nasledovnými prvkami: Scrum Tím prediskutuje spoločne prípadne
so zainteresovanými stranami (používatelia a akcionári), aby sa prehodnotili položky
Produktového Backlogu či sú "HOTOVÉ". Vývojový Tím diskutuje o tom, aké boli problémy a
ako sa vyriešili. V závere Tím demonštruje Prírastok za účelom získania spätnej väzby. Na základe
toho sa vykonajú zmeny v Produktovom Backlogu pre ďalší Šprint.

Retrospektíva Šprintu ponúka príležitosť pre Scrum Tím, aby sa sám skontroloval a pripravil plán
zlepšení, ktoré zavedie v nasledujúcom Šprinte. Účelom Retrospektívy Šprintu je zhodnotiť dobré,
identifikovať možné zlepšenia a vytvoriť plán vylepšení spôsobu práce Scrum Tímu. Hlavnú úlohu
má Scrum Master aby bol míting vedený v pozitívnom a produktívnom duchu.

Plánovanie Šprintu odpovedá na 2 základné otázky: 1. Čo môže byť dodané v rámci Prírastku tohto
Šprintu (Cieľ). Produktový Vlastník popisuje Cieľ Šprintu a položky Produktového Backlogu,
ktorými by sa dosiahol Cieľ Šprintu. Celý Scrum Tím spolupracuje na tom, aby porozumel prácam,
ktoré bude v Šprinte vykonávať. 2. Akým postupom budú práce urobené na dodanie Prírastku.
Vývojový Tím sa sám rozhoduje, ako počas Šprintu vytvorí Prírastok produktu. Vybrané položky
Produktového Backlogu pre Šprint s plánom ich dodania sa nazýva Šprint Backlog. Popíšte
obrázok.

80
AI.3.5. Definujete ERP aplikácie. Vymenujte hlavné funkčné oblasti ERP systémov. Popíšte
architektúru ERP. Definujte CRM a SCM systémy.

RP systém sa radí medzí celopodnikové transakčné aplikácie


=> pokrývajú prevažnú časť podnikových procesov a funkcií a
realizujú tak väčšinu obchodných, finančných a ďalších transakcií.
Celopodnikové aplikácie majú 2 hlavné vlastnosti:
• Integrujú najrôznejšie úlohy podnikového riadenia, ktoré
zdieľajú spoločnú dátovú základňu (v prípade izolovaných
aplikácí vznikajú duplicity a nekonzistentné dáta! Náročné na
údržbu a jednotný pohľad skrz celú organizáciu).
• Tieto aplikácie majú prevažne transakčný charakter (napr.
založenie nových zákazníkov, dodávateľov, tovarov a ich
aktualizáciu), evidencia a spracovanie obchodných dokumentov
(obj., dod. listy, faktúry, atď..) => zabezpečujú obchodné,
finančné, prevádzkové a ďalšie transakčné funkcie...

81
ERP
Prevádzkové princípy ERP:
• Transakcia v jednom module môže generovať akciu v inom
module (napr. predaj tovarov alebo príjem tovaru má dopad na
finančný tok spoločnosti),
• Transakcie sú navzájom konzistentné a vzájomne kontrolované (napr. kontrola dod. listov na
základe zmeny tovarov v sklade)
• Je možné kontrolovať priebeh funkcií jednotlivých modulov a tým dohľadať dôsledky a príčiny
jednotlivých modulov
(napr. v účtovnej knihe je možné dohľadať faktúru alebo prijatú
platbu na základe faktúry)

ERP
Prevádzkové princípy ERP:
• Transakcia v jednom module môže generovať akciu v inom
module (napr. predaj tovarov alebo príjem tovaru má dopad na
finančný tok spoločnosti),
• Transakcie sú navzájom konzistentné a vzájomne
kontrolované (napr. kontrola dod. listov na základe zmeny
tovarov v sklade)
• Je možné kontrolovať priebeh funkcií jednotlivých modulov
a tým dohľadať dôsledky a príčiny jednotlivých modulov
(napr. v účtovnej knihe je možné dohľadať faktúru alebo prijatú
platbu na základe faktúry)

Základné moduly (aplikácie) ERP systémov:


• Riadenie financií
• Riadenie nákupov a skladov
• Predaj a marketing
• Riadenie ľudských zdrojov

82
• Výroba
• Riadenie dodávateľského reťazca (Supply Chain Management
– SCM)
• Riadenie vzťahov so zákazníkmi (Customer Relationship
Management - CRM)

ERP – modulárna architektúra


ERP riešenia obsahujú rôzne moduly a nástroje. Nasadzovanie
jednotlivých modulov je obvykle určené podľa stanovených priorít
podniku.
ERP zahrňuje rôzne moduly:
• aplikačné moduly – zabezpečujú funkcionalitu v oblasti
riadenia (financie, predaj, výroba, atď...).
• dokumentačné moduly – dokumentácia k jednotlivým
funkciám a poliam zobrazovaným na obrazovke,
• technologické moduly – nastavenie profilov, prístupových
práv,
• implementačné moduly – využívajú sa k príprave nasadenia
ERP napr. definovanie a optimalizácia pod. procesov,

Riadenie vzťahov so zákazníkmi (Customer Relationship Management –CRM) predstavuje


komplex aplikačného a základného SW, technických prostriedkov, podnikových procesov
a personálnych zdrojov určených pre riadenie a priebežné zaisťovanie vzťahov so zákazníkmi v
oblasti podpory obchodných činností (predaj, marketing, zákaznícke služby) Systém CRM
zhromažďuje, spája a analyzuje všetky získané údaje o zákazníkoch vrátane kontaktných
informácií, interakcii so zástupcami spoločnosti, nákupov, požiadaviek na služby. CRM systém
umožňuje svojim používateľom prístup k týmto dátam za účelom pochopenie čo bolo predmetom
pri kontakte so zákazníkom.

SCM (Supply Chain Management) – jeho cieľom je pokryť procesy


riadenia zásobovacieho reťazca, ktoré zahrňujú všetky procesy
komunikácie s dodávateľom v celom dodávateľskom reťazci. Pri SCM
dochádza k integrácií informačných a logistických činností podnikov
zapojených do zásobovacieho reťazca.
SCM zahrňuje:
• Plánovanie a prognózy predaja
• Logistiku, dopravu a distribúciu
• Skladovanie
• Výrobu
SCM je súčasťou podnikového informačného systému a má silnú väzbu
na oblasť ERP.

AI.3.6. Vymenujte hlavné funkcie CRM systémov. Uveďte formy a možnosti elektronického
podnikania a základné funkcie (e-business, e-Governance, e-Marketing, e-learning).

CRM je orientovaný hlavne na udržanie zákazníka a na ponuku


produktov, ktoré budú vyhovovať práve jemu. CRM systém umožňuje
zvyšovať efektivitu predaja ako aj spokojnosť zákazníka. Zodpovední
pracovníci predajných oddelení majú možnosť sledovať efektivitu práce
jednotlivých pracovníkov ale aj problémy, ktoré vnímajú zákazníci. CRM
nie je primárne určený na zvyšovanie počtu zákazníkov ale skôr na

83
zvyšovanie spokojnosti už získaných zákazníkov => nadviazať silné
vzťahy so zákazníkmi, vybudovať lojalitu zákazníkov a v konečnom
dôsledku zvýšiť predaj a zisky.
CRM môže byť chápané 2 spôsobmi:
1. Business Intelligence – rôzne pohľady na dáta v databáze na základe
KPI
2. Compliant Management – manažment sťažností (hotline / chat)

Cieľom CRM systémov:


• získať odpovede na základné otázky zákazníkov
• spravovať dáta zákazníkov
• automatizovať predajný proces
• prispôsobiť marketingové kampane
• zosúladiť predaj a marketing
Základom CRM je centralizovaná databáza (podobne ako pri
ERP), ktorá podporuje automatizáciu procesov.

e-Business
Za elektronické podnikanie (e-Business) môžeme chápať transakcie a operácie (nákup a predaj) produktov
a služieb (podnikateľské procesy), ktoré sa uskutočňujú elektronickou formou s využitím informačných
technológií a systémov.
„Elektronické podnikanie (e-business) predstavuje oblasť informatiky, ktorá v sebe zahrňuje súhrn a
podporu procesov a vzťahov medzi obchodnými partnermi, spolupracovníkmi a koncovými zákazníkmi,
uskutočnenými elektronickými médiami. Tieto vzťahy v sebe obsahujú elektronicky realizovanú výmenu
informácií, produktov, služieb a finančných transakcií.“

84
B2C (Business to Customer) – elektronicky realizovaný vzťah medzi firmou a koncovým spotrebiteľom
(napr. elektronické bankovníctvo, zákaznícky servis, atď.),
• B2B (Business to Business) – elektronicky realizovaný obchodný vzťahmi medzi dvoma firmami –
elektronická výmena štruktúrovaných dát (objednávky, faktúry, provízie, klienti, atď.)
• B2G (Business to Government) – elektronicky realizovaný obchodný vzťah medzi podnikateľskými
subjektami a orgánmi štátnej správy a samospráv.

B2E (Business to Employee) – elektronicky realizovaný vzťah medzi podnikateľskými subjektami a ich
zamestnancami (komunikácia – email, chat, zdieľanie dokumentov, atď.).
• B2R (Business to Reseller) – elektronicky realizovaný vzťah medzi podnikom a obchodnými
zástupcami.
• C2G (Customer to Government) – elektronický vzťah medzi koncovými používateľmi (koneční
spotrebitelia) a orgány štátnej správy (napr. platba daní, zmena v evidencií – kataster, prechodný pobyt –
e-Slovensko, atď..).
• C2C (Customer to Customer) – elektronický vzťah medzi dvoma koncovými používateľmi
a nepodnikateľskými subjektami (napr. burzy, trhy, atď.).

V rámci elektronického podnikania sa rozlišujú nasledovné


aplikácie:
• elektronické obchodovanie (e-commerce) – internetová aplikácia, ktorý zastrešuje internetový obchod
(vzťah B2C),
• elektronické obstarávanie (e-procurement) – internetová aplikácia na výmenu obchodných dokumentov
(B2B) cieľom získať tovar/službu,
• elektronické/internetové trhovisko (e-marketplace) – internetová aplikácia zabezpečujúca zaistenie
vzťahov medzi viacerými obchodnými partnermi (B2C, B2B, B2G).
Komunikácia prebieha pomocou sprostredkovateľa (môže byť
výkonný počítač). Relácia je M : N.

elektronické aukcie (e-auction, e-aukcia) – elektronický predaj a nákup pomocou aukcií. Zákazníci môžu
byť podniky aj jednotlivci (B2B, B2C, C2B, B2G, C2C),
• elektronická fakturácia (e-invoicing, e-fakturácia) – elektronická výmena faktúr medzi firmami,
• elektronické bankovníctvo (e-banking) – aplikácia na vykonávanie bankových transakcií.

E-Governance (elektronické riadenie):


E-Governance sa týka využitia informačných a komunikačných technológií (ICT) na poskytovanie
verejných služieb a na zlepšenie interakcií medzi vládou a občanmi, firmami a inými subjektmi. Cieľom e-
Governance je zvýšiť efektívnosť, transparentnosť a dostupnosť vládnych služieb, ako aj zlepšiť

85
participáciu občanov vo verejnom rozhodovacom procese. To zahŕňa online vládne portály, elektronické
formuláre, elektronické hlasovanie, elektronické identifikácie a ďalšie nástroje na zjednodušenie
interakcie s verejnou správou.

E-Marketing (elektronický marketing):


E-Marketing je forma marketingu, ktorá využíva internet a digitálne kanály na propagáciu a reklamu
produktov alebo služieb. Tento druh marketingu zahŕňa množstvo online nástrojov a techník, ako sú
napríklad webové stránky, sociálne médiá, e-mailový marketing, PPC (pay-per-click) reklama, obsahový
marketing a ďalšie. Cieľom e-Marketingu je dosiahnuť cieľovú skupinu zákazníkov, zvýšiť povedomie o
značke, generovať záujem a podporiť konverzie.

E-Learning (elektronické vzdelávanie):


E-Learning je forma vzdelávania, ktorá využíva informačné a komunikačné technológie na
poskytovanie vzdelávacích materiálov, kurzov a ďalších vzdelávacích zdrojov online. Tento druh
vzdelávania umožňuje študentom prístup k učebným materiálom z akéhokoľvek miesta a kedykoľvek
prostredníctvom internetu. E-Learning môže zahŕňať interaktívne kurzy, webové semináre (webináre),
online diskusné fóra, videá, testy a ďalšie interaktívne prvky. Cieľom e-Learningu je poskytnúť efektívny,
pružný a prispôsobiteľný spôsob vzdelávania, ktorý stimuluje aktívne učenie a zapája študentov.

86

You might also like