Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Delphi
Naučte se programovat v Delphi (8. díl) - Typy, záznamy a pole
4. října 2001, 00.00 | V dnešním díle seriálu si povíme něco o programátorem definovaných typech, záznamech a nakonec si vysvětlíme datový typ pole (Array).
Typy
V Object Pascalu máme primitivní datové typy, které jsem popsal v pátém díle tohoto serálu, ale ty nám brzy přestanou stačit. Například když budeme chtít pracovat se dny v týdnu, tak si jednoduše vytvoříme datový typ TDnyVTydnu, který bude obsahovat dny pondělí, úterý, středa.... To vám asi nic neříká, alespoň ne začátečníkům, pro které je tento seriál určen. Tak si to raději vysvětlíme prakticky.
První typy, které si dnes představíme budou ordinální nebo též výčtové typy. Ordinální znamená po sobě jdoucí. Např. 1, 2, 3, 4, 5... nebo leden, únor, březen atd. K vytvoření vlastního typu se používá klíčové slovo type. Formální deklarace vypadá takto.
|
Jako příklad pro použití si vytvoříme typ TDnyVTydnu. Jistě jste si všimli, že při vytváření nových typů se dává před identifikátor písmeno T. Je to všeobecný zvyk programátorů v Object Pascalu. Odlišuje se tím jméno typu od jména instance. Náš typ TDnyVTydnu bude obsahovat sedm dní v týdnu: pondeli, utery, streda, ctvrtek, patek, sobota, nedele.
|
Pak už jen stačí deklarovat si proměnnou daného typu a už s ní můžete pracovat.
|
Výčtové typy můžeme také porovnávat. Podobně jako celočíselné datové typy.
|
Při práci s ordinálními typy se nejčastěji používají tyto funkce:
- pred() - vrací předchůdce argumentu
- succ() - vrací následníka argumentu
- ord() - převede ordinální typ na odpovídající číslo
Pro demonstraci těchto fcí uvedu krátkou ukázku, prográmku který je bude využívat.
|
Kromě výčtových typů existují ještě intervalové typy. Deklarují se zadáním nejnižší a nejvyšší hodnoty. Formální deklarace vypadá takto:
|
Tento typ se používa ve spojení s ordinálními typy. Např. můžeme zadat interval čísel nebo znaků.
|
Posledním typem jsou takzvané množiny. Množiny se deklarují klíčovými slovy Set Of. Množina může obsahovat prvky ordinálního typu. Příklady deklarací jsou v následující tabulce.
|
Potom deklarujeme proměnné tohoto typu a přiřadíme jim hodnoty.
|
Při práci s množinami se používají množinové operátory. Typyckým příkladem je operátor in.
|
Záznamy
Často nastane situace, kdy budete programovat aplikaci, která bude uchovávat informace např. o zákazníkovi, pracovníkovi apod. K tomu budete potřebovat záznamy (records). Formální deklarace vypadá takto:
|
Zpět k našemu příkladu. Jako demonstraci použití záznamu si vytvoříme jednoduchý záznam, který bude obsahovat informace třeba informace o zákazníkovi.
|
Při práci se záznami se používá operátor tečka. Oddělují se jím jednotlivé proměnné obsažené v záznamu.
|
Nejšpíš si řeknete, že to asi není úplně ideální způsob zápisu. A nebo přinejmenším zdlouhavý. Proto existuje v Object Pascalu příkaz with. Používá se k přiřazování hodnot jednotlivým dílčím proměnným záznamu.
|
Často nastane situace, kdy spravujeme jeden záznam ve více procedurách. Pak je lepší deklarovat záznam jako typ a pak už jen vytvářet jeho instance.
|
Pak už jen stačí vytvořit si instanci daného typu a můžete s ní pracovat jako s předchozím typem záznamů.
|
Pole
Pole (Array) je vlastně soubor proměnných. Používají se tehdy, když pracujete s více proměnnými stejného typu. Pole se deklaruje klíčovým slovem array. Formální deklarace vypadá takto:
|
V hranatých závorkách zadáváme rozsah pole. První hodnota je nejnižší a druhá nejvyšší. Existují jedno i více rozměrná pole, ale zatím si představíme ta jednorozměrná. Deklarace v praxi vypadá takto:
|
Takto jsme si definovali deset zákazníků. Zatím jsou jejich záznamy prázdné. Hned to napravíme. Pro demonstraci postačí naplnění jednoho záznamu.
|
Samozřejmě i zde můžeme použít příkaz with. Při přístupu k jednotlivým prvkům pole se používají hranaté závorky, mezi které se vkládá pořadové číslo prvku.
Někdy se stane, že při deklaraci pole nevíme, jakou bude mít velikost. Poli, které nemá při deklaraci stanovenou velikost se říká dynamické pole. Později ale musíme přesnou velikost uvést fcí SetLenght().
|
Při práci s tabulkami, nebo jakýmikoliv souřadnicovými systémy, narazíte na dvourozměrné pole. Dvourozměrné pole se deklaruje podobně jako jednorozměrné ale s tím rozdílem, že nedeklaujeme dva argumenty ale čtyři.
|
První dva argumenty udávají rozsah pole na osu x a druhé dva rozsah na osu y. V Object Pascalu můžeme používat dvou, tří i vícerozměrná pole. Deklarují se vždy stejně, ale s tím rozdílem, že zadáváte více rozsahů.
Jistě si vzpomínáte na netypizované konstanty. Netypizovaná konstanta typu pole se deklaruje za klíčovým slovem const a může mít následující tvar.
|
I vícerozměrná pole mohou být použita jako netypizované konstanty.
Příště
Náplní příštího dílu budou Objekty.
Obsah seriálu (více o seriálu):
- Naučte se programovat v Delphi (1. díl) - Trocha historie
- Naučte se programovat v Delphi (2. díl) - Object Pascal
- Naučte se programovat v Delphi (3. díl) - Seznámení s vývojovým prostředím
- Naučte se programovat v Delphi (4. díl) - První program
- Naučte se programovat v Delphi (5. díl) - Datové typy, proměnné a konstanty
- Naučte se programovat v Delphi (6. díl) - Operátory, funkce a procedury
- Naučte se programovat v Delphi (7. díl) - Řízení toku programu
- Naučte se programovat v Delphi (8. díl) - Typy, záznamy a pole
- Naučte se programovat v Delphi (9. díl) - Objekty
- Naučte se programovat v Delphi (11. díl) - Práce se soubory
Diskuse k článku
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007