You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Ciele cvičenia

Cvičenie je zamerané na prácu so štruktúrovaným údajovým typom resp. štruktúrou (struct). 

Po osvojení si učiva, si študent dokáže používať štruktúrovaný údajový typ, dokáže ho definovať a inicializovať. Študent dokáže pristupovať k v štruktúre uloženým údajom a meniť ich. Pristupovať k údajom dokáže priamo alebo prostredníctvom smerníkov.  Ďalej si študent po osvojení si učiva prehĺbi vedomosti a zručnosti s prácou so smerníkom a pamäťou, dokáže dynamicky alokovať pamäť pre štruktúru, resp. vlastný údajový typ.

  • Štruktúrovaný údajový typ - Štruktúry v jazyku C
  • Definícia vlastného údajového typu
  • Dynamická alokácia pamäte a smerník na štruktúru

Odporúčaná literatúra a dôležité odkazy

[1] KPI-FEI-TUKE:  Prednáška č. 3 - Structures

[2] KPI-FEI-TUKE:  Cvičenie č. 6 - Complex Numbers

[3] Tutorialspoint: 



Štruktúrovaný údajový typ

Štruktúra v jazyku C je údajový typ, ktorý môže uložiť do jednej premennej ale tento vo svojom vnútri obsahuje niekoľko prvkov. Tieto prvky ale na rozdiel od polí (1R, 2R...) nemusia byť rovnakého údajového typu. Štruktúra nám teda umožňuje vytvárať premenné, ktoré môžu reprezentovať entity s veľkým množstvom parametrov. Pod pojmom entita si pre potreby výkladu tohto učiva môžeme predstaviť napríklad auto. Každému je zrejmé, že keď sa bavíme o aute môžeme sa rozprávať o mnohých atribútoch (Značka, Model, Rok výroby, Palivo, Farba, ...).  Áno, všetky tieto parametre by bolo možné ukladať do separátnych premenných a následne mať systém, ktorý by jednoznačne determinoval, ktorý údaj patrí k danému vozidlu (niečo ako sql databáza). V C-čku ale pre prácu môžeme využiť údajový typ štruktúra, ktorú môžeme nazvať AUTO a jednotlivé vozidla vozového parku budú reprezentované ako samostatné entity s vlastnými parametrami. 

V nasledujúcom príklade si ukážeme ako štruktúru zadefinovať a inicializovať. Existuje niekoľko spôsobov ako to urobiť. Vždy však štruktúru definujeme buď pred funkciou main alebo vo vlastnom hlavičkovom súbore.  Definícia môže vyzerať nasledovne:

Definícia

#include <stdio.h>
#include <stdlib.h>
// Tu je definovaná štruktúra. Vidíme, že táto štruktúra obsahuje rôzne údajové typy (reťazce, čísla, znaky). 
struct Auto {
              char Znacka[10];
              char Model[10];
              int Rok;
              char Palivo;
              char Farba[10];
            };

int main()
{ // Tu pokračuje funkcia main .... 

Vidíme, že v predošlom bloku kódu sme zatiaľ iba zadefinovali aké atribúty jednotlivé autá budú mať. Ak chceme vytvoriť entitu napr. auto_1 resp. auto_2 ... , ktorá bude mať atribúty štruktúry Auto, tak to môžeme spraviť viacerými spôsobmi. V nasledujúcom kóde sú tieto zobrazené. Pozor, takto sa robí inicializácia premennej a môže sa v kóde urobiť iba raz!

Inicializácia

// Tu boli hlavickovy a definícia štruktúry Auto

int main()
{   // 1. spôsob - Atribúty sú uvedené v takom poradí ako je definovaná štruktúra.
	// V takom prípade stačí ak sú uvedené iba hodnoty týchto atribútov.
	struct Auto auto_1 = { "Skoda", "Favorit", 1989, 'B', "Modra"};
	
	// 2. spôsob - Atrubúty nastavujeme v ľubovolnom poradí, vtedy používame takzvané - Designated initialisers
    struct Auto auto_2 = {
                          .Znacka = "Peugeot",
                          .Model  = "307",
                          .Farba  = "Strieborna",
                          .Rok    = 2004,
                          .Palivo = 'D',
                         };

 // Tu pokračuje funkcia main ....

K jednotlivým prvkom štruktúry pristupujeme cez operátor bodky "." (v prípade ak nepoužívame smerníky!)  Nasledujúci kód zobrazuje priradenie parametrov ďalšiemu vozidlu auto_3, ktorého parametre neboli vopred inicializované. Týmto spôsobom môžeme meniť aj atribúty skôr inicializovaných vozidiel (auto_1 a auto_2).









  • No labels