Delphi: Part III

15.02.2008 12:27 | blackhole

Po dlhsom case je tu dalsia cast o programovani v Delphi... V tomto dieli si budeme kecat o datovych typoch a premennych..

Premenne

Behom cinnosti programu dochadza casto k presuvaniu dat. Bloky pamete, ktore sluzia na ukladanie potrebnych dat, sa nazyvaju premenne. Kazda premenna je pomenovana identifikatorom, pomocou neho sa pristupuje k jej obsahu. Skor, nez sa v programe pouzije
premenna, musi byt zadefinovana vo var.

Datove typy

Zavadenie roznych datovych typov pre premenne prinasa dve vyhody:

  • uspora pamate, pretoze pre ulozenie jedneho znaku postaci mensi pamatovy priestor, ako pre ulozenie celej vetvy.
  • je mozne zabranit tomu, aby sme nerobili nepristupne operacie..napr scitanie slova 'program' a cisla 10. ;)
    • Datove typy mozno rozdelit do niekolko skupin:

      • celo ciselne typy
      • realne
      • znaky
      • logicke hodnoty
      • retazce
      • ukazovatele
      • uzivatelom definovane typy

      Triedenie je mozne este rozdelit na dve zakladne:

      • ordinalne
      • neordinalne

      Ordinalne datove typy

      Do tejto kategorie patria vsetky typy, u ktorych je presne dana postupnost medzi jednotlivymi hodnotami. To znamena, ze sa vzdy vie, ktora hodnota je nasledujuca a ktora predchadzajuca.

      Patria sem vsetky celociselne typy, znaky a este niektore dalsie typy. napr. 0,1,2....n; A,B,C....
      Poradie kazdej takejto hodnoty je dane tzv. odrdinalnou hodnotou. Prva hodnota typu ma ordinalna hod. 0 a kazda dalsia je o jednu vyssie.

      Pre pracu s ordinalnimi typmi zavadza Delphi 5 funkcie:

      Ord: zisti ordinalnu hodnotu prvku, napr ord(1) vrati hodnotu 1, pretoze je druha v poradi a ord('A') vracia hodnotu 65 (znak A je v poradi 66) prednim su znaky cisel a niektore dalsie znaky.
      Pred: vracia hodnotu, ktora predchadza hodnote uvedenej zatvorke. napr. pred(1) vracia hodnotu 0 a prikaz pred('A') vracia znak @, pretoze ma o jednotku nizsiu ordinalnu hodnotu nez velke A.
      Succ: je pravym opakom predoslej funkcie a vracia nasledujucu hodnotu argumentu. Teda succ(1) =2 a succ('A') ='B'
      High: vysledkom tejto funkcie je najvyssia hodnota, ktoru moze premenna daneho typu nadobudat. napr high(byte) =255 ..preto lebo byte ma rozsah od 0 – 255
      Low: tato funkcia naopak vracia hodnotu najmensieho prvku. Takze low(Byte) =0

      Neordinalne typy

      Typickym prikladom neordinalneho datoveho typu su realne datove typy, pretoze u nich nejde urcit nasleduju ci prvok ;)

      Celociselne typy

      Pre pracu s celymi cislami ponuka delphi dva zakladne datove typy:

      Tieto dva typy je vhodne pouzivat co najcastejsie, pretoze svojou velkostou najlepsie vyuziva vlastnosti procesoru a operacneho systemu. Pretoze sa ich velkost meni v zavislosti na verize Delphi, nazyvaju sa genericke. Velkost generickych typov, ktore su prave k dispozicii, sa zisti pomocou funkcie SizeOf(typ)

      Dalsie celociselne typy:

      Typy Longinit a Longword su zamenitelne za typy integer a cardinal.

      Vsetky typy uvedene v predchadzajucej tabulke su tzv. fundamentalne, to znamena, ze ich velkost je rovnaka vo vsetkych implementaciah objectoveho pascalu.

      Pouzitie tychto zakladnych typov sice optimalne nevyuziva vsetkych moznosti 32bitoveho OS, ale na oplatku setri pamat a preto moze byt v mnohych pripadoch uzitocne.
      Vsetky celociselne typy sa radia k ordinalnym typom
      Realne typy

      Okrem celych cisel je niekedy zapotreby spracovat realne cisla. Tie mozu byt jednym z nasledujucih typov:

      Typ Currency nepracuje ako ostatne realne typy s pohyblivou riadkovou ciarov, ale s pevnou a je urceny pre financne vypocty.

      Pre ulozenie jednotlivych znakov do pamati sa pouzivaju premenne typu Char. Velkost typu char je 1byte = jedno pismeno = 255 znakov dokopy.

      K prevedeniu znaku na celociselnu hodnotu sluzi funkcia Ord. Opakom je Chr, ktora vracia znak z ASCII tabulky. napr. Chr(65) ='A'

      Logicke datove typy

      Premenne tochto ordinalneho typu mozu byt iba dve hodnoty: true a false. Pouzivaju sa pri vyhodnocovani najroznejsich situacii.

      Delphi ponuka 4 logicke datove typy:

      Najcastejsie sa pouziva Boolean.

      Pretypovanie

      Jazyk pascal je prisne typovy jazyk. To znamena, ze za vsetkych okolnosti sleduje datove typy jednotlivych premennych a nedovoli, aby sa s premennou robili operacie mimo tento typ. Napr. nieje mozne do premennej typu Byte ulozit znak a naopak, v premennej Char nesmie byt nic ineho ako znak.

      Konstatny

      Konstanty sa v mnohom podobaju premennym. Rovnako ako premenne, tak aj konstanty su rezervovane a pomenovane kusky pamati, v ktorom je ulozena nejaka hodnota. Od premennych sa ale lisi v tom, ze hodnotu na tomto mieste nejde zmenit.

      Konstatny sa deklaruju este pred premennymi v casti, ktora je uvedena klucovym slovom Const. Konstanty sa podobaju premennym aj v tom, ze su rozneho typu. Ale tu to nemusi zadavat programator, ale prekladac sam spozna, o aky typ konstanty ide podla jej hodnoty.

      const
          n =5;
          Nazov = 'bla bla bla';
          Znak = '@';

      V tomto pripade bude konstanta N typu Integer, Nazov typu string a Znak typu char.

      K stanoveniu hodnoty konstanty je dokonca mozne pouzit i niektoru z predchadzajucih konstant, ako to ukazuje nasledujuci priklad:

      const
          kilometrov = 25;
          metrov = kilometrov*1000;

      Jedinou podmienkou je, ze pred prvym pouzitim konstanty musi byt uz definovana ako to vidime ;)

      Tak to je koniec tretej casti...Mal by to pochopit aj totalny zaciatocnik :D Dalsia cast bude o operatoroch a vyrazoch a mozno este daco pridam.

    • Re: Delphi: Part III 15.02.2008 | 16:11
      Avatar blackhole   Návštevník

      mohlo by to byt vseobecnejsie ;) a nie az tak konkretne popisane tie datove typy pri zacinani v programovani to nebude niekomu moc platne ;)

      • Re: Delphi: Part III 15.02.2008 | 16:15
        Avatar blackhole   Návštevník

        no myslim si ze v buducnosti sa to urcite zide ;)
        ------
        Skutočne nemám v pláne zničit Microsoft. Bude to len neúmyselný vedlajší efekt.

      • Re: Delphi: Part III 15.02.2008 | 16:26
        Avatar betmen   Používateľ

        je to sucast jazyka, bez nej sa nepohnes. keby to bolo o algoritmizacii a zovseobecneni do pseudojazyka pripadne o zjednodusenom priklade v blbuvzdornom jazyku, ktory velmi typy nerozlisuje, bolo by to ine.

        ______________
        nález plný strát

        ______________ kam by som chodil...na dvor