Professional Documents
Culture Documents
Chng 11:
S dng mng v tp hp (Collection)
--------oOo--------
Ni dung tho lun:
- T chc thng tin d liu c chiu di c nh v mng ng
- D tr mng d liu khi nh ngha li kch thc mng
- X l tp hp cc i tng iu khin trn form
- S dng vng lp For EachNext duyt qua danh sch tp hp cc i tng
- To tp hp ca ring bn qun l d liu chui
Khi chng trnh tr nn ln v lng thng tin v d liu ln, bn khng th ch dng
bin m cn cn n mt cng c lu tr, x l tt hn l mng. Mng cha danh sch
tun t cc phn t cng nh dng.
Chng ta cng c th nhm cc i tng vo thnh tp hp d qun l, dng vng lp
For eachNext duyt qua cc phn t ca tp hp.
Cc tnh nng mi trong VB.NET:
- Mng c ch s c s l 0
- Hm Lbound lun tr v 0 l gii hn thp nht ca mng. Hm Ubound tr v
gii hn trn ca mng. S phn t ca mng l Ubound()-1
- VB.NET dng lp System.Collections x l tp hp
- Bn c th cha cc iu khin trong mng nu mng ca bn khai bo kiu
Object
1. Lm vic vi mng cc bin
Mng gip qun l cc d liu ln ht sc d dng. Vic truy cp cc phn t ca mng
thng qua ch s.
1.1. To mng
Vic khai bo mng tng t nh khai bo bin. Vic khai bo thng cha cc thng tin
nh:
- Tn mng: Tn i din cho mng, vic truy cp mt phn t mng gm tn
mng v ch s mng.
- Kiu d liu: Tt c cc phn t trong mng phi c cng kiu.
- Kch thc mng: L s chiu ca mng.
- S phn t ca mng: S phn t ti a ca mng
For i = 0 To UBound(nhietdo)
ketqua = ketqua & "Ngy " & (i + 1) & _
vbTab & nhietdo(i) & vbCrLf
tong = tong + nhietdo(i)
Next
TextBox1.Text = ketqua
End Sub
Th tc ny li s dng vng lp ForNext duyt li cc phn t trong mng sau khi
c gn gi tr th tc button1_Click. Bin ketqua c dng lm chui kt xut
gp cc gi tr phn t mng. Sau mi ln gp ta s dng hng s vbCrLf khin du ngt
dng v du v u dng (tng ng vi hai hm Chr(13) v Chr(10)). Hng vbTab
phn cch gia phn ghi ngy v ghi nhit .
Bn to th thc Button3_Click v nhp pht biu End kt thc chng trnh.
Chy chng trnh:
Bn chy chng trnh v nhp gi tr nhit 7 ngy ri cho hin th gi tr ln xem
sao.
1.5. To mng ng
Vic dng mng l rt thun tin. Tuy nhin khi bn cha bit chnh xc s phn t ca
mng l bao nhiu th sao? V d khi bn mun ngi dng nhp vo bao nhiu nhit
ty thch, nhp cng nhiu th chnh xc cng cao.
VB gii quyt vic ny bng mng ng. Kch thc mng ng ch c ch nh khi
chng trnh thc thi ch khng nh trong lc vit m. Vic khai bo trc kch thc
mng l khng cn thit nhng cng cn dnh ch trc cho mng .
Cc bc to mng ng:
- Thm m xc nh kch thc mng khi chng trnh thc thi. V d khi chng
trnh chy bn hi xem ngi dng mun nhp bao nhiu ngy, v d:
Dim songay As Integer
songay = InputBox("Ban muon nhap bao nhieu ngay?", "Tao mang dong")
- Dng bin songay nh li kch thc mng (tr i 1 v mng tnh t 0). V d
If songay > 0 Then ReDim nhietdo(songay - 1)
- Tip theo ta dng hm Ubound(nhietdo) xc nh s phn t ca mng.
By gi chng ta s lm li v d trn s dng mng ng:
- Trc ht, bn khai bo li mng ng v khai bo bin songay cha s ngy
ngi dng mun nhp bng on m ngay di dng khai bo lp form1:
Dim nhietdo() As Single
Dim songay As Integer
- Sau sa li m ca th tc Button1_Click nh sau:
Dim Prompt, tieude As String
Dim i As Short
Prompt = "in vo nhit ca ngy."
For i = 0 To UBound(nhietdo)
tieude = "Ngy " & (i + 1)
nhietdo(i) = CInt(InputBox(Prompt, tieude))
Next
- Tip theo thay s 7 trong th tc Button2_Click bng bin songay:
ketqua = ketqua & vbCrLf & _
"Nhit trung bnh: " & _
Format(tong / songay, "0.0")
- Bn c th dng pht biu TryCatch bt li nu ngi dng nhp vo mt s
nh hn 0.
- Chy li chng trnh v kt qu r rng linh ng hn.
2. D tr sn mng bng pht biu REDIM
Trong v d trn, chng ta nh li kch thc bng t kha REDIM. Khi nh li kch
thc nh th th d liu c ca mng s mt ht. Cc phn t s c gi tr l 0 hay NULL.
gi nguyn gi tr cc phn t c, bn c th dng t kha Preserve i km pht biu
Redim. V d:
If songay > 0 Then ReDim Preserve nhietdo(songay - 1)
Mun truy cp cc phn t khc trn form, bn s dng ch s khc nh 0, 1,V d vng
lp fornext sau s in ra tiu ca 4 i tng trn form:
For i = 0 To 3
ketqua &= Controls(i).Text & vbCrLf
Next
Bn c th dng vng lp ForNext nh trn, tuy nhin hiu qu v d hiu nht bn nn
dng vng lp For EachNext.
3.2. S dng vng lp For EachNext
Mc d bn c th tham chiu n cc phn t trong tp hp ring l nhng hu nh cc
thao tc trn tp hp u duyt t u n cui tp hp bng vng lp For EachNext.
Cc thao tc thng gp l: di chuyn cc i tng, sp xp, i tn hay thay i li kch
thc ca ton b tp hp. C php ca vng lp nh sau:
Vit m:
Trc ht ta to mt tp hp cha cc tn a ch web m ngi dng thm bng pht
biu sau t ngay di dng khai bo lp form1:
Dim URLsVisited As New Collection()
6. Tng kt chng
Lm bng tng kt chng nhng g hc. ng thi dng tp hp thay th cho bi tp
v mng trong chng trc.