- Stahuj zápisky z přednášek a ostatní studijní materiály
- Zapisuj si jen kvalitní vyučující (obsáhlá databáze referencí)
- Nastav si své předměty a buď stále v obraze
- Zapoj se svojí aktivitou do soutěže o ceny
- Založ si svůj profil, aby tě tví spolužáci mohli najít
- Najdi své přátele podle místa kde bydlíš nebo školy kterou studuješ
- Diskutuj ve skupinách o tématech, které tě zajímají
Studijní materiály
Zjednodušená ukázka:
Stáhnout celý tento materiáljového
kódu je potom počítač schopen program spustit.
TIP:
Spouštět aplikaci v prostředí systému Visual Basic je možné buď příkazem Run/Start (klávesa
F5) nebo příkazem Run/Start With Full Compile – spustit s explicitní kompilací veškerého progra-
mového kódu (klávesová zkratka CTRL+F5). Oba příkazy jsou dostupné z nabídky.
Programovací jazyk Visual Basic nabízí mnoho variant při řešení mnohých programátor−
sky složitých situací. Jednoduchým příkladem této příznivé vlastnosti jazyka je možnost
použití proměnného počtu argumentů v procedurách. Chcete−li definovat proceduru,
která při volání v různých částech aplikace provádí stejnou nebo velmi podobnou čin−
nost ovšem s jinými argumenty, nemusíte proceduru programovat dvakrát. Stačí, když
některé argumenty definujete jako volitelné. K tomu slouží klíčové slovo Optional. Po−
kud kompilátor jazyka najde toto klíčové slovo před definicí argumentu procedury, ne−
považuje jeho vynechání při volání procedury za chybu. Fakt, že volitelný argument ne−
byl při volání procedury uveden, lze zjistit v těle procedury pomocí funkce IsMissing.
TIP:
Volitelné argumenty musejí být definovány vždy až na konci seznamu parametrů a musejí být da-
tového typu Variant.
Příklad:
následující funkce vrací součet dvou až tří argumentů podle toho, kolik je jich při vyvo−
lání funkce uvedeno v seznamu argumentů.
Function Soucet( intA, intB As Integer, Optional varC As Variant)
If IsMissing(varC) Then
Soucet = intA + intB
Else
Soucet = intA + intB + varC
End If
End Function
Tato úloha se dá řešit ještě obecněji za pomoci procedury, do které lze zadat libovolný
počet argumentů. Libovolný počet argumentů je možné zadat pomocí definice seznamu
argumentů klíčovým slovem ParamArray. Následující funkce vrací součet všech argu−
mentů, které byly při volání funkce uvedeny.
Function Soucet1( ParamArray varPole() As Variant)
Dim varSoucet, var As Variant
varSoucet = 0
UČEBNICE VISUAL BASICU 6.0
24
For Each var In varPole
varSoucet = varSoucet + var
Next var
Soucet1 = varSoucet
End Function
Funkci Soucet1 lze volat libovolným z následujících řádků:
Suma = Soucet1( 25, 258, 259.6)
Vysledek = 5 * Soucet1(1, 258, 35.58, 15, 1, 2, 45)
Popis programové konstrukce For Each ... In je uveden v kapitole zabývající se příkazy
cyklu dále v učebnici. V našem případě se jedná o smyčku procházející všechny argu−
menty funkce.
Obecné procedury Visual Basicu ve standardních modulech se často definují jako veřej−
né (Public). To znamená, že jsou dostupné z kterékoli části aplikace. To znamená, že
veřejnou proceduru definovanou např. v samostatném modulu je možné volat i z jiných
modulů, např. z modulů formulářů. Při volání procedury se spustí první procedura pří−
slušného jména, kterou v modulech aplikace objeví. Pokud v aplikaci existuje několik
procedur jednoho jména, můžete specifikovat cestu ke konkrétní proceduře pomocí teč−
kové notace – příkazový řádek bude mít tuto podobu: NázevModulu.NázevProcedury.
TIP:
Pokud hodláte obecnou proceduru používat pouze v rámci jejího modulu, deklarujte ji klíčovým
slovem Private. Tím zajistíte, že proceduru nebude „vidět“ z ostatních modulů a vyloučíte tím
možnost konfliktů se stejnojmennými procedurami jiných modulů. Navíc se tím urychlí kompilace
kódu procedury.
Událostní procedury musejí být definovány pomocí klíčového slova Private, protože se předpoklá-
dá jejich použití pouze pro databázový objekt, ke kterému jsou připojeny.
Deklarace proměnných
Proměnné ve Visual Basicu – stejně jako v jiných programovacích jazycích – slouží k do−
časnému uchovávání hodnot během vykonávání programového kódu. Každá proměnná
se musí deklarovat. Deklarace proměnné se provádí před jejím prvním použitím. Pojem
deklarace proměnných v sobě zahrnuje nejen definici názvu proměnné a jejího dato−
vého typu, ale také obor (veřejné Public – či soukromé – Private – proměnné) a dobu
platnosti (statické, které si uchovávají svou hodnotu i po skončení procedury, ve kte−
ré jsou deklarovány, nebo takové proměnné, které „žijí“ pouze po dobu provádění pro−
cedury).
TIP:
Určením oboru proměnných určujeme, ze kterých procedur a modulů bude proměnná dostupná.
Stejně jako tomu bylo u procedur
ČÁST 1 – OBECNÉ ZÁSADY PROGRAMOVÁNÍ
25
Začněme nejprve oborem proměnných. U některých proměnných je žádoucí, aby byly
dostupné nejen v jedné proceduře, ale z celého modulu a někdy dokonce z celé aplika−
ce. Jak tuto dostupnost zařídit?
Všechny proměnné jsou deklarovány v jedné z následujících částí programového kódu:
1.V deklarační sekci procedury. Proměnné, které se zde deklarují, musejí být vždy
uvozeny klíčovým slovem Dim. Takové proměnné jsou ve všech případech soukro−
mé vzhledem k proceduře a nejsou tudíž dostupné z jiných částí modulu ani apli−
kace.
2. V deklarační sekci modulu. Tj. v sekci označené jako (General) v levém rozbalova−
cím seznamu na obr. 8. Zde se dají deklarovat dva druhy proměnných:
• Soukromé vzhledem k modulu, ve kterém jsou deklarovány. Tyto proměnné mo−
hou být uvozeny buď klíčovým slovem Dim nebo Private. V tomto případě není
mezi Dim a Private žádný rozdíl. Takto deklarované proměnné mohou používat
všechny procedury daného modulu, nejsou však dostupné v ostatních modulech
aplikace.
• Veřejné. Veřejné proměnné se v deklarační čási modulu definují pomocí klíčové−
ho slova Public. Tyto proměnné jsou dostupné ve všech modulech aplikace.
TIP:
Explicitní deklarace klíčovými slovy Dim, Private nebo Public je povinná, pokud deklarační sekce
modulu obsahuje klíčová slova Option Explicit – viz obr. 12. Pokud modul tato klíčová slova neob-
sahuje, není explicitní deklarace povinná. Vtom případě kompilátor považuje každý neznámý iden-
tifikátor za novou proměnnou a při jejím prvním použití provede tzv. implicitní deklaraci.
V takovém případě však hrozí nebezpečí, že Visual Basic bude i překlep v těle procedury v někte-
rých případech považovat za implicitní deklaraci proměnné a programový kód (ačkoli bude syn-
takticky správný) bude pracovat jinak, než zamýšlíte.
Potlačením možnosti implicitní deklarace se vyhnete problémům při ladění procedur.
UČEBNICE VISUAL BASICU 6.0
26
obr. 12 Modul, v němž je povinná explicitní deklarace všech proměnných.
TIP:
Příkaz Option Explicit není nutné vypisovat v každém modulu zvlášť. Tento příkaz bude uveden
v deklarační části každého modulu, pokud zaškrtnete pole Require Variable Declaration (tj. v pře-
kladu požadovat deklaraci proměnných) v dialogovém okně Options (viz obr. 11), které vyvoláte
příkazem Tools/Options z nabídky. Tuto volbu je vhodné zaškrtnout při vytváření aplikace hned
na začátku, protože Visual Basic vloží po zaškrtnutí příkaz Option Explicit do nových modulů, ale
nezmění již vytvořený kód.
Pokud mají dvě proměnné se stejným názvem různý obor platnosti, je v jazyce Visual Ba−
sic praktikován přednostní přístup k proměnné „lokálnější“. Např. máte−li deklarovanou
proměnnou intX na úrovni modulu i na úrovni procedury Proc1 příslušné k tomuto mod−
ulu, bude se volání proměnné intX v proceduře Proc1 vztahovat k její lokální proměn−
né, zatímco ve všech ostatních procedurách modulu se bude samozřejmě identifikátor
intX vztahovat k jediné v té chvíli dostupné proměnné – totiž k proměnné deklarované
na úrovni modulu.
TIP:
Je možné deklarovat dvě různé veřejné proměnné v různých modulech, které budou dostupné
z celé aplikace, stejným názvem. Aby při jejich používání nedošlo ke konfliktu, je třeba je v kódu
odlišit tak, že v odkazu na ně uvedete i název modulu, ve kterém byly deklarovány – např. pro-
měnná intX je deklarovaná v modulech Modul1 a Modul2. Označením proměnných Modul1.intX
a Modul2.intX získáte odkaz na správnou proměnnou.
ČÁST 1 – OBECNÉ ZÁSADY PROGRAMOVÁNÍ
27
Výše uvedená pravidla překrývání se nevztahují pouze na proměnné, ale i na všechny
ostatní objekty, na které je možné v programovém kódu vytvářet odkazy: Tj. vlastnosti,
ovládací prvky formulářů a sestav, procedury, konstanty nebo uživatelem definované ty−
py. Z toho vyplývá mimo jiné i to, že nemůžete pojmenovat stejně např. ovládací prvek
formuláře a proměnnou deklarovanou na úrovni modulu příslušného k formuláři, proto−
že mají stejný obor platnosti. Stejně tak není možné nastavit vlastnost Name u dvou růz−
ných ovládacích prvků na stejnou hodnotu.
Jak tedy získat hodnotu ovládacího prvku formuláře nebo libovolné z jeho vlastností
v proceduře, ve které je deklarována lokální proměnná stejného názvu? Řešení poskytu−
je použití klíčového slova Me. Předpokládejme, že existuje lokální proměnná Informace
a stejnojmenné příkazové tlačítko. V proceduře lze použít následující příkazy:
‘ Přiřazení hodnoty proměnné
informace = 0
’ Znepřístupnění ovládacího prvku Informace
Me.Informace.Enabled = False
Následující příkaz však vygeneruje chybu:
Informace.Enabled = False
TIP:
Přestože pravidla překrývání jsou poměrně jednoznačná, přispěje k přehlednosti programu, když
budou všechny názvy jednoznačně odlišeny.
Doba platnosti proměnných:
Kromě oboru platnosti lze proměnným přisoudit také dobu platnosti. Hodnoty proměn−
ných deklarovaných na úrovni modulu se zachovávají po celou dobu, kdy je databázová
aplikace otevřená. Lokální proměnné deklarované v procedurách klíčovým slovem Dim
existují pouze po dobu běhu kódu procedury. Při novém spuštění procedury se tyto pro−
měnné znovu inicializují. Existuje však způsob, jak zachovat hodnotu lokální proměnné
i pro následující spuštění procedury, ve které je deklarovaná. Taková lokální proměnná
musí být definována jako statická klíčovým slovem Static. Přístup k lokální proměnné de−
klarované v proceduře má pouze její procedura, avšak hodnota proměnné se zachovává
i po ukončení běhu procedury a vstupuje do ní při jejím dalším volání.
TIP:
Chcete-li, aby všechny proměnné procedury byly statické, deklarujte celou proceduru klíčovým
slovem Static, které uveďte před klíčové slovo Sub nebo Function. Proměnné v proceduře pak bu-
dou statické bez ohledu na to, zda jsou deklarovány klíčovým slovem Dim nebo Static.
V předcházejících odstavcích byla řeč o oboru a době platnosti proměnných. Nyní si řek−
něme, jak se proměnné skutečně deklarují. Syntaxe explicitní deklarace proměnných je
následující:
[Dim] [Static] NázevProměnné [As typ]
UČEBNICE VISUAL BASICU 6.0
28
Vytváření názvů ve Visual Basicu:
Konvence pro vytváření názvů (výraz NázevProměnné ve výše uvedené syntaxi) se týká
názvů všech nových objektů, které při programování definujete. Vztahuje se tedy na ná−
zvy pocedur, proměnných, konstant, ale musejí se dodržovat i u názvů ovládacích prvků
a jiných objektů, na které se programový kód Visual Basicu odvolává. Všechny názvy ob−
sažené v programovém kódu tedy musejí:
• začínat písmenem,
• skládat se pouze z číslic, písmen a znaku podtržení (_). Žádné jiné znaky nejsou
povoleny,
• mít maximální délku 256 znaků,
• obsahovat pouze takové sekvence znaků, které se liší od klíčových slov Visual
Basicu.
Zaměřme se nyní na definici datového typu proměnné. Ten se uvádí za klíčové slovo As
a jeho uvedení je nepovinné. Popis datových typů uvádí následující tabulka:
Název typu Popis
Byte Celočíselná hodnota zabírající jeden bajt, tj. 0 až 255.
Integer Celočíselná hodnota se znaménkem zabírající nejvýše dva bajty,
tj. −32 768 až 32 767.
Long Celočíselná hodnota se znaménkem zabírající nejvýše čtyři bajty.
Single Reálné kladné číslo s plovoucí čárkou zabírající nejvýše čtyři
bajty.
Double Reálné kladné číslo s plovoucí čárkou zabírající nejvýše osm
bajtů.
Currency Reálné číslo se čtyřmi desetinnými místy zabírající nejvýše osm
bajtů.
String Řetězec znaků, jehož délka je prakticky neomezená – činí asi
dvě miliardy znaků.
Boolean Dva bajty obsahující hodnotu True nebo False (pravda nebo
nepravda).
Date Osm bajtů obsahující hodnotu datum/čas, tj. 1. leden 100 až
31. prosinec 9999.
Object Čtyři bajty obsahující odkaz na libovolný Object.
Variant Tento datový typ může obsahovat kterýkoli z předešlých dato−
vých typů v rozsahu, který byl uveden. Tento datový typ je im−
plicitně přiřazen každé proměnné, u které explicitní deklarace
typu chybí. Nevýhodou, která je daní za flexibilitu proměnných
tohoto typu, je jejich délka 16 bajtů a o něco pomalejší inter−
pretace hodnot při běhu programu. Ve většině případů použití
této proměnné musí Visual Basic provést odpovídající konverzi
podle typu výrazu, ve kterém je proměnná typu Variant právě
použita.
ČÁST 1 – OBECNÉ ZÁSADY PROGRAMOVÁNÍ
29
S proměnnou typu Variant lze provádět všechny operace, které jsou povoleny s jednot−
livými datovými typy. Příkladem budiž následující kód:
Dim varVariable ’ varVariable je typu Variant
varVariable = “356.25“ ’ varVariable obsahuje řetězec “356.25“
varVariable = varVariable * 2 ’ varVariable obsahuje reálnou číselnou
hodnotu 712.5
varVariable = “Ahoj“ & varVariable ’ varVariable obsahuje řetězec ’ “Ahoj712.5“
varVariable = varVariable * 2 ’ Tento řádek vygeneruje chybu, protože s obsa−
hem proměnné varVariable nelze provádět arit−
metické operace
Předešlý příklad ukazuje další vlastnost jazyka, a to psaní poznámek do programového
kódu. Poznámky slouží ke komentování jednotlivých programových pasáží a při kompi−
laci se ignorují. Poznámka je uvozena apostrofem (’). Tento znak kompilátoru oznamu−
je, že až do konce řádky není uveden žádný programový kód. Další možnost, jak do pro−
gramu dostat komentář, představuje klíčové slovo Rem. Komentář uvedený za klíčovým
slovem Rem se také ignoruje.
Testování hodnoty proměnné typu Variant:
Předcházející příklad ukazuje pouze jednu z mnoha situací, která může při používání
proměnných datového typu Variant dělat problémy. Aby bylo možné předejít podob−
ným chybám při běhu programu, obsahuje Visual Basic celou sadu funkcí určených pro
testování hodnot proměnných typu Variant.
První z těchto funkcí je funkce IsNumeric. Funkce vrací hodnotu True nebo False po−
dle toho, zda aktuální hodnotu testované proměnné je možné použít jako platné číslo ve
výrazu. Testovaná hodnota se uvádí do závorek za klíčové slovo IsNumeric – např:
If IsNumeric(varVariable) Then
varVariable = varVariable*2
Else
varVariable = 0
End If
Podobně jako funkce IsNumeric funguje také funkce IsDate. Tato funkce zjišťuje, zda
obsah proměnné splňuje podmínky kladené na datový formát Date.
Užitečné funkce testující proměnné typu Variant jsou dále IsEmpty a IsNull. Funkce
IsEmpty testuje, zda byla proměnné po jejím vytvoření přiřazena hodnota či nikoli. Z an−
glického významu názvu funkce je zřejmé, že funkce vrací hodnotu True pouze v přípa−
dě, že proměnné dosud nebyla přiřazena žádná hodnota. Při běhu programu je proměn−
né možné přiřadit hodnotu Empty a uměle tak navodit stejný stav, jaký byl před prvním
přiřazením libovolné hodnoty této proměnné.
Další zvláštní hodnotou, kterou může proměnná datového typu Variant obsahovat, je
hodnota Null. Hodnota Null se většinou používá na místech, kde jsou dosud neurčená
UČEBNICE VISUAL BASICU 6.0
30
data – hodnotu Null mají např. všechna pole před svou inicializací. Hodnotu Null lze
proměnné přiřadit (stejně jako hodnotu Empty) prostým přiřazovacím příkazem – např.:
varVariable = Null
Funkce IsNull zjišťuje, zda testovaná proměnná má hodnotu Null či nikoli.
TIP:
Zapamatujte si: hodnoty Null a Empty jsou dvě navzájem různé hodnoty. Zároveň se obě hodno-
ty liší od prosté číselné nuly nebo řetězce nulové délky. Hodnoty Empty i Null však je možné po-
užít ve výrazech. Hodnota Empty se ve výrazech chová buď jako nula nebo řetězec nulové délky
(podle typu výrazu). Dále hodnota Null proniká výrazy obsahujícími proměnné datového typu Va-
riant. Znamená to, že pokud se hodnota Null vyskytne ve výrazu, výsledkem celého výrazu už bu-
de automaticky hodnota Null. Stejně tak pokud použijete hodnotu Null jako argument funkce ty-
pu Variant, funkce vrací hodnotu Null.
Tím máme nezbytné informace o datovém typu Variant vyčerpány a můžeme se pustit
do popisu dalších typů.
Číselné datové typy:
Číselné datové typy se dělí na typy, které uchovávají pouze celočíselné hodnoty a na ty−
py, které jsou určeny pro reálná čísla. Ačkoli čísla lze uchovávat i v proměnných typu
Variant, číselné datové typy zabírají méně paměti a aritmetické operace s nimi provádě−
né jsou rychlejší. Stejně tak je vhodné v programech rozlišovat proměnné na celočíselné
a typy s desetinnou čárkou a neusnadňovat si práci tím, že všechny proměnné budou
deklarovány jako typ Double. I celočíselná hodnota vložená do proměnné typu Single,
Double nebo Currency se převede na hodnotu s desetinnou čárkou, což může (pokud
s tímto jevem nepočítáte) při dalším zpracování způsobit nemalé potíže.
Řetězcové proměnné:
Proměnné typu String budou vždy obsahovat pouze řetězce a nikoli číselné hodnoty. Řetěz−
cové hodnoty, které se do těchto proměnných přiřazují, se uvádějí v uvozovkách – např.:
Dim strRetez As String
strRetez = “Ahoj, světe“
Proměnná strRetez byla deklarována jako řetězec proměnné délky. Velikost takové pro−
měnné se prodlužuje a zkracuje podle hodnoty, která je v ní aktuálně uložená. Kromě
toho lze také deklarovat řetězcové proměnné s pevnou délkou. Příklad:
Dim strPevny As String * 25
Proměnná strPevny bude mít vždy pevnou velikost 25 znaků. Pokud této proměnné při−
řadíte řetězec, jehož délka bude přesahovat 25 znaků, budou všechny znaky počínaje
šestadvacátým ignorovány.
ČÁST 1 – OBECNÉ ZÁSADY PROGRAMOVÁNÍ
31
TIP:
Vyhodnocování výrazů typu String se dá nadefinovat v deklarační části každého modulu – příka-
zem Option Compare. Lze zde využít příkazů Option Compare Binary nebo Option Compare Text.
Těmito příkazy se nastavuje relativní uspořádání použité při porovnání a to, zda se při porovná-
vání řetězců budou rozlišovat velká a malá písmena (Option Compare Binary) nebo ne (Option
Compare Text).
Datový typ Boolean:
Datový typ Boolean je obdobou podobného datového typu, který se vyskytuje téměř ve
všech vyšších programovacích jazycích. Proměnná datového typu Boolean může obsa−
hovat pouze dvě hodnoty: False (nepravda) nebo True (pravda). Hodnota typu Boole−
an je výsledkem všech logických výrazů. Výchozí hodnotou proměnných typu Boolean
je False.
Datový typ Object:
Proměnná datového typu Object obsahuje čtyřbajtovou adresu odkazující na objekt
v aplikaci nebo na objekty v některých jiných aplikacích. K přiřazení objektu této pro−
měnné se používá příkaz Set.
Uživatelem definované typy:
Tím končíme stručný popis základních datových typů programového jazyka Visual Basic.
Avšak ještě než opustíme oblast datových typů, zastavme se u vlastních datových typů de−
finovaných uživatelem. Jde o podobnou konstrukci programovacího jazyka Visual Ba−
sic, jaká je např. v programovacím jazyce C označována slovem struktura. Uživatelem de−
finované typy se používají v případě, že je výhodné v jedné proměnné uchovávat něko−
lik souvisejících informací různých datových typů najednou. Uživatelem definované typy
se deklarují pomocí klíčového slova Type. Tyto datové typy je možné definovat pouze
v deklaračních sekcích modulu (nikoli procedur) a mohou být označeny jako soukromé
(klíčové slovo Private) nebo veřejné (Public).
TIP:
Veřejné uživatelem definované datové typy mohou být definovány pouze ve standardních
modulech.
Příklad:
Datový typ MujTyp bude přístupný pouze ve „svém“ modulu a bude obsahovat dvě pro−
měnné: varVariable typu Variant a strJmeno typu String.
Private Type MujTyp
varVariable As Variant
strJmeno As String
End Type
UČEBNICE VISUAL BASICU 6.0
32
Tímto způsobem je zatím definován uživatelský typ s názvem MujTyp. Vlastní deklarace
proměnných tohoto
Vloženo: 26.04.2009
Velikost: 5,82 MB
Komentáře
Tento materiál neobsahuje žádné komentáře.
Copyright 2024 unium.cz