Údajové typy 


Údajový typ špecifikuje určitú množinu, ktorej prvky sa nazývajú hodnotami daného typu a vymedzuje množinu operácií s týmito hodnotami. Jednotlivé údajové typy sa od seba odlišujú, no zároveň tvoria istú hierarchiu (viď obr. 33).

obr. 33 Údajový typ
obr. 33 Údajový typ


Údajový typ priraďujeme premenným v deklaračnej časti (var) a vyberáme ho podľa toho, akého druhu je premenná (celé číslo, reálne číslo, znak, text,...) a aký povolený rozsah hodnôt premenná nadobúda.

Jednoduché údajové typy sú charakteristické usporiadanou množinou hodnôt, ktoré sú z hľadiska prípustných operácií nedeliteľné. Možno ich ešte ďalej rozdeliť na:

ordinálne - integer, boolean a char, interval, typ definovaný vymenovaním hodnôt

neordinálne - real.

Ak je údajový typ ordinálny vždy vieme, aká hodnota nasleduje alebo predchádza súčasnej hodnote. Napríklad majme celé čísla a hodnotu 5. S istotou vieme, že predchádzajúca hodnota je 4 a nasledujúca je 6. To isté platí napríklad aj v abecede, kde sú znaky vždy usporiadané v rovnakom poradí. 

Neordinálne typy sú presný opak, pretože pre žiadnu hodnotu takéhoto typu nevieme povedať, čo jej predchádza a čo po nej nasleduje. Príkladom takýchto čísel sú práve reálne čísla, napríklad 5,5 - nevieme s istotou určiť, či za ním nasleduje číslo 5,51 alebo 5,511, či 5,5111, atď.

Spoločnou vlastnosťou ordinálnych údajových typov je, že sú pre ne definované funkcie (obr. 34)

Ord - poradové číslo v množine hodnôt

Succ - nasledovník

Pred - predchodca

obr. 34 Definované funkcie údajových typov
obr. 34 Definované funkcie údajových typov


Jednoduché údajové typy 


Celočíselný údajový typ

Identifikátorom celočíselných typov je integer, pričom špecifikuje konečnú súvislú podmnožinu celých čísel. Pretože jednotlivé slová pamäte (ale aj pamäť celá) obsahujú konečný počet bitov možno v nich zobraziť iba konečný počet rôznych hodnôt. Typ integer je množina hodnôt daná intervalom [maxint, maxint], pričom maxint závisí od počítača, napr. pre staršie počítače s dĺžkou slova 16 bitov je maxint = 215 - 1 = 32767, teda interval je [-32767, 32767]. Ďalšie celočíselné typy sú:

  • byte - [0, 255]
  • word - [0, 65535]

  • shortint - [-128, 127]

  • longint - [-2147438346, 2147438346]


Operácie

                                  +           sčítanie                                                     <            menší

                                   -           odčítanie                                                  >             väčší

                                   *           násobenie                                                =            rovný

                                  div        celočíselný podiel                                   <=           menší alebo rovný

                                 mod       zvyšok po                                                >=           väčší alebo rovný                                                 celočíselnom delení                                <>           nerovná sa


Štandardné funkcie


                               succ nasledovník

                               pred predchodca

                               ord poradové číslo

                               abs absolútna hodnota

                               sqr druhá mocnina


  Reálne typy čísel

Identifikátorom pre reálne čísla je real a je konečnou podmnožinou reálnych čísel závislou na prekladači s rozsahom [10-38, 1038]. Reálne čísla zapisujeme buď v desatinnom, alebo semilogaritmickom tvare. Zápis čísla v semilogaritmickom tvare pozostáva z mantisy (desatinná časť logaritmu) a exponentu (mocniteľ alebo odmocniteľ), ktoré sú navzájom oddelené písmenom E s významom "krát 10 na".

Zápis má teda tvar: mantisaEexponent s významom "mantisa*10exponent". Mantisa môže byť celé alebo reálne číslo v desiatkovom tvare, exponent môže byť celé alebo reálne číslo v desiatkovom tvare

Rozšírené podtypy typu real

  • single - [1.5*10-45, 3.4*10+38]
  • double - [5.0*10-324, 1.7*10]
  • comp - [-2-63+1, 2+63- 1]


  Operácie

                              +              sčítanie                                                   <              menší

                               -              odčítanie                                                >              väčší

                               *              násobenie                                              =              rovný

                               /              delenie                                                   <=             menší alebo rovný

                                                                                                              >=             väčší alebo rovný

                                                                                                             <>             nerovná sa


          Štandardné funkcie

                               abs            absolútna hodnota

                               trunc          celá časť reálneho čísla

                               sqrt            druhá odmocnina

                               sqr              druhá mocnina

                               round         zaokrúhlenie

                               ln                prirodzený logaritmus

                              exp              exp(x) = ex


Logický typ

Identifikátorom pre logický typ je boolean špecifikujúci množinu logických hodnôt, ktoré sa označujú preddefinovanými identifikátormi true a false (true a false sú teda štandardnými identifikátormi konštánt typu boolean). Ako každá množina hodnôt jednoduchých typov, aj množina logických hodnôt je usporiadaná, a to tak, že platí false < true.

Údajovému type boolean môžeme priradiť buď konkrétnu hodnotu (true alebo false), alebo výsledok nejakého logického výrazu (výraz sa vyhodnotí a ak je pravdivý nadobudne hodnotu true, v opačnom prípade false).


Operácie

                             and            logický súčin                                      <            menší

                             or               logický súčet                                      >            väčší

                             not             logická negácia                                 =            rovný

                                                                                                           <=           menší alebo rovný

                                                                                                           >=           väčší alebo rovný

                                                                                                          <>           nerovná sa

Štandardné funkcie

                              succ         nasledovník

                              pred         predchodca

                              ord           poradové číslo 


Pre správne používanie operácií treba vysvetliť, čo je ich výsledkom (obr. 35): 

obr. 35 Výsledky logických operácií
obr. 35 Výsledky logických operácií


Znakový údajový typ

Identifikátorom typu znak je char, označujúci množinu typografických znakov, ako sú písmená, číslice, interpunkčné znamienka a pod., ktoré sa vyjadrujú zobraziteľnou reprezentáciou ohraničenou apostrofmi (napr. 'a', 'A', '?',...). Druhým, menej častým, variantom je vyjadrenie znaku pomocou ASCII (American Standard Code for Information Interchange) kódu, ktorému predchádza znak mriežky # a tieto znaky sú uložené v ASCII tabuľke. Pôvodne obsahovala 128 znakov anglickej abecedy, no po pridaní národných symbolov má 255 znakov.


Operácie

                             <                menší

                             >                väčší

                             =                rovný

                             <=              menší alebo rovný

                             >=              väčší alebo rovný

                             <>              nerovná sa


Štandardné funkcie

                             succ           nasledovník

                             pred           predchodca

                             ord             poradové číslo

                             upcase       zmena malého písmena na veľké písmeno, ak je písmeno veľké,                                                    nič sa nemení


Typ interval

Identifikátor typu interval určuje programátor. Interval je typ, ktorý špecifikuje neprázdnu súvislú podmnožinu hodnôt nejakého ordinálneho typu. Dolnú a hornú hranicu podmnožiny udávajú dve konštanty daného ordinálneho typu (zadávame v definícií), ktoré sa v tomto poradí uvádzajú v popise typu interval.

Výhodou definovania vlastných údajových typov je použitie hodnôt typu, ktoré objekt nadobúda v reálnom prostredí. Tiež získavame výhody spojené s kontrolou, či objekt nadobúda hodnoty daného typu, teda prípustné hodnoty, napríklad v slovných úlohách 


Operácie

                             <                menší

                             >                väčší

                             =                rovný

                             <=              menší alebo rovný

                             >=              väčší alebo rovný

                             <>              nerovná sa


Štandardné funkcie

                              succ           nasledovník

                              pred           predchodca

                              ord             poradové číslo

                              chr             hodnotou chr(i) je znak, ktorého hodnota ordinálneho čísla je i


Typ definovaný vymenovaním hodnôt

Identifikátor vymenovaného typu definuje programátor. Vymedzenie definície údajového typu definovaného vymenovaním hodnôt .vychádza z jednoznačného určenia hodnôt tohto údajového typu. Programátor môže definovať lineárne zoskupenie hodnôt, ktoré sú usporiadané pomocou identifikátorov.

Použité identifikátory sú pre daný program chápané ako konštanty vymenovaného typu, do ktorého patria. Každá použitá konštanta v identifikácii priradené číslo, ktoré zodpovedá jej poradiu pri definícii typu. Prvý identifikátor má hodnotu 0, druhý 1, atď. Pri deklarácii premenných vymenovaného typu je nutné použiť klauzulu (dodatok) type, napr.:

type tyzden = (pon, ut, str, stv, pia, so, ne);

Premenné tohto typu budú môcť nadobúdať hodnotu len z tohto zoznamu konštánt.

I keď tento údajový typ patrí medzi štandardné jednoduché údajové typy, nevyužíva sa tak často v programovaní samostatne. Väčšinou ho môžeme použiť v spojení s údajovým typom množina (viď nižšie). Aj napriek tomu ho môžeme zaradiť medzi jednoduché údajové typy. 


Operácie

                              <              menší

                              >              väčší

                              =              rovný

                              <=            menší alebo rovný

                              >=            väčší alebo rovný

                             <>             nerovná sa


Štandardné funkcie

                              succ          nasledovník

                              pred          predchodca

                              ord            poradové číslo

                              chr            hodnotou chr(i) je znak, ktorého hodnota ordinálneho čísla je i


Štruktúrované údajové  typy 


Typ množina

Osobitné miesto medzi údajovými typmi má typ množina, ktorá môže obsahovať také hodnoty, ktorými sú zase množiny. (umožňuje pracovať s niektorými typmi množín podobným spôsobom, ako je to obvyklé v matematike). V Lazaruse, resp. v Pascale, je povolené vytvárať množiny zložené len z prvkov rovnakého ordinálneho typu - hovoríme mu bázový (základný) typ.

Môžeme vytvoriť množinu znakov, čísel, dní v týždni, ale. nemôžeme vytvoriť takú množinu, ktorá by obsahovala napr. čísla a znaky súčasne. Definícia údajového typu množina je vždy tvorená aj z definíciou jej bázového typu, napr.:

          type

               Mnozina = set of 1...100;

          var

                a, b: Mnozina;

Do premenných a, b môžeme priraďovať iba množiny, môžeme s nimi manipulovať pomocou množinových operácií a relácií - nemôžeme ich priamo vypísať alebo prečítať do/zo súboru, musíme si to naprogramovať.


Operácie

                               +            zjednotenie                                               <            menší 

                               -             rozdiel                                                       >             väčší 

                               *             prienik                                                       =             rovný 

                               in           existencia prvku v množine                     <=           menší alebo rovný 

                                                                                                                >=           väčší alebo rovný 

                                                                                                               <>           nerovná sa 

Typ Pole

Pole patrí medzi štruktúrované údajové typy, pričom každý jeden prvok poľa pozostáva z pevného počtu zložiek rovnakého typu, teda hovoríme o homogénnom údajovom type). Prvky poľa môžu byť ľubovoľného štandardného alebo vopred definovaného typu. 


Každú zložku možno presne pomenovať pomocou indexu. Indexy ("pozícia" daného prvku v poli) nadobúdajú hodnoty určitého typu, ktorý musí byť ordinálny. Nazývame ho typom indexu. Cez tento index máme priamy prístup k jednotlivým prvkom poľa. Typ pole definujeme nasledovne:

            type

                  Pole = array [typ indexu] of typ_prvkov;


Polia môžu byť jedno- a viacrozmerné.

  • Jednorozmerné pole je rad rovnakých vlastností, ktoré sú popísané jedným identifikátorom (názvom poľa). Niekedy ich nazývame aj vektory.
  • Dvojrozmerné pole sa dá inak nazvať aj tabuľka, či matica. Hovoríme, že dvojrozmerné pole je aj vektor vektorov alebo pole jednorozmerných polí.

Keď zadeklarujeme (vytvoríme) pole, neobsahuje žiadne prvky. Tie musíme najskôr pridať, teda pole musíme "naplniť". Realizuje sa to pomocou príkazu priradenia (napr. a[20] := 10). Ak nejakú časť v poli, ktorá .už hodnotu má priradenú, naplníme opätovne, tak jeho pôvodná hodnota sa zmení na novú, t. j. pôvodná hodnota sa prepíše.


Typ Reťazec znakov

Reťazec znakov je postupnosť znakov (uzavretá v apostrofoch), ktorého identifikátorom je string. Tento údajový typ je zavedený špeciálne v jazyku Pascal, ktorý poskytuje procedúry a funkcie pre prácu s týmto údajovým typom. Maximálna dĺžka reťazca je 255 znakov. V pamäti počítača je reťazec uložený v toľkých bajtoch, koľko je jeho dĺžka, plus jeden. V nultom bajte reťazca je uložená skutočná dĺžka reťazca - koľko znakov reťazec obsahuje (nultý sa neráta). Pri deklarácii typu string môžeme uviesť aj maximálnu dĺžku slova v (hranatých) zátvorkách [ ].


Operácie

                              <             menší

                              >             väčší

                              =             rovný

                              <=           menší alebo rovný

                              >=           väčší alebo rovný

                             <>            nerovná sa

Štandardné funkcie

                            Lenght(S)                           zistí aktuálnu dĺžku reťazca (S je reťazec)

                            Concat(S1, S2)                   spojí dva reťazce

                            Copy(S, I, Maxint)              vyberie podreťazec z reťazca (I je pozícia, z ktorej                                                                            začíname vyberať a Maxint určuje, koľko znakov                                                                              vyberáme)

                            Delete(S, I, Maxint)            zruší podreťazec v reťazci (v tomto prípade Maxint                                                                            určuje, koľko znakov rušíme)

                            Insert(S, S1, I)                      vloží podreťazec do reťazca (S je reťazec, ktorý                                                                                vkladáme, S1 je reťazec, do ktorého vkladáme, I                                                                                určuje, od ktorého znaku chceme vkladať)

                            Pos(S)                                 zistí pozíciu podreťazca v reťazci 


Typ Záznam

Jednou zo základných metód vytvárania štruktúrovaných údajov je spojenie niekoľkých zložiek rôzneho typu do komplexného celku. V matematike sú takto vytvárané štruktúry nazývané n-ticami. Takýmto celkom je napr. dátum (trojica čísel s významom deň, mesiac, rok) alebo občiansky preukaz (obsahuje položky meno, priezvisko, dátum narodenia, číslo občianskeho preukazu,...)

Identifikátorom typu záznam je record, pričom táto údajová štruktúra je nehomogénna a skladá sa z určitého počtu pomenovaných zložiek, ktoré môžu byť rôzneho typu a nazývame ich položkami záznamu. Mená a typy položiek záznamu sa špecifikujú popisom typu záznam, ktorý má tvar

           record

               položka 1 : tp;

               položka 2 : tp;

            end

kde položka i je názov i-tej položky a tp je typ položky. Položky záznamu sa definujú klasicky ako premenné,  pričom k jednotlivým údajom premenných .typu záznam môžeme pristupovať pomocou selektora záznamu, ktorým je znak bodka ".". Jednotlivým položkám priraďujeme hodnoty zase pomocou príkazu priradenia 


Typ Súbor

Pri práci s počítačom a údajmi je dôležité ich uchovávanie po vypnutí počítača resp. po ukončení programu. Spracované údaje musíme uložiť na externé .pamäťové médium - disk. Zápis a čítanie potrebných údajov z externých pamäťových médií nám sprostredkováva údajový typ súbor, ktorého identifikátorom je file. Ide o štruktúrovaný údajový typ, ktorý sa skladá z teoreticky neobmedzeného počtu zložiek rovnakého typu. Počet zložiek súboru je obmedzený kapacitou vonkajšej pamäte.

Od toho, akého typu je súbor závisia aj jeho vlastnosti. Súbor môže byť znakovým súborom, teda bude tvorený len znakmi, alebo celočíselným súborom, teda bude obsahovať len celé čísla. V každom okamihu spracovávania súboru je prístupná iba jedna zložka. To nám určuje ukazovateľ. Môžeme si ho predstaviť ako nejakú šípku, ktorá sa pohybuje po jednotlivých bunkách a prístupná je len tá bunka, na ktorú ukazuje.

Veľmi dôležitý je koniec súboru - end of file.

Poznáme tri typy súborov:

  • Súbory bez udania typu - nie je určené, akého údajového typu budú jeho zložky
  • Súbory s udaním typu - vopred je určené, akého údajového typu budú jeho zložky

  • Textové súbory - ide o špeciálny typ - postupnosť, ktorej zložkami sú znaky a oddeľovače riadkov

Vytvorte si webové stránky zdarma! Táto stránka bola vytvorená pomocou služby Webnode. Vytvorte si vlastný web zdarma ešte dnes! Vytvoriť stránky