Integrované prostředí rubriky Visual Basic |
Autor: Ján Hanák |
|||||||
|
Začínáme s VB
.NET |
|||||||
Úvod do světa .NET (12. díl) |
||||||||
Časová náročnost (min): 40 |
Začátečník |
Pokročilý |
Profesionál |
|||||
|
|
|
||||||
|
Použitý operační systém : Hlavní vývojový
nástroj : Další vývojový software : Jiný software : |
Windows 2000 SP3 Visual Basic .NET
2002 Žádný Žádný |
||||||
|
Vážení čtenáři,
dvanáctá lekce o programování ve Visual Basicu .NET pro začátečníky již na vás netrpělivě čeká. Náplní jsou i nadále operátory: Nejprve si vysvětlíme speciální porovnávací operátory Is a Like, a poté plynule přejdeme na další kategorie operátorů. Přeji vám příjemné počtení.
Porovnávací operátor Is
Operátor Is se používá pro zjištění, zdali obsahují dvě různé referenční proměnné ukazatele na stejný objekt. Jestliže je výsledek porovnání kladný, operátor vrací hodnotu True, v opačném případě False. Budete-li například chtít zjistit, zdali dvě referenční proměnné obsahují odkaz na aktuální instanci formuláře, můžete použít následující fragment programového kódu:
Dim
refA, refB As Form
refA = Me
refB = refA
Me.Text
= CType((refB Is
refA), String)
Obě odkazové proměnné (refA, refB) mohou uchovávat reference na instance třídy Form. Do proměnné refA je uložen odkaz na aktuální instanci třídy Form (pomocí klíčového slova Me). Přiřazovací příkaz způsobí kopírování reference, která je uložena v proměnné refA, do proměnné refB.
|
Připomeňme si, jak pracuje operátor přiřazení při hodnotových a
referenčních proměnných: 1.
Jestliže použijeme přiřazovací operátor na dvě
hodnotové proměnné, bude hodnota proměnné, která je umístěna napravo od
přiřazovacího operátoru, zkopírována do proměnné, která se nachází na levé
straně přiřazovacího operátoru. Při tomto typu kopírovacího procesu dochází
ke kopírování hodnoty jedné proměnné do druhé proměnné. Zkopírovaná hodnota
je přitom zcela nezávislá od svého originálu. 2.
Operátor pro přiřazení se ve společnosti
referenčních proměnných chová zcela jinak. Jak jsme si již řekli, odkazové
proměnné jsou naplněné referencemi, které ukazují zvyčejně na objekty, tedy
instance tříd. Předmětem kopírování se v tomto případě stává hodnota
referenční proměnné, tedy samotná reference. Detailněji řečeno, reference,
která je uložena v proměnné, jež se nachází na pravé straně
přiřazovacího příkazu, bude zkopírována do odkazové proměnné, nacházející se
na levé straně operátoru pro přiřazení. Výsledkem celého procesu je
skutečnost, že obě referenční proměnné obsahují stejné reference na jednu
(cílovou) instanci třídy. Změníme-li stav objektu pomocí jedné referenční
proměnné, tato změna se projeví i při použití druhé odkazové proměnné. Zde je
důležité si uvědomit, že ačkoliv používáme dvě různé referenční proměnné, obě
dvě jsou nasměrované na stejný objekt. |
Pokud se rovnají reference obou odkazových proměnných, bude vrácena operátorem Is hodnota True (jako v tomto případě). Používáte-li při programování volbu Option Strict nastavenou na hodnotu True, budete rovněž muset explicitně přetypovat návratovou hodnotu operátoru Is z typu Boolean na typ String (například pomocí konverzní funkce CType, jak je uvedeno ve výše představené ukázce kódu).
Porovnávací operátor Like
Operátor Like se používá pro speciální porovnání textových řetězců, resp. porovnání textových znaků v textových řetězcích. Generická podoba použití operátoru Like je tato:
Výsledek = TextovýŘetězec Like šablona
Výsledkem je pravdivostní hodnota, která identifikuje, zdali TextovýŘetězec splňuje kritéria šablony. Pokud je porovnání vyhovující, je do proměnné Výsledek uložena hodnota True, jinak bude proměnná Výsledek obsahovat hodnotu False.
Prostřednictvím operátoru Like můžeme například zkoumat, zdali se požadovaný znak nachází v jisté skupině znaků:
Dim
textA As String
= "C"
Dim
textB As String
= "[A-F]"
Me.Text
= CStr(textA Like
textB)
Operátor Like testuje, jestli se znak C nachází v posloupnosti znaků A až F. Ano, tato podmínka je splněna, a proto se v titulku dialogového okna objeví hodnota True. Šablonou mohou být různé zástupné znaky, přičemž jejich popis můžete najít v dokumentaci k Visual Basicu .NET. Použití operátoru Like se váže na způsob, jakým Visual Basic .NET přistupuje k porovnávaní textových řetězců. Práce s řetězci je založená na volbě Option Compare.
|
Budete-li experimentovat s nastaveními volby Option Compare,
mějte na paměti, že kód volby musí být umístěn před veškerý kód třídy, resp.
modulu (podobně, jako tomu je u voleb Option Strict a Option
Explicit). |
Tato volba může nabývat pouze dvou hodnotu:
Přiřazovací operátory
Přiřazovací operátory provádějí přesně to, co vyplývá z jejich názvu, tedy přiřazují jisté hodnoty, nejčastěji z jedné proměnné do jiné proměnné. Obecná podoba použití přiřazovacích operátorů je následovní:
Proměnná = hodnota
Proměnnou může být jakákoliv platně deklarovaná proměnná, ovšem je třeba brát v úvahu datový typ této proměnné. Datový typ proměnné je užitečný pro vymezení intervalu cílových hodnot, které lze do proměnné umístit. Pochopitelně, specifikace datového typu proměnné by se měla odvíjet od charakteru hodnot, které budeme chtít do proměnné uložit. Proměnné typu Integer dokáží ukládat celá čísla, zatímco typ String je výhodné použít při práci s textovými řetězci. Ve skutečnosti je Visual Basic .NET poněkud méně náchylný na nesoulad datových typů proměnných a typů hodnot, které lze do těchto proměnných uložit. Pokud se hodnota, kterou chcete do proměnné uložit, neshoduje s datovým typem proměnné, Visual Basic .NET se bude snažit tento nesoulad „zahladit“, a to pomocí konverze typu hodnoty. Máme-li deklarovanou proměnnou typu String a uložíme do ní čelnou hodnotu, nebude hlášena žádná chyba ani v režimu návrhu aplikace, ani při jejím běhu. Visual Basic .NET je natolik inteligentní, že nezbytné konverzní operace provede automaticky sám. Připomeňme, že implicitní konverze jsou realizovány jenom v případě, jestliže nemůže při konverzním procesu dojít ke ztrátě dat a jestliže nepoužíváte při programování volbu Option Strict nastavenou na hodnotu True. V opačném případě se ke slovu dostávají explicitní konverze.
Visual Basic .NET nabízí spoustu přiřazovacích operátorů, přičemž novinkou jsou zkrácené tvary některých operátorů. V tab. 1 můžete vidět ukázky použití přiřazovacích operátorů.
Přiřazovací operátor |
Ukázka použití |
Ekvivalentní zápis |
Operátor přiřazení
(=) |
Dim x As Short = 20 |
Dim x As Short = 20 |
Zkrácený operátor
pro sčítání a přiřazení (+=) |
x += 1 |
x = x + 1 |
Zkrácený operátor
pro odečítání a přiřazení (-=) |
x -= 1 |
x = x – 1 |
Zkrácený operátor
pro násobení a přiřazení (*=) |
x *= y |
x = x * y |
Zkrácený operátor
pro dělení a přiřazení (/=) |
x /= z |
x = x / z |
Zkrácený operátor
pro celočíselné dělení a přiřazení (\=) |
a \= b |
a = a \ b |
Zkrácený operátor
pro umocňování a přiřazení (^=) |
a ^= b |
a = a ^ b |
Zkrácený operátor
pro zřetězení a přiřazení (&=) |
a &= b |
a = a & b |
Tab. 1 – Přehled přiřazovacích operátorů
Podívejme se teď na způsob práce přiřazovacích operátorů blíže. Vezměme si třeba zkrácený operátor pro sčítání a přiřazení a prozkoumejme, jak ve skutečnosti pracuje:
Dim
a1 As Short, a2
As Integer
a1 = Math.Abs(CShort((-2) * 2))
a2 = 10
a2 += a1
Me.Text
= CType(a2, String)
Kód pracuje s dvěma proměnnými: a1 typu Short a a2 typu Integer. Do proměnné a1 je přiřazena absolutní hodnota výrazu CShort((-2)*2)), tedy 4. Běh kódu pokračuje naplněním proměnné a2 celočíselnou hodnotou 10. My se však budeme soustředit až na samotnou aplikaci zkráceného přiřazovacího operátoru +=:
a2 += a1
Přiřazovací operátor vykonává svoji práci podle tohoto algoritmu:
|
Protože proměnné a1 a a2 jsou zástupci různých datových
typů, bude ještě před přiřazením finální hodnoty provedeno přetypování
hodnoty proměnné a1 do podoby typu Integer. |
Logické operátory
Logické operátory se používají pro nalezení pravdivostní hodnoty logických výrazů (logický výraz je posloupnost logických operandů a operátorů). Logickým výrazem je každý výraz, jehož hodnotu lze vyjádřit pomocí logických hodnot True nebo False. Logické operátory společně s logickými výrazy se v programování velmi často používají v případech, kdy je potřebné zjistit, zdali je jistá podmínka platná či nikoliv. Přestože je oblast působnosti logických operátorů značně rozsáhlá, nejvíc se s nimi budete setkávat nejspíš při rozhodovacích konstrukcích If a při cyklech.
Visual Basic .NET nabízí následující logické operátory:
·
And
·
Or
·
Xor
·
Not
·
AndAlso
·
OrElse
Přehled logických operátorů And, Or, Xor a Not, společně s ukázkou jejich aplikace na testovací operandy, přináší tab. 2.
Logický operátor |
Operand1 |
Operand2 |
Použití logického operátoru |
Finální pravdivostní hodnota |
|
And |
A = True |
B = True |
A
And B |
True |
|
A = True |
B = False |
False |
|||
A = False |
B = True |
False |
|||
A = False |
B = False |
False |
|||
Or |
A = True |
B = True |
A
Or B |
True |
|
A = True |
B = False |
True |
|||
A = False |
B = True |
True |
|||
A = False |
B = False |
False |
|||
Xor |
A = True |
B = True |
A Xor
B |
False |
|
A = True |
B = False |
True |
|||
A = False |
B = True |
True |
|||
A = False |
B = False |
False |
|||
Not |
A = True |
|
Not
A |
False |
|
|
B = False |
Not
B |
True |
||
|
|||||
Vysvětlení aplikace logických operátorů And, Or, Xor
a Not |
|||||
And |
Operátor And
vrací hodnotu True právě tehdy, obsahují-li oba operandy hodnotu True.
V opačném případě je vrácená hodnota False. |
||||
Or |
Operátor Or
vrací hodnotu True, je-li alespoň jeden z operandu pravdivý (True).
To znamená, že hodnota True je vrácená vždy, jenom ne tehdy, kdy oba
operandy obsahují hodnotu False. |
||||
Xor |
Operátor Xor
vrací hodnotu True, pokud právě jeden operand obsahuje hodnotu True.
Tato hodnota (True) je vrácena v případě, kdy oba operandy
disponují různou pravdivostní hodnotou. |
||||
Not |
Operátor Not
provádí logickou negaci, tedy převrácení původní pravdivostní hodnoty
operandu. Je-li operand pravdivý (True), po aplikace operátoru Not
bude jeho hodnota False. Podobně probíhá i zpětný proces (negace již
znegované pravdivostní hodnoty). |
||||
Tab. 2 – Přehled aplikace
logických operátorů And, Or, Xor a Not
Nyní se podívejme na programovou ukázku použití logických operátorů And, Or, Xor a Not:
Dim
x1, x2, x3, x4 As Boolean
x1 = True
x2 = Not
x1
x3 = x1 And x2
x4 = (x1 Or x2) Xor x3
Me.Text
= CType(x4, String)
Tento výpis programového kódu vypíše do titulku aktuální instance třídy Form textový řetězec True. Jak Visual Basic .NET dospěl k takovému výsledku? Inu, asi takto:
Krok |
Komentář k práci programového kódu |
Aktuální
hodnoty proměnných |
||||
x1 |
x2 |
x3 |
x4 |
|||
1. |
Do proměnné x1
je uložena hodnota True. |
True |
False * |
False * |
False * |
|
2. |
Hodnota proměnné x1
je znegována pomocí operátoru Not, takže do proměnné x2 je
uložena hodnota False. |
True |
False |
False * |
False * |
|
3. |
Na proměnné x1
a x2 je aplikován logický operátor And. Jelikož pravdivostní hodnota
obou proměnných není True, operátor vrací hodnotu False. |
True |
False |
False |
False * |
|
4. |
Mezi hodnotami
proměnných x1 a x2 je realizovaná logická disjunkce pomocí
operátoru Or. Jelikož proměnná x1 obsahuje hodnotu True,
operátor vrací hodnotu True. Na získanou hodnotu True a hodnotu
proměnné x3 (False) je použit operátor Xor. Tento
operátor vrací hodnotu True tehdy, obsahuje-li právě jeden operand
hodnotu True. Tato podmínka je splněna, a proto je do proměnné x4
uložena pravdivostní hodnota True.
|
True |
False |
False |
True |
|
Legenda |
||||||
* |
Proměnná je
implicitně inicializovaná na hodnotu False. |
|||||
|
Finální hodnota
zkoumané proměnné v daném kroku algoritmu |
|||||
|
Právě jste dočetli 12. díl seriálu Začínáme s VB .NET. Jestliže se chcete dozvědět více informací o programování ve Visual
Basicu .NET, neváhejte a navštivte také další sekce rubriky Visual Basic. A
jakáže je dnešní nabídka? |
|
Inteligentní značky (Smart Tags) |
||
Použití sdílených datových členů, vlastností a metod
Vytváření
miniatur obrázků (thumbnails) |