25.1 Vlastní datové typy
25.2 Využití datových typů ve funkcích
25.3 Výčtové typy ENUM
25.4 Domácí úkol
25.5 V další lekci
25.1 Vlastní datové typy
Co to je ? Ne, nebojte, nebudete vytvářet typy podobné Double nebo Long. Vytvářet budeme Typ, který v sobě obsahuje více dalších typů. Nejdřív se podíváme, jak vypadá definice takového typu:
Type ColorValue
lngRed As Long
lngGreen As Long
lngBlue As Long
lngCyan As Long
lngMagenta As Long
lngYellow As Long
lngGrey As Long
End Type
No jo, to, co jsem tu napsal, je sice hezké, ale proč to používat, když místo toho můžu napsat:
Dim lngRed As Long
Dim lngGreen As Long
Dim lngBlue As Long
Dim lngCyan As Long
Dim lngMagenta As Long
Dim lngYellow As Long
Dim lngGrey As Long
No důvod je tu zřejmý: představte si, že potřebujete ve funkci vrátit více hodnot než jednu. Ptáte se jak? No samozřejmě, že pomocí datových typů.
25.2 Využití datových typů ve funkcích
No tak teď teda k praxi a hned si ukážeme jak to využít.
Do modulu:
Public Type InfoOZamestnanci 'definice Typu
strMeno As String
strPrimeni As String
bytVek As Byte
intPlat As Integer
blnAuto As Boolean
End Type
Public Function VratInfoOZamestnanci(intIdZamstnance) As InfoOzamsnanci 'funkce
VratInfoOZamestnanci.strMeno = "Petr"
VratInfoOZamestnanci.strPrimeni = "Málek"
VratInfoOZamestnanci.bytVek = 54
VratInfoOZamestnanci.intPlat = 23500
VratInfoOZamestnanci.blnAuto = True
End Function
Do Formuláře:
Dim IZamesnanec As InfoOzamsnanci
Private Sub Command1_Click()
IZamesnanec = VratInfoOZamestnanci(2)
txtJmeno.Text = IZamesnanec.strMeno
txtPrimeni.Text = IZamesnanec.strPrimeni
txtPalt.Text = IZamesnanec.intPlat
optAuto.Value = IZamesnanec.blnAuto
End Sub
Tak teď se na to podíváme podrobněji a popíšeme si, co je to vše zač. Tak především vás musím upozornit na to, že uživatelsky definovaný typ není proměnná, jak by si někdo mohl mylně myslet. Proměnná ovšem tento typ může využívat. V našem případě je takovou proměnnou IZamesnanec. Je to tedy proměnná typu InfoOzamsnanci. Stejně jako by to mohla být proměnná typu Long či Integer, ale to není. Stejně tak funkce je typu InfoOZamestnanci. Tato funkce nám tedy nese požadavek tvořený voláním funkce s doplněným parametrem, který tvoří ID číslo pracovníka. Funkce nám pak o zaměstnanci vrátí sadu informací. A protože by bylo značně nepraktické psát pro každou informaci zvláště funkci, vrátí se nám informace jako datový typ v názvu funkce. Data z ní dostaneme tím, že je nahrajeme do funkce stejného typu. A zní pak hodnoty vybíráme jak je ukázáno na výše uvedeném příkladě. Hodnoty ale můžeme předávat také přímo, bez použití proměnné:
txtPalt.Text = VratInfoOZamestnanci(2).bytVek
No to by bylo to důležité k uživatelsky definovaným typům. Jejich použití časem velmi oceníte například u knihoven či tříd. Nebo jen tak ke kávě :).
25.3 Výčtové typy ENUM
Výčtové typy? Tak to hned uvidíte, co to je:
Public Enum barvy
red = 1
blue = 2
green = 3
cyan = 4
magenta = 5
yellow = 6
End Enum
Toto je definice výčtového typu, je to takový seznam konstant. Teď se podíváme, jak může vypadat jeho použití v kódu:
Dim a As barvy
Private Sub Command1_Click()
Command1.Caption = barvy.blue '1
a = green '2
a = cyan
Print a
End Sub
V prvním případě pomocí něj jen předáme hodnotu do nějaké vlastnosti. V druhém případ je to zajímavější, definuje si proměnou a jako typ barvy a ta teď bude moci nabývat hodnot konstant definovaných ve výčtovém typu barvy. Ještě je tu jedna věc, která stojí za zmínku a to:
Public Enum Cisla
jedna = 1
dva
tri
ctyri
End Enum
Private Sub Command1_Click()
a = dva
Print a
End Sub
Jaká se vytiskne hodnota? No jistě, že dva. Pokud by ale k jedničce byla přiřazena trojka, tak by se vytiskla 4. K výčtovým typům si více povíme hned jak se pustíme do dělání knihoven dll, komponent a podobných záležitostí. Snad už u tříd. Ale teď jde především o to, abyste přibližně věděli, o co jde a nebyli překvapeni, pokud byste něco takového v kódu viděli.
25.4 Domácí úkol
Ještě budu čekat než dostanete něco opravdu složitého. Ale kdepak, teď to přijde. A na výběr budou dvě záležitosti. Nic složitého ;) :
- Arkanoid – nejspíš každý víte o co jde, kdo ne, tak ať hledá. Propracujete úhly odrazu tak, aby se to dalo hrát. A očekávám i pěkné grafické provedení.
- Adventuru – No naprogramovat adventuru není žádný problém, pokud se do něčeho nezamotáte a kvůli nekomentovanému a nepřehlednému kódu něco nepoděláte. Tak ať to má alespoň hodinový děj.
Moc se těším na vaše výtvory, obzvláště na ty adventury.
25.5 V další lekci
Další lekce bude odpočinek. Bleskově mrkneme na pole a na funkce pro práci s řetězci. Že už jsme to dělali? No jo, pořád je, co se učit. Takže zase nové a další věcičky, které uplatníte při programování.