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) |