Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 1 MN TIN HC Ti liu tham kho : Tp slide bi ging & thc hnh ca mn hc ny. 3 CD MSDN trong Microsoft Visual Studio. Ni dung chnh gm 12 chng : 1. Phng php gii quyt bi ton bng my tnh s. 2. Th hin d liu trong my tnh s. 3. Tng qut v lp trnh bng VB. 4. Qui trnh thit k trc quan giao din. 5. Cc kiu d liu ca VB. 6. Cc lnh nh ngha & khai bo. 7. Biu thc VB. 8. Cc lnh thc thi VB. 9. nh ngha th tc & s dng. 10. Tng tc gia ngi dng & chng trnh. 11. Qun l h thng file. 12. Linh kin phn mm & truy xut database. i tng : SV i hc chnh quy ton trng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 2 MN TIN HC Chng 1 PHNG PHP GII QUYT BI TON BNG MY TNH S Chng 1: Phng php gii quyt bi ton bng my tnh s 1.1 Cc khi nim c bn v my tnh s 1.2 Lch s pht trin my tnh s 1.3 D liu & chng trnh 1.4 Qui trnh tng qut gii quyt bi ton bng my tnh s 1.5 Phn tch bi ton t-trn-xung 2 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 3 Con ngi thng minh hn cc ng vt khc nhiu. Trong cuc sng, h ch to ngy cng nhiu cng c, thit b h tr mnh trong hot ng. Cc cng c, thit b do con ngi ch to ngy cng tinh vi, phc tp v thc hin nhiu cng vic hn trc y. Mi cng c, thit b thng ch thc hin c 1 vi cng vic c th no . Th d, cy chi qut, radio bt v nghe i audio... My tnh s (digital computer) cng l 1 thit b, nhng thay v ch thc hin 1 s chc nng c th, st vi nhu cu i thng ca con ngi, n c th thc hin 1 s hu hn cc chc nng c bn (tp lnh), mi lnh rt s khai cha gii quyt trc tip c nhu cu i thng no ca con ngi. C ch thc hin cc lnh l t ng, bt u t lnh c ch nh no ri tun t tng lnh k tip cho n lnh cui cng. Danh sch cc lnh c thc hin ny c gi l chng trnh. Chng 1: Phng php gii quyt bi ton bng my tnh s 1.1 Cc khi nim c bn v my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 4 Chng 1: Phng php gii quyt bi ton bng my tnh s Cc lnh m my hiu v thc hin c c gi l lnh my. Ta dng ngn ng miu t cc lnh. Ngn ng lp trnh cu thnh t 2 yu t chnh yu : c php v ng ngha. C php qui nh trt t kt hp cc phn t cu thnh 1 lnh (cu), cn ng ngha cho bit ngha ca lnh . Bt k cng vic (bi ton) ngoi i no cng c th c chia thnh trnh t nhiu cng vic nh hn. Trnh t cc cng vic nh ny c gi l gii thut gii quyt cng vic ngoi i. Mi cng vic nh hn cng c th c chia nh hn na nu n cn phc tp,... cng vic ngoi i c th c miu t bng 1 trnh t cc lnh my (chng trnh ngn ng my). Cc khi nim c bn v my tnh s 3 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 5 Chng 1: Phng php gii quyt bi ton bng my tnh s Vn mu cht ca vic dng my tnh gii quyt cng vic ngoi i l lp trnh (c hiu nm na l qui trnh xc nh trnh t ng cc lnh my thc hin cng vic). Cho n nay, lp trnh l cng vic ca con ngi (vi s tr gip ngy cng nhiu ca my tnh). Vi cng ngh phn cng hin nay, ta ch c th ch to cc my tnh m tp lnh my rt s khai, mi lnh my ch c th thc hin 1 cng vic rt nh v n gin cng vic ngoi i thng tng ng vi trnh t rt ln (hng triu) cc lnh my Lp trnh bng ngn ng my rt phc tp, tn nhiu thi gian, cng sc, kt qu rt kh bo tr, pht trin. Ta mun c my lun l vi tp lnh (c c t bi ngn ng lp trnh) cao cp v gn gi hn vi con ngi. Ta thng hin thc my ny bng 1 my vt l + 1 chng trnh dch. C 2 loi chng trnh dch : trnh bin dch (compiler) v trnh thng dch (interpreter). Cc khi nim c bn v my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 6 Trnh bin dch (Compiler) Chng trnh bin dch nhn mt chng trnh ngun (thng c vit bng ngn ng cp cao) v to ra mt chng trnh i tng tng ng v chc nng nhng thng c vit bng ngn ng cp thp (thng l ngn ng my). Nu c li xy ra trong lc dch, trnh bin dch s bo li, c gng tm v tr ng k tip ri tip tc dchNh vy, mi ln dch 1 chng trnh, ta s xc nh c nhiu li nht c th c. Sau mi ln dch, nu khng c li, trnh bin dch s to ra file cha chng trnh i tng (th d file chng trnh kh thi *.exe trn Windows). chy chng trnh, ngi dng ch cn kch hot file kh thi (ngi dng khng bit v khng cn quan tm n file chng trnh ngun). Chng 1: Phng php gii quyt bi ton bng my tnh s 4 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 7 Trnh thng dch (Interpreter) Chng trnh thng dch khng to ra v lu gi chng trnh i tng. Mi ln thng dch 1 chng trnh ngun l 1 ln c gng chy chng trnh ny theo cch thc sau : dch v chuyn sang m thc thi tng lnh mt ri nh my chy on lnh tng ng. Nu c li th bo li, nu khng c li th thng dch lnh k tip... cho n khi ht chng trnh. Nh vy, mi ln thng dch chng trnh, trnh thng dch ch thng dch cc lnh trong lung thi hnh cn thit ch khng thng dch ht mi lnh ca chng trnh ngun. Do , sau khi thng dch thnh cng 1 chng trnh, ta khng th kt lun rng chng trnh ny khng c li. Chng 1: Phng php gii quyt bi ton bng my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 8 So snh trnh bin dch & trnh thng dch Mi hot ng x l trn mi m ngun ca chng trnh (kim tra li, dch ra cc lnh i tng tng ng,...) u c chng trnh bin dch thc hin to c chng trnh i tng. Do sau khi dch cc file m ngun ca chng trnh, nu khng c li, ta c th kt lun chng trnh khng th c li thi im dch (t vng, c php). Qu trnh bin dch v qu trnh thc thi chng trnh l tch ri nhau : bin dch 1 ln v chy nhiu ln cho n khi cn cp nht version mi ca chng trnh. Chng trnh thng dch s thng dch tng lnh theo lung thi hnh ca chng trnh bt u t im nhp ca chng trnh, thng dch 1 lnh gm 2 hot ng : bin dch lnh v thc thi cc lnh kt qu. Nu 1 on lnh cn c thc thi lp li th trnh thng dch s phi thng dch li tt c on lnh . iu ny s lm cho vic chy chng trnh trong ch thng dch khng hiu qu. Vic chy chng trnh bng c ch thng dch i hi chng trnh thng dch v chng trnh ng dng cn chy phi tn ti ng thi trong b nh my tnh, do c nguy c chy khng c cc chng trnh ln nu ti nguyn ca my khng cho c 2 chng trnh thng dch v chng trnh ng dng. Chng 1: Phng php gii quyt bi ton bng my tnh s 5 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 9 Gi ngn ng my vt l l N 0 . Trnh bin dch ngn ng N 1 sang ngn ng N 0 s nhn u vo l chng trnh c vit bng ngn ng N 1 , phn tch tng lnh N 1 ri chuyn thnh danh sch cc lnh ngn ng N 0 c chc nng tng ng. vit chng trnh dch t ngn ng N 1 sang N 0 d dng, phc tp ca tng lnh ngn ng N 1 khng qu cao so vi tng lnh ngn ng N 0 . Sau khi c my lun l hiu c ngn ng lun l N 1 , ta c th nh ngha v hin thc my lun l N 2 theo cch trn v tip tc n khi ta c 1 my lun l hiu c ngn ng N m rt gn gi vi con ngi, d dng miu t gii thut ca bi ton cn gii quyt... Nhng qui trnh trn cha c im dng, vi yu cu ngy cng cao v kin thc ngy cng nhiu, ngi ta tip tc nh ngha nhng ngn ng mi vi tp lnh ngy cng gn gi hn vi con ngi miu t gii thut cng d dng, gn nh v trong sng hn. Chng 1: Phng php gii quyt bi ton bng my tnh s Cc khi nim c bn v my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 10 Chng 1: Phng php gii quyt bi ton bng my tnh s Ngn ng my vt l l loi ngn ng thp nht m ngi lp trnh bnh thng c th dng c. Cc lnh v tham s ca lnh c miu t bi cc s binary (hay hexadecimal - s c miu t chi tit trong chng 2). y l loi ngn ng m my vt l c th hiu trc tip, nhng con ngi th gp nhiu kh khn trong vic vit v bo tr chng trnh cp ny. Ngn ng assembly rt gn vi ngn ng my, nhng lnh c bn nht ca ngn ng assembly tng ng vi lnh my nhng c biu din di dng gi nh. Ngoi ra, ngi ta tng cng thm khi nim "lnh macro" nng sc mnh miu t gii thut. Ngn ng cp cao theo trng phi lp trnh cu trc nh Pascal, C,... Tp lnh ca ngn ng ny kh mnh v gn vi t duy ca ngi bnh thng. Ngn ng hng i tng nh C++, Visual Basic, Java, C#,... ci tin phng php cu trc chng trnh sao cho trong sng, n nh, d pht trin v thay th linh kin. Cc cp ngn ng lp trnh 6 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 11 1.2 Lch s pht trin my tnh s My tnh xut hin t rt lu theo nhu cu bun bn v trao i tin t. Bn tnh tay abacus l dng s khai ca my tnh. 5 n v 1 n v Chng 1: Phng php gii quyt bi ton bng my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 12 Cc th h my tnh s n in t (1945 - 1955) ENIAC (1946) 18.000 bng n 1500 r le 30 tn 140 KW Von Neumann (1945) B nh dy tr, tnh in. Giy, phiu c l. Bng t Transistors (1955 - 1965) PDP-1 (1961) B nh xuyn t. Bng t, trng t, a t. IC (1965 - 1980) IBM 360 (1965) Intel 8080 (1974) c xem nh CPU u tin c tch hp trn 1 chip ? (1980 - ????) 80x86 (1978) C (1642 - 1945) Blaise Pascal (Php-1642) Herman Hollerith lp IBM (International Business Machine) M - 1890 Charles Babbage (Anh-1830) Chng 1: Phng php gii quyt bi ton bng my tnh s 7 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 13 Cc lnh ca chng trnh (code) s truy xut (c v/hoc ghi) thng tin (d liu). Chng trnh gii quyt bi ton no c th truy xut nhiu d liu khc nhau vi tnh cht rt a dng. truy xut 1 d liu c th, ta cn 3 thng tin v d liu : - tn nhn dng (identifier) xc nh v tr ca d liu. - kiu d liu (type) miu t cu trc ca d liu. - tm vc truy xut (visibility) xc nh cc lnh c php truy xut d liu tng ng. Chng trnh c in = d liu + gii thut. Chng trnh con (function, subroutine,...) l 1 on code thc hin chc nng c dng nhiu ln nhiu v tr trong chng trnh, c nhn dng thng qua 1 tn gi. Chng trnh con cho php cu trc chng trnh, s dng li code... Chng 1: Phng php gii quyt bi ton bng my tnh s 1.3 D liu & chng trnh Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 14 Chng trnh = cu trc d liu + gii thut entry 'start' global data module (package) local data of module local data of function Chng 1: Phng php gii quyt bi ton bng my tnh s Cu trc 1 chng trnh c in 8 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 15 Gii m chui bit ra dng ngi, thit b ngoi hiu c X l d liu dng chui bit M ha d liu thnh dng chui bit D liu cn x l bng my tnh (ch s, hnh nh, m thanh,...) Kt qu c c sau khi x l bng my tnh (ch s, hnh nh, m thanh,...) Chng 1: Phng php gii quyt bi ton bng my tnh s CDROM, a, bng,... Lu gi d liu s dng li My tnh s 1.4 Qui trnh tng qut gii quyt bi ton bng my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 16 B nh (Memory) n v x l (CPU) Cc thit b vo ra (I/O) Bus giao tip cha code v data ang thc thi thc thi tng lnh ca chng trnh giao tip vi bn ngoi (thng l ngi) nhp/xut tin Chng 1: Phng php gii quyt bi ton bng my tnh s M hnh my tnh s Von Neumann 9 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 17 bn phm mn hnh chut thng my loa Chng 1: Phng php gii quyt bi ton bng my tnh s Hnh dng vt l ca vi my tnh Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 18 Trong qu kh, phng php thng s dng phn tch bi ton l phng php t-trn-xung (top-down analysis). Ni dung ca phng php ny l xt xem, mun gii quyt vn no th cn phi lm nhng cng vic nh hn no. Mi cng vic nh hn tm c li c phn thnh nhng cng vic nh hn na, c nh vy cho n khi nhng cng vic phi lm l nhng cng vic tht n gin, c th thc hin d dng. Th d vic hc ly bng k s CNTT khoa CNTT HBK TP.HCM c th bao gm 9 cng vic nh hn l hc tng hc k t 1 ti 9, hc hc k i l hc n mn hc ca hc k , hc 1 mn hc l hc m chng ca mn ,... Hnh v ca slide k cho thy trc quan ca vic phn tch top-down. Chng 1: Phng php gii quyt bi ton bng my tnh s 1.5 Phng php phn tch t-trn-xung 10 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 19 Chng 1: Phng php gii quyt bi ton bng my tnh s Phng php phn tch t-trn-xung Cng vic cn gii quyt (A) Cng vic A 1 Cng vic A 2 Cng vic A n Cng vic A 11 Cng vic A 12 Cng vic A 1n Cng vic A n1 Cng vic A n2 Cng vic A nn ... ... ... ... ... chia thnh nhiu cng vic nh hn, n gin gii quyt hn. Cc cng vic nh c miu t bng 1 lnh hay 1 li gi hm/th tc c. Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 20 Cng vic cn gii quyt i tng phc hp A i tng A 1 i tng A 2 i tng A n i tng A 11 i tng A 12 i tng A 1n i tng A n1 i tng A n2 i tng A nn ... ... ... ... ... Chng 1: Phng php gii quyt bi ton bng my tnh s Phng php phn tch t-trn-xung 11 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 21 MN TIN HC Chng 2 TH HIN D LIU TRONG MY TNH S Chng 2 : Th hin d liu trong my tnh s 2.1 C bn v vic lu tr v x l tin trong my tnh 2.2 C bn v h thng s 2.3 Cc phng php chuyn miu t s 2.4 Biu din d liu trong my tnh 2.5 H thng file 2.6 Qun l h thng file Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 22 Phn t nh nh nht ca my tnh s ch c th cha 2 gi tr : 0 v 1 (ta gi l bit). Ta kt hp nhiu phn t nh c th miu t i lng ln hn. Th d ta dng 8 bit miu t 2 8 = 256 gi tr khc nhau. Dy 8 bit nh c gi l byte, y l 1 nh trong b nh ca my tnh. B nh trong ca my tnh c dng cha d liu v code ca chng trnh ang thc thi. N l 1 dy ng nht cc nh 8 bit, mi nh c truy xut c lp thng qua a ch ca n (tn nhn dng). Thng ta dng ch s t 0 - n miu t a ch ca tng nh. Mc d ngoi i ta quen dng h thng s thp phn, nhng v phn cng bn trong my tnh, my ch c th cha v x l trc tip d liu dng nh phn. Do trong chng ny, ta s gii thiu cc khi nim nn tng v h thng s v cch miu t d liu trong my tnh. 2.1 C bn v vic lu tr v x l tin trong my tnh Chng 2 : Th hin d liu trong my tnh s 12 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 23 H thng s (number system) l cng c biu th i lng. Mt h thng s gm 3 thnh phn chnh : 1. c s : s lng k s (k hiu nhn dng cc s c bn). 2. qui lut kt hp cc k s miu t 1 i lng no . 3. cc php tnh c bn trn cc s. Trong 3 thnh phn trn, ch c thnh phn 1 l khc nhau gia cc h thng s, cn 2 thnh phn 2 v 3 th ging nhau gia cc h thng s. Th d : - h thng s thp phn (h thp phn) dng 10 k s : 0,1,2,3,4,5,6,7,8,9. - h nh phn dng 2 k s : 0,1. - h bt phn dng 8 k s : 0,1,2,3,4,5,6,7. - h thp lc phn dng 16 k s : 0 n 9,A,B,C,D,E,F. 2.2 C bn v h thng s Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 24 Biu din ca lng Q trong h thng s B (B>1) l : d n d n-1 ...d 1 d 0 d -1 ...d -m
Q = d n *B n + d n-1 *B n-1 +...+d 0 *B 0 +d -1 *B -1 +...+d -m *B -m trong mi d i l 1 k s trong h thng B. Trong thc t lp trnh bng ngn ng cp cao, ta thng dng h thng s thp phn miu t d liu s ca chng trnh (v quen). Ch trong 1 s trng hp c bit, ta mi dng h thng s thp lc phn (dng ngn ca nh phn) miu t 1 vi gi tr nguyn, trong trng hp ny, qui lut biu din ca lng nguyn Q trong h thng s B s n gin l : d n d n-1 ...d 1 d 0
Q = d n *B n + d n-1 *B n-1 +...+d 1 *B 1 +d 0 *B 0 trong mi d i l 1 k s trong h thng B. C bn v h thng s - Qui lut miu t lng Chng 2 : Th hin d liu trong my tnh s 13 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 25 Th d v biu din cc lng trong cc h thng s : - lng "mi by" c miu t l 17 trong h thp phn v : 17 = 1*10 1 +7*10 0 - lng "mi by" c miu t l 11 trong h thp lc phn v : 11 = 1*16 1 +1*16 0 - lng "mi by" c miu t l 10001 trong h nh phn v : 10001 = 1*2 4 +0*2 3 +0*2 2 +0*2 1 +1*2 0 Trong mi trng s dng ng thi nhiu h thng s, trnh nhm ln trong cc biu din ca cc lng khc nhau, ta s thm k t nhn dng h thng s c dng trong biu din lin quan. Th d ta vit : - 17 D xc nh s biu din trong h thng s thp phn. - 11 H (h thng s thp lc phn.) - 10001 B (h thng s nh phn.) C bn v h thng s - Vi th d Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 26 chuyn 1 miu t s t h thng s ny sang h thng s khc, ta cn dng 1 phng php chuyn thch hp. C 4 phng php sau tng ng vi tng yu cu chuyn tng ng : 1. chuyn t h thng s khc v thp phn. 2. chuyn t nh phn v thp lc phn (hay bt phn). 3. chuyn t thp lc phn (hay bt phn) v nh phn. 4. chuyn t h thng s thp phn v h thng s khc. 2.3 Cc phng php chuyn miu t s Chng 2 : Th hin d liu trong my tnh s 14 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 27 chuyn 1 miu t s t h thng s khc (nh phn, thp lc phn hay bt phn) sang h thp phn, ta dng cng thc tnh Q. Th d : 1. 1A2 H = 1*16 2 +10*16 1 +2*16 0 = 256+160+2 = 418 D 2. 642 O = 6*8 2 +4*8 1 +2*8 0 = 384+32+2 = 418 D 3. 110100010 B = 2 8 + 2 7 +2 5 +2 1 = 256+128+32+2 =418 D Chuyn t h thng khc v thp phn Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 28 Lu rng c 1 mi quan h mt thit gia h nh phn v thp lc phn (hay bt phn), l 4 k s nh phn tng ng vi 1 k s thp lc phn (hay 3 k s nh phn tng ng vi 1 k s bt phn) theo bng tra sau : Chuyn t h thng nh phn v thp lc phn Chng 2 : Th hin d liu trong my tnh s 0111 07 7 7 0110 06 6 6 0101 05 5 5 0100 04 4 4 0011 03 3 3 0010 02 2 2 0001 01 1 1 0000 00 0 0 Binary Oct Hex Dec 1111 17 F 15 1110 16 E 14 1101 15 D 13 1100 14 C 12 1011 13 B 11 1010 12 A 10 1001 11 9 9 1000 10 8 8 Binary Oct Hex Dec 15 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 29 i 1 s nh phn v thp lc phn (hay bt phn), ta i t phi sang tri v chia thnh tng nhm 4 k s nh phn (hay 3 k s nh phn), sau i tng nhm 4 k s (hay 3 k s) thnh 1 k s thp lc phn tng ng (hay 1 k s bt phn tng ng). Th d : 1. 110100010 B = 0001.1010.0010 = 1A2 H 2. 110100010 B = 110.100.010 = 642 O Chuyn t h thng nh phn v thp lc phn Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 30 i 1 s thp lc phn (hay bt phn) v nh phn, ta i tng k s thp lc phn (hay bt phn) thnh tng nhm 4 k s nh phn (hay 3 k s nh phn). Th d : 1. 1A2 H = 0001.1010.0010 = 110100010 B 2. 642 O = 110.100.010 = 110100010 B Chuyn t h thng thp lc phn v nh phn Chng 2 : Th hin d liu trong my tnh s 16 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 31 i 1 s thp phn v h thng s khc, ta hy chia s cn i cho c s ch c c thng v d s, ta lp li hot ng chia thng s cho c s ch c c thng v d s mi, c th lp mi cho n khi thng s = 0 th dng li. Ghp cc d s theo chiu ngc chiu lp to ra kt qu ( l s miu t s tng ng nhng h thng s khc). Th d chuyn s 418 v miu t tng ng trong h thp lc : 418 D 16 2 26 16 10 1 16 1 0 Kt qu l 418 D = 1A2 H Chuyn t h thng thp phn v h thng khc Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 32 i 1 s thp lc phn v bt phn (hay ngc li), ta nn chuyn tun t t thp lc phn v nh phn, ri t nh phn v bt phn. Chuyn t h thng thp lc phn v bt phn Chng 2 : Th hin d liu trong my tnh s 17 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 33 Cc php tnh c bn trong 1 h thng s l : 1. php cng (+). 2. php tr (-). 3. php chia (/). 4. php nhn (*). 5. php dch tri n k s (<< n). 6. php dch phi n k s (>> n). Ngoi ra do c im ca h nh phn, h ny cn cung cp 1 s php tnh sau (cc php tnh lun l) : 1. php OR bit (|). 2. php AND bit (&). 3. php XOR bit (^). 4. .... C bn v h thng s - Cc php tnh Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 34 Th d v cc php tnh c bn (cc gi tr u c biu din bng h nh phn : 0 1 1 0 + 0 0 1 1 1 0 0 1 1 0 0 1 - 0 0 1 1 0 1 1 0 1 0 0 1 * 0 1 0 1 1 0 0 1 0 0 0 0 1 0 0 1 1 0 1 1 0 1 Th d v php cng, tr, nhn Chng 2 : Th hin d liu trong my tnh s 18 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 35 1 0 1 1 - 1 0 0 1 - 0 0 1 1 - 1 0 0 1 1 0 1 0 1 Th d v cc php tnh c bn (cc gi tr u c biu din bng h nh phn) : d s s b chia s chia thng s Th d v php chia Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 36 Th d v cc php tnh dch k s (cc gi tr u c biu din bng h nh phn) : 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 b dch tri 2 bit thnh (tng dng vi nhn 2 2 ) 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 b dch phi 2 bit thnh (tng dng vi chia 2 2 ) 0 0 Th d v php dch k s Chng 2 : Th hin d liu trong my tnh s 19 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 37 i s Boole nghin cu cc php ton thc hin trn cc bin ch c 2 gi tr 0 v 1, tng ng vi hai thi cc lun l "sai" v "ng" (hay "khng" v "c") ca i thng. Cc php ton ny gm : x y not x x and y x nand y x or y x nor y x xor y 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 1 1 0 1 0 0 Biu thc Boole l 1 biu thc ton hoc cu thnh t cc php ton Boole trn cc ton hng l cc bin ch cha 2 tr 0 v 1. Cc php tnh ca i s Boole Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 38 Mt hm Boole theo n bin boole (hm n ngi) l 1 biu thc boole cu thnh t cc php ton Boole trn cc bin boole. Thay v miu t hm boole bng biu thc boole, ta c th miu t hm boole bng bng thc tr. Bng thc tr ca hm boole n bin c 2 n hng, mi hng miu t 1 t hp tr c th ca cc bin v gi tr c th ca hm tng ng vi t hp tr ny (xem slide ngay trc). Nh vy 1 hm boole n bin c miu t nh 1 chui 2 n bit c chnh xc hm boole n ngi khc nhau. C th c : Hm Boole Chng 2 : Th hin d liu trong my tnh s n 2 2 4 2 1 2 = 16 2 2 4 2 2 = = 256 2 2 8 2 3 = = hm boole 1 ngi khac nhau hm boole 2 ngi khac nhau hm boole 3 ngi khac nhau 20 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 39 Cc n v nh thng dng Chng 2 : Th hin d liu trong my tnh s My tnh dng trc tip h nh phn, cc n v biu din thng tin thng dng l : 1. bit : miu t 2 gi tr khc nhau (ng/sai, 0/1,..) 2. byte : 8bit, c th miu t c 2 8 = 256 gi tr khc nhau. 3. word : 2 byte, c th miu t c 2 16 = 65536 gi tr khc nhau. 4. double word : 4 byte, c th miu t c 2 32 = 4.294.967.296 gi tr khc nhau. 5. KB (kilo byte) = 2 10 = 1024 byte. 6. MB (mega byte) = 2 20 = 1024KB = 1.048.576 byte. 7. GB (giga byte) = 2 30 = 1024MB = 1.073.741.824 byte. 8. TB (tetra byte) = 2 40 = 1024GB = 1.099.511.627.776 byte. Th d, RAM ca my bn l 512MB, a cng l 300GB. Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 40 Ty ngn ng lp trnh m cch biu din s trong my c nhng khc bit nht nh. Ring VB c nhiu phng php biu din s khc nhau, trong 2 cch thng dng l s nguyn v s thc. My dng 1 word (2 byte) cha d liu nguyn (Integer) theo qui nh c th slide sau. V mi nh my tnh ch cha c 1 byte, do ta phi dng nhiu lin tip (2 hay 4) cha s nguyn. C 2 cch cha cc byte ca s nguyn (hay d liu khc) vo cc nh : BE & LE. Cch BE (Big Endian) cha byte trng s cao nht vo nh a ch thp trc, sau ln lt n cc byte cn li. Cch LE (Little Endian) cha byte trong s nh nht vo nh a ch thp trc, sau ln lt n cc byte cn li. VB s dng cch LE cha s nguyn vo b nh (Integer v Long). 2.4 Biu din s nguyn trong Visual Basic Chng 2 : Th hin d liu trong my tnh s 21 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 41 00000000 00000000 0 00000000 00000001 1 .... 01111111 11111111 32767 10000000 00000000 -32768 10000000 00000001 -32767 .... 11111111 11111111 -1 S biu din gi tr Phn dng c 32768 s t s 0 ti 32767, c miu t theo cng thc Q. Phn m c 32768 s t - 32768 ti -1, c miu t dng s b 2 nh sau : S b 1 ca 1 s n bit l n bit m mi bit l ngc vi bit gc (0 1 v 1 0) S b 2 ca 1 s n bit l s b 1 ca s ri tng ln 1 n v. Biu din s nguyn trong Visual Basic Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 42 S 15 c miu t di dng nh phn 16 bit nh sau : 0000 0000 0000 1111 Do , nu dng kiu Integer lu s 15, ta dng 16 bit nh trn hay vit ngn gn l 000F H . Nu lu vo b nh dng LE th nh c a ch thp (i) cha byte 0F H , v nh k (i+1) cha byte 00. Nu dng kiu Long lu s 15, ta dng 4 byte 0000000F H v lu vo b nh dng LE tn 4 nh vi gi tr ln lt t a ch thp n cao l 0F H , 00, 00, 00. S b 1 ca 15 l 1111 1111 1111 0000, s b 2 ca 15 l 1111 1111 1111 0001 Nh vy -15 c lu vo my dng Integer l 2 byte c gi tr FFF1 H . Nu lu vo nh dng LE th nh c a ch thp (i) cha byte F1 H , v nh k (i+1) cha byte FF H . Biu din s nguyn trong VB - Th d Chng 2 : Th hin d liu trong my tnh s 22 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 43 miu t c cc gi tr nguyn nm ngoi phm vi t -32768 n 32767, VB cung cp kiu 'Long', kiu ny dng 4 byte miu t 1 gi tr nguyn vi cng nguyn tc nh kiu Integer. Kt qu l kiu Long miu t cc s nguyn trong phm vi t -2 t n 2 t. Trong khoa hc, ta c th miu t s thc theo dng m*B e , m gi l nh tr, B l c s v e l s m. Nh vy 1 s thc c th c th c miu t bi rt nhiu miu t khc nhau, trong miu t c 0.1m<1 c gi l miu t chnh tc ca s thc. y l miu t m my tnh s dng. Chng 2 : Th hin d liu trong my tnh s Biu din s thc trong Visual Basic m B e m (mantissa) quyt nh chnh xc B (base) e (exponent) quyt nh ln/nh 913.5512 9.135512 10 2 0.9135512 10 3 9135.512 10 -1 91355.12 10 -2 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 44 Trc khi lu vo my tnh, s thc c i v dng miu t nh phn di dng 1.m*2e (m l chui bit nh phn miu t phn l). VB lu s thc theo chun IEEE 754, dng 1 trong 2 dng lu : Chnh xc n (Single) : VB dng 4 byte - 4 nh (32 bit) lu s thc theo dng thc c th sau : trong bit S = 1 (m), =0 (dng). M = m & E = 127 + e Chnh xc kp (Double) : VB dng 8 byte - 8 nh (64 bit) lu s thc theo dng thc c th sau : trong bit S = 1 (m), =0 (dng); M = m & E = 1023 + e 1 8 23 E M S 1 11 52 S E M Chng 2 : Th hin d liu trong my tnh s Biu din s thc trong Visual Basic 23 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 45 Th d gi tr -1.5 c miu t dng nh phn l -1.1*2 0 . Do nu dng kiu Single cha s thc -1.5, ta tn 4 byte (32 bit) vi cc thnh phn S = 1, M = 10...0 (22 bit 0), E = 127. Kt qu, gi tr ca 4 byte miu t s -1.5 nh sau : BF C0 00 00 Tng t, nu dng kiu Double cha s thc -1.5, ta tn 8 byte (64 bit) vi cc thnh phn S = 1, M = 10...0 (51 bit 0), E = 1023. Kt qu, gi tr ca 8 byte miu t s -1.5 nh sau : BF F8 00 00 00 00 00 00. VB dng cch cha LE, do gi tr -1.5 c lu vo b nh theo kiu Single s chim 4 byte theo gi tr ln lt t a ch thp n cao l 00 00 C0 BF. Tng t nu miu t -1.5 vo b nh theo kiu Double th s cn 8 nh vi gi tr ln lt t a ch thp n cao l 00 00 00 00 00 00 F8 BF. Chng 2 : Th hin d liu trong my tnh s Biu din s thc trong VB - Th d Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 46 Chui k t l danh sch nhiu k t, mi k t c miu t trong my bi n bit nh : m ASCII dng 7 bit (dng lun 1 byte nhng b bit 8) miu t 1 k t tp k t m m ASCII miu t c l 128. m ISO8859-1 dng 8 bit (1 byte) miu t 1 k t tp k t m m ISO8859-1 miu t c l 256. m Unicode trn Windows dng 16 bit (2 byte) miu t 1 k t tp k t m m Unicode trn Windows miu t c l 65536. ... Hin c nhiu loi m ting Vit khc nhau, a s dng m ISO8859-1 ri qui nh li cch hin th 1 s k t thnh k t Vit. Ring Unicode l b m thng nht ton cu, trong c cc k t Vit. Biu din chui k t trong Visual Basic Chng 2 : Th hin d liu trong my tnh s 24 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 47 M ASCII dng cc gi tr (m) t 0 - 127 miu t cc k t : m t 0 - 31 l cc m iu khin nh CR=13 (Carriage Return), LF=10 (Line Feed), ESC=27 (Escape)... m 32 miu t k t trng, 33 miu t k t !,... theo bng sau : ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ Bng m ASCII 7 bit Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 48 M ISO8859-1 dng cc gi tr (m) t 0 - 255 miu t cc k t (128 m k t u qui nh ging nh m ASCII) : m t 0 - 31 l cc m iu khin nh CR=13 (Carriage Return), LF=10 (Line Feed), ESC=27 (Escape)... m 32 miu t k t trng, 33 miu t k t !,... theo bng sau : ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~
-
Bng m ISO8859-1 (8 bit) Chng 2 : Th hin d liu trong my tnh s 25 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 49 M HBK 1 byte c c bng cch hiu chnh bng m ISO8859-1 : m t 0 - 31 l cc m iu khin nh CR=13 (Carriage Return), LF=10 (Line Feed), ESC=27 (Escape)... m 32 miu t k t trng, 33 miu t k t !,... theo bng sau : ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ I o A A ~
Bng m ting Vit HBK 1 byte Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 50 M Unicode Windows dng 2 byte miu t 1 k t : 256 m u t 0 - 255 ging y nh m ISO8859-1. m t 256 tr i cha cc k t ca hu ht cc ngn ng trn th gii (qu kh, hin ti v tng lai). th d sau l 1 phn m ting Vit trong m Unicode : ~ A A I ^ Y ` | m 1ea0 H biu din k t m 1ef9 H biu din k t Mt phn m ting Vit Unicode Chng 2 : Th hin d liu trong my tnh s 26 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 51 S nguyn (Integer, Long), s thc (Single, Double), chui k t (String) l nhng dng m ha d liu ph dng, ngoi ra mi ng dng c th cn c cch m ha ring m ha d liu c th ca mnh nh hnh nh, m thanh,... Trong chng 5 v 6 chng ta s trnh by chi tit cc kiu d liu m ngn ng VB h tr. Nhng ta trnh by trong slide 15 (chng 1), d dng cch m ha c th no th kt qu ca vic m ha phi l 1 chui bit (hay chui byte) c th c lu tr v x l bn trong my tnh. B nh ca my tnh thng c dung lng khng ln nn ta ch dng n cha code v d liu ca chng trnh ang thc thi. 1 my tnh c th lu tr rt nhiu chng trnh v d liu ca chng trn cc thit b cha tin (b nh ngoi) nh a mm, a cng, CDROM,... M ha d liu ca ng dng Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 52 code ca 1 chng trnh, chui byte miu t d liu c lu tr trn thit b cha tin trong 1 phn t cha tin lun l c gi l file. 1 thit b cha tin thng cha rt nhiu file. nhn dng v truy xut 1 file, ta dng tn nhn dng gn cho mi file. d dng file, tn nhn dng ca n s dng tn gi nh (chui k t miu t ng ngha ca ni dung file), th d nh file "lun n tt nghip.doc" cha ton b ni dung lun n tt nghip ca ngi dng my. Nu ta dng khng gian phng t tn cho cc file trn 1 thit b cha tin th v s lng file qu ln nn ta kh lng t tn, nhn dng, x l,... (ni chung l qun l) tng file. gii quyt vn trn ta dng khng gian cy th bc t chc v qun l cc file trn tng thit b cha tin. 2.5 H thng file Chng 2 : Th hin d liu trong my tnh s 27 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 53 to khng gian cy th bc, ta dng khi nim th mc (directory). th mc l phn t cha nhiu phn t bn trong n : c th l file hay th mc. Thng ta s dng th mc cha nhng phn t con c mi quan h mt thit no , th d nh th mc cha cc nh k nim, th mc cha cc file nhc a thch,... Thit b cha tin vt l (a mm, a cng, CDROM,...) c tru tng ha nh l 1 th mc (ta gi th mc c bit ny l th mc gc). Th mc gc cha nhiu phn t con bn trong, mi phn t con ca th mc gc thng l th mc con nhng cng c th l file. Mi th mc con li c th cha nhiu th mc con hay file... v c th ta s hnh thnh 1 cy th bc cc th mc v file. Ta cng dng tn gi nh nhn dng tng th mc. Trong khng gian cy th bc, ta s dng khi nim ng dn (pathname) nhn dng 1 file hay 1 th mc. Thit b cha tin : Khng gian cy th bc Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 54 \ Windows AudioFile VideoFile ... config.sys System Fonts ... win.com arial.ttf USAFilm VNFilm ... Dng i.mpg Cy th bc ca c: ChinaFilm Th d v h thng file Chng 2 : Th hin d liu trong my tnh s 28 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 55 ng dn (pathname) l thng tin tm kim (xc nh) 1 phn t t 1 v tr no , n cha danh sch chnh xc cc tn gi nh ca cc phn t m ta phi i qua xut pht t v tr u n phn t cn tm. ta dng 1 du ngn c bit ngn cch 2 tn gi nh lin tip nhau trong ng dn (trong Windows, du ngn l '\') Tn th mc gc lun l '\'. C 2 khi nim ng dn : ng dn tuyt i v ng dn tng i. ng dn tuyt i l ng dn xut pht t th mc gc, ng dn tng i xut pht t th mc lm vic (working directory). Trc khi ng dng bt u chy, h thng s khi ng th mc lm vic cho ng dng (theo c ch no ). Trong qu trnh thc thi, ng dng c quyn thay i th mc lm vic theo yu cu ring. ng dn tuyt i v tng i Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 56 Xt cy th bc ca c: trn slide 54, ng dn tuyt i sau s nhn dng chnh xc file arial.ttf trong th mc 'Fonts' : c:\Windows\Fonts\arial.ttf Nu th mc working ca chng trnh hin l c:\Windows\Fonts th ta c th dng ng dn tng i sau y xc nh file arial.ttf : arial.ttf ng dn tuyt i thng di hn ng dn tng i nhng n lun c gi tr bt chp ng dng ang th mc working no. ng dn tng i thng gn hn (a s ch cha tn file cn truy xut v ng dng s thit lp th mc working l th mc cha cc file m ng dng truy xut) nhng ch c gi tr vi 1 th mc working c th. Trong 1 vi trng hp c bit, ta phi dng ng dn tng i ngay c n di v phc tp hn ng dn tuyt i. ng dn tuyt i v tng i (tt) Chng 2 : Th hin d liu trong my tnh s 29 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 57 Hnh dng v cu trc ca 1 h thng file ca 1 thit b cha tin s do ngi dng thit lp nh cc tc v ph bin nh : to/xa th mc, to/xa file, copy/move file/th mc t ni ny n ni khc. Nhng trc khi thc hin 1 tc v no , ngi dng thng duyt file : lm hin th cu trc ca h thng file 1 dng no quan st n d dng. H thng dng nhiu c ch khc nhau bo v vic truy xut file bi ngi dng. 1 trong cc c ch m Windows XP dng l kt hp vi mi file 1 s thuc tnh truy xut, mi thuc tnh c lu tr trong 1 bit : Read Only, nu = 1 th h thng khng cho cc ng dng xa/hiu chnh phn t. Hidden, nu = 1 th h thng s du khng hin th phn t bi cc ng dng duyt file. Archive c thit lp =1 nu phn t b hiu chnh ni dung (phc v cho c ch backup tng dn). 2.6 Qun l h thng file Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 58 Tt c tc v lin quan n h thng file c gi l tc v qun l h thng file. h thng s cung cp 1 ng dng (tin ch) ngi dng d dng thc hin cc tc v qun l file. Th d trn Windows ta thng dng tin ch "Windows Explorer" qun l h thng file. C 4 cch ph bin chy 1 ng dng (tin ch) : 1. double-click vo icon miu t ng dng trn mn hnh desktop (phi to icon shortcut chng trnh trc khi dng cch chy ny). 2. duyt v chn ng dng t menu Start.Programs... 3. chy trnh Windows Explorer (t menu Start.Programs.Accessories.Windows Explorer), duyt th mc tm file ng dng, n kp chut vo file chy n. 4. vo menu Start.Run, ri nhp hng lnh cha ng dn xc nh file chng trnh v cc tham s hng lnh. Tin ch qun l h thng file Chng 2 : Th hin d liu trong my tnh s 30 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 59 MenuBar cha tt c tc v m ng dng h tr Toolbar cha cc icon tc v thng dng TreeCtrl hin th h thng file dng cy ListCtrl hin th cc phn t trong th mc StatusBar Taskbar Ca s ca WE & cc phn t giao din chnh Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 60 Click vo - thu nh ni dung th mc Click vo + chi tit ha ni dung th mc. Nhng tt nht l double-click vo tn th mc chi tit ha/thu nh ni dung Click vo tn th mc hin th ni dung chi tit ca n Cc thao tc duyt h thng file Chng 2 : Th hin d liu trong my tnh s 31 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 61 Qui trnh chung thc hin tc v trn 1 hay nhiu phn t no l : 1. chn 1 hay nhiu phn t cn x l. 2. chn option trong menu hay icon trong toolbar thc hin tc v mong mun. Chn nhiu phn t lin tip : 1. chick vo phn t u, 2. n v gi phm Shift, 3. click vo phn t cui. 4. th phm Shift. Cc tc v x l file Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 62 Chn nhiu phn t ri rc : 1. chick vo phn t u, 2. n v gi phm Ctrl, 3. di mouse n tng phn t cn chn ri click vo n. 4. lp li bc 3 nhiu ln cho nhiu phn t 5. th phm Ctrl. Cc tc v x l file Chng 2 : Th hin d liu trong my tnh s 32 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 63 Thng vic to file mi c thc hin bn trong ng dng. Qui trnh to mi 1 th mc/file trong WE nh sau : 1. duyt cy th mc trong ca s bn tri v chn th mc m bn mun to th mc/file mi. 2. chn menu File.New 3. nu mun to th mc, chn Folder. 4. nu mun to file, chn loi file trong danh sch. To th mc/file mi Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 64 Qui trnh xa 1 th mc/file trong WE nh sau : 1. duyt cy th mc trong ca s bn tri v chn th mc m bn mun xa th mc/file. 2. chn cc phn t cn xa trong ListCtrl bn phi. 3. chn menu File hay n phi chut vo v tr chn cc phn t hin th menu cc tc v c th thc hin. 4. chn option "Delete" Xa th mc/file ang tn ti Chng 2 : Th hin d liu trong my tnh s 33 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 65 Qui trnh copy th mc/file trong WE nh sau : 1. duyt cy th mc trong ca s bn tri v chn th mc m bn mun copy th mc/file. 2. chn cc phn t cn copy trong ListCtrl bn phi. 3. chn menu Edit hay n phi chut vo v tr chn cc phn t hin th menu cc tc v c th thc hin. 4. chn option "Copy" Copy th mc/file vo clipboard Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 66 Qui trnh dn th mc/file t clipboard vo th mc cha nh sau : 1. duyt cy th mc trong ca s bn tri v chn th mc m bn mun dn th mc/file. 2. chn menu Edit hin th menu cc tc v c th thc hin. 3. chn option "Paste" Dn th mc/file t clipboard Chng 2 : Th hin d liu trong my tnh s 34 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 67 Vic di chuyn th mc/file c thc hin bi 3 tc v copy/paste/delete nh c trnh by. Qui trnh move th mc/file khc nh sau : 1. duyt cy th mc trong ca s bn tri v chn th mc m bn mun copy th mc/file. 2. chn cc phn t cn copy trong ListCtrl bn phi. 3. chn menu Edit hin th menu cc tc v c th thc hin. 4. chn option "Move to Folder" v xc nh th mc ch. Di chuyn (move) th mc/file Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 68 Qui trnh chy ng dng v load file vo b nh hiu chnh ni dung file nh sau : 1. duyt cy th mc trong ca s bn tri v chn th mc cha file cn hiu chnh. 2. chn file cn hiu chnh trong ListCtrl bn phi. 3. n phi chut vo file chn hin th menu cc tc v c th thc hin. 4. chn option "Open with" v xc nh ng dng c dng hiu chnh file. Load file vo b nh hiu chnh Chng 2 : Th hin d liu trong my tnh s 35 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 69 Qui trnh lm hin th ca s thng tin th mc/file nh sau : 1. duyt cy th mc trong ca s bn tri v chn th mc/file cn hin th thng tin. 2. chn th mc/file cn hin th thng tin trong ListCtrl bn phi. 3. n phi chut vo file chn hin th menu cc tc v c th thc hin. 4. chn option "Properties" lm hin th ca s thng tin ca th mc/file tng ng. Hin th ca s thng tin v file/th mc Chng 2 : Th hin d liu trong my tnh s Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 70 Khi ca s thng tin ca th mc/file c hin th, chn trang general/Version thy cc thng tin tng ng. Trang bn phi l trang General. 1. xem cc thuc tnh file. 2. nu mun thay i thuc tnh no , n chut vo checkbox tng ng. Thuc tnh s chuyn t khng thnh c hay ngc li. 3. nu mun cp nht cc hiu chnh th n chut vo button OK. Xem v hiu chnh thuc tnh file/th mc Chng 2 : Th hin d liu trong my tnh s 36 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 71 MN TIN HC Chng 3 TNG QUT V LP TRNH BNG VISUAL BASIC Chng 3 : Tng qut v lp trnh Visual Basic 3.1 Cc khi nim c bn v m hnh hng i tng 3.2 Cc i tng giao din ca VB 6.0 3.3 Hiu chnh thuc tnh ca cc i tng giao din 3.4 To th tc x l s kin ca cc i tng giao din. Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 72 Hnh v sau y tng kt cu trc ca 1 ng dng c lp trnh cu trc : Chng trnh = cu trc d liu + gii thut entry 'start' global data module (package) local data of module local data of function Chng 3 : Tng qut v lp trnh Visual Basic 3.1 Cc khi nim c bn v m hnh hng i tng 37 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 73 Xt cu trc chng trnh c in ca slide trc, ta thy c 2 nhc im chnh sau : 1. rt kh m bo tnh nht qun v ng n ca d liu ton cc v bt k lnh no trong hm no cng c th truy xut chng. 2. nu chng trnh cn ng thi nhiu 'instance' ca cng 1 module th c ch lp trnh cu trc khng cho php to t ng cc 'instance' ny. khc phc 2 nhc im chnh trn (v b sung nhiu u im khc), ta s lp trnh theo hng i tng (OOP - Object Oriented Programming) trong chng trnh l 1 tp cc i tng sng tng tc nhau (xem slide k tip). Visual Basic l ngn ng h tr vic lp trnh theo hng i tng, hn na VB cn l mi trng lp trnh trc quan (visual) nn rt d dng. Chng 3 : Tng qut v lp trnh Visual Basic T lp trnh cu trc n OOP Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 74 Chng trnh = tp cc i tng tng tc nhau entry i tng (object) local data of object local data of operation Chng 3 : Tng qut v lp trnh Visual Basic Cu trc ca 1 ng dng OOP 38 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 75 ~ M hnh i tng quan nim chng trnh bao gm cc i tng sinh sng v tng tc vi nhau. ~ i tng bao gm nhiu thnh phn, mi thnh phn thuc 1 trong 2 loi : thuc tnh (attribute) : mang 1 gi tr nht nh ti tng thi im. tc v (operation) : thc hin 1 cng vic no . Interface (abstract type) Implementation (class) Chng 3 : Tng qut v lp trnh Visual Basic i tng (Object) Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 76 Abstract type (type) nh ngha interface s dng i tng. Ta dng tn nhn dng t tn cho kiu v nhn dng n. Interface l tp hp cc 'entry' m bn ngoi c th giao tip vi i tng. Ta dng signature nh ngha mi 'entry'. Signature gm : tn tc v (operation, function) danh sch tham s hnh thc, mi tham s c c t bi 3 thuc tnh : tn, type v chiu di chuyn (IN, OUT, INOUT). c t chc nng ca tc v (thng dng ch thch). Ta dng tn ca abstract type (ch khng phi class) c t kiu cho bin, thuc tnh, tham s hnh thc. User khng cn quan tm n class (hin thc c th) ca i tng. Chng 3 : Tng qut v lp trnh Visual Basic Kiu tru tng (Abstract type) 39 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 77 ~ Ta dng tn nhn dng t tn cho class v nhn dng n. Class nh ngha chi tit hin thc i tng : nh ngha cc thuc tnh d liu, mi thuc tnh c c t bi cc thng tin v n nh tn nhn dng, kiu d liu, tm vc truy xut,... Kiu ca thuc tnh c th l type c in (s nguyn, thc, k t, chui k t,...) hay 'abstract type', trong trng hp sau thuc tnh s l tham kho n i tng khc. Trng thi ca i tng l tp gi tr ti thi im tng ng ca tt c thuc tnh ca i tng. Trong thi gian tn ti v hot ng, trng ti ca i tng s thay i. 'coding' cc tc v (miu t gii thut chi tit v hot ng ca tc v) v cc 'internal function'. ~ nh ngha cc tc v to (create) v xa (delete) i tng. ~ nh ngha cc tc v 'constructor' v 'destructor'. ~ User khng cn quan tm n class ca i tng. Chng 3 : Tng qut v lp trnh Visual Basic Class (Implementation) Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 78 ~ Bao ng : che du mi chi tit hin thc ca i tng, khng cho bn ngoi thy v truy xut m bo tnh c lp cao gia cc i tng, ngha l ph thuc (hay tnh ghp ni - coupling gia cc i tng) rt thp, nh d bo tr, pht trin ng dng : che du cc thuc tnh d liu : nu cn cho php truy xut 1 thuc tnh no t bn ngoi, ta to 2 tc v get/set tng ng gim st vic truy xut v che du chi tit hin thc bn trong. che du chi tit hin thc cc tc v. che du cc 'internal function' v s hin thc ca chng. Chng 3 : Tng qut v lp trnh Visual Basic Tnh bao ng (encapsulation) 40 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 79 ~ Vit 1 ng dng OOP l nh ngha cc type/class ca cc i tng cu thnh ng dng. ~ Tnh tha k cho php gim nh cng sc nh ngha type/class : ta c th nh ngha cc type/class khng phi t u m bng cch k tha cc type/class c sn, ta ch nh ngha thm cc chi tit mi m thi (thng kh t). a tha k hay n tha k. Mi quan h supertype/subtype v superclass/subclass. c th 'override' s hin thc cc tc v ca class cha, kt qu override ch c tc dng trn cc i tng ca class con. i tng ca class con c th ng vai tr ca i tng cha nhng ngc li th khng ng. Chng 3 : Tng qut v lp trnh Visual Basic Tnh tha k (inheritance) Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 80 1 i tng c th cha nhiu i tng khc nh mi quan h bao gp 1 cch qui gia cc i tng. C 2 gc nhn v tnh bao gp : ng ngha v hin thc. Gc nhn ng ngha Gc nhn hin thc O 1 O 2 O 3 O 1 O 2 O 3 O 4 O 5 O 4 O 5 Chng 3 : Tng qut v lp trnh Visual Basic Tnh bao gp (aggregation) 41 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 81 ~ Thng ip l 1 php gi tc v ca 1 i tng t 1 tham kho. ~ Thng ip bao gm 3 phn : tham kho n i tng ch. tn tc v mun gi. danh sch tham s thc cn truyn theo (hay nhn v t) tc v. v d : aCircle.Draw (pWnd) truy xut thuc tnh trong interface : aCircle.Radius = 10 aCircle.SetRadius(10) r = aCircle.Radius r = aCircle.GetRadius() ~ Thng ip l phng tin giao tip (hay tng tc) duy nht gia cc i tng. Chng 3 : Tng qut v lp trnh Visual Basic Thng ip (Message) Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 82 Xem li slide 15 miu t qui trnh tng qut ca vic dng my tnh gii quyt 1 vn ngoi i, ta thy 1 ng dng gm 2 phn thnh phn chnh : 1. giao din ngi dng : l phng tin cho ngi dng tng tc vi chng trnh nhp/xut d liu, iu khin/gim st hot ng ca chng trnh. Trong OOP, giao din ngi dng l tp cc i tng giao din nh form, mi form cha nhiu i tng nh hn nh menu, toolbar, button, textedit, listbox, treeview... 2. gii thut x l bn trong : c th hin bi cc method ca cc i tng giao din v cc i tng bn trong ng dng. Mi method l danh sch cc lnh thc thi (cu trc iu khin) miu t gii thut m tc v tng ng thc hin. Chng 3 : Tng qut v lp trnh Visual Basic Hai thnh phn chnh ca 1 ng dng 42 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 83 nh ngha cc i tng giao din bng cch vit code tng minh l 1 cng vic rt kh khn v tn nhiu cng sc, thi gian. gim nh cng sc nh ngha cc i tng giao din, cc mi trng lp trnh trc quan (visual) vit sn 1 s i tng giao din thng dng v cung cp cng c ngi lp trnh thit k trc quan giao din ca ng dng bng cch tch hp cc i tng giao din c sn ny : ngi lp trnh ng vai tr ha s v/hiu chnh kch thc, di chuyn v tr cc phn t giao din cn cho ng dng. Ngoi ra mi trng trc quan cn cho php ngi lp trnh t to cc i tng giao din mi (ActiveX Control) dng trong cc ng dng c vit sau . Qui trnh vit ng dng theo c ch ny c gi l vit ng dng bng cch lp ghp cc linh kin phn mm, n ging nh vic lp my tnh t cc linh kin phn cng nh CPU, RAM, disk, keyboard, monitor,...rt d dng v nhanh chng. Chng 3 : Tng qut v lp trnh Visual Basic Thit k trc quan cc i tng giao din Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 84 Control buttons Window Form, Dialogbox Title bar Textbox Command Button Chng 3 : Tng qut v lp trnh Visual Basic 3.2 Cc i tng giao din c trong VB 43 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 85 Label DriveListBox Combobox Textbox + ListBox DirListBox FileListBox ListBox Image Picture Chng 3 : Tng qut v lp trnh Visual Basic Cc i tng giao din c trong VB (tt) Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 86 Frame OptionButton Checkbox Chng 3 : Tng qut v lp trnh Visual Basic Cc i tng giao din c trong VB (tt) 44 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 87 MenuBar Toolbar CommandButton Pop-up Menu 1 window cha 1 document ca ng dng StatusBar Chng 3 : Tng qut v lp trnh Visual Basic Cc i tng giao din c trong VB (tt) Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 88 i tng giao din c nhng tnh cht ging nh i tng bnh thng, ngoi ra chng cn c 1 s c im ring. i tng giao din cng c cu thnh t 2 loi thnh phn : thuc tnh v tc v. Mi i tng giao din cha kh nhiu thuc tnh lin quan n nhiu loi trng thi khc nhau : thuc tnh 'Name' : y l thuc tnh c bit, xc nh tn nhn dng ca i tng, gi tr ca thuc tnh ny s tr thnh bin tham kho n i tng, code ca ng dng s dng bin ny truy xut i tng. cc thuc tnh xc nh v tr v kch thc : Left, Top, Height, Width... cc thuc tnh xc nh tnh cht hin th : Caption, Picture, BackColor,... cc thuc tnh xc nh hnh vi : Enable, ... ... Chng 3 : Tng qut v lp trnh Visual Basic Cc tnh cht chung ca cc i tng giao din 45 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 89 Khi to trc quan 1 i tng giao din, mi trng gn gi tr ban u cho cc thuc tnh, thng ta ch cn thay i 1 vi thuc tnh l p ng c yu cu ring. C 2 cch hiu chnh gi tr 1 thuc tnh : 1. trc quan thng qua ca s thuc tnh ca i tng giao din. 2. lp trnh truy xut thuc tnh ca i tng giao din. Chng 3 : Tng qut v lp trnh Visual Basic 3.3 Hiu chnh thuc tnh ca cc i tng giao din Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 90 Mi i tng giao din c kh nhiu tc v (operation), hu ht chng c gi l th tc x l s kin v c ch gi th tc ny ch yu l trc tip t ngi dng ng dng thng qua s tng tc trc tip vi i tng, t to s kin kch khi th tc x l tng ng chy. Th d khi ta n chut vo button tn "Command1", h thng to ra s kin "Click" kch khi th tc Command1_Click() chy. Chng 3 : Tng qut v lp trnh Visual Basic 3.4 S kin - Th tc x l s kin 46 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 91 Qui trnh tng qut ca vic to th tc x l cho 1 s kin no ca 1 i tng : 1. chn menu View.Code hin th ca s code. 2. chn tn i tng lin quan trong danh sch cc i tng. 3. chn s kin cn to th tc x l trong danh sch cc s kin, template ca th tc x l s c to t ng. 4. s dng kin thc v gii thut & c php ngn ng VB vit code cho th tc x l. Chng 3 : Tng qut v lp trnh Visual Basic Cch to hm x l s kin ca i tng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 92 1. Trc ht phi nm bt yu cu phn mm xc nh cc chc nng m ng dng phi cung cp cho ngi dng. 2. Phn tch s lc tng chc nng v tm ra cc class phn tch cu thnh chc nng tng ng. 3. Thit k chi tit cc class phn tch : xc nh cc thuc tnh v cc tc v cng nh phc ha gii thut ca tng tc v. 4. Hin thc phn mm bng VB gm 2 cng vic chnh : 1. thit k trc quan cc form giao din ngi dng : mi form cha nhiu phn t giao din, cc phn t giao din thng c sn, nu khng ta phi to thm 1 s i tng giao din mi (ActiveX Control). ng vi mi phn t giao din va to ra, nn thit lp gi tr u cho thuc tnh "Name" v 1 vi thuc tnh cn thit. 2. to th tc x l s kin cho cc s kin cn thit trn cc phn t giao din ri vit code cho tng th tc x l s kin va to ra. Chng 3 : Tng qut v lp trnh Visual Basic Tng kt qui trnh vit 1 ng dng bng VB 47 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 93 Chng 4 QUI TRNH THIT K TRC QUAN GIAO DIN CA NG DNG Chng 4: Qui trnh thit k trc quan giao din ca ng dng MN TIN HC 4.1 D n V ng Dng 4.2 To/xa i tng giao din. 4.3 Hiu chnh gi tr thuc tnh ca i tng giao din 4.4 To menubar 4.5 To Toolbar 4.6 To v vit th tc x l s kin Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 94 4.1 D n V ng Dng 1 ng dng VB c cu thnh t nhiu i tng thuc nhiu loi : Cc phn t giao din Cc "class module", mi class c t 1 loi i tng cn dng cho gii thut ca chng trnh. Cc i tng khc nh cc th vin lin kt ng, cc database,... qun l ng dng c d dng ta s dng phng tin "D n" (Project). D n l 1 cy th bc cc phn t cu thnh ng dng. Vit ng dng l qui trnh to d n, thm/bt, hiu chnh tng phn t trong d n. Thao tc thc hin cc tc v trn kh ging vi cc thao tc m ta bit trn h thng file th bc ca my tnh. Chng 4: Qui trnh thit k trc quan giao din ca ng dng 48 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 95 Khi ng VB 6.0 VB l 1 ng dng nh bao ng dng khc. khi ng 1 ng dng, ta c nhiu cch khau nhau : chn menu Start.Programs.Microsoft Visual Basic 6.0.Microsoft Visual Basic 6.0. n kp chut vo icon shortcut ca VB trn mn hnh desktop (ta phi to trc icon shortcut ny). chn menu Start.Run, ri nhp hng lnh chy ng dng, th d nh "c:\Program Files\Microsoft Visual Studio\VB98\VB6.exe". dng trnh qun l h thng file WE, duyt n th mc cha file chng trnh VB (th d c:\Program Files\Microsoft Visual Studio\VB98), n kp vo file chng trnh VB6.exe. Sau khi VB c khi ng, ta thng thy ca s mn hnh nh sau: Chng 4: Qui trnh thit k trc quan giao din ca ng dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 96 Ca s khi ng VB Chng 4: Qui trnh thit k trc quan giao din ca ng dng 49 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 97 To mi d n Chng 4: Qui trnh thit k trc quan giao din ca ng dng Ca s New Project ca VB c ba th (Tab) : New : to mi mt d n (tab ny c chn default) Existing : M 1 d n c sn trn my (d n c no ). Recent : M 1 d n trong n d n gn hin ti nht. Vi tab New c chn, bn c th to 1 d n theo 1 loi no , nhng i vi cc ng dng thng thng ta s dng loi d n "Standard EXE". n kp vo icon "Standard EXE" to mi d n tng ng. 1 form mi c to ra t ng bn c th thit k trc quan form giao din ny. Qui trnh thit k giao din l tun t thit k tng form theo yu cu, nu mun to mi 1 form khc (hay 1 i tng no vo d n), bn n kp chut vo ca s Project, di chut n menu "Add", ri chn mc "Form" trong danh sch. Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 98 Control buttons Window Form, Dialogbox Title bar Menu Toolbar Textbox Command Button Th d v form thit k : MiniCalculator Chng 4: Qui trnh thit k trc quan giao din ca ng dng 50 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 99 4.2 To 1 i tng giao din trn form Chng 4: Qui trnh thit k trc quan giao din ca ng dng hin th v lm vic trc quan vi 1 form, n kp chut vo mc tn form trong ca s Project. to mi 1 i tng giao din trong form, dng chut chn icon tng ng vi i tng trong ca s Toolbox ri v i tng v tr v kch thc mong mun trn form. Bn cng c th to mi i tng giao din dng c ch sinh sn v tnh : chn i tng c, n button Copy trn Toolbar ri n button Past trn Toolbar, i tng mi sinh ra ging y nh i tng c sn (nn t li tn khc bng cch chn button "No" trong hp thoi yu cu sau khi n icon Past). y l 1 trong nhiu cch to nhiu i tng c kch thc ging ht nhau. Th d slide sau miu t trng thi ca form sau khi ta v c 1 textbox hin th s v 5 button bn tri nht ca my tnh. Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 100 d cn chnh v tr v kch thc ca cc i tng, ta nn thit lp cc thuc tnh c bn sau : "Name", "Caption". Thuc tnh "Name" c dng truy xut i tng lc lp trnh, cn thuc tnh "Caption" c hin th trn phn t (khng phi i tng no cng c Caption). 4.3 Thit lp gi tr cho cc thuc tnh Chng 4: Qui trnh thit k trc quan giao din ca ng dng 51 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 101 xem v hiu chnh gi tr ca cc thuc tnh ca 1 i tng giao din, bn n chut chn i tng, ca s Properties bn phi mn hnh s hin th cc thuc tnh ca i tng c chn. Bn duyt cc thuc tnh t trn xung v nhp vo gi tr mi cho thuc tnh mong mun. Thit lp gi tr cho cc thuc tnh (tt) Chng 4: Qui trnh thit k trc quan giao din ca ng dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 102 Nu v bng tay tun t cc i tng th kh lng m bo kch thc ca chng bng nhau, do bn nn dng c ch sinh sn v tnh (Copy-Paste). Tuy nhin nu l to bng tay cc i tng ri th lm kch thc nhiu i tng ging y nhau, bn chn cc i tng ri chn menu Format.Make Same Size.Both (bng kch thc ca i tng c chn cui cng). Cn chnh kch thc cc i tng Chng 4: Qui trnh thit k trc quan giao din ca ng dng 52 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 103 Tng t, nu v bng tay tun t cc i tng th kh lng m bo khong cch gia chng u nhau. khong cch dc gia cc i tng u nhau, bn chn cc i tng ri chn menu Format.Vertical Spacing.Make Equal (c nh v tr 2 i tng xa nht theo chiu dc ri chnh dc cc i tng cn li). ng chnh v tr cc i tng Chng 4: Qui trnh thit k trc quan giao din ca ng dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 104 Kt qu tm thi ca form MiniCalculator Chng 4: Qui trnh thit k trc quan giao din ca ng dng Vi qui trnh to i tng, thit lp cc thuc tnh cn thit v chnh dng cc i tng giao din nh c trnh by, bn tip tc to cc i tng cn li ca form MiniCalculator. Kt qu nh sau : 53 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 105 Danh sch thuc tnh cc i tng Caption = , Name = cmdMemStatus Caption = MC, Name = cmdMC Caption = MR, Name = cmdMR Caption = MS, Name = cmdMS Caption = MA, Name = cmdMA Caption = 0, Name = cmd0 Caption = 1, Name = cmd1 Caption = 2, Name = cmd2 Caption = 3, Name = cmd3 Caption = 4, Name = cmd4 Caption = 5, Name = cmd5 Caption = 6, Name = cmd6 Caption = 7, Name = cmd7 Caption = 8, Name = cmd8 Caption = 9, Name = cmd9 Caption = +, Name = cmdAdd Caption = -, Name = cmdSub Caption = *, Name = cmdMul Caption = /, Name = cmdDiv Caption = +/-, Name = cmdPosNeg Caption = ., Name = cmdPoint Caption = =, Name = cmdEqual Caption = 1/x, Name = cmd1x Caption = %, Name = cmdPercent Caption = sqrt, Name = cmdSqrt Caption = C, Name = cmdC Caption = CE, Name = cmdCE Caption = Backspace, Name = cmdBack Text = 0., Name = txtDisplay Chng 4: Qui trnh thit k trc quan giao din ca ng dng Danh sch gi tr cc thuc tnh c thit lp cho cc i tng (s c tham kho bi code chng trnh c vit sau) : Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 106 4.4 Thit k menu bar cho form giao din Gi s form MiniCalculator cn c 1 h thng menu nh sau : to menu bar cho 1 form no , ta hin th ca s cha form (n kp mc tn form trong ca s Project cha cy th bc cc phn t) ri chn menu Tools.Menu Bar... Ca s trong slide sau s hin ln : Chng 4: Qui trnh thit k trc quan giao din ca ng dng 54 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 107 Dng Menu Editor thit k menu bar Chng 4: Qui trnh thit k trc quan giao din ca ng dng VB lun to sn 1 mc mi trng hng cui ca danh sch. Thm 1 phn t mi l chn mc mi ny v nhp t nht 2 thuc tnh Caption v Name ca n. Button Next cho php di mc chn xung 1 hng. Button Insert cho php chn 1 mc trng vo trc mc c chn hin hnh. Button Delete cho php xa mc c chn. Cc button , cho php di mc c chn i ln hay xung 1 v tr. Cc button , cho php di mc c chn v thm hay ra bt 1 cp trong h thng cy phn cp menu. Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 108 Dng Menu Editor thit k menu bar (tt) Da vo c t menu bar ca slide trc y, nhp ln lt cc mc sau : Caption = File, Name = mnuFile Caption = Copy, Name = mnuFileCopy, n button v thm 1 cp Caption = Paste, Name = mnuFilePaste Caption = View, Name = mnuView, n button ra 1 cp Caption = Standard, Name = mnuViewStand, n button v thm 1 cp Caption = Scientific, Name = mnuViewScien Caption = -, Name = mnuViewBar Caption = Digital grouping, Name = mnuViewDigital Caption = Help, Name = mnuHelp, n button ra 1 cp Caption = Help Topics, Name = mnuHelpTopics, n button v thm 1 cp Caption = -, Name = mnuHelpBar Caption = About MiniCalculator, Name = mnuHelpAbout. Chng 4: Qui trnh thit k trc quan giao din ca ng dng 55 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 109 Dng Menu Editor thit k menu bar (tt) Chng 4: Qui trnh thit k trc quan giao din ca ng dng Sau khi c t xong menu, ca s menu editor c dng nh sau. Lu lc ny bn vn cha thy menu 1 cch trc quan : Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 110 Kt qu ca hot ng thit k menubar Sau khi to menu xong, hy n nt OK ng tin ch "Menu Editor", form giao din ca chng trnh s ging nh hnh bn : Chng 4: Qui trnh thit k trc quan giao din ca ng dng 56 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 111 to Toolbar cho 1 form trong project, trc ht ta phi thm tp cc iu khin "Window Common Controls 6.0" vo ca s Toolbox ca project : 4.5 Thit k Toolbar cho form giao din Chng 4: Qui trnh thit k trc quan giao din ca ng dng 1. n phi chut vo v tr trng ca Toolbox, chn mc Components 2. chn tab Controls, duyt v chn mc tng ng, chn OK. 3. cc icon mi c thm vo Tool- box Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 112 Qui trnh to Toolbar ca form Toolbar l 1 ca s cha nhiu button (icon), mi button cho php thc hin 1 chc nng ca ng dng. Cc button c kch thc u nhau, nn kt hp 1 nh bitmap vi tng button, ni dung nh lm sao gi cho ngi dng v chc nng tng ng (th d nh dng ci ko gi chc nng Cut,...). 1. Cng vic u tin cn thc hin l dng 1 trnh son tho ha (Paint, CorelDraw,...) thit k (v) tng nh bitmap gi cho tng button trong Toolbar. Bn c th dng trnh "Screen Capture" ct cc icon c sn ca ng dng ang chy v dn vo vng son tho nh ca trnh son tho ha. Sau khi son xong 1 nh, ta ct nh ln file dng *.bmp. Lu rng cc nh phi c cng kch thc (th d 16*16, 20*20,32*32,...). Slide k miu t ca s ca trnh son tho ha Paint. Chng 4: Qui trnh thit k trc quan giao din ca ng dng 57 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 113 V nh cho button bng trnh Paint son tho 1 button l v tng pixel nh. d v, bn nn phng to nh ln khong 400% tr ln. trc khi v 1 pixel, hy chn mu v thch hp. sau khi v xong, dng menu File.Save As ct nh ln file thch hp : copy.bmp paste.bmp standard.bmp scientific.bmp help.bmp about.bmp Chng 4: Qui trnh thit k trc quan giao din ca ng dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 114 2. Dng qui trnh to phn t giao din trong form nh gii thiu to 1 i tng ImageList, i tng ny s cha cc nh bitmap c dng cho cc icon Toolbar, v tr v kch thc ca i tng ImageList khng quan trng v n s b n khi chng trnh chy. 2.1 n phi chut vo i tng ImageList ri chn mc Properties hin th ca s "Properties Page" ca i tng ImageList. Qui trnh to Toolbar ca form (tt) Chng 4: Qui trnh thit k trc quan giao din ca ng dng 58 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 115 Chng 4: Qui trnh thit k trc quan giao din ca ng dng Qui trnh to Toolbar ca form (tt) 2.2 chn tab General, chn checkbox Custom ri nhp kch thc ca button Toolbar vo 2 field Height v Width. Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 116 Chng 4: Qui trnh thit k trc quan giao din ca ng dng Qui trnh to Toolbar ca form (tt) 2.3 chn tab Images ri thm tng nh button vo ImageList bng trnh t : n Insert Picture, duyt v chn file image, nhp gi tr cho field Key. truy xut nh button, ta dng hoc thuc tnh Index hoc thuc tnh Key (tn gi nh). 59 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 117 2.4 sau 6 ln insert icon vo ImageList, ta c kt qu nh hnh bn. Bn c th chn li tng icon kim tra/hiu chnh cc thuc tnh ca n. Qui trnh to Toolbar ca form (tt) Chng 4: Qui trnh thit k trc quan giao din ca ng dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 118 Qui trnh to Toolbar ca form (tt) Chng 4: Qui trnh thit k trc quan giao din ca ng dng 3. To 1 i tng Toolbar, v tr v kch thc ca i tng ny khng quan trng v n s lun c xp ngay di menubar. 60 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 119 Qui trnh to Toolbar ca form (tt) Chng 4: Qui trnh thit k trc quan giao din ca ng dng 3.1 M ca s thuc tnh ca Toolbar, chn tab General, chn ImageList kt hp vi Toolbar trong listbox ImageList. Nu mun hnh nh ca tng icon khc nhau cho tng trng thi (cha chn, c chn, b cm), bn phi to 2 ImageList khc : HotImageList (trng thi c chn) v DisableImageList (trng thi b cm). Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 120 Qui trnh to Toolbar ca form (tt) Chng 4: Qui trnh thit k trc quan giao din ca ng dng 3.2 Chn tab Buttons, thm tng button vo Toolbar v thit lp thuc tnh ca n bng trnh t cc hot ng sau : n Insert Button thm button mi, nhp gi tr thuc tnh "Key", nhp ch s "Images" trong ImageList c dng cho button, nhp tr cho thuc tnh "ToolTipText"... 61 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 121 Qui trnh to Toolbar ca form (tt) Chng 4: Qui trnh thit k trc quan giao din ca ng dng 3.3 sau khi thm 6 button vo Toolbar th Toolbar c dng sau : Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 122 Ghi ch v qui trnh to giao din Thng th form giao din nh MiniCalculator khng cn cha menubar v Toolbar. Giao din dng ny c gi l Dialog based. Cn 2 dng giao din ng dng ph bin khc l : SDI (Single Document Interface) : ca s ca chng trnh gm 1 menubar, 1 hay nhiu Toolbar v 1 ca s lm vic duy nht. Tng thi im, ca s lm vic ny s cho php hin th/hiu chnh 1 document ca ng dng. v MDI (Multiple Document Interface) : ca s ca chng trnh gm 1 menubar, 1 hay nhiu Toolbar v n ca s lm vic khc nhau, mi ca s lm vic s cho php hin th/hiu chnh 1 document ca ng dng. Chng 4: Qui trnh thit k trc quan giao din ca ng dng 62 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 123 Giao din SDI (Single Document Interface) Chng 4: Qui trnh thit k trc quan giao din ca ng dng Menubar Toolbar Working region (ti tng thi im ch c 1 x l 1 document ca ng dng) Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 124 Giao din MDI (Multiple Document Interface) Chng 4: Qui trnh thit k trc quan giao din ca ng dng Menubar Toolbar Working region (ti tng thi im c th m n ca s x l n document khc nhau) 63 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 125 Ghi ch v qui trnh to giao din (tt) to giao din trc quan ca cc ng dng SDI v MDI c d dng, VB cung cp cho ngi dng 1 dng Project tn l "VB Application Wizard". Chn dng Project ny khi to Project, VB s hng dn ngi dng to ra cc phn t giao din rt d dng, trong 2 i tng c bn l menubar v Toolbar c VB to t ng, ngi lp trnh ch cn hiu chnh li theo yu cu ring. Chng 4: Qui trnh thit k trc quan giao din ca ng dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 126 4.6 To th tc x l s kin cho cc i tng giao din Sau khi thit k trc quan giao din ca ng dng theo yu cu, bn s to cc th tc x l s kin cn thit cho tng i tng giao din. to th tc x l cho 1 option trong menu, bn chn menu tng ng, di chut v option cn to th tc ri chn n, template ca th tc s c to ra. Cc chng ti s gii thiu c php VB bn c th vit code cho th tc. Chng 4: Qui trnh thit k trc quan giao din ca ng dng 64 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 127 To th tc x l s kin cho cc i tng giao din (tt) to th tc x l cho 1 button trong Toolbar, bn n kp chut vo button , template ca th tc s c to ra (lu ch c 1 th tc x l cho tt c cc button trong 1 Toolbar, th tc ny s da vo thuc tnh Button.Key bit button no c chn). to th tc x l cho 1 command button, bn n kp chut vo command button , template ca th tc s c to ra : Chng 4: Qui trnh thit k trc quan giao din ca ng dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 128 To th tc x l s kin cho cc i tng giao din (tt) Cch tng qut to th tc x l s kin l m ca s code (View.Code), chn tn i tng trong danh sch ri chn s kin cn x l, th tc x l tng ng s c to ra : Chng 4: Qui trnh thit k trc quan giao din ca ng dng 65 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 129 Chng 5 CC KIU D LIU TRONG VB Chng 5 : Cc kiu d liu trong VB MN TIN HC 5.1 Bin d liu & nh ngha bin 5.2 Cc kiu d liu nh sn ca VB 6.0. 5.3 Vic dng & to class i tng 5.4 Cc tnh cht chnh yu ca bin d liu 5.5 Hng gi nh Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 130 5.1 Bin d liu Mi ng dng thng x l nhiu d liu, ta dng khi nim "bin" lu tr d liu trong b nh my tnh, mi bin lu tr 1 d liu ca chng trnh. Mc d VB khng i hi, nhng ta nn nh ngha r rng tng bin trc khi truy xut n code ca chng trnh c trong sng, d hiu, d bo tr v pht trin. nh ngha 1 bin l : nh ngha tn nhn dng cho bin, kt hp kiu vi bin xc nh cu trc d liu ca bin, nh ngha tm vc truy xut bin. C php n gin ca lnh nh ngha bin : [Static|Public|Private|Dim] AVariable As Type ti tng thi im, bin cha 1 gi tr (ni dung) c th. Theo thi gian ni dung ca bin s b thay i theo tnh cht x l ca code. Chng 5 : Cc kiu d liu trong VB 66 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 131 nh ngha tn bin Cch t tn cho 1 bin (hay cho bt k phn t trong chng trnh): Tn bin c th di n 255 k t, K t u tin phi l mt k t ch (letter), Cc k t tip theo c th l cc k t ch (letter), k s (digit), du gch di, Tn bin khng c cha cc k t c bit nh cc k t : ^, &, ), (,%, $, #, @, !, ~, +, -, *, VB khng phn bit ch HOA hay ch thng trong tn bin. V d: Tn bin hp l Tn bin khng hp l + Base1_ball + Base.1 : v c du chm + ThisIsLongButOk + Base&1 : v c du & + 1Base_Ball : k t u l 1 s Nn chn tn bin ngn gn nhng th hin r ngha. V d: Ta mun c mt bin lu h s li sut ngn hng (Interest Rate), ta nn dng tn bin l: InterestRate hoc Irate ch khng nn dng tn bin l IR Chng 5 : Cc kiu d liu trong VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 132 nh ngha tn bin (tt) Vi v d trc, dng lnh sau y: IterestRateEarned = Total*InterestRate s d hiu hn dng lnh IE = T*IR Khi vit tn bin ta nn vit hoa ch u tin ca mt t c ngha. V d : InterestRate s d c hn interestrate hay iNTERestRaTe Khng c dng tn bin trng vi cc t kho nh : Print, Sub, End(t kha l nhng t m ngn ng VB dng cho nhng thnh phn xc nh ca ngn ng) Chng 5 : Cc kiu d liu trong VB 67 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 133 5.2 Cc kiu d liu c bn nh sn ca VB Byte : 1 byte, 0 to 255 Boolean : 2 bytes, True or False Integer : 2 bytes, -32,768 to 32,767 Long (long integer) : 4 bytes -2,147,483,648 to 2,147,483,647 Single (single-precision floating-point) :4 bytes -3.402823E38 to -1.401298E-45 ;1.401298E-45 to 3.402823E38 Double (double-precision floating-point) : 8 bytes -1.79769313486231E308 to -4.94065645841247E-324; 4.94065645841247E-324 to 1.79769313486232E308 Currency (scaled integer) : 8 bytes -922,337,203,685,477.5808 to 922,337,203,685,477.5807 Chng 5 : Cc kiu d liu trong VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 134 Cc kiu d liu c bn nh sn ca VB (tt) Chng 5 : Cc kiu d liu trong VB Decimal : 14 bytes +/-79,228,162,514,264,337,593,543,950,335 (khng c du chm thp phn) +/-7.9228162514264337593543950335 (c 28 k s bn phi du chm) +/-0.0000000000000000000000000001 l s khc 0 nh nht. Date : 8 bytes; t January 1, 100 ti December 31, 9999 Object : 4 bytes; cha tham kho n bt k i tng no String (variable-length) : 10 bytes + di ca chui 0 ti 2G k t String*n (fixed-length) : chui c di c nh 1 ti 65,400 k t Variant (with numbers) : 16 bytes Bt k s no nm trong phm vi kiu Double Variant (with characters) : 22 bytes + di chui cng di nh kiu String User-defined (using Type) : kiu do ngi dng nh ngha (record) gm nhiu field, mi field c kiu ring theo yu cu. 68 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 135 Cc kiu d liu c bn nh sn ca VB (tt) Chng 5 : Cc kiu d liu trong VB Array : dy nhiu phn t c cu trc d liu ng nht, mi phn t c truy xut c lp nh ch s ca n trong dy. V d : Dim vector(10) As Integer nh ngha bin vector l 1 dy gm 10 phn t nguyn, vector(i) l tn nhn dng ca phn t th i ca dy ny. Ngoi cc kiu d liu nh sn, VB cn cung cp cho ngi lp trnh 1 phng tin h c th nh ngha bt k kiu d liu cha cung cp sn nhng li cn thit cho ng dng ca h, ta gi cc kiu ny l kiu do ngi dng nh ngha. Th d sau y l pht biu nh ngha kiu miu t cc thng tin chnh v my tnh c nhn : Type SystemInfo CPU As Variant Memory As Long DiskDrives(25) As String ' Fixed-size array. VideoColors As Integer Cost As Currency PurchaseDate As Variant End Type Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 136 c tnh chi tit v kiu String Kiu String (chui k t) : String l kiu d liu c dng lu tr chui cc k t ( di bt k) Gi tr chui k t c t trong cp du nhy kp (vd : "Mn Tin hc") Trn l thuyt, mt bin thuc kiu String c th lu tr c n 2 t k t nhng trong thc t, di ca chui b hn ch theo dung lng b nh ca my tnh. C th thc hin c cc php ton ni kt chui (+,&) trn cc chui k t v c kh nhiu hm x l chui c sn. C th nh ngha mt bin thuc kiu String nh sau : Dim AStringVariable As String Dim AStringVariable As String*100 Hay Dim AStringVariable$ Tip v ng $ i sau tn bin dng khai bo mt bin thuc kiu String (nhng ta khng nn dng cch ny v ti ngha, kh bo tr). Chng 5 : Cc kiu d liu trong VB 69 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 137 c tnh chi tit v kiu Integer Kiu Integer (S nguyn) : Integer l kiu d liu c dng lu tr cc s nguyn ngn nm trong khong t - 32768 n 32767. S nguyn c lu tr trong b nh bng 2 byte. C th thc hin c cc php ton s hc (nh +,-,*,/,...) trn cc d liu thuc kiu Integer. Khai bo mt bin thuc kiu Integer nh sau : Dim AnIntegerVariable As Integer Hay Dim AnIntegerVariable% Tip v ng % i sau tn bin c dng khai bo mt bin thuc kiu Integer. Vd: Dim Age As Integer ... Age = 24 Chng 5 : Cc kiu d liu trong VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 138 c tnh chi tit v kiu Long Kiu Long (S nguyn di) : Dng lu tr cc s nguyn ln nm trong khong t : -2,147,483,648 n 2,147,483,647 S nguyn di c lu tr trong b nh bng 4 byte. C th thc hin c cc php ton s hc (nh +,-,*,/,...) trn cc d liu thuc kiu Long. Khai bo mt bin thuc kiu Long nh sau : Dim ALongIntegerVariable As Long Hay Dim AnIntegerVariable& Tip v ng & i sau tn bin c dng khai bo mt bin thuc kiu Long. Vd: Dim EarthAge As Long ... EarthAge = 3276979 Chng 5 : Cc kiu d liu trong VB 70 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 139 c tnh chi tit v kiu Byte Kiu Byte (S nguyn dng nh) : Dng lu tr cc s nguyn khng m nm trong tm tr t : 0 n 255 Chim 1 byte trong b nh. C th thc hin c cc php ton s hc (nh +,-,*,/,...) trn cc d liu thuc kiu Byte. Kiu d liu ny rt hiu dng trong vic lu tr cc s nguyn nh v n chim t b nh, tc x l nhanh. V d: Khi cn lu tui ca mt ngi chng ta khng nn dng kiu Integer hay Long m nn dng kiu Byte v tui ca mt ngi lun l mt s khng m, c gi tr ti a thng nh hn 120. Chng 5 : Cc kiu d liu trong VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 140 c tnh chi tit v kiu Boolean Kiu Byte (tt) : Khai bo cho mt bin thuc kiu Byte nh sau : Dim AByteVariable As Byte 'khng c tip v ng V d: Dim Age As Byte ... Age = 100 Kiu Boolean (gi tr lun l) : L kiu d liu lu tr hai gi tr lun l True/False. c lu tr trong my tnh bng 2 byte. Khai bo Dim ABooleanVariable As Boolean Chng 5 : Cc kiu d liu trong VB 71 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 141 c tnh chi tit v kiu Single Kiu Single (s thc c chnh xc n - Single Precision) : Lu tr cc s thc c chnh xc n (gn ng vi gi tr gc vi chnh xc mc 7 ch s) V d s 1234.567 th k s 7 (bn phi nht) c th khng chnh xc. Kiu d liu ny chim 4 byte trong b nh v miu t cc gi tr trong phm vi : T -3.402823E38 n -1.401298E-45 cho cc gi tr m v t 1.401298E-45 n 3.402823E38 cho cc gi tr dng C th thc hin cc php ton s hc trn kiu d liu ny nhng thng chm hn so vI cc bin thuc kiu Integer hay Long. Do cch cha s Single ch mc gn ng nn cc php ton trn cc d liu thuc kiu ny s to kt qu gn ng (nhng dng trong i a s yu cu thc t). Khai bo nh sau : Dim ASingleVariable As Single Hay Dim ASingleVariable! 'Tip v ng l du ! V d: Dim InterestRate As Single, Earned!, Total As Single Earned = InterestRate * Total Chng 5 : Cc kiu d liu trong VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 142 c tnh chi tit v kiu Double Kiu Double (s thc c chnh xc kp - Double Precision) : Lu tr cc s thc c chnh xc kp (gn ng vi gi tr gc vi chnh xc mc 16 ch s). V d s 1234.57890123456 th k s bn phi nht (6) c th khng chnh xc. Kiu d liu ny chim 8 byte trong b nh v miu t cc gi tr trong phm vi : -1.797693234862232E308 n -4.94065645841247E-324 v 4.94065645841247E-324 n 1.797693234862232E308 C th thc hin cc php ton s hc trn kiu d liu ny nhng rt chm (chm hn c kiu Single). Do cch cha s Double ch mc gn ng nn cc php ton trn cc d liu thuc kiu ny s to kt qu gn ng (nhng qu dng trong i a s yu cu thc t). Khai bo nh sau : Dim ADoubleVariable As Double Hay Dim ADoubleVariable# Tip v ng l du # V d: Dim InterestRate As Double, Earned#, Total As Double Earned = InterestRate * Total Chng 5 : Cc kiu d liu trong VB 72 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 143 c tnh chi tit v kiu Currency Kiu Currency (Tin T) Kiu Currency c dng lu cc d liu thuc kiu tin t (s lng tin). c lu tr trong b nh bng 8 byte. C th c 4 ch s bn phi du chm thp phn v 15 ch s bn tri du thp phn. C tm tr: - 922337203685477.5808 n 922337203685477.5807 C th thc hin c cc php ton s hc trn kiu d liu ny nhng tc x l rt chm nh i vi cc s thc c chnh xc kp, song n l kiu d liu a dng cho cc php tnh ti chnh. Khai bo: Dim ACurrencyVariable As Currency Hay Dim ACurrencyVariable@'Tip v ng l du @ Chng 5 : Cc kiu d liu trong VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 144 c tnh chi tit v kiu Date Kiu Date (Ngy thng) Dng lu tr cc d liu thuc kiu ngy gi cho bt k thi im no t 0h00 ngy 01/01/100 n 0h00 ngy 31/12/9999. Kiu Date c lu tr trong my tnh bng 8 bytes. D liu thuc kiu Date phi c bao bi cp du # hai u. V d: Millenium = #January 1, 2000# Millenium = #Jan 1, 2000# Millenium = #1/1/ 2000# Nu ta cha gn tr cho bin thuc kiu Date th VB mc nhn l lc 0:0:0 cng ngy. C th dng dng thc AM/PM hay dng 24 gi biu din cho gi tr gi V d: PreMillenium = #December 31, 1999 11:59:59PM# hay PreMillenium = #December 31, 1999 23:59:59# Khai bo mt bin thuc kiu Date nh sau: Dim ADateVariable As Date Khng c tip v ng V d : Dim PreMillenium As Date Chng 5 : Cc kiu d liu trong VB 73 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 145 c tnh chi tit v kiu Variant Kiu Variant (Kiu d liu bin i) Kiu d liu ny c thit k lu mi d liu thuc kiu nh sn ca VB. V d nh : Date, String, Double, Integer Nu khng khai bo kiu r rng cho 1 bin th bin ny s c hiu l thuc kiu ny. VB s chuyn i d liu thuc kiu Variant thnh mt kiu d liu khc cho ph hp (khi gn d liu,...). V d : String Variant,Integer Variant,Date Variant Tuy nhin vic chuyn i kiu nh trn s dn n nhiu li khng lng trc c. Dng kiu Variant thay cho mt kiu c th s lm chm tc x l ca chng trnh do phi tn thI gian chuyn i v tn nhiu b nh hn. Khai bo mt bin thuc kiu Variant nh sau : Dim AVariantVariable As Variant Hay Dim AVariantVariable 'Mc nhin thuc kiu Variant V d: Dim x, y, z As Integer 'x,y l kiu Variant Chng 5 : Cc kiu d liu trong VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 146 5.3 Vic dng cc class i tng c sn Nh chng ta trnh by trong chng 3, VB h tr vic lp trnh OOP 1 mc nht nh : o VB cung cp 1 s class i tng, ngi lp trnh c th dng chng bt k project ng dng no, ta c th ni rng tn ca cc class nh sn ny cng l kiu nh sn ca VB. o VB cho php dng cc class i tng c ngi khc vit thng qua cng ngh COM, ActiveX Control (s trnh by trong chng 12). Chng 5 : Cc kiu d liu trong VB o VB cho ngi lp trnh nh ngha cc class mi ngay trong project phn mm ca h nh khi nim "class module" (s c trnh by chi tit trong chng 6). 74 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 147 Vic dng cc class i tng c sn (tt) D dng no, mi class u c tn nhn dng, tn ny chnh l tn kiu v c dng trong pht biu nh ngha bin i tng : Dim pclipbd As Clipboard ... Set pclipbd = New Clipboard Lu rng bin thuc kiu class khng cha trc tip i tng, n ch l tham kho (phng tin truy xut) n i tng. Do trc khi dng bin i tng, nht thit phi to i tng (thng thng qua hm New) nhn tham kho n i tng ri gn tham kho ny vo bin nh th d trn. Chng 5 : Cc kiu d liu trong VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 148 Qui trnh to 1 class mi dng trong project n chut phi trong ca s Project, di chut ti mc "Add" ri chn mc "Class Module" trong danh sch. Khi ca s "Add class module" hin th, chn icon "Class module" ri n "Open" to ra class mi. Chng 5 : Cc kiu d liu trong VB thit lp tn class module cho ph hp (trong ca s thuc tnh), tn ny chnh l tn kiu c dng trong pht biu nh ngha bin i tng. n kp chut vo mc tn class mi to ra hin th ca s code c t cho class . 75 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 149 Ca s c t class Chng 5 : Cc kiu d liu trong VB nh ngha tng thuc tnh d liu v tng method ca class theo c php VB (s c trnh by sau). debug tng method ca class xem n hot ng ng chc nng mong mun trc khi dng (s trnh by hot ng debug sau). mi class c 2 method c bit : o Private Sub Class_Initialize() : miu t cc hnh ng khi i tng va c to ra. o Private Sub Class_Terminate() : miu t cc hnh ng khi i tng sp sa b xa. Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 150 5.4 t tn bin theo cch "k hiu Hungarian" K hiu Hungarian Mt s lp trnh vin thng thch b sung thm mt tip u ng vo tn bin nu r kiu ca bin, nh tng d c cho chng trnh. V d: sngInterestRate : Bin c chnh xc n (Single) intCount: Bin thuc kiu Integer strName: Bin thuc kiu String Qui c trn gi l k hiu Hungarian (do Charles Simonge, mt lp trnh vin gc Hungari ca Miscrosoft) xng. Lu rng bn vn phi khai bo kiu cho cc bin trn v kiu phi tng thch vi tip u ng dng vi tn bin. Mt s kiu v tip u ng tng ng : String str Integer int Single sng Currency cur Boolean bln Long lng Double dbl Variant vnt Chng 5 : Cc kiu d liu trong VB 76 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 151 Cc lu v bin Trong mt ng cnh (trong 1 chng trnh con, trong 1 module, cp ton cc), khng th dng hai bin cng tn (VB khng phn bit ch HOA hay ch thng). Tn bin l phn tn, khng k n tip v ng miu t kiu kt hp. V d: Bin a% v bin a! l trng nhau, VB s a ra thng bo li: Duplicate Definition Sau khi nh ngha bin, VB s khi ng tr ban u cho bin . V d : o Bin thuc kiu Variant c gi tr ngm nh l Empty (rng), gi tr Empty s bin mt khi ta gn cho bin mt gi tr c th. o Bin chui c gi tr ngm nh l chuI rng "" (hai du nhy lin nhau). o Bin s c gi tr ngm nh l 0. Khng nn tin vo tr ngm nh ca bin, phi gn gi tr cho bin trc khi dng chng. 1 bin tng ng vi 1 vng nh, do khi gn mt gi tr cho bin, gi tr c ca bin s b mt i. Chng 5 : Cc kiu d liu trong VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 152 Tm vc truy xut bin Tm vc ca mt bin l tp cc lnh c php truy xut bin . Nh c miu t trong silde 7 (chng 1), VB cho php 3 cp tm vc sau : o cc b trong th tc : bt k lnh no trong th tc u c th truy xut c bin cc b trong th tc . Private Sub Command1_Click() Dim strGreeting As String 'Khai bo cc b ... End Sub o cc b trong module : bt k lnh no trong module u c th truy xut c bin cc b trong module . Private strAddr As String 'bin cc b trong module Public strName As String 'bin ton cc o ton cc : bt k lnh no trong chng trnh cng c th truy xut c bin ton cc. Trong mt ng cnh (cng 1 th tc, cng 1 module, hay cp ton cc), khng th dng hai bin cng tn (VB khng phn bit ch HOA hay ch thng). Chng 5 : Cc kiu d liu trong VB 77 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 153 Thi gian sng ca bin Bin l 1 thc th nn cng c thi gian sng hu hn, thi gian sng ca bin thng ph thuc vo tm vc ca bin : o bin cc b trong th tc : c to ra lc th tc c gi v mt i khi th tc kt thc vic x l v iu khin c tr v lnh gi. o bin cc b trong module : c to ra lc module c to ra v mt i khi module b xa. Cc (standard) modules c thi gian sng t lc chng trnh chy cho n khi chng trnh kt thc. Cc i tng ca class module hay form module c to ra khi c yu cu c th. To i tng ngha l to cc thuc tnh ca n, cc thuc tnh ca i tng s mt i khi i tng b xa. o bin ton cc : c to ra lc chng trnh bt u chy v ch mt i khi chng trnh kt thc. Chng 5 : Cc kiu d liu trong VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 154 Thi gian sng ca bin (tt) Mun ko di thi gian sng ca 1 bin, ta thng dng 2 cch sau : o nng cp tm vc : t cc b trong th tc ln cc b trong module hay ln ton cc... Cch ny t c dng tng minh v n s thay i tm vc ca bin. khc phc iu ny, VB cung cp khi nim "Static" kt hp vi bin : bin c thuc tnh "Static" s tn ti mi v ch mt i khi chng trnh kt thc bt chp tm vc ca n ra sao. Private Sub Command1_Click() Dim strGreeting As String 'bin cc b Static strAddr As String 'bin cc b c thi gian sng lu di theo ng dng. ... End Sub o ghi gi tr bin ra mi trng cha tin bn vng (file trn a) trc khi bin b xa. Khi cn li gi tr ca bin ny, ta c gi tr ca n t file vo. y l phng php thng dng trao i d liu gia 2 ng dng khc nhau hay gia 2 ln chy khc nhau ca cng 1 ng dng. Chng 5 : Cc kiu d liu trong VB 78 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 155 5.5 Hng gi nh Nh ta bit, ta nh ngha bin lu tr d liu ca chng trnh. Ngay sau khi c nh ngha, gi tr ban u ca bin thng cha c xc nh tng minh, do ta phi thit lp (gn) gi tr cho bin trc khi dng li tr ca bin. C 3 cch khc nhau thit lp (gn) gi tr cho 1 bin : t tng tc vi ngi dng, bin kt hp vi i tng giao din tng ng s c gn gi tr m ngi dng nhp vo. cc tham s c truyn khi gi th tc, khi hon thnh code trong th tc s gn tr vo tham s. nhng cch c bn v ph bin nht l dng pht biu gn vi c php sau : AVariable = AExpression Chng 5 : Cc kiu d liu trong VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 156 Hng gi nh Biu thc n gin nht l 1 gi tr, gi tr ny c th c dng nhiu ni trong chng trnh. Hng gi nh (Constant) l khi nim cho php ngi lp trnh kt hp 1 tn gi nh vi 1 gi tr khi cn dng gi tr , ta khng vit li chi tit c th ca tr m ch dng tn gi nh. C php ca pht biu nh ngha hng gi nh : Const ConstName = Value V d : Const PI = 3.1416 LI ch ca vic dng hng gi nh : Chng trnh s trong sng, d c hn, dn n vic bo tr, nng cp chng trnh c thun tin hn. Tit kim c b nh so vi vic dng bin. Rt ngn c cc cu lnh qu di Chng 5 : Cc kiu d liu trong VB 79 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 157 Chng 6 CC LNH NH NGHA & KHAI BO VB Chng 6 : Cc lnh nh ngha & khai bo VB MN TIN HC 6.1 Tng qut v ngn ng VB 6.2 Ch thch trong chng trnh. 6.3 Lnh nh ngha hng gi nh 6.4 Lnh nh ngha bin 6.5 Lnh nh ngha kiu ngi dng 6.6 Lnh khai bo Declare Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 158 6.1 Tng qut v code ca 1 ng dng VB Mt project VB thng qun l cc thnh phn cu thnh 1 ng dng VB. Trong 1 project VB c 3 loi phn t c cha code (do ta cn bit c php VB xy dng cc loi phn t ny) : class module nh ngha s hin thc ca 1 lp i tng c cu trc v hnh vi ging nhau. form module l trng hp c bit ca class module, n miu t s hin thc ca 1 lp i tng c bit : mt form giao din. (standard) module l n v phn mm nh c 1 chc nng r rng no . Theo trng phi lp trnh cu trc (c in), ta dng module chia ng dng ra nhiu phn nh d qun l VB h tr c 2 phng php lp trnh : c cu trc v OOP. Ngoi 1 vi ngoi l nh, t chc code cho 3 loi module trn hon ton ging nhau : l danh sch nhiu lnh VB phc v nh ngha kiu, hng, bin v th tc trong module . Trong lnh nh ngha th tc, ta s dng cc lnh thc thi miu t gii thut ca th tc. Chng 6 : Cc lnh nh ngha & khai bo VB 80 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 159 Tng qut v ngn ng VB d tip cn ngn ng VB, ta hy nhn li ngn ng ting Vit. Ta ni ngn ng ting Vit nh ngha 1 tp cc t c ngha c bn, cc qui tc ghp cc t c bn ny li to thnh on cu (phrase), cu (sentence), on vn (paragraph), bi vn (document) cng ng ngha ca cc phn t c to ra. V ngn ng Vit l ngn ng t nhin nn thng cho php nhiu ngoi l trong vic xy dng cc phn t. Ngn ng lp trnh VB cng nh ngha 1 tp cc k t c bn (cha c ngha), cc qui tc ghp cc k t to thnh cc t c ngha (identifier), biu thc (expression), cu lnh (statement), th tc (Function, Sub, Property) cng ng ngha ca cc phn t c to ra. V ngn ng VB l ngn ng lp trnh cho my tnh thc hin nn s khng cho php 1 ngoi l no trong vic xy dng cc phn t. Nghin cu ngn ng lp trnh l hc nh r cc k t c bn ca ngn ng, cc qui tc to danh hiu, biu thc, cc qui tc vit cc cu lnh... cng ng ngha ca chng rt ging vi vic hc 1 ngn ng t nhin : Anh, Php, Nht,... Chng 6 : Cc lnh nh ngha & khai bo VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 160 Cc k hiu c bn ca ngn ng VB V nguyn tc, VB cho php dng hu ht cc k t m bn c th nhp t bn phm, trong cc k t ch v s c dng ch yu. Qui tc cu to 1 danh hiu c trnh by Slide 113 (chng 5). 1 danh hiu c th c dng t tn cho bin, hng gi nh, Function, Sub, Property, form, class module, module,... v ng ngha ca tng danh hiu l do s qui nh ca ngi lp trnh. Qui tc xy dng 1 biu thc s c trnh by trong chng 7. C nhiu loi cu lnh VB khc nhau, qui tc xy dng 1 cu lnh ph thuc vo loi cu lnh c th ta phi nghin cu tng loi cu lnh v qui tc cu thnh n, nhng may mn s lng loi cu lnh VB l khng nhiu (di 20 loi). Cc cu lnh c chia lm 2 nhm chnh : cc lnh nh ngha : xc nh 1 hnh ng no ti thi im dch. v cc lnh thc thi : xc nh 1 hnh ng no ti thi im thc thi. Chng 6 : Cc lnh nh ngha & khai bo VB 81 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 161 6.2 Ch thch trong chng trnh Cc lnh nh ngha v cc lnh thc thi m ta va trnh by l my x l, chng tun th cc c php c th m ta s trnh by sau. Nhng tng chung l con ngi rt kh c v hiu chng. tr gip cho ngi c v hiu cc lnh VB trong chng trnh, VB cn cung cp 1 lnh c bit : lnh ch thch. y l lnh m my s b qua (v my s khng th hiu ni ngha c miu t trong lnh ny), tuy nhin lnh ny cho php ngi lp trnh dng ngn ng t nhin ch thch ngha ca cc lnh VB khc hu gip chnh h hay ngi khc d dng hiu chng trnh. C php ca lnh ch thch rt n gin : ch qui nh bt u lnh bng k t ' v c th c vit trn 1 hng ring bit hay i sau lnh hin hnh. V d : Private Sub cmdCE_Click() ' hm x l bin c khi n nt CE (Clear Entry) dblDispValue = 0 blnFpoint = False bytPosDigit = 0 txtDisplay.Text = ".0" ' bt u hin th .0 ln Display End Sub Chng 6 : Cc lnh nh ngha & khai bo VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 162 Ch thch trong chng trnh (tt) Vic dng ch thch trong chng trnh l s dung ha gia 2 thi cc : lm dng v khng bao gi dng. Thng ta nn dng ch thch nhng v tr sau : u ca mi th tc miu t chc nng ca th tc , d liu nhp vo th tc v d liu tr v t th tc. cc on code miu t gii thut phc tp ghi ch on code ny hin thc gii thut no trong l thuyt hc. hng lnh c hiu ng c bit... Chng 6 : Cc lnh nh ngha & khai bo VB 82 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 163 6.3 Cc lnh nh ngha 1 module VB (form, class, standard) gm 2 loi phn t : thuc tnh d liu v cc method (th tc). Cc lnh nh ngha cho php ta nh ngha tnh cht ca cc thuc tnh d liu, cc lnh thc thi cho php ta miu t gii thut thi hnh ca cc method (th tc). 2 lnh nh ngha d liu ch yu l lnh nh ngha bin v lnh nh ngha hng, trong 2 lnh ny c s dng tn kiu d liu. Tn kiu d liu c th l nh sn, c th do ngi lp trnh t t. Lnh nh ngha kiu s phc v vic nh ngha kiu mi ca ngi lp trnh. VB kim tra vic nh ngha bin bt buc trong 1 module no , ta dng lnh sau u module . Option Explicit C php nh ngha hng gi nh c bn : Const AConst = Value Lu ta dng ch nghing miu t phn t m ngi lp trnh t xc nh theo yu cu ring (d nhin phi tha mn qui tc VB), ch m miu t phn t bt buc v ngi lp trnh phi vit y nh vy trong lnh ca h. Chng 6 : Cc lnh nh ngha & khai bo VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 164 Qui tc miu t cc loi gi tr Gi tr lun l : True | False. Gi tr thp phn nguyn : [+|-] [decdigit]+ (Vd. 125, -548) Lu ta dng | miu t s chn la, [...] miu t c t 0 ti 1, [...]* miu t c t 0 ti n, [...]+ miu t c t 1 ti n (n>1). Gi tr thp lc phn nguyn : [+|-] &H[hexdigit]+ (&HFF) Gi tr bt phn nguyn : [+|-] &O[ocdigit]+ (&O77) Gi tr thp phn thc : [+|-] [decdigit]+ [.[decdigit]*] [E [+|-] [decdigit]+] 3.14159, 0.31459E1,-83.1E-9,... Gi tr chui : "Nguyen Van A" """Nguyen Van A""" Lu dng 2 du nhy kp lin tip miu t 1 k t nhy kp trong gi tr chui (c ch dng Escape gii quyt nhm ln). Chng 6 : Cc lnh nh ngha & khai bo VB 83 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 165 Qui tc miu t cc loi gi tr (tt) Gi tr ngy thng (Date) : trnh by trong slide 125, y ta ch nhc li cho c tnh h thng. V d: #January 1, 2000# #Jan 1, 2000# #1/1/ 2000# #December 31, 1999 11:59:59PM# #December 31, 1999 23:59:59# Gi tr ngy thng lun c t trong cp du #....#. C nhiu dng thc khc nhau miu t gi trong ngy v miu t ngy/thng/nm. Dng thc miu t ngy dng 2/1/2000 s c phn gii theo thng s "locale" ca Windows (dng dd/mm/yyyy hay mm/dd/yyyy). Chng 6 : Cc lnh nh ngha & khai bo VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 166 6.4 Pht biu nh ngha bin C php c bn ca nh ngha bin cc b trong function, Sub, Property : Dim AVariable [As Type] Static AVariable [As Type] C php c bn ca nh ngha bin cc b trong module (class, form, standard) : Private AVariable [As Type] Static AVariable [As Type] C php c bn ca nh ngha bin ton cc : Public AVariable [As Type] Lu hn ch ti a vic dng bin ton cc (trong OOP ta khng cn dng bin ton cc). Chng 6 : Cc lnh nh ngha & khai bo VB 84 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 167 Pht biu nh ngha bin (tt) C th dng tip v ng qui nh kiu (trong chng 5) thay th cho tn kiu. Nu tn bin khng c tip v ng v khng c phn tn kiu trong lnh nh ngha bin th bin thuc kiu Variant. Cho php nhiu pht biu nh ngha bin trn 1 hng lnh (dng du ',' ngn cch chng). Nn t tn bin theo k hiu Hungarian v lun miu t tn kiu kt hp vi bin trong lnh nh ngha bin, nh vy chng trnh s rt trong sng, d hiu v d pht trin. V d : Thay v dng lnh sau : Private DispValue# nh ngha bin thc chnh xc kp tn l "DispValue", ta nn dng lnh nh ngha sau : Private dblDispValue As Double Chng 6 : Cc lnh nh ngha & khai bo VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 168 6.5 Pht biu nh ngha kiu ca ngi lp trnh Nu trong 1 module no cn d liu c cu trc c th m VB cha cung cp, ngi lp trnh s dng pht biu TYPE nh ngha kiu ny. Pht biu ny kt hp tn kiu (t t) vi 1 cu trc d liu gm nhiu field d liu (do d ta thng gi kiu ny l kiu record hay structure). C php nh sau : Type TypeName [AfieldName As Type]+ End Type V d : Type SystemInfo CPU As Variant Memory As Long DiskDrives(25) As String ' Fixed-size array. VideoColors As Integer Cost As Currency PurchaseDate As Variant End Type Chng 6 : Cc lnh nh ngha & khai bo VB 85 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 169 Pht biu nh ngha kiu Array Nu trong 1 module no cn danh sch gm nhiu d liu c cu trc ng nht, ta s dng pht biu nh ngha kiu array miu t danh sch ny. C php c bn nh sau : Dim varname[([subscripts])] [As [New] type] trong subscripts l danh sch t 1 n n chiu cch nhau bng du ',', mi chiu miu t phm vi ch s cc phn t thuc chiu dng : [lower To] upper. Nu ch s cn di ca 1 chiu no khng c miu t th VB chn gi tr ngm nh (l 0 hay 1). Pht biu nh ngha gi tr cn di ngm nh c c php : Option Base {0|1} Lu du {..} miu t c 1 v ch 1 ln. Nu khng c pht biu ny th VB chn cn di l 0. V d : Dim vector(50) As Double 'vector c 51 phn t t 0 - 51 Dim MyArray (1 to 100, 1 to 50) As Double Chng 6 : Cc lnh nh ngha & khai bo VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 170 Pht biu nh ngha kiu Array (tt) Nu s lng phn t ca danh sch cha bit ti thi im vit chng trnh v ch bit ti thi im chy, ta dng 1 trong 2 cch sau : khai bo s lng tnh ti thi im vit, cch ny thng ph phm b nh hay khai bo thiu s lng phn t. Th d gii h n phng trnh tuyn tnh, n n s, ta c th khai bo tnh ma trn thng s nh sau : Option Base 1 Dim matran(100,100) As Double nhng nu i a s ln dng ng dng ny, ta ch gii cc h phng trnh c 2, 3,... n s th s rt ph phm b nh. Cn 1 ln chy no , nu ta cn gii h 200 phng trnh th chng trnh s chy sai. khai bo s lng ng ti thi im chy. C php nh sau : Dim varname() [As [New] type] V d : Dim matran() As Double ' trng s lng ... n = Val(txtInput.Text) ReDim matran(n,n) 'phn phi phn t cho ma trn Chng 6 : Cc lnh nh ngha & khai bo VB 86 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 171 6.6 Lnh khai bo Declare Cc lnh nh ngha hng, bin, kiu, th tc cho php ta sn sinh phn t tng ng trong phm vi ng cnh tng ng (th tc, module, ton cc). Ngoi ra Windows (v nhiu hng, c nhn khc) vit nhiu module tng qut, mi module cha nhiu th tc khc nhau, cc th tc ny gii quyt nhng vn no . Th d ta c module cc hm lng gic, module cc hm thng k, module cc hm x l d liu multimedia,... Windows dng k thut lin kt ng cc module trn vo ng dng dng chng, mi module c ct trn 1 file *.dll (dynamic link library). VB cung cp lnh khai bo "Declare" cho php ngi lp trnh khai bo ch k (signature, interface, prototype, header,...) ca cc th tc c sn trong cc module *.dll gi n trong ng cnh ca mnh (module). Chng 6 : Cc lnh nh ngha & khai bo VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 172 C php 1 : [Public | Private] Declare Sub name Lib "libname" [Alias "aliasname"] [([arglist])] C php 2 : [Public | Private] Declare Function name Lib "libname" [Alias "aliasname"] [([arglist])] [As type] C php 1 cho php khai bo 1 subroutine vi tn l name th vin tn l libname, ta c th gi subroutine ny bng 1 tn khc l aliasname v truyn cho n 1 danh sch i s tng thch vi arglist. C php 2 cho php khai bo 1 function vi tn l name th vin tn l libname, ta c th gi function ny bng 1 tn khc l aliasname v truyn cho n 1 danh sch i s tng thch vi arglist. Sau khi hon thnh, function s tr v 1 gi tr kt qu thuc kiu type. Chi tit v s khc bit gia subroutine v function s c trnh by trong chng 9 v 10. Lnh khai bo Declare (tt) Chng 6 : Cc lnh nh ngha & khai bo VB 87 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 173 Chng ta trnh by qui trnh thit k trc quan giao din ca trnh MiniCalculator cho php gi lp 1 my tnh tay n gin. Chng trnh ny ch c 1 form, trong form ny chng ta s nh ngha cc hng, bin cc b sau y phc v hot ng cho ng dng : Option Explicit Const IDC_EQUAL = 0 ' nh ngha cc hng gi nh miu t ton t Const IDC_ADD = 1 Const IDC_SUB = 2 Const IDC_MUL = 3 Const IDC_DIV = 4 Private dblDispValue As Double ' bin lu gi tr ang hin th Private dblOldValue As Double ' bin lu gi tr trc Private dblMemValue As Double ' bin lu gi tr trong b nh Private blnFpoint As Boolean ' trng thi nhp s nguyn/l Private bytPosDigit As Byte ' v tr l s l ang nhp Private intPosNeg As Integer ' trng thi miu t gi tr m/dng Private bytOperationId As Byte ' id ca php ton cn thc hin Private blnFAfterOp As Boolean ' trng thi nhp k s u sau php ton Th d v cc lnh nh ngha VB Chng 6 : Cc lnh nh ngha & khai bo VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 174 Chng 7 BIU THC VB Chng 7 : Biu thc VB MN TIN HC 7.1 Tng qut v biu thc VB 7.2 Cc ton t 7.3 Qui trnh tnh biu thc 7.4 Quyn u tin ca cc ton t 88 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 175 7.1 Tng qut v biu thc VB Ta bit trong ton hc cng thc l phng tin miu t 1 qui trnh tnh ton no trn cc s. Trong VB (hay ngn ng lp trnh khc), ta dng biu thc miu t qui trnh tnh ton no trn cc d liu biu thc cng ging nh cng thc ton hc, tuy n tng qut hn (x l trn nhiu loi d liu khc nhau) v phi tun theo qui tc cu to kht khe hn cng thc ton hc. hiu c biu thc, ta cn hiu c cc thnh phn ca n : Cc ton hng : cc bin, hng d liu,... Cc ton t tham gia biu thc : +,-,*,/,... Qui tc kt hp ton t v ton hng to biu thc. Qui trnh m my dng tnh tr ca biu thc. Kiu ca biu thc l kiu ca kt qu tnh ton biu thc. Chng 7 : Biu thc VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 176 Cc biu thc c bn Biu thc c bn l phn t nh nht cu thnh biu thc bt k. Mt trong cc phn t sau c gi l biu thc c bn : Bin, Hng gi nh, Gi tr d liu c th thuc kiu no (nguyn, thc,..) Li gi hm, 1 biu thc c ng trong 2 du (). Qui trnh to biu thc l qui trnh qui : ta kt hp tng ton t vi cc ton hng ca n, trong ton hng hoc l biu thc c bn hoc l biu thc sn c ( c xy dng trc v nn ng trong 2 du () bin n tr thnh biu thc c bn). Chng 7 : Biu thc VB 89 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 177 7.2 Cc ton t Da theo s ton hng tham gia, c 2 loi ton t thng dng nht : ton t 1 ngi : ch cn 1 ton hng. V d ton t '-' tnh phn m ca 1 i lng. ton t 2 ngi : cn dng 2 ton hng. V d ton t '*' tnh tch ca 2 i lng. VB thng dng cc k t c bit miu t ton t. V d : ton t '+' : cng 2 i lng. ton t '-' : tr i lng 2 ra khi i lng 1. ton t '*' : nhn 2 i lng. ton t '/' : chia i lng 1 cho i lng 2... Trong vi trng hp, VB dng cng 1 k t c bit miu t nhiu ton t khc nhau. Trong trng hp ny, ng cnh s c dng gii quyt nhm ln. Ng cnh thng l kiu ca cc ton hng tham gia hoc do thiu ton hng th ton t c hiu l ton t 1 ngi. Chng 7 : Biu thc VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 178 Cc ton t (tt) Da theo u tin ca cc ton t trong qui trnh tnh ton biu thc, c 3 loi ton t : ton t s hc : c u tin cao nht trong qui trnh tnh ton biu thc. ton t so snh : c u tin k tip. ton t lun l v bitwise : c u tin thp nht. Trong cc slide sau, chng ta s trnh by chi tit cc ton t VB thuc tng loi trn. Chng 7 : Biu thc VB 90 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 179 Cc ton t s hc Ty thuc kiu ca cc ton hng tham gia m ta c php dng nhng ton t no trn chng s lng ton t c gi tr trn tng kiu d liu l khc nhau phi hc v nh t t. D liu s l loi d liu thng c x l nht trong cc ng dng (may mn cho chng ta v ta quen vi ton hc). Cc ton t trn d liu s l : ton t '&' : ni kt 2 chui thnh 1 chui. ton t '+' : cng 2 i lng. ton t '-' : tr i lng 2 ra khi i lng 1. ton t '*' : nhn 2 i lng. ton t '/' : chia i lng 1 cho i lng 2. ton t '\' : chia nguyn. ton t Mod : ly phn d ca php chia nguyn. ton t '^' : ly tha. Chng 7 : Biu thc VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 180 C php : expr1 & expr2 (kt qu) ni kt 2 ton hng kiu chui thnh 1 chui mi, nu 1 trong 2 ton hng thuc kiu s th n s c i thnh dng chui trc khi thc hin ni kt. V d : Dim MyStr As String MyStr = "Hello" & " World" ' kt qu l "Hello World". MyStr = "Check " & 123 & " Check" ' kq l "Check 123 Check". lu nn c k t trng trong cc chui con sao cho ni kt chui kt qu d c. Ton t '&' ni kt 2 chui Chng 7 : Biu thc VB 91 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 181 Ton t '+' trn d liu s C php : expr1 + expr2 (kt qu) hoc + expr1 Nu c 2 ton hng u l s th kiu kt qu l kiu chnh xc nht ca php + theo th t sau : Byte, Integer, Long, Single, Double, Currency, Decimal vi cc ngoi l sau : Chng 7 : Biu thc VB Variant cha Long kt qu kiu Variant cha gi tr Integer v b trn Variant cha Integer kt qu kiu Variant cha gi tr Byte v b trn Date 1 ton hng Date,1 ton hng kiu khc Variant cha Double kt qu kiu Variant cha gi tr Single, Long, Date v b trn Double 1 ton hng Single,1 ton hng Long th kt qu l : Nu Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 182 Ton t '+' trn d liu s (tt) Nu kiu ca c 2 ton hng u l Variant th vic xc nh ng ngha php + v kiu kt qu s theo qui lut ca bng sau : Cng 1 l Variant cha s, 1 l Variant cha chui Ni kt 2 chui c 2 ton hng l Variant cha chui Cng c 2 ton hng l Variant cha s th : Nu Chng 7 : Biu thc VB 92 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 183 Ton t '+' trn d liu s (tt) Nu t nht 1 ton hng khng phi Variant th vic xc nh ng ngha php + v kiu kt qu s theo qui lut ca bng sau : Ni kt 2 chui 1 l chui, 1 l Variant gi tr khc Null Cng 1 l s, 1 l Variant gi tr khc Null kt qu l ton hng cn li 1 biu thc l Variant cha Empty kt qu l Null 1 trong 2 ton hng l Null A Type mismatch error 1 l s v 1 l chui Ni kt 2 chui c 2 ton hng l chui Cng c 2 ton hng l d liu s th : Nu Chng 7 : Biu thc VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 184 Ton t '-' trn d liu s C php : expr1 - expr2 (kt qu) hoc - expr1 Kiu kt qu thng l kiu chnh xc nht ca php - theo th t sau : Byte, Integer, Long, Single, Double, Currency, Decimal vi cc ngoi l sau : Chng 7 : Biu thc VB Date 1 ton hng Date,1 ton hng kiu khc Variant cha Long kt qu kiu Variant cha gi tr Integer v b trn Double c 2 tong hng Date Variant cha Double kt qu kiu Variant cha gi tr Single, Long, Date v b trn Double 1 ton hng Single,1 ton hng Long th kt qu l : Nu 93 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 185 Ton t '*' trn d liu s C php : expr1 * expr2 (kt qu) Kiu kt qu thng l kiu chnh xc nht ca php * theo th t sau : Byte, Integer, Long, Single, Double, Currency, Decimal vi cc ngoi l sau : Chng 7 : Biu thc VB Variant cha Long kt qu kiu Variant cha gi tr Integer v b trn Variant cha Integer kt qu kiu Variant cha gi tr Byte v b trn Variant cha Double kt qu kiu Variant cha gi tr Single, Long, Date v b trn Double 1 ton hng Single,1 ton hng Long th kt qu l : Nu Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 186 Ton t '/' trn d liu s C php : expr1 / expr2 (kt qu) Kiu kt qu thng l kiu Double hay Variant cha Double vi cc ngoi l sau : Chng 7 : Biu thc VB Decimal 1 ton hng Decimal Variant cha Single, nu trn th i thnh Variant cha Double c 2 ton hng l variant cha tr Byte, Integer, Single Single, nu trn th bo sai c 2 ton hng l Byte, Integer,Single th kt qu l : Nu 94 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 187 Ton t '\' v Mod trn d liu s C php : expr1 \ expr2 (kt qu) y l php chia nguyn, 2 ton hng c i v dng nguyn (c lm trn) trc khi thc hin php chia. Kiu kt qu hoc l Byte, Integer, Long hoc l Variant cha tr Byte, Integer, Long. V d : 19 \ 6.7 kt qu l 2 C php : expr1 Mod expr2 (kt qu) y l php ly phn d ca php chia nguyn, 2 ton hng c i v dng nguyn (c lm trn) trc khi thc hin php chia. Kiu kt qu hoc l Byte, Integer, Long hoc l Variant cha tr Byte, Integer, Long. V d : 19 Mod 6.7 kt qu l 5 Chng 7 : Biu thc VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 188 Ton t '^' trn d liu s C php : number ^ exponent (kt qu) y l php ly tha, 2 ton hng thuc kiu s (Byte, Integer, Long, Single, Double,...) vi hn ch l nu phn m l s nguyn th phn c s (number) mi c php m. Kiu kt qu hoc l Double hoc l Variant cha tr Double. V d : (-5) ^ 3 kt qu l -125.0 3 ^ 3 ^ 3 kt qu l 19683.0 3.2 ^ 2.7 kt qu l 23.115587799 Chng 7 : Biu thc VB 95 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 189 C php : expr1 op expr2 (kt qu) 2 ton hng thng l kiu s hay chui. Kt qu lun l kiu lun l (nhn 1 trong 2 tr True, False). op l 1 trong cc ton t so snh sau : < : php ton nh hn <= : php ton nh hn hoc bng > : php ton ln hn >= : php ton ln hn hoc bng = : php ton so snh bng <> : php ton khc nhau (khng bng) Ngoi cc ton t so snh thng thng trn, VB cn cung cp 2 ton t so snh c bit sau (vi ng ngha c bit s c trnh by trong cc slide sau) : expr1 Like expr2 (kt qu) expr1 Is expr2 (kt qu) Cc ton t so snh d liu Chng 7 : Biu thc VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 190 C php : string Like pattern (kt qu) xc nh xem chui c th string c thuc v pattern khng. Nu thuc v th cho kt qu True, nu khng thuc v th cho kt qu False. V d : MyCheck = "aBBBa" Like "a*a" ' Returns True. MyCheck = "F" Like "[A-Z]" ' Returns True. MyCheck = "F" Like "[!A-Z]" ' Returns False. MyCheck = "a2a" Like "a#a" ' Returns True. MyCheck = "aM5b" Like "a[L-P]#[!c-e]" ' Returns True. MyCheck = "BAT123khg" Like "B?T*" ' Returns True. MyCheck = "CAT123khg" Like "B?T*" ' Returns False. Ton t Like Chng 7 : Biu thc VB 96 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 191 Hnh vi ca ton t Like ph thuc vo 1 trong 2 ch do pht biu "Option Compare" qui nh : Option Compare Binary ' default Option Compare Text Trong ch so snh Binary, VB da vo th t sp xp cc k t trn c s m nh phn ca cc k t. Trong bng m ISO8859-1, ta c : A < B < E < Z < a < b < e < z < < < < < < Trong ch so snh Text, VB da vo th t sp xp cc k t trn c s ng ngha k t v thng tin "locale" ca Windows (do khng phn bit ch thng v hoa) : (A=a) < (=) < (B=b) < (E=e) < (=) < (Z=z) < (=) Thng tin v ch so snh cng c p dng cho cc ton t so snh thng thng trn cc chui. Ton t Like (tt) Chng 7 : Biu thc VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 192 Ton hng string l chui k t c th, cn ton hng pattern l chui cha cc k t c th v/hoc cc k t c bit c ngha theo bng sau : Ton t Like (tt) Chng 7 : Biu thc VB Bt k 1 k t no ? Tng ng vi : K t trong pattern Bt k k t khng c trong charlist. [!charlist] Bt k k t c trong charlist. [charlist] Bt k k s thp phn no (09). # bt k chui k t no (di t 0 k t tr ln) * dng '-' miu t 1 phm vi xc nh bi 2 cn di v trn. dng c php [c] miu t cc k t c bit. 97 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 193 C php : ObjVar1 Is ObjVar1 (kt qu) xc nh xem 2 bin ObjVar1 v ObjVar2 c cha cng tham kho n 1 i tng duy nht khng. Nu ng vy th kt qu ca biu thc l True, nu khng tr biu thc l False. V d : Dim MyObject, YourObject, ThisObject, ThatObject Dim MyCheck As Boolean Set YourObject = New Clipboard ' to object v gn tham kho. Set ThisObject = YourObject Set ThatObject = New Clipboard MyCheck = YourObject Is ThisObject ' kt qu True. MyCheck = ThatObject Is ThisObject ' kt qu False. Ton t Is Chng 7 : Biu thc VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 194 Cc ton t lun l Cc ton t lun l cho php thc hin 1 hnh vi lun l trn 1 hay 2 ton hng thuc kiu lun l cho kt qu l 1 gi tr lun l. Cc ton t lun l l : ton t And : php ton 'v'. ton t Or : php ton 'hoc'. ton t Xor : php ton loi tr. ton t Not : php ton o. ton t Eqv : php ton tng ng. ton t Imp : php ton ko theo. Nu c 2 ton hng u l s th cc php ton trn s thc hin hnh vi ca chng trn tng cp bit tng ng ca 2 ton hng (s gii thch c th sau). Chng 7 : Biu thc VB 98 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 195 Ton t lun l And C php : expr1 And expr2 (kt qu) kt qu c xc nh theo bng sau : Chng 7 : Biu thc VB False False Null Null True Null Null Null False True Null False True expr2 False False False False False False Null True Null Null False True True True kt qu expr1 Ghi ch : o kt qu ch True khi c 2 ton hng l True. o Kt qu l False nu c 1 ton hng l False. Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 196 Ton t bitwise And C php : expr1 And expr2 (kt qu) 2 ton hng thuc kiu s v ton t And thc hin hnh vi trn tng cp bit tng ng ca 2 ton hng, kt qu trn tng cp bit c xc nh theo bng sau : Chng 7 : Biu thc VB 0 1 0 1 biti of expr2 0 0 0 0 0 1 1 1 kt qu biti of expr1 99 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 197 Ton t lun l Or C php : expr1 Or expr2 (kt qu) kt qu c xc nh theo bng sau : Chng 7 : Biu thc VB Null False Null True True Null Null Null False True Null False True expr2 Null False False False True False True True Null Null True True True True kt qu expr1 Ghi ch : o kt qu l True nu c 1 ton hng l True. o Kt qu ch False khi c 2 ton hng u l False. Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 198 Ton t bitwise Or C php : expr1 Or expr2 (kt qu) 2 ton hng thuc kiu s v ton t Or thc hin hnh vi trn tng cp bit tng ng ca 2 ton hng, kt qu trn tng cp bit c xc nh theo bng sau : Chng 7 : Biu thc VB 0 1 0 1 biti of expr2 0 0 1 0 1 1 1 1 kt qu biti of expr1 100 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 199 Ton t lun l Xor C php : expr1 Xor expr2 (kt qu) kt qu c xc nh theo bng sau : Chng 7 : Biu thc VB Null False Null Null True Null Null Null False True Null False True expr2 Null False False False True False Null True Null Null True True False True kt qu expr1 Ghi ch : o Nu c 1 ton hng l Null th kt qu l Null. o Kt qu l True nu 2 ton hng khc nhau v khc Null. o Kt qu l False nu 2 ton hng ging nhau v khc Null. Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 200 Ton t bitwise Xor C php : expr1 Xor expr2 (kt qu) 2 ton hng thuc kiu s v ton t Xor thc hin hnh vi trn tng cp bit tng ng ca 2 ton hng, kt qu trn tng cp bit c xc nh theo bng sau : Chng 7 : Biu thc VB 0 1 0 1 biti of expr2 0 0 1 0 1 1 0 1 kt qu biti of expr1 101 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 201 Ton t lun l Eqv C php : expr1 Eqv expr2 (kt qu) kt qu c xc nh theo bng sau : Chng 7 : Biu thc VB Null False Null Null True Null Null Null False True Null False True expr2 Null False True False False False Null True Null Null False True True True kt qu expr1 Ghi ch : o Nu c 1 ton hng l Null th kt qu l Null. o Kt qu l True nu 2 ton hng ging nhau v khc Null. o Kt qu l False nu 2 ton hng khc nhau v khc Null. Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 202 Ton t bitwise Eqv C php : expr1 Eqv expr2 (kt qu) 2 ton hng thuc kiu s v ton t Eqv thc hin hnh vi trn tng cp bit tng ng ca 2 ton hng, kt qu trn tng cp bit c xc nh theo bng sau : Chng 7 : Biu thc VB 0 1 0 1 biti of expr2 1 0 0 0 0 1 1 1 kt qu biti of expr1 102 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 203 Ton t lun l Imp C php : expr1 Imp expr2 (kt qu) kt qu c xc nh theo bng sau : Chng 7 : Biu thc VB Null False Null True True Null Null Null False True Null False True expr2 True False True False True False Null True Null Null False True True True kt qu expr1 Ghi ch : o Nu ton hng 1 l False th kt qu l True. o Kt qu l True nu 2 ton hng u l True. Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 204 Ton t bitwise Imp C php : expr1 Imp expr2 (kt qu) 2 ton hng thuc kiu s v ton t Imp thc hin hnh vi trn tng cp bit tng ng ca 2 ton hng, kt qu trn tng cp bit c xc nh theo bng sau : 0 1 0 1 biti of expr2 1 0 1 0 0 1 1 1 kt qu biti of expr1 Chng 7 : Biu thc VB 103 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 205 Ton t lun l v bitwise Not C php : Not expr (kt qu) kt qu ca biu thc theo bng sau : Null Null True False False True kt qu expr Chng 7 : Biu thc VB C php : Not expr (kt qu) ton hng thuc kiu s v ton t Not thc hin hnh vi trn tng bit tng ng ca ton hng, kt qu trn tng bit c xc nh theo bng trn : 1 0 0 1 kt qu biti of expr Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 206 7.3 Qui trnh tnh biu thc Nu biu thc c xy dng ch trn cc biu thc c bn th qui trnh tnh biu thc chnh l qui trnh xy dng biu thc . Nu biu thc c xy dng trn cc biu thc con bt k th qui trnh tnh ton nh sau : tnh t tri sang phi, mi ln gp 1 ton t (k hiu l CurrentOp) th phi nhn trc ton t i ngay sau n (SussesorOp), so snh u tin ca 2 ton t v ra quyt nh nh sau : nu khng c SussesorOp th tnh ngay ton t CurrentOp (trn 1 hay 2 ton hng ca n). nu ton t CurrentOp c u tin cao hn hay bng ton t SussesorOp th tnh ngay ton t CurrentOp (trn 1 hay 2 ton hng ca n). nu ton t CurrentOp c u tin thp hn SussesorOp th c gng thc hin ton t SussesorOp trc. Vic c gng ny cng c th b tm hon nu ton t i sau ton t SussesorOp c u tin cao hn SussesorOp,... Khi ton t SussesorOp c thc hin xong th ton t ngay sau SussesorOp tr thnh ton t i ngay sau CurrentOp vic kim tra xem CurrentOp c c thc hin khng s c lp li. Chng 7 : Biu thc VB 104 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 207 Cc ton t s hc c u tin cao nht, ri ti cc ton t so snh v sau cng l cc ton t lun l : Gia cc ton t s hc, quyn u tin t cao xung thp theo t t t trn xung trong bng sau. Cc ton t so snh c cng th t u tin. Gia cc ton t lun l, quyn u tin t cao xung thp theo t t t trn xung trong bng sau. Arithmetic Comparison Logical 1.Exponentiation (^) 8.Equality (=) 9. Not 2.Negation () 8.Inequality (<>) 10.And 3.Multiplication and division (*, /) 8.Less than (<) 11.Or 4.Integer division (\) 8.Greater than (>) 12.Xor 5.Modulus arithmetic (Mod) 8.Less than or equal to (<=) 13.Eqv 6.Addition and subtraction (+, ) 8.Greater than or equal to (>=) 14.Imp 7.String concatenation (&) 8.Like, Is 7.4 Th t u tin c th ca cc ton t Chng 7 : Biu thc VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 208 Th d sau l biu thc tnh gi tr mi ca phn t Display trong chng trnh MiniCalculator trong trng hp ngi dng mi nhp thm 1 k s phn l, trong : dblDispValue l bin cha tr ca Display. intNegative l bin miu t du ca tr Display (1 : dng, -1 : m). d l bin cha k s mi nhp. bytPosDigit l bin miu t v tr k s va nhp bn phi du '.'. dblDispValue = dblDispValue + intNegative * d * (10 ^ -bytPosDigit) Th d v qui trnh tnh biu thc Chng 7 : Biu thc VB 1 2 3 4 5 Ghi ch : theo th t, ton t ly tha c tnh trc ton t -, nhng y tnh c lu tha, ta buc phi xc nh c ton hng i sau n v nh vy ton t - phi c tnh trc trong trng hp ny. 105 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 209 Chng 8 CC LNH THC THI VB Chng 8 : Cc lnh thc thi VB MN TIN HC 8.1 Tng qut v ngn ng VB 8.2 Cc lnh gn. 8.3 Cc lnh kim tra iu kin & r nhnh 8.4 Cc lnh lp 8.5 Vn lng nhau gia cc lnh 8.6 Thot t ngt khi khi cp iu khin 8.7 Lnh gi hm/th tc Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 210 8.1 Tng qut v cc lnh thc thi VB Ta bit gii thut gii quyt 1 vn no l trnh t cc cng vic nh hn, nu ta thc hin ng trnh t cc cng vic nh hn ny th s gii quyt c vn ln. VB (hay ngn ng lp trnh khc) cung cp 1 tp cc lnh thc thi, mi lnh thc thi c dng miu t 1 cng vic nh trong 1 gii thut vi tng chung nh sau : Nu tn ti lnh thc thi miu t c cng vic nh ca gii thut th ta dng lnh thc thi ny. Nu cng vic nh vn cn qu phc tp v khng c lnh thc thi no miu t c th ta dng lnh gi th tc (Function, Sub, Property) trong th tc l trnh t cc lnh thc hin cng vic nh ny... Hu ht cc lnh thc thi c cha biu thc v dng kt qu ca biu thc ny quyt nh cng vic k tip cn c thc hin ta thng gi cc lnh thc thi l cc cu trc iu khin. Chng 8 : Cc lnh thc thi VB 106 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 211 Tng qut v cc lnh thc thi VB (tt) d hc, d nh v d dng, VB (cng nh cc ngn ng khc) ch cung cp 1 s lng rt nh cc lnh thc thi : Nhm lnh khng iu khin : o Lnh gn d liu vo 1 bin. o Lnh gn tham kho n i tng vo 1 bin tham kho. Nhm lnh to quyt nh : o Lnh kim tra iu kin lun l If ... Then ... Else o Lnh kim tra iu kin s hc Select Case Nhm lnh lp : o Lnh lp Do ... Loop o Lnh lp For ... Next o Lnh lp For Each ... Next Nhm lnh gi th tc : o Lnh gi th tc o Lnh thot khi cu trc iu khin Exit Chng 8 : Cc lnh thc thi VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 212 8.2 Lnh gn d liu Lnh c dng nhiu nht trong 1 chng trnh l lnh gn gi tr d liu vo 1 vng nh lu tr li d liu ny hu s dng li n sau . Chng ta thy lnh ny nhiu ln trong cc chng trc, by gi chng ta ni r hn v n. C php : lvar = expr biu thc bn phi s c tnh to ra kt qu (1 gi tr c th thuc 1 kiu c th), gi tr ny s c gn vo nh do lvar qui nh. Trc khi gn, VB s kim tra kiu ca 2 phn t (qui tc kim tra s c trnh by sau). lvar thng l 1 bin d liu c bn, nhng c th qui theo qui tc : o nu lvar l bin dy th 1 phn t dy c th l lvar. o nu lvar l bin d liu ngi dng th 1 field ca n c th l lvar. o nu lvar l bin i tng th 1 thuc tnh ca i tng c th l lvar. V d : dblDispValue = dblDispValue + intNegative * d * (10 ^ -bytPosDigit) Chng 8 : Cc lnh thc thi VB 107 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 213 Lnh gn tham kho n i tng Nh c trnh by trong chng 5, bin i tng (c kiu l Object hay tn class module no ) ch cha tham kho n i tng ch khng cha trc tip i tng. Khi mi nh ngha, nhng bin ny cha tham kho n i tng c th no, do trc khi dng chng, ta phi gn tham kho ca i tng c th vo bin. C php : Set lvar = expr biu thc bn phi s c tnh to ra kt qu l 1 tham kho n i tng, tham kho ny s c gn vo nh do lvar qui nh. Trc khi gn, VB s kim tra kiu ca 2 phn t (qui tc kim tra s c trnh by sau). lvar thng l 1 bin i tng c bn, nhng c th qui theo qui tc : o nu lvar l bin dy th 1 phn t dy c th l lvar. o nu lvar l bin d liu ngi dng th 1 field ca n c th l lvar. o nu lvar l bin i tng th 1 thuc tnh ca i tng c th l lvar. V d : Set objClipbd = New Clipboard Chng 8 : Cc lnh thc thi VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 214 8.3 Lnh kim tra iu kin lun l IF Cho php da vo kt qu lun l (tnh c t 1 biu thc lun l) quyt nh thi hnh 1 trong 2 nhnh lnh. Sau khi thc hin 1 trong 2 nhnh lnh, chng trnh s tip tc thi hnh lnh ngay sau lnh IF. C nhiu c php khc nhau : C php 1a : If condition Then Statement1 [Else Statement2 ] condition l 1 biu thc lun l miu t iu kin cn kim tra, n c kt qu True/False. Statement1, Statement2 l lnh thc thi VB bt k. nu kt qu l True th thi hnh Statement1. nu kt qu l False v c dng Else th thi hnh Statement2. V d : If blnThaybenh Then MsgBox("Thy bnh. Sinh vin v ngh") Chng 8 : Cc lnh thc thi VB 108 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 215 Lnh kim tra iu kin lun l IF (tt) C php 2 : If condition Then [Statement]+ End If condition l 1 biu thc lun l miu t iu kin cn kim tra, n c kt qu True/False. [Statement]+ l danh sch cc lnh thc thi VB bt k. nu kt qu l True th thi hnh cc lnh [Statement]+, nu kt qu l False thi thi. V d : If del >=0 Then x1 = (-b-sqr(del))/(2*a) x2 = (-b+sqr(del))/(2*a) MsgBox("x1= " & x1 & " ,x2= " & x2) End If Chng 8 : Cc lnh thc thi VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 216 Lnh kim tra iu kin lun l IF (tt) C php 3 : If condition Then [Statement1]+ Else [Statement2]+ End If condition l 1 biu thc lun l miu t iu kin cn kim tra, n c kt qu True/False. [Statement1]+, [Statement2]+ l danh sch cc lnh thc thi VB bt k. nu kt qu l True th thi hnh cc lnh [Statement1]+, nu kt qu l False th thi hnh cc lnh [Statement2]+. Chng 8 : Cc lnh thc thi VB 109 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 217 V d : If del >=0 Then x1 = (-b-sqr(del))/(2*a) x2 = (-b+sqr(del))/(2*a) MsgBox("x1= " & x1 & " ,x2= " & x2) Else MsgBox("Phng trnh v nghim") End If V d : hiu chnh tr phn t Display khi ngi dng nhp thm k s d If (blnFpoint) Then ' phn l bytPosDigit = bytPosDigit + 1 dblDispValue = dblDispValue + intPosNeg * d * (10 ^ -bytPosDigit) Else ' phn nguyn dblDispValue = dblDispValue * 10 + intPosNeg * d End If Lnh kim tra iu kin lun l IF (tt) Chng 8 : Cc lnh thc thi VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 218 Lnh kim tra iu kin s hc Select C php : Select Case condition Case expr1 [Statement1]+ Case expr2 [Statement2]+ ... Case Else [Statementn]+ End Select condition l 1 biu thc s hc miu t iu kin cn kim tra, n c gi tr s. [Statement1]+, [Statement2]+ l danh sch cc lnh thc thi VB bt k. ty gi tr ca iu kin trng vi nhnh Case no m cc lnh VB trong nhnh c thi hnh, sau VB s thi hnh lnh ngay sau lnh Select. Chng 8 : Cc lnh thc thi VB 110 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 219 Th d sau l lnh Select phc v vic thc hin 1 nt lnh trong trnh MiniCalculator m ta s thc hnh : Select Case bytOperationId Case IDC_ADD ' php cng dblDispValue = dblOldValue + dblDispValue txtDisplay.Text = Str(dblDispValue) Case IDC_SUB ' php tr dblDispValue = dblOldValue - dblDispValue txtDisplay.Text = Str(dblDispValue) Case IDC_MUL ' php nhn dblDispValue = dblOldValue * dblDispValue txtDisplay.Text = Str(dblDispValue) Case IDC_DIV ' php chia dblDispValue = dblOldValue / dblDispValue txtDisplay.Text = Str(dblDispValue) End Select Lnh kim tra iu kin s hc Select (tt) Chng 8 : Cc lnh thc thi VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 220 VB cn cung cp 1 lnh khc kim tra iu kin s hc, nhng yu hn lnh Select, l lnh On...GoSub (thc ra y l lnh ca ngn ng Basic nguyn thy, Microsoft thy cha trong sng nn mi cung cp thm lnh Select). C php nh sau : On condition GoSub label1, label2, label3,... condition l 1 biu thc s hc v nn c gi tr t 1 ti n, trong n l s lng nhn lnh c lit k sau t kha GoSub. nu gi tr ca condition l i th my s gi 'subroutine' bt u t lnh c nhn l labeli. 'subroutine' l 1 danh sch gm nhiu lnh thc hin 1 cng vic no (c th ln, c th nh) vi c im lnh cui trong danh sch l lnh Return tr iu khin v lnh gi GoSub. xc nh c lnh cn nhy n, VB cho php dng 1 nhn gi nh (danh hiu) hay 1 nhn s (s) kt hp vi lnh cn tham kho (ng lm dng tnh cht ny t nhn cho mi lnh trong chng trnh). Lnh kim tra iu kin s hc On...GoSub Chng 8 : Cc lnh thc thi VB 111 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 221 on code sau c cng dng nh slide th d dng lnh Select case (nu IDC_ADD = 1, IDC_SUB = 2, IDC_MUL = 3, IDC_DIV = 4) : On bytOperationId GoSub LblAdd, LblSub, LblMul, LblDiv ... LblAdd: dblDispValue = dblOldValue + dblDispValue txtDisplay.Text = Str(dblDispValue) return ' tr u khin v lnh GoSub LblSub: dblDispValue = dblOldValue - dblDispValue txtDisplay.Text = Str(dblDispValue) return ' tr u khin v lnh GoSub LblMul: dblDispValue = dblOldValue * dblDispValue txtDisplay.Text = Str(dblDispValue) return ' tr u khin v lnh GoSub LblDiv: dblDispValue = dblOldValue / dblDispValue txtDisplay.Text = Str(dblDispValue) return ' tr u khin v lnh GoSub Chng 8 : Cc lnh thc thi VB Lnh kim tra iu kin s hc On...GoSub (tt) Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 222 1 bin th khc ca On...GoSub l On...Goto, y iu khin s khng tr li lnh On...Goto na. on code sau c cng dng nh slide trc : On bytOperationId GoTo LblAdd, LblSub, LblMul, LblDiv Continue: ... LblAdd: dblDispValue = dblOldValue + dblDispValue txtDisplay.Text = Str(dblDispValue) Goto Continue ' nhy khng iu kin v nhn Continue LblSub: dblDispValue = dblOldValue - dblDispValue txtDisplay.Text = Str(dblDispValue) Goto Continue LblMul: dblDispValue = dblOldValue * dblDispValue txtDisplay.Text = Str(dblDispValue) Goto Continue LblDiv: dblDispValue = dblOldValue / dblDispValue txtDisplay.Text = Str(dblDispValue) Goto Continue Lnh kim tra iu kin s hc On...GoTo Chng 8 : Cc lnh thc thi VB 112 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 223 8.4 Lnh lp Do...Loop C php 1 : Do While condition [Statement]+ Loop condition l 1 biu thc lun l miu t iu kin cn kim tra, n c kt qu True/False. [Statement]+ l danh sch cc lnh thc thi VB bt k. tnh gi tr condition, nu kt qu l True th thi hnh cc lnh [Statement]+, ri lp li qui trnh trn... n lc condition c gi tr False th ngng vng lp thch hp cho vic lp t 0 ti n ln. V d : tnh 10! giaithua = 1 i = 1 Do While i <=10 giaithua = giaithua * i i = i+1 Loop Chng 8 : Cc lnh thc thi VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 224 Lnh lp While...Wend VB cn cung cp 1 lnh khc c chc nng ging nh lnh Do While ... Loop, c php ca n nh sau : While condition [Statement]+ Wend condition l 1 biu thc lun l miu t iu kin cn kim tra, n c kt qu True/False. [Statement]+ l danh sch cc lnh thc thi VB bt k. tnh gi tr condition, nu kt qu l True th thi hnh cc lnh [Statement]+, ri lp li qui trnh trn... n lc condition c gi tr False th ngng vng lp thch hp cho vic lp t 0 ti n ln. V d : tnh 10! giaithua = 1 i = 1 While i <=10 giaithua = giaithua * i i = i+1 Wend Chng 8 : Cc lnh thc thi VB 113 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 225 Lnh lp Do...Loop (tt) C php 2 : Do [Statement]+ Loop While condition condition l 1 biu thc lun l miu t iu kin cn kim tra, n c kt qu True/False. [Statement]+ l danh sch cc lnh thc thi VB bt k. thi hnh cc lnh [Statement]+ ri kim tra condition, nu c gi tr True th lp li qui trnh trn n lc n c gi tr False th ngng vng lp thch hp cho vic lp t 1 ti n ln. V d : tnh 10! giaithua = 1 i = 1 Do giaithua = giaithua * i i = i+1 Loop While i <=10 Chng 8 : Cc lnh thc thi VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 226 Lnh lp Do...Loop (tt) C php 3 : Do Until condition [Statement]+ Loop C php 4 : Do [Statement]+ Loop Until condition condition l 1 biu thc lun l miu t iu kin cn kim tra, n c kt qu True/False. [Statement]+ l danh sch cc lnh thc thi VB bt k. ging vi c php 1 v 2 nhng thay v iu kin thc hin vng lp l True th by gi ngc li l False mi thi hnh vng lp. Chng 8 : Cc lnh thc thi VB 114 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 227 Lnh lp For...Next C php 1 : For counter = start To end [Step increment] [Statement]+ Next [counter] counter l bin iu khin s ln lp, start l biu thc qui nh gi tr u ca counter, end qui nh gi tr cui, increment miu t bc tng (m l gim, default l 1). [Statement]+ l danh sch cc lnh thc thi VB bt k. thi hnh cc lnh [Statement]+ vi s ln c qui nh bi bin iu khin. V d : tnh 10! giaithua =1 for i = 1 to 10 giaithua = giaithua * i Next i Chng 8 : Cc lnh thc thi VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 228 Lnh lp For...Next (tt) C php 2 : For Each element In group [Statement]+ Next [element] group l 1 collection cc i tng hay 1 dy cc phn t. element l bin cha tng i tng hay tng phn t trong group. Statement l 1 lnh thc thi VB bt k. thi hnh cc lnh [Statement]+ vi tng phn t trong 1 dy hay vi tng i tng trong 1 collection. V d : hin th cc i tng ha ca 1 ng dng Dim objGraphObj As Object ... For Each GraphObj In GraphObjList GraphObj.Draw ' hin th i tng Next GraphObj Chng 8 : Cc lnh thc thi VB 115 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 229 8.5 Cc lnh lng nhau Nh ta thy trong c php ca hu ht cc lnh VB u c cha thnh phn Statement, y l 1 lnh thc thi VB bt k ta gi c php nh ngha lnh VB l qui to ra cc lnh VB lng nhau. Ta gi cp ngoi cng l cp 1, cc lnh hin din trong c php ca lnh cp 1 c gi l lnh cp 2, cc lnh hin din trong c php ca lnh cp 2 c gi l lnh cp 3,... d c, cc lnh cp th i nn dng hng nh n k t Tab. V d : on chng trnh tnh ma trn tng ca 2 ma trn Dim A(N,N) As Double, B(N,N) As Double Dim C(N,N) As Double For i = 1 to n ' duyt theo hng For j = 1 to n ' duyt theo ct C(i,j) = A(i,j) + B(i,j) Next j Next i Chng 8 : Cc lnh thc thi VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 230 8.6 Vn thot t ngt khi cp iu khin Nh ta thy trong c php ca hu ht cc lnh VB u c cha thnh phn [Statement]+. Theo trnh t thi hnh thng thng, cc lnh bn trong ny s c thc thi tun t, ht lnh ny n lnh khc cho n lnh cui, lc ny th vic thi hnh lnh cha mi c th kt thc. Tuy nhin trong 1 vi trng thi thi hnh c bit, ta mun thot ra khi lnh cha t ngt ch khng mun thc thi ht cc lnh con trong danh sch. phc v yu cu ny, VB cung cp lnh Exit vi c php sau y : Exit [For | Do | Property | Sub | Function] Lu VB cho php dng Exit thot khi trc tip ra nhiu cp. VB khng cung cp lnh Exit If v Exit While thot khi lnh If v lnh While dng lnh Do ... Loop thay th lnh While v/hoc lnh Goto (c trnh by sau). Chng 8 : Cc lnh thc thi VB 116 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 231 thy vic dng cc lnh lng nhau v yu cu cn thot khi t ngt 1 cp iu khin no , ta hy xem th tc sau, n cho php in ra tt c cc font ch m c th dng hin th ln mn hnh ln in ra my in. Private Sub Form_Click() Dim objSFont As Object, objPFont As Object ' duyt tng font mn hnh For Each objSFont In Screen.Fonts() ' duyt tng font my in For Each objPFont In Printer.Fonts() If objSFont = objPFont Then Print objSfont End If Next objPFont Next objSFont End Sub Vn thot t ngt khi cp iu khin (tt) Chng 8 : Cc lnh thc thi VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 232 Quan st lnh If ta thy rng iu kin ch ng ti a 1 ln trong vng lp objPFont, do khi tha iu kin ri th ta nn thot khi vng lp ny ngay ( thi gian chy t hn hiu qu hn). Private Sub Form_Click() Dim objSFont As Object, objPFont As Object ' duyt tng font mn hnh For Each objSFont In Screen.Fonts() ' duyt tng font my in For Each objPFont In Printer.Fonts() If objSFont = objPFont Then Print objSfont Exit For 'thot t ngt khi vng For trong cng End If Next objPFont Next objSFont End Sub Vn thot t ngt khi cp iu khin (tt) Chng 8 : Cc lnh thc thi VB 117 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 233 Cng th d slide trc, nhng nu ta ch mun in tn font ch u tin c dng bi c mn hnh v my in, th ta phi dng lnh Exit Sub sau khi in tn font u tin ny. Private Sub Form_Click() Dim SFont As objObject, objPFont As Object ' duyt tng font mn hnh For Each objSFont In Screen.Fonts() ' duyt tng font my in For Each objPFont In Printer.Fonts() If objSFont = objPFont Then Print objSfont Exit Sub 'thot t ngt khi th tc End If Next objPFont Next objSFont End Sub Vn thot khi cp iu khin t ngt (tt) Chng 8 : Cc lnh thc thi VB Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 234 Th tc l phng tin phn chia code ca module (class, form, standard) ra nhiu n v nh hn d qun l v s dng. y l vn kh ln v s c trnh by chi tit trong chng k. y chng ta gii thiu 1 vi tng ban u v th tc gii thiu lnh gi (s dng) chng. Th tc l 1 danh sch cc lnh VB thc hin 1 chc nng r rng (v thng n gin), cc lnh ny c hp thnh 1 n v v c gn cho 1 tn nhn dng, tn ny nn gi c chc nng ca th tc (th d ta t danh sch cc lnh VB tnh cos ca gc x trong 1 n v v t tn cho n l Cos). th tc c s dng cao, khi nh ngha n ngi ta kt hp 1 danh sch tham s hnh thc vi n. Mi tham s hnh thc miu t 1 d liu m th tc s x l khi th tc c thi hnh. Cc tham s l phng tin trao i d liu gia lnh gi v code ca th tc. Th d ta kt hp vi th tc Cos 1 tham s l gc x, ta ni Cos (x) l th tc tnh Cos ca gc x. 8.7 Lnh gi th tc Chng 8 : Cc lnh thc thi VB 118 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 235 Sau khi nh ngha th tc, ta c th dng (gi) n. Th tc ch c thi hnh khi ngi ta gi n bng lnh gi th tc. C php ca lnh gi nh sau : [Call] name [arglist] V d : gi s ta nh ngha (vit) 1 th tc sau y : Private Sub Update_Display(d As Byte) n cho php hiu chnh gi tr Display sau khi ngi dng n thm k s d. Nh vy khi ngi dng n thm k s 5, ta s thc hin gi th tc nh sau : Call Update_Display (5) hay : Update_Display (5) Lu : Trong trng hp gi th tc khng c bt k tham s no ta nn dng thm t kha "Call' chng trnh trong sng, d c. Chng 8 : Cc lnh thc thi VB Lnh gi th tc (tt) Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 236 MN TIN HC Chng 9 NH NGHA TH TC & S DNG Chng 9 : nh ngha th tc & s dng 9.1 Th tc & tm vc s dng th tc 9.2 C php nh ngha hm. 9.3 C php nh ngha th tc 9.4 Gi th tc 9.5 C ch truyn tham s 9.6 Cc th tc nh ngha sn 119 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 237 Nhc li cu trc t chc 1 chng trnh Mt chng trnh thng cung cp nhiu chc nng cho ngi dng Chng trnh thng l 1 h thng phc tp. d qun l v xy dng chng trnh, ngi ta thng chia n ra nhiu n v nh hn. Hin c 2 phng php chia nh chng trnh : phng php c cu trc : chng trnh c chia nh thnh nhiu module chc nng, mi module cha nhiu im nhp (entry), mi im nhp cung cp 1 dch v (chc nng) r rng, n gin no . Ta gi mi im nhp l th tc thc hin chc nng tng ng. phng php hng i tng : chng trnh c chia nh thnh nhiu i tng, mi i tng cha nhiu im nhp (entry), mi im nhp cung cp 1 dch v (chc nng) r rng, n gin no . Ta gi mi im nhp l th tc thc hin chc nng tng ng. Tm li, d dng phng php chia nh chng trnh no th n v chc nng nh nht m ngi lp trnh c th xy dng v dng (gi) li nhiu ln trong chng trnh l th tc. Chng 9 : nh ngha th tc & s dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 238 9.1 Phn loi th tc trong VB Nu ta phn tch chng trnh theo cu trc th chng trnh VB l tp cc standard module, trong mi module ta c th nh ngha n th tc khc nhau thuc 1 trong 2 dng : th tc - Sub : 1 on lnh thc thi VB thc hin 1 chc nng r rng, n gin nhng khng tr v gi tr km theo tn th tc. hm - Function : 1 on lnh thc thi VB thc hin 1 chc nng r rng, n gin v tr v gi tr km theo tn hm. Nu ta phn tch chng trnh theo hng i tng th chng trnh VB l tp cc form hay class module, trong mi module ta c th nh ngha n th tc khc nhau thuc 1 trong 3 dng : th tc - Sub : 1 on lnh thc thi VB thc hin 1 chc nng r rng, n gin nhng khng tr v gi tr km theo tn th tc. hm - Function : 1 on lnh thc thi VB thc hin 1 chc nng r rng, n gin v tr v gi tr km theo tn hm. truy xut thuc tnh - Property : 1 on lnh thc thi VB c/ghi 1 thuc tnh tng ng ca i tng. C 3 th tc loi ny l Get, Set v Let. Chng 9 : nh ngha th tc & s dng 120 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 239 Tm vc s dng th tc trong VB Trong mi standard module, ta c th xc nh tm vc s dng ca tng th tc : cc b trong module : dng t kha Private trong lnh nh ngha th tc. ton cc trong chng trnh : dng t kha Public trong lnh nh ngha th tc. Trong mi form hay class module, ta c th xc nh tm vc s dng ca tng th tc : cc b trong module (i tng) : dng t kha Private trong lnh nh ngha th tc. cc b trong Project : dng t kha Friend trong lnh nh ngha th tc. cng cng (ai dng cng c) : dng t kha Public trong lnh nh ngha th tc. Cc th tc cng cng ca i tng c gi l method phn bit vi Sub/Function. V nguyn tc, cc th tc Property Get, Set v Let u phi c tm vc cng cng (dng t kha Public). Chng 9 : nh ngha th tc & s dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 240 9.2 C php nh ngha hm - Function C php nh ngha 1 hm : [Public | Private | Friend] [Static] Function name [(arglist)] [As type] [statements] [name = expression] [Exit Function] [statements] [name = expression] End Function Dng t kha Public nh ngha hm c tm vc ton cc, ngha l bt k lnh no ca chng trnh u c th gi hm Public. Dng t kha Friend nh ngha method thuc 1 class module nhng ch c tm vc cc b trong Project, ngha l ch c cc lnh trong cng Project mi c th gi thng ip n hm Friend ca i tng , cn cc lnh ngoi Project th khng thy hm Friend ca i tng ny. Chng 9 : nh ngha th tc & s dng 121 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 241 C php nh ngha hm - Function (tt) Dng t kha Private nh ngha hm c tm vc cc b trong module, ngha l ch c cc lnh trong cng module mi c th gi hm Private trong module tng ng. Dng t kha Static nh ngha cc bin cc b trong hm u l Static, ngha l gi tr ca chng vn tn ti qua cc ln gi khc nhau n hm ny. [statements] l danh sch cc lnh nh ngha bin, hng, kiu cc b trong function v cc lnh thc thi miu t chnh xc chc nng ca hm. Lnh gn name = expression cho php gn gi tr tr v cho lnh gi hm. Lnh Exit Function cho php tr ngay iu khin v lnh gi hm ny (thay v thc thi tip cc lnh cn li ca hm). Chng 9 : nh ngha th tc & s dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 242 C php nh ngha hm - Function (tt) arglist l danh sch cc tham s hnh thc, mi tham s c cch nhau bi du ',' v c nh ngha theo c php nh sau : [Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [=defaultvalue] Dng t kha Optional khai bo rng tham s tng ng l nhim trong lc gi hm : truyn hay khng cng c. Trong trng hp ny ta nn dng thm thnh phn [= defaultvalue] xc nh gi tr cn truyn nhim . Dng t kha ByRef khai bo vic truyn tham s bng tham kho, y l ch truyn tham s nhim . Ngc li dng t kha ByVal khai bo c ch truyn tham s bng gi tr. Ch c th dng t kha ParamArray cho tham s cui trong danh sch tham s, tham s ny cho php ta truyn bao nhiu tham s c th cng c. Chng 9 : nh ngha th tc & s dng 122 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 243 Th d nh ngha hm on code sau nh ngha hm tnh n! giai tha theo gii thut qui : Public Function giaithua(ByVal n As Long) As Long If n <= 0 Then ' nu n <=0 th tr v -1 giaithua = -1 Exit Function End If If n = 1 Then ' nu n = 1 th tr v kt qu l 1 giaithua = 1 Exit Function End If ' Nu n > 1 th tnh theo cng thc n! = n * (n-1)! giaithua = n * giaithua(n - 1) End Function Chng 9 : nh ngha th tc & s dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 244 9.3 C php nh ngha th tc - Sub C php nh ngha 1 th tc Sub : [Private | Public | Friend] [Static] Sub name [(arglist)] [statements] [Exit Sub] [statements] End Sub ngha ca cc t kha Public, Private, Friend, Static cng nh cc thnh phn arglist, Exit Sub, statements ging y nh trong vic nh ngha hm m chng ta gii thiu nhng slide trc. S khc bit gia hm v th tc l hm lun tr v gi tr kt hp vi tn hm, cn th tc th khng tr v tr kt hp vi tn th tc (nhng n vn c th tr kt qu v thng qua cc tham s truyn bng tham kho). Nu quan st k, ta thy cc hm x l s kin cho cc i tng giao din u l Sub, ch khng phi l Function, do t y ta dng on cu "th tc x l s kin" thay cho "hm x l s kin". Chng 9 : nh ngha th tc & s dng 123 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 245 C php nh ngha method Get thuc tnh i tng C php nh ngha 1 method Get : [Public | Private | Friend] [Static] Property Get name [(arglist)] [As type] [statements] [name = expression] [Exit Property] [statements] [name = expression] End Property ngha ca cc t kha Public, Private, Friend, Static cng nh cc thnh phn arglist, Exit Property, statements, [name = expression] ging y nh trong lnh nh ngha hm m chng ta gii thiu nhng slide trc. Method Get cho php bn ngoi c th c gi tr ca 1 thuc tnh bn trong i tng nhng di s kim sot ca i tng . Chng 9 : nh ngha th tc & s dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 246 C php nh ngha method Let thuc tnh i tng C php nh ngha 1 method Let : [Public | Private | Friend] [Static] Property Let name ([arglist,] value) [statements] [Exit Property] [statements] End Property ngha ca cc t kha Public, Private, Friend, Static cng nh cc thnh phn arglist, Exit Property, statements ging y nh trong lnh nh ngha hm m chng ta gii thiu nhng slide trc. Method Let cho php bn ngoi c th gn gi tr mi cho 1 thuc tnh bn trong i tng nhng di s kim sot ca i tng . Chng 9 : nh ngha th tc & s dng 124 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 247 C php nh ngha method Set thuc tnh i tng C php nh ngha 1 method Set : [Public | Private | Friend] [Static] Property Set name ([arglist,] reference) [statements] [Exit Property] [statements] End Property ngha ca cc t kha Public, Private, Friend, Static cng nh cc thnh phn arglist, Exit Property, statements ging y nh trong lnh nh ngha hm m chng ta gii thiu nhng slide trc. Method Set cho php bn ngoi c th gn tham kho cho 1 thuc tnh bn trong i tng nhng di s kim sot ca i tng . S khc bit gia method Let v Set l Let gn gi tr thuc 1 kiu c in, cn Set gn tham kho vo 1 thuc tnh c kiu l class i tng. Chng 9 : nh ngha th tc & s dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 248 9.4 Gi th tc Sau khi th tc c nh ngha, ta c th s dng (gi) n nh lnh gi th tc. C php gi th tc c miu t trong slide 216 (chng 8). Do Function l dng th tc c tr v kt qu kt hp vi tn hm nn lnh gi hm thng c dng trong 1 biu thc (lnh gi hm l biu thc c bn cu thnh biu thc phc tp hn). Th d, gi s ta nh ngha hm tnh n! tn l giaithua(n) th ta c th gi n nh sau : n = 8 MsgBox (n & "! = " & giaithua(n)) Th d, gi s ta nh ngha th tc hon v 2 s nguyn tn l Hoanvi(a,b) th ta c th gi n nh sau : n = 8 m = 4 Call Hoanvi (n,m) ' hoc Hoanvi n,m ' Lc ny n = 8 v m = 4 Chng 9 : nh ngha th tc & s dng 125 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 249 9.5 C ch truyn tham s Cc tham s trong lnh nh ngha th tc c gi l tham s hnh thc. Cc tham s (thng l biu thc) trong lnh gi th tc c gi l tham s thc. Nguyn tc gi th tc l : s lng cc tham s thc phi bng s lng cc tham s hnh thc. v kiu ca tng tham s thc trong lnh gi th tc phi trng (hay tng thch) vi kiu ca tham s hnh thc tng ng trong lnh nh ngha th tc. Lnh gi th tc s truyn tham s thc trong lnh gi cho th tc ri khi ng th tc chy x l tham s thc va nhn c. Theo thi gian, th tc s c gi nhiu ln, mi ln vi danh sch tham s thc c th. C 2 c ch truyn tham s cho th tc ti thi im gi th tc : truyn gi tr (ni dung ca tham s) hay truyn tham kho (a ch - v tr b nh ca tham s). Mi c ch truyn tham s c tnh cht ring m ta s trnh by k trong cc slide k tip : Chng 9 : nh ngha th tc & s dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 250 C ch truyn tham s (tt) Dng t kha ByVal kt hp vi tham s hnh thc khai bo n c truyn bng gi tr. Khi gi th tc, gi tr ca tham s thc s c truyn cho th tc cn thc thi. Nh cch truyn tham s ny m th tc cn thc thi s khng th truy xut d liu ca th tc gi. Tuy nhin cch truyn bng gi tr ch thch hp cho cc tham s IN (truyn t phn t gi n th tc cn gi) c kiu v hng (scalar). truyn hiu qu tham s c ni dung chim nhiu nh hay nhn kt qu ta s phi dng c ch truyn bng tham kho (a ch). nh ngha tham s hnh thc c truyn bng tham kho, ta dng t kha ByRef kt hp vi tham s hnh thc . Khi gi th tc, a ch ca tham s thc s c truyn cho th tc cn thc thi. Vi c im ny, tham s thc phi l bin ch khng th l biu thc. Lu rng nu ta khng dng t kha ByRef hay ByVal kt hp vi tham s hnh thc th default n c truyn bng tham kho. Chng 9 : nh ngha th tc & s dng 126 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 251 // version truyn bng gi tr Private Sub Hoanvi1(ByVal x As Integer, ByVal y As Integer) Dim tmp As Integer tmp = x x = y y = tmp End Sub // version truyn bng tham kho Private Sub Hoanvi2(ByRef x As Integer, ByRef y As Integer) Dim tmp As Integer tmp = x x = y y = tmp End Sub // version truyn bng tham kho Private Sub Hoanvi3(x As Integer, y As Integer) Dim tmp As Integer tmp = x x = y y = tmp End Sub C ch truyn tham s (tt) Chng 9 : nh ngha th tc & s dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 252 Hy kho st k 3 th tc hon v d liu trong slide trc. By gi hy ch ti vic s dng chng v kt qu t c : ... Dim intN As Integer Dim intM As Integer intN = 4 intM = 8 Call Hoanvi1(intN, intM) ' kt qu intN = 4 v intM = 8 (khng i) Call Hoanvi2(intN, intM) ' kt qu intN = 8 v intM = 4 ( hon v c) Call Hoanvi3(intN, intM) ' kt qu intN = 4 v intM = 8 ( hon v c) ... C ch truyn tham s (tt) Chng 9 : nh ngha th tc & s dng 127 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 253 9.6 Cc th tc nh sn ca VB V nguyn tc, ngi lp trnh phi nh ngha th tc (Sub, Function, Property) trc khi c th s dng li (gi) n. Tuy nhin, VB nh ngha rt nhiu th tc dng Sub, Function thc hin cc chc nng rt ph bin, ngi lp trnh c th gi chng bt c khi no cn thit. Ta gi cc th tc ny l cc th tc nh sn ca VB. Nu cha i hi chnh xc cao, ngi ta cn gi cc th tc nh sn ca VB l cc lnh thc thi. Sau y ta chng ta hy lm quen vi 1 s th tc thng dng. Chng 9 : nh ngha th tc & s dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 254 Hm hin th form thng bo C php MsgBox(prompt [, buttons] [, title] [, helpfile, context]) trong : prompt l biu thc chui miu t thng bo cn hin th. buttons l biu thc s miu t s lng v loi button c hin th trong thng bo, nhim l 0 ngha l ch c button Ok c hin th. title l biu thc chui miu t title bar ca form thng bo. helpfile l biu thc chui miu t ng dn file Help c dng vi form thng bo (theo c ch context-sensitive Help). context l biu thc s miu t ch s ca "topic" cn dng trong file Help Thng gi d dng hm MsgBox, ta ch cn miu t tham s prompt bt buc. Chng 9 : nh ngha th tc & s dng 128 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 255 Hm hin th form nhp liu (dng chui) C php InputBox (prompt [,title] [,default] [,xpos] [,ypos] [,helpfile,context]) trong : prompt, title, helpfile, context l cc tham s vi ngha y nh trong hm MsgBox. xpos, ypos l biu thc s miu t ta (x,y) ca im trn tri ca form thng bo trong mn hnh. Nu khng c khai bo, form thng bo s c chnh v tr t ng (gia mn hnh). default l biu thc chui miu t gi tr default ca chui c nhp. Thng gi d dng hm InputBox, ta ch cn miu t tham s prompt bt buc. Chng 9 : nh ngha th tc & s dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 256 Hm chuyn i kiu VB cung cp cc hm sau ta c th chuyn gi tr t kiu no v kiu xc nh : CBool (expression) : chuyn tr ca biu thc v kiu Boolean CByte (expression) : chuyn tr ca biu thc v kiu Byte CCur (expression) : chuyn tr ca biu thc v kiu Currency CDate (expression) : chuyn tr ca biu thc v kiu Date CDbl (expression) : chuyn tr ca biu thc v kiu Double CDec (expression) : chuyn tr ca biu thc v kiu Decimal CInt (expression) : chuyn tr ca biu thc v kiu Integer CLng (expression) : chuyn tr ca biu thc v kiu Long CSng (expression) : chuyn tr ca biu thc v kiu Single CStr (expression) : chuyn tr ca biu thc v kiu String CVar (expression) : chuyn tr ca biu thc v kiu Variant Chng 9 : nh ngha th tc & s dng 129 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 257 Cc hm th vin lin kt ng Trong code VB, ngoi vic gi cc th tc c nh ngha trong Project v cc th tc nh sn, ngi lp trnh cn c th gi cc hm trong cc th vin lin kt ng. 1 th vin lin kt ng c dng *.dll thng c xy dng bng ngn ng VC++ v cha 1 danh sch cc hm dch v. Khi chng trnh VB gi 1 hm trong file th vin DLL, file c np vo b nh v hm c lin kt vo vng nh ca chng trnh chng trnh c th gi c hm cn gi. Cc hm th vin DLL c s dng chung cho mi phn mm ang chy, ngha l ch c 1 bn (copy) ca hm th vin DLL trong b nh my tnh phc v cho mi ng dng gi n. Ta c th coi Windows nh 1 th vin phn mm DLL ln, th vin ny cung cp rt nhiu hm dch v khc nhau, ngi ta gi cc hm ny l cc hm API (Application Programming Interface). Chng trnh VB c th gi bt k hm no trong th vin ny theo c ch lin kt ng nh trnh by trn. Trc khi 1 hm DLL c dng trong module VB no , ta cn khai bo c t hm DLL ny nh lnh Declare ca VB vi c php c trnh by trong slide 153 (chng 6). Chng 9 : nh ngha th tc & s dng Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 258 MN TIN HC Chng 10 TNG TC GIA NGI DNG & CHNG TRNH Chng 10: Tng tc gia ngi dng & chng trnh 10.1 Tng qut v tng tc gia ngi dng & chng trnh 10.2 Giao tip vi b2n phm. 10.3 Giao tip vi chut 10.4 V vn bn v ha ln i tng giao din 10.5 Vn in n trong VB 130 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 259 10.1 Tng qut v tng tc gia ngi dng & chng trnh Trong lc chng trnh chy, n thng tng tc vi ngi dng. S tng tc gm 2 hot ng chnh : ch nhn d liu do ngi dng cung cp hay ch nhn lnh ca ngi dng thc thi 1 chc nng no . hin th thng bo v/hoc kt qu tnh ton ra mn hnh/my in ngi dng bit v s dng. S tng tc gia ngi dng v my tnh c thc hin thng qua cc thit b nhp/xut (thit b I/O - input/output) nh bn phm/chut nhp d liu hay lnh, mn hnh/my in xut kt qu hay thng bo... Hin c hng trm hng khc nhau ch to thit b I/O cho my PC, mi hng ch to rt nhiu model ca cng 1 thit b (th d hng HP ch rt nhiu model my in phun mc, my in laser,...). Mi model thit b ca tng hng c nhng tnh cht vt l ring v khc vi cc model khc. gip ngi lp trnh truy xut cc thit b I/O d dng, c lp vi tnh cht phn cng ca thit b, HH Windows v VB che du mi tnh cht phn cng ca cc thit b v cung cp cho ngi lp trnh 1 giao tip s dng duy nht, c lp vi thit b. Chng 10: Tng tc gia ngi dng & chng trnh Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 260 Kin trc tng tc gia ngi dng & ng dng VB Driver Keyboard Driver Mouse Driver Printer Driver ViewSonic Monitor AnyKey Keyboard Logitech Mouse HP Laser 5 Screen Object Keyboard Mouse Windows My Visual Basic Application ng dng giao tip vI cc thit b tru tng thng qua Windows Windows to & qun l cc thit b tru tng Windows giao tip vI c device driver thit b Cc driver giao tip vI cc thit b vt l Printer Object Chng 10: Tng tc gia ngi dng & chng trnh 131 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 261 Kin trc tng tc gia ngi dng & ng dng VB (tt) Xem hnh v ca slide trc (miu t kin trc tng tc gia ngi dng & ng dng VB), ta thy : cp thp nht l cc thit b phn cng, mi thit b c tnh cht ring v khc vi cc thit b khc (ngay c cng loi, cng hng nhng khc model). cp device driver iu khin v giao tip trc tip vi phn cng nhng che du mi tnh cht chi tit ca phn cng, n cung cp cho cp trn 1 giao tip s dng phn cng c lp vi tnh cht phn cng Mi model thit b phn cng ca 1 hng cn c device driver ring. cp HH x l cc chc nng lun l (m d liu, x l sai,...) trc khi nh device driver giao tip trc tip vi phn cng. Windows che du cc loi phn cng v to ra nhng thit b tru tng ng dng truy xut chng d dng v c lp vi loi thit b (i tng Printer, Screen, Mouse, Keyboard). VB to ra nhng i tng giao din cao cp v d dng : mi i tng giao din (form, window, listbox,...) u c th giao tip trc tip vi ngi dng nhp/xut d liu, ch nhn s kin hay ch ng thng bo cho user. Chng 10: Tng tc gia ngi dng & chng trnh Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 262 Kin trc tng tc gia ngi dng & ng dng VB (tt) Sau khi bit kin trc giao tip I/O ca ng dng VB, khi cn giao tip vi ngi dng, ta nn : dng cc i tng giao din cao cp (nh sn ca VB hay ActiveX Control). trong 1 s trng hp cn thit ta s dng cc i tng ca Windows nh Printer v Screen. trong 1 s trng hp ti cn thit ta mi gi cc hm trong giao tip ca device driver. v tuyt i khng nn truy xut trc tip phn cng thit b I/O v rt kh khn, khng an ton, d b tranh chp vi cc ng dng chy ng thi. Tng tc vi ngi dng thng qua cc i tng giao din c thc hin nh sau : nhp liu/nhn lnh thng qua cc th tc x l s kin ca phn t giao din tng ng. xut kt qu/thng bo bng cch gn kt qu vo thuc tnh tng ng ca i tng giao din hay dng cc method v ha tng qut. Chng 10: Tng tc gia ngi dng & chng trnh 132 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 263 10.2 Giao tip vi keyboard qua cc i tng giao din Mc d c th c nhiu phn t giao din cng c hin th trn mn hnh ti tng thi im nhng ch c 1 phn t giao din c giao tip vi thit b I/O, ta gi phn t giao din ny l 'active' hay c 'focus'. Lin quan n vic n th 1 phm, VB s to ra 3 s kin sau y v gi v cho phn t c 'focus' hin hnh : KeyDown : s kin xy ra khi ngi s dng bm (n xung) bt k mt phm no trn bn phm. KeyUp : s kin xy ra khi ngi s dng th phm va n ra. KeyPress: s kin xy ra khi ngi s dng n/th bt k mt phm no trn bn phm m to ra c 1 k t ANSI. Chng 10: Tng tc gia ngi dng & chng trnh Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 264 Th tc x l s kin KeyDown, KeyUp & KeyPress Th tc c dng sau : Private Sub ControlName_KeyDown (KeyCode as Integer, Shift as Integer). v Private Sub ControlName_KeyUp (KeyCode as Integer, Shift as Integer). trong : ControlName l tn ca iu khin nhn s kin keydown/keyup. KeyCode l m "virtual code" ca phm c n/th. Shift l gi tr miu t trng thi n gi cc phm iu khin (l mt dy bit vi bit 0 cho phm SHIFT, bit 1 cho phm CTRL, bit 2 cho phm ALT). Th tc KeyPress c dng sau : Private Sub ControlName_KeyPress (KeyAscii As Integer) trong : ControlName l tn ca iu khin nhn s kin keypress. KeyAscii l m k t ANSI ca phm c n/th. Mi i tng c th tc x l bin c ring, th tc ny cng l method ca i tng tng ng. Chng 10: Tng tc gia ngi dng & chng trnh 133 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 265 Private Sub Text1_KeyDown (KeyCode As Integer, Shift As Integer) Dim ShiftDown, AltDown, CtrlDown, Txt ShiftDown = (Shift And vbShiftMask) > 0 AltDown = (Shift And vbAltMask) > 0 CtrlDown = (Shift And vbCtrlMask) > 0 If KeyCode = vbKeyF2 Then ' Display key combinations. If ShiftDown And CtrlDown And AltDown Then Txt = "SHIFT+CTRL+ALT+F2." ElseIf ShiftDown And AltDown Then Txt = "SHIFT+ALT+F2." ElseIf ShiftDown And CtrlDown Then Txt = "SHIFT+CTRL+F2." ElseIf CtrlDown And AltDown Then Txt = "CTRL+ALT+F2." ElseIf ShiftDown Then Txt = "SHIFT+F2." ElseIf CtrlDown Then Txt = "CTRL+F2." ElseIf AltDown Then Txt = "ALT+F2." ElseIf SHIFT = 0 Then Txt = "F2." End If Text1.Text = "You pressed " & Txt End If End Sub Th d th tc x l bin c KeyDown ca 1 textbox Chng 10: Tng tc gia ngi dng & chng trnh Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 266 Dng thuc tnh KeyPreview Thng 1 form giao din (hp thoi) cha nhiu iu khin bn trong n Khi thao tc phm trn 1 iu khin trong form th s kin s gi cho iu khin hay form ? qui nh c th iu ny, VB cung cp thuc tnh KeyPreview cho form, ta c th xem/hiu chnh gi tr ca n nh lnh gn : FormName.KeyPreview [= boolean_expr] trong : FormName l tn ca form lin quan. boolean_expr l biu thc lun l c gi tr True/False. Khi ta gn tr lun l vo thuc tnh ca form th nu : tr = True th form s nhn v x l bin c trc ri mi ti iu khin. tr = False th iu khin nhn v x l bin c, cn form th khng. Chng 10: Tng tc gia ngi dng & chng trnh 134 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 267 10.3 Giao tip vi chut thng qua cc i tng giao din Tng t nh bn phm, khi ngi dng thao tc chut, VB s to ra 1 trong 5 bin c sau y v gi v cho phn t c 'focus' hin hnh : MouseMove : s kin xy ra khi ngi s dng di chuyn chut. MouseDown : s kin xy ra khi ngi s dng n bt k nt no trn chut (ty loi chut m n c 1/2/3 nt). MouseUp : s kin xy ra khi ngi s dng th nt va n ra. Click : s kin xy ra khi ngi s dng n v th chut. DblClick : s kin xy ra khi ngi s dng 'Click' chut lin tc hai ln trong 1 thi gian nh (do ngi dng qui nh chung cho mi trng Windows). Chng 10: Tng tc gia ngi dng & chng trnh Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 268 Th tc x l s kin MouseDown & MouseUp Th tc c dng sau : Private Sub ControlName_MouseDown (Button As Integer, Shift As Integer, x As Single, y As Single) v Private Sub ControlName_MouseUp (Button As Integer, Shift As Integer, x As Single, y As Single) trong : ControlName l tn ca iu khin nhn s kin MouseDown/MouseUp. Button l gi tr miu t trng thi cc nt ca chut c n/th (l mt dy cc bit vi bit 0 cho nt tri, bit 1 cho nt phi v bit 2 cho nt gia). Shift l gi tr miu t trng thi n gi cc phm iu khin (l mt dy bit vi bit 0 cho phm SHIFT, bit 1 cho phm CTRL, bit 2 cho phm ALT). x, y miu t ta (x,y) ca v tr chut c n/th trn mn hnh. Chng 10: Tng tc gia ngi dng & chng trnh 135 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 269 Th tc x l s kin MouseMove Th tc c dng sau : Private Sub ControlName_MouseMove (Button As Integer, Shift As Integer, x As Single, y As Single) trong : ControlName l tn ca iu khin nhn s kin MouseDown/MouseUp. Button l gi tr miu t trng thi cc nt ca chut c n/th (l mt dy cc bit vi bit 0 cho nt tri, bit 1 cho nt phi v bit 2 cho nt gia). Shift l gi tr miu t trng thi n gi cc phm iu khin (l mt dy bit vi bit 0 cho phm SHIFT, bit 1 cho phm CTRL, bit 2 cho phm ALT). x, y miu t ta (x,y) ca v tr chut hin hnh trn mn hnh. Chng 10: Tng tc gia ngi dng & chng trnh Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 270 Th tc x l s kin Click & DblClick Th tc c dng sau : Private Sub ControlName_Click () v Private Sub ControlName_DblClick () trong : ControlName l tn ca iu khin nhn s kin Click/DblClick. Th tc x l s kin Click v DblClick khng c tham s xc nh v tr n chut hay nt chut no c n. Trong trng hp cn cc thng tin ph ny x l chi li hn, bn nn dng th tc x l s kin MouseDown hay MouseUp. Chng 10: Tng tc gia ngi dng & chng trnh 136 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 271 ' bin qui nh trng thi v/khng v Dim PaintNow As Boolean 'Khi ng thng s v Private Sub Form_Load () DrawWidth = 10 ' Use wider brush. ForeColor = RGB(0, 0, 255) ' Set drawing color. End Sub Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single) PaintNow = True ' Enable painting. End Sub Private Sub Form_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single) PaintNow = False ' Disable painting. End Sub Private Sub Form_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single) If PaintNow Then PSet (X, Y) ' Draw a point. End If End Sub Th d th tc x l cc s kin chut Chng 10: Tng tc gia ngi dng & chng trnh Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 272 10.4 V vn bn v ha ln i tng giao din Cc iu khin thng cha thuc tnh Text, Caption hay Value cho php chng trnh truy xut (c/ghi) cc thuc tnh ny. Tuy nhin nhng i tng giao din phc hp nh Form, PictureBox, Printer c th hin th nhiu ni dung chi tit dng vn bn, ha hay nh bitmap bt k. hin th cc ni dung ny, ta dng cc method sau ca cc i tng tng ng : Cls : xa ton b ni dung hin th trc ca i tng. Print : hin th 1 hay nhiu chui vn bn. PSet : hin th 1 im pixel vi 1 mu xc nh. Point : tr v gi tr mu ca 1 im pixel. Line : v 1 on thng hay 1 hp hnh ch nht. Circle : c 1 hnh trn, ellipse hay cung. PaintPicture : v 1 nh bitmap c vo i tng. Cc slide cn li din t chi tit cc method trn cng cc th d v vic dng chng. Chng 10: Tng tc gia ngi dng & chng trnh 137 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 273 Th tc Print : xut chui ra thit b xut lun l Th tc c dng sau : [objName.]Print [Spc(n) | Tab(n) | expression charpos]* trong : objName l tn ca i tng nhn kt qu v (Printer, Form, PictureBox), default l form hin hnh. Spc(n) qui nh n k t trng c in ra. Tab(n) qui nh n k t Tab c in ra, mi Tab a pointer in qua phi thm 1 ct (v tr cc ct c qui nh trc). expression l biu thc chui hay s cn in. charpos qui nh v tr in d liu k tip. Nu charpos = ";" th d liu in k tip s c in lin ngay. Nu charpos = "," th s thm 1 Tab trc khi in d liu k. Nu khng c charpos sau cng th v tr in s di xung u dng k tip. Thng tin v font ch phi c thit lp trc th tc Print thng qua cc thuc tnh sau ca i tng v : FontName, FontSize, FontItalic, FontBold,... Nn thit lp thuc tnh CurrentX, CurrentY qui nh r rng v tr in ca mi lnh Print. Chng 10: Tng tc gia ngi dng & chng trnh Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 274 Th d v vic dng th tc Print on code sau y s hin th 3 hng vn bn trong hp thoi About Box c chnh gia : Const strAbout1 = "Trinh MiniIE" Const strAbout2 = "Version 1.0" Const strAbout3 = "Written by : Nguyen Van Hiep" Private Sub Form_paint() ScaleMode = vbPixels ' Xc nh v tr chui strAbout1 nm gia hp thoi CurrentX = (ScaleWidth - TextWidth(strAbout1)) / 2 CurrentY = 40 Print strAbout1 ' Xc nh v tr chui strAbout2 nm gia hp thoi CurrentX = (ScaleWidth - TextWidth(strAbout2)) / 2 CurrentY = 60 Print strAbout2 ' Xc nh v tr chui strAbout3 nm gia hp thoi CurrentX = (ScaleWidth - TextWidth(strAbout3)) / 2 CurrentY = 80 Print strAbout3 End Sub Chng 10: Tng tc gia ngi dng & chng trnh 138 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 275 Function Format : chnh dng d liu trc khi in Ta thng mun format d liu s hay ngy thng theo yu cu ring trc khi in n ra. VB h tr chc nng ny thng qua hm Format c c php sau : Format (expression [,format[,firstdayofweek[,firstweekofyear]]]) trong : expression l biu thc s hay ngy thng cn format. format l chui k t nh dng hay tn gi nh miu t chui nh dng sn c ca VB. firstdayofweek v firstweekofyear qui nh ngy u trong tun v tun u trong nm cn cho nh dng d liu ngy thng. Mt s k t thng dng trong chui nh dng : 0 miu t v tr k s, nu s khng hin th ht vng nh ng th thm s 0 trc v sau gi tr s cho y vng nh dng. # miu t v tr k s, khng in s 0 i trc v sau gi tr s. . miu t v tr du ngn n v (qui nh bi locale ca Windows) , miu t v tr du ngn n v ngn (qui nh bi locale). - + % ( ) space miu t chnh xc k t tng ng. Chng 10: Tng tc gia ngi dng & chng trnh Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 276 Th d v chnh dng d liu s : Format syntax Result Format(8315.4, "00000.00") 08315.40 Format(8315.4, "#####.##") 8315.4 Format(8315.4, "##,##0.00") 8,315.40 Format(315.4,"$##0.00") $315.40 Th d v chnh dng d liu ngy thng : Format(Now, "m/d/yy") 1/27/93 Format(Now, "dddd, mmmm dd, yyyy") Wednesday, January 27, 1993 Format(Now, "d-mmm") 27-Jan Format(Now, "mmmm-yy") January-93 Format(Now, "hh:mm AM/PM") 07:18 AM Format(Now, "h:mm:ss a/p") 7:18:00 a Format(Now, "d-mmmm h:mm") 3-January 7:18 Th d v hm Format Chng 10: Tng tc gia ngi dng & chng trnh 139 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 277 Th tc PSet : v im trn thit b xut lun l Th tc c dng sau : [objName.]PSet [Step] (x, y), [color] trong : objName l tn ca i tng nhn kt qu v (Printer, Form, PictureBox), default l form hin hnh. (x,y) miu t ta ca v tr im cn v trn thit b lun l. Nu t kha Step c dng th (x,y) l ta tng i so vi v tr hin hnh c xc nh bi 2 thuc tnh CurrentX, CurrentY ca i tng v. Nu t kha Step khng c dng th (x,y) l ta so vi im gc (0,0). color l gi tr kiu Long miu t mu v theo h mu RGB (hoc dng hm QBColor() hoc dng hm RGB(r,g,b) xc nh mu v). Chng 10: Tng tc gia ngi dng & chng trnh Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 278 Th tc Line : v on thng/box trn thit b xut lun l Th tc c dng sau : [objName.]Line [Step] (x1, y1) - [Step] (x2, y2), [color], [B][F] trong : objName l tn ca i tng nhn kt qu v (Printer, Form, PictureBox), default l form hin hnh. (x1,y1) miu t ta im u ca on thng cn v trn i tng nhn kt qu. Nu t kha Step c dng trc ta (x1,y1) th n l ta tng i so vi v tr hin hnh c xc nh bi 2 thuc tnh CurrentX, CurrentY ca i tng nhn kt qu. Nu t kha Step khng c dng th (x1,y1) l ta so vi im gc (0,0). (x2,y2) miu t ta im cui ca on thng cn v. ngha ca (x2,y2) cng ging nh (x1,y1). color l gi tr kiu Long miu t mu v theo h mu RGB. nu khng c thng s B th th tc Line s v on thng qua 2 im. nu c thng s B, th tc Line s v hnh ch nht m 2 nh cho c xc nh bi 2 im. Trong trng hp ny nu c thng s F, hnh ch nht s c t cng mu vi mu v, ngc li thuc tnh FillColor v FillStyle ca i tng nhn kt qu s qui nh mu c t. Chng 10: Tng tc gia ngi dng & chng trnh 140 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 279 Th tc Circle : v hnh trn/ellipse trn thit b xut lun l Th tc c dng sau : [objName.]Circle [Step] (x, y), radius, [color, start, end, aspect] trong : objName l tn ca i tng nhn kt qu v (Printer, Form, PictureBox), default l form hin hnh. (x,y) miu t ta tm im ca vng trn/ellipse/arc cn v trn i tng nhn kt qu. Nu t kha Step c dng trc ta (x,y) th (x,y) l ta tng i so vi v tr hin hnh c xc nh bi 2 thuc tnh CurrentX, CurrentY ca i tng nhn kt qu. Nu t kha Step khng c dng th (x,y) l ta so vi im (0,0). radius miu t bn knh. color l gi tr kiu Long miu t mu v theo h mu RGB. start, end miu t gc xc nh im u v cui ca arc theo n v radian (default im u l 0 v im cui l 2). aspect miu t t l kch thc dc/ngang ca ellipse (default l 1 v vng trn). Chng 10: Tng tc gia ngi dng & chng trnh Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 280 Cc thuc tnh qui nh thng s v Khi ta gi cc method v PSet, Line, Circle, PaintPicture trn 1 i tng v no (Printer, Form, PictureBox) th cc method ny dng cc thuc tnh sau qui nh thng s v ca chng : CurrentX, CurrentY miu t ta im hin hnh, n c dng lm gc ta cho cc im v nu c dng t kha Step km theo im v . FillStyle, FillColor xc nh mu t v mu t cc phn t c din tch (box, circle). BackColor xc nh mu nn ca i tng. ForeColor xc nh mu hin th text hay v bin cc phn t (line, box, circle). DrawMode xc nh cch thc v (vbBlackness, vbWhiteness, vbInvert...). DrawStyle xc nh mu v ca ng v (line, box, circle). DrawWidth xc nh dy ca ng v (line, box, circle). Ta c th c/hiu chnh li gi tr cc thuc tnh theo yu cu. Chng 10: Tng tc gia ngi dng & chng trnh 141 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 281 Chi tit v thuc tnh qui nh n v tnh kch thc Thuc tnh ScaleMode miu t n v tnh kch thc vi qui nh sau : Constant Setting Description vbUser 0 Indicates that one or more of the ScaleHeight, ScaleWidth, ScaleLeft, and ScaleTop properties are set to custom values. vbTwips 1 (Default)Twip (1440 twips per logical inch; 567 twips per logical centimeter). vbPoints 2 Point (72 points per logical inch). vbPixels 3 Pixel (smallest unit of monitor or printer resolution). vbCharacters 4 Character (horizontal = 120 twips per unit; vertical = 240 twips per unit). vbInches 5 Inch. vbMillimeters 6 Millimeter. vbCentimeters 7 Centimeter. vbHimetric 8 HiMetric vbContainerPosition 9 Units used by the control's container to determine the control's position. vbContainerSize 10 Units used by the control's container to determine the control's size. Chng 10: Tng tc gia ngi dng & chng trnh Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 282 Chi tit v thuc tnh miu t mu Mi mu ch TrueColor c tng hp t 3 thnh phn mu c bn Red - Green - Blue. Trng s ca mi thnh phn mu c miu t bi 1 gi tr Byte (t 0 n 255). Xc nh 1 mu l xc nh 3 thnh phn mu ca n. Cc thuc tnh BackColor, ForeColor, FillColor c gi tr miu t mu dng RGB vi qui nh sau : Color Red Value Green Value Blue Value Black 0 0 0 Blue 0 0 255 Green 0 255 0 Cyan 0 255 255 Red 255 0 0 Magenta 255 0 255 Yellow 255 255 0 White 255 255 255 Th d ta vit lnh gn : Form1.BackColor = RGB(0,0,0) thit lp mu nn ca form tn Form1 l mu en. Chng 10: Tng tc gia ngi dng & chng trnh 142 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 283 Chi tit v thuc tnh miu t mu (tt) Nu ch mun dng 1 trong 16 mu c bn ca QBasic (version Basic u tin ca Microsoft chy trn DOS), ta c th dng hm QBColor. Bng sau lit k 16 mu c bn ny : Number Color Number Color 0 Black 8 Gray 1 Blue 9 Light Blue 2 Green 10 Light Green 3 Cyan 11 Light Cyan 4 Red 12 Light Red 5 Magenta 13 Light Magenta 6 Yellow 14 Light Yellow 7 White 15 Bright White Th d ta vit lnh gn : Form1.BackColor = QBColor(15) thit lp mu nn ca form tn Form1 l mu trng sng. Chng 10: Tng tc gia ngi dng & chng trnh Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 284 Chi tit v thuc tnh mu t nn Thuc tnh FillStyle c gi tr miu t 1 mu t nn vi qui nh sau : Constant Setting Description VbFSSolid 0 Solid VbFSTransparent 1 (Default) Transparent VbHorizontalLine 2 Horizontal Line VbVerticalLine 3 Vertical Line VbUpwardDiagonal 4 Upward Diagonal VbDownwardDiagonal 5 Downward Diagonal VbCross 6 Cross VbDiagonalCross 7 Diagonal Cross Th d ta vit lnh gn : Form1.FillStyle = VbVerticalLine thit lp mu t nn ca cc phn t trong form l cc ng thng ng. Chng 10: Tng tc gia ngi dng & chng trnh 143 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 285 Chi tit v thuc tnh mu v ng vin Thuc tnh DrawStyle c gi tr miu t 1 mu v ng vin vi qui nh sau : Constant Setting Description VbSolid 0 (Default) Solid VbDash 1 Dash VbDot 2 Dot VbDashDot 3 Dash-Dot VbDashDotDot 4 Dash-Dot-Dot VbInvisible 5 Transparent VbInsideSolid 6 Inside Solid Th d ta vit lnh gn : Form1.DrawStyle = VbDash thit lp mu v ng vin ca cc phn t trong form l cc ng gch-gch di. Lu thuc tnh DrawStyle ch c ngha theo bng trn khi ta thit lp thuc tnh DrawWidth = 1. Trong trng hp DrawWidth > 1 th DrawStyle <> 5 u to ra nt v lin tc. Chng 10: Tng tc gia ngi dng & chng trnh Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 286 Function PaintPicture : v nh bitmap bt k Mi i tng v c method PaintPicture cho php ta v nh bitmap bt k. C php nh sau : [objName.]PaintPicture picture, dx, dy, dw, dh, sx, sy, sw, sh, opcode trong : objName l tn ca Form, PictureBox hay Printer, nu khng c th form hin hnh c v. picture l nh bitmap gc c dng v. dx, dy l to nh trn tri ca vng cha nh v trong i tng v. dw, dh l rng, cao ca vng cha nh v trong i tng v. sx, sy l to nh trn tri ca vng cha nh trong nh gc. sw, sh l rng, cao ca vng cha nh trong nh gc. opcode miu t hnh vi a nh gc vo i tng v, ta thng dng cc m sau : vbSrcCopy : copy nh gc vo v tr qui nh ca i tng v. vbSrcPaint : Or tng pixel nh gc vi tng bit i tng v tng ng. vbSrcInvert : Xor tng pixel nh gc vi tng bit i tng v tng ng. vbSrcAnd : And tng pixel nh gc vi tng bit i tng v tng ng... Chng 10: Tng tc gia ngi dng & chng trnh 144 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 287 Th d v vic dng function PaintPicture To 1 form trng, 'add' iu khin PictureBox cha nh gc vo form, set thuc tnh Visible = False, thuc tnh Picture = n dn file nh, ri vit on code sau cho form : Option Explicit Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Sub Form_Load() AutoRedraw = False ' VB gi hm x l bin c Paint End Sub Private Sub Form_Paint() ' hin th nh chy t t sang phi Dim x As Integer, y As Integer ScaleMode = vbPixels ' n v tnh ca form l pixel Picture1.ScaleMode = vbPixels ' n v tnh nh gc l pixel x = 0 ' thit lp v tr u ca nh y = 50 While True PaintPicture Picture1, x, y, 60, 60, 0, 0, , , vbMergePaint ' v nh v tr x,y DoEvents ' cho php ng dng p ng s kin Sleep (10) ' ng ch 10ms Line (x, y)-(x + 60, y + 60), BackColor, BF ' xa nh va v x = x + 4 ' di chuyn v tr v bn phi 4 pixel If (x - 60 > ScaleWidth) Then x = 0 ' nu nh t l phi th set v tri Wend End Sub Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 288 10.5 Vn in n trong VB Trong chng trnh VB, ta c th in thng tin ra my in bng cch dng 1 trong 3 cch sau : dng cc method v vn bn, ha v nh bitmap ln 1 form theo mun ri gi method PrintForm in form kt qu ra my in. y l cch d dng nht kim tra kt qu trc khi in ra giy thc s, nhng kt qu c phn gii khng cao (v trng vi phn gii ca mn hnh). dng cc method v vn bn, ha v nh bitmap theo mun trc tip ln i tng Printer cng 2 method iu khin NewPage & EndDoc xut kt qu trc tip ra my in default ca Windows. Cch ny cho kt qu c phn gii ng vi my in (thng rt cao so vi phn gii mn hnh). dng lnh Set Printer = Printers(n) chn my in c th trong danh sch cc driver my in hin c ca Windows ri dng cc method v vn bn, ha v nh bitmap theo mun trc tip ln i tng Printer cng 2 method iu khin NewPage & EndDoc xut kt qu trc tip ra my in va chn. Chng 10: Tng tc gia ngi dng & chng trnh 145 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 289 MN TIN HC Chng 11 QUN L H THNG FILE Chng 11 : Qun l h thng file 11.1 Tng qut v truy xut file trong VB 11.2 Qui trnh in hnh truy xut Binary file 11.3 Qui trnh in hnh truy xut Random file 11.4 Qui trnh in hnh truy xut Sequential file 11.5 Cc hm truy xut thuc tnh file 11.6 Cc lnh x l th mc Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 290 Tng qut v thi gian sng ca bin d liu Chng trnh x l d liu thng qua cc bin d liu. Nh ta bit, mi bin d liu ch c i sng ngn ngi : hoc bng i sng ca 1 th tc, hoc bng i sng ca 1 module (hay i tng) hoc cao nht l bng thi gian chy ng dng, t lc ng dng c np vo b nh trong n lc chng trnh kt thc thc thi. lu gi gi tr ca 1 s bin hu trao i d liu gia 2 ng dng khc nhau hay gia 2 ln chy khc nhau ca cng 1 ng dng, ta s ghi gi tr cc bin ny ra mi trng cha tin bn vng trn nhng n v cha tin c lp c gi l file. Trong chng 2, chng ta trnh by cc khi nim v file, cch t chc a cng thnh cy phn cp cc file cng nh cc thao tc qun l h thng file trc tip bi ngi dng. Trong chng ny ta s nghin cu chi tit cc phng tin m VB cung cp thc hin cc thao tc qun l h thng file, c bit l vic truy xut ni dung ca file, t trong code ca ng dng VB. Chng 11 : Qun l h thng file 146 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 291 Cu trc file cp HH, file l danh sch gm n byte cha c ng ngha. Chnh ng dng phi t qui nh cu trc c th ca file mnh to ra/c li v ng ngha ca tng n v cu trc ny. VB cung cp cho ng dng 3 dng file khc nhau, ng vi mi dng file c 1 cch thc truy xut d liu tng ng : file tun t (Sequential File) hay file vn bn l danh sch gm n byte, mi byte l 1 k t ANSI. Th d file source code ca cc class VB *.bas. file nh phn (Binary File) l danh sch gm n byte nh phn cha c cu trc. Th d file Word, file Excel, file kh thi - executable. file truy xut trc tip (Random File) l danh sch gm n record c cng di, mi record cha nhiu field thng tin. Th d file cha cc h s sinh vin. Chng 11 : Qun l h thng file Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 292 Tng qut v qun l h thng file trong VB VB cung cp cho ngi lp trnh 2 phng php khc nhau qun l h thng file : gi cc th tc truyn thng nh Open, Close, Input, Write, Get, Put... Ta c th gi cc th tc ny l cc lnh VB. dng m hnh i tng FSO (File System Object). Vi phng php ny, u tin ngi lp trnh s to ra i tng FileSystemObject ri mi khi cn qun l h thng file, h ch cn gi method tng ng ca i tng trn. Mc d FSO l phng php hng i tng, rt thn thin v d dng, nhng hin FSO cha mnh, ch cho php truy xut file text -vn bn, ch cha cho php truy xut 2 dng file Binary v Random. Do trong chng ny chng ta ch tp trung gii thiu phng php dng cc th tc truyn thng truy xut file. Sau ny khi c iu kin, mi SV s t nghin cu thm cch dng m hnh FSO. Chng 11 : Qun l h thng file 147 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 293 11.1 Tng qut v truy xut file trong VB Qui trnh truy xut 1 file trong VB gm 3 bc chnh : m/to file (gi th tc Open) : khai bo cho h thng bit ta sp sa truy xut 1 file c xc nh bi ng dn c th cng cc ch truy xut file c th. lp truy xut file thng qua vic gi cc th tc Input, Get, Write, Put,... Thng mi th tc trn ch truy xut 1 n v thng tin nh ca file nn ta phi lp nhiu ln n khi ht file, tuy nhin ta c quyn c/ghi ton b ni dung file vo/ra b nh. ng file (gi th tc Close) : khai bo cho h thng bit ta khng cn mun truy xut file na h thng cm khng cho bt k lnh no trong ng dng ca ta truy xut file na. gip cc bn d dng tip thu thng tin, chng ti s trnh by qui trnh truy xut file chi tit trn tng loi file c th : Text file, Random file v Binary File. Chng 11 : Qun l h thng file Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 294 Bng cc lnh VB truy xut file x Input # x Line Input # x Print # x Write # x x Input () x Type .... EndType x x Put x x Get x x x Close x x x Open Binary File Random File Sequential File Tn pht biu Chng 11 : Qun l h thng file 148 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 295 Bng cc function truy xut file Dir : duyt cc phn t trong 1 th mc FileCopy : nhn bn v tnh 1 file thnh file mi FileDateTime : c/hiu chnh ngy/gi hiu chnh file ln cui FileLen : xc nh di file cha m FreeFile : xc nh ch s file cn trng c th dng an ton Loc : xc nh v tr truy xut hin hnh trong file LOF : xc nh di file m Seek : xc nh/thit lp v tr truy xut file GetAttr : c thuc tnh file SetAttr : ghi thuc tnh file Chng 11 : Qun l h thng file Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 296 11.2 Qui trnh in hnh truy xut Binary file C php lnh open file nh phn nh sau : Open pathname For Binary As filenumber Nu cha bit cu trc d liu ca file, nn dng bin dy cc byte c/ghi d liu t/ra file nh phn. Nu bit cu trc d liu ca file, nn khai bo kiu d liu miu t cu trc ri khai bo bin c kiu va nh ngha cha thng tin c t file vo. Dng lnh Seek [#]filenumber, position di pointer c/ghi ti v tr xc nh trc khi truy xut. Dng lnh Get [#]filenumber, [position], AVariable c d liu t v tr position ri cha vo bin AVariable. S byte c c = kch thc ca bin d liu. Dng lnh Put [#]filenumber, [position], AVariable ghi ni dung ca bin AVariable ra file t v tr position. S byte c ghi = kch thc ca bin d liu. Sau khi x l xong file, ta dng lnh Close [#]filenum ng file li. Chng 11 : Qun l h thng file 149 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 297 Th d truy xut Binary file Mi file kh thi (executable) u c 1 header di 20h (32) byte vi cc field nh sau : Index Field Din gii 0 Magic Chui 2 k t magic "MZ" ... ... cc field khc cha cn ch 18h Offset Offset ti bng ti nh chng trnh stub Nu gi tr field Offset (2 byte) offset 18h (24) c gi tr l 40h (64) th file tng ng l file executable trn Windows (*.exe, *.dll, *.ocx, *.scr, *.drv,...). Cn nu gi tr Offset < 40h th file tng ng l file *.exe chy trn DOS. Da vo Header trn, ta th vit 1 ng dng cho php user chn ng dn ca 1 file bt k ri kim tra tnh cht ca file v hin th kt qu : Khng phi file executable File executable chy trn DOS File executable trn Windows (*.exe, *.dll, *.ocx, *.scr, *.drv,...). Chng 11 : Qun l h thng file Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 298 Giao din ngh ca th d truy xut Binary file Textbox hin th ng dn file cn kho st. Button duyt v chn file. Textbox cha kt qu kho st. Option Explicit ' Th tc x l s kin Click button Private Sub cmdBrowse_Click() CommonDialog1.ShowOpen ' hin th ca s duyt v chn file txtFileName.Text = CommonDialog1.FileName CheckFileClass (txtFileName.Text) End Sub CommonDialog duyt file (b n) Chng 11 : Qun l h thng file 150 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 299 Chi tit hm kim tra loi file Private Sub CheckFileClass(strFileName As String) Dim FileNum As Integer Dim strMagic As String * 2 Dim intOffset As Integer FileNum = FreeFile ' Tm ch s file cha dng v m file Open strFileName For Binary As FileNum Get FileNum, 1, strMagic ' c 2 chui 2 k t magic u file If strMagic <> "MZ" Then txtFileClass.Text = "Khong phai file executable" Exit Sub End If Get FileNum, &H19, intOffset ' c word Offset ti chng trnh Stub If intOffset < &H40 Then txtFileClass.Text = "File executable tren MSDOS" Else txtFileClass.Text = "File executable tren Windows (*.exe, *.dll, *.ocx,...)" End If Close #FileNum End Sub Chng 11 : Qun l h thng file Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 300 11.3 Qui trnh in hnh truy xut Random file C php lnh open file Random nh sau : Open pathname [For Random] As filenumber Len = reclength Phi khai bo kiu d liu miu t cu trc ca tng record d liu c c/ghi ri khai bo bin c kiu va nh ngha cha thng tin c t /ghi ra file. Dng lnh Seek [#]filenumber, position di pointer c/ghi ti v tr record xc nh. Dng lnh Get [#]filenumber, [position], AVariable c d liu t v tr position ri cha vo bin AVariable. S byte c c = kch thc ca record d liu. Dng lnh Put [#]filenumber, [position], AVariable ghi ni dung ca bin AVariable ra file t v tr position. S byte c ghi = kch thc ca bin record d liu. Sau khi x l xong file, ta dng lnh Close [#]filenumber ng file li. Chng 11 : Qun l h thng file 151 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 301 Th d truy xut Random file Type SVRecord hoten As String *30 tuoi As Byte diachi As String *50 lop As String*10 ... End Type Dim MyRecord As Record ' nh ngha bin cha tng record ca file. Dim MaxSize As Long, RecordNumber As Long ' 1. m file ch random-file. Open "HosoSinhvien" For Random As #1 Len = Len(MyRecord) MaxSize = LOF(1) \ Len(MyRecord) ' Tnh s record trong file. ' 2. lp c tng record t cui file ln u file For RecordNumber = MaxSize To 1 Step - 1 Seek #1, RecordNumber ' thit lp v tr truy xut. Get #1, , MyRecord ' c record. ' X l record va c vo ... Next RecordNumber ' 3. ng file. Close #1 Chng 11 : Qun l h thng file Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 302 11.4 Qui trnh in hnh truy xut Sequential file C php lnh open file Sequential nh sau : Open pathname [Input | Output | Append] As filenumber [Len = buffersize] Nu file c m ch Input & cha tn ti th li sai xy ra. Nu file c m ch Output | Append & cha tn ti th h thng s to ra file mi. Dng lnh Line Input #filenumber, varname c 1 hng vn bn t file (kt thc bi k t CR - Carriage Return hay CRLF). Dng lnh Input #filenumber, varlist c cc chui hay s t file (c trnh by chi tit trong slide k). Dng hm Input(number, [#]filenumber) c 1 chui t file (c trnh by chi tit trong slide k). Dng lnh Write #filenumber, [outputlist] ghi cc chui hay s ra file (c trnh by chi tit trong slide k). Sau khi x l xong file, ta dng lnh Close [#]filenum ng file li. Chng 11 : Qun l h thng file 152 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 303 Chi tit v lnh Input # C php : Input #filenumber, varlist trong varlist l danh sch cc bin cha gi tr chui hay s cn c, cc bin trong danh sch c ngn cch bng du ','. Cch thc x l d liu trn file nhp : Dng d liu trn file Gi tr nhn c du ',' hay dng trng Empty #NULL# Null #TRUE# hay #FALSE# True hay False #yyyy-mm-dd hh:mm:ss# Ngy/gi #ERROR errornumber# m li errornumber "abcdef" chui abcdef 1254.386 gi tr 1254.386 Chng 11 : Qun l h thng file Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 304 Chi tit v hm Input Ngoi lnh Input va gii thiu slide trc, VB cung cp thm hm Input vi c t sau : Input number, [#]filenumber trong number l s k t ANSI cn c t file filenumber. Khc vi lnh Input, kt qu tr v ca hm Input gm mi k t th trn file k c cc k t iu khin CR, LF, khong trng, ",", nhy kp... Ch dng hm Input trn cc file c m ch Input | Binary. Chng 11 : Qun l h thng file 153 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 305 Chi tit v lnh Write # C php : Write #filenumber, [outputlist] trong outputlist l danh sch cc biu thc cha gi tr chui hay s cn ghi, cc biu thc trong danh sch c ngn cch bng du ','. Cch thc x l in d liu ra file : Kiu d liu Kt qu c ghi trn file outputlist ch c du ',' dng trng (CRLF) Null #NULL# lun l #TRUE# hay #FALSE# Date #yyyy-mm-dd hh:mm:ss# m li errornumber #ERROR errornumber# chui abcdef "abcdef" s chui miu t s dng du '.' Cc kt qu in c ngn cch vi nhau bi du ',' trn file xut. Chng 11 : Qun l h thng file Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 306 Th d truy xut Sequential file Ta th vit ng dng cho php user chn ng dn ca 1 file text-only ri m s t c cha trong file ny. Gi s mi t l 1 chui k t ch s (a-z hay 0- 9) bt k c ngn cch nhau bi cc k t khng phi l ch s. Textbox hin th ng dn file cn kho st. Button duyt v chn file. Textbox cha s t trong file. Option Explicit ' Th tc x l s kin Click button Browse Private Sub cmdBrowse_Click() CommonDialog1.ShowOpen txtFileName.Text = CommonDialog1.FileName txtWordCount.Text = WordCount(txtFileName.Text) End Sub Chng 11 : Qun l h thng file 154 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 307 Chi tit hm m t trong file Private Function WordCount(strFileName As String) As Long Dim lngWcount As Long, FileNum As Integer, Char As String * 1 FileNum = FreeFile ' Tm ch s file cha dng v m file Open strFileName For Input As FileNum lngWcount = 0 Do While Not EOF(FileNum) ' Lp n ht file. Do ' tm cc du ngn trc 1 t mi Char = Input(1, #1) Char = LCase(Char) Loop Until ("a" <= Char And Char <= "z") Or ("0" <= Char And Char <= "9")_ Or EOF(FileNum) If EOF(FileNum) Then GoTo CloseRet lngWcount = lngWcount + 1 ' tng s t ln 1 Do ' tm v b cc k t ca t hin hnh Char = Input(1, #1) Char = LCase(Char) Loop Until Not (("a" <= Char And Char <= "z") Or ("0" <= Char And Char <= "9"))_ Or EOF(FileNum) If EOF(FileNum) Then GoTo CloseRet Loop CloseRet: WordCount = lngWcount Close #FileNum End Function Chng 11 : Qun l h thng file Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 308 Cc hm xc nh v tr truy xut trong file Hm Loc (filenum) tr v v tr truy xut hin ti trong file filenum. Mode Return Value Random ch s record c/ghi ln cui cng. Binary ch s byte c/ghi ln cui cng. Output ch s byte c/ghi ln cui cng /128 | Append (nhng thng khng dng kt qu ny) | Input V d : Dim MyChar As Byte Open "TestFile" For Binary As #1 ' m file c/ghi. Do While Not EOF(1) ' lp cho n ht file. MyChar = Input(1, #1) ' c byte k tip. Debug.Print Loc(1) ' hin th v tr byte va c c Loop Close #1 ' ng file. Chng 11 : Qun l h thng file 155 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 309 Cc hm xc nh v tr truy xut trong file (tt) Hm Seek (filenum) tr v v tr truy xut k tip trong file filenum. Mode Return Value Random hot ng truy xut k tip s xy ra v tr record ny Binary hot ng truy xut k tip s xy ra v tr byte ny | Output, v tr byte u tin l 1, k tip l 2... | Append | Input V d : Dim MyChar As Byte Open "TestFile" For Input As #1 ' m file c. Do While Not EOF(1) ' lp cho n ht file. MyChar = Input(1, #1) ' c k t (byte) k tip. Debug.Print Seek(1) ' hin th v tr byte s c k tip Loop Close #1 ' ng file. Chng 11 : Qun l h thng file Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 310 Cc hm xc nh v tr truy xut trong file (tt) Lnh Seek [#]filenumber, position thit lp v tr truy xut k tip trong file filenum. Mode Return Value Random hot ng truy xut k tip s xy ra v tr record position Binary hot ng truy xut k tip s xy ra v tr byte position | Output, v tr byte u tin l 1, k tip l 2... | Append | Input Chng 11 : Qun l h thng file 156 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 311 11.5 Cc hm truy xut thuc tnh file Hm FileDateTime (pathname) tr v ngy/gi hiu chnh ln cui ca file xc nh bi thng s pathname. V d : Dim MyStamp As Date MyStamp = FileDateTime ("c:\windows\win.com") Hm GetAttr (pathname) tr v byte thuc tnh ca file xc nh bi thng s pathname. Th t cc bit thuc tnh trong byte thuc tnh nh sau : Gi tr Tn hng gi nh Din gii 0 vbNormal Normal 1 vbReadOnly file ch c 2 vbHidden file n 4 vbSystem file h thng 8 vbVolume tn nhn a 16 vbDirectory th mc 32 vbArchive file b thay i t ln backup cui Chng 11 : Qun l h thng file Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 312 Cc hm truy xut thuc tnh file (tt) V d : If GetAttr ("c:\windows\win.com") And vbReadOnly Then MsgBox "c:\windows\win.com l file ch c" End If Hm SetAttr pathname, attributes thit lp thuc tnh ca file xc nh bi thng s pathname theo byte attributes. V d : on code sau s thit lp thuc tnh ca file c:\windows\win.com v read-only. Dim bytFileAttr As Byte bytFileAttr = GetAttr ("c:\windows\win.com") bytFileAttr = bytFileAttr Or vbReadOnly ' Or bitwise SetAttr "c:\windows\win.com", bytFileAttr Chng 11 : Qun l h thng file 157 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 313 Cc hm truy xut thuc tnh file (tt) Hm FreeFile [(rangenumber)] tr v 1 s thuc kiu Integer miu t ch s file cha c dng ( ta dng an ton). Thng khng cn dng tham s khi gi hm ny. Hm LOF (#filenum) tr v 1 gi tr thuc kiu Long miu t kch thc ca file c m v hin c xc nh bi thng s #filenum. V d : Dim lngFileSize As Long, filenum As Integer filenum = FreeFile Open "c:\windows\win.com" For Input As #filenum ' m file lngFileSize = LOF (filenum) ' ly kch thc file m #1 ... Close #1 ' ng file Hm FileLen (pathname) tr v 1 gi tr thuc kiu Long miu t kch thc ca file xc nh bi thng s pathname. V d : Dim lngFileSize As Long lngFileSize = FileLen ("c:\windows\win.com") Chng 11 : Qun l h thng file Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 314 Lnh nhn bn v xa file Lnh FileCopy SourcePath, DestPath. nhn bn file SourcePath ra file DestPath. Khng c m file ri nhn bn n. V d : FileCopy c:\autoexec.bat c:\backup\autoexec.bat Lnh Kill pattern xa t 0 n n file c tn tha mn mu pattern (dng k t * v ? miu t). V d : Kill "c:\windows\*.tmp" Chng 11 : Qun l h thng file 158 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 315 11.6 Cc lnh x l th mc Lnh MkDir pathname : to th mc mi. V d : MkDir "c:\windows\temp" Lnh RmDir pathname : xa th mc trng c tn l pathname, nu th mc cha trng th phi dng lnh Kill v/hoc RmDir xa cc file v th mc con ca n trc. V d : RmDir "c:\windows\tmp" Hm CurDir [(drive)] : tr v ng dn ca th mc lm vic ca a hin hnh (hoc ca a c xc nh bi thanh s). V d : MyPath = CurDir ' tr v "c:\windows" nu ta ang lm vic y. Lnh ChDir pathname : chuyn th mc lm vic ca a hin hnh v v tr qui nh bi tham s. V d : ChDir "c:\windows\tmp" Lnh ChDrive drive : chuyn a hin hnh v a c xc nh trong tham s. V d : ChDrive "e" Chng 11 : Qun l h thng file Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 316 Hm duyt cc phn t trong 1 th mc C php : Dir [(pattern[, attributes])] trong pattern xc nh mu cc phn t cn tm, attributes miu t byte thuc tnh ca phn t cn tm. Nu c tham s pattern th hm Dir s tr v ng dn ca phn t u tin tm c (hay chui rng nu khng tm c), nu khng c pattern th hm Dir tr v ng dn ca phn t k tip tha pattern c xc nh ln cui. ngha cc bit trong byte attributes c trnh by trong silde 261. Chng 11 : Qun l h thng file 159 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 317 Th d xa file qui Trong lc hot ng, cc ng dng thng to ra cc file tm c phn ni rng l *.tmp, *.bak,... Khi kt thc, ng dng s xa cc file tm i. Tuy nhin trong 1 s trng hp c bit (my treo, mt in,...) cc file tm khng c xa ht v vn tn ti trn a cng nhiu th mc khc nhau. Ta hy th vit 1 ng dng cho php user xc nh mu cc file cn xa ri tm cc file tha mn mu qui nh v xa chng, vic tm v xa nn qui t v tr mu xa trit . Th d nu ngi dng nhp pattern c:\*.tmp, ng dng s tm v xa mi file *.tmp t th mc gc. Chng 11 : Qun l h thng file Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 318 Giao din ngh ca ng dng DriveListBox chn a. DirListBox chn th mc. TextBox nhp pattern file cn xa. Button bt u duyt file qui v xa. ListBox hin th cc file b xa. Chng 11 : Qun l h thng file 160 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 319 Const QMAX = 10000 Dim strDirQueue(0 To QMAX) As String ' Hng cha cc th mc cn duyt Dim iHead As Integer ' ch s trong hng cha th mc sp duyt Dim iTail As Integer ' ch s trong hng sp cha th mc cn duyt Private Sub Form_Resize() ScaleMode = vbPixels Dir1.Move 8, 45, 170, Me.ScaleHeight - 50 FileList.Move 180, 70, Me.ScaleWidth - 185, Me.ScaleHeight - 75 End Sub Private Sub Drive1_Change() ' th tc x l s kin chn a Dir1.Path = Drive1.Drive End Sub Private Sub Dir1_Change() ' th tc x l s kin chn th mc If (Right(Dir1.Path, 1) = "\") Then strDirQueue(0) = Dir1.Path Else strDirQueue(0) = Dir1.Path & "\" End If End Sub Code ca ng dng xa file qui Chng 11 : Qun l h thng file Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 320 ' Th tc x l s kin Click button Start Private Sub cmdStart_Click() Dim bytPredIdx As Byte Dim bytCurIdx As Byte Dim strTmp As String bytPredIdx = 0 bytCurIdx = 1 iHead = 0 iTail = 1 While iHead < iTail Call DuyetXoaFileDequi iHead = iHead + 1 If (iHead > QMAX) Then iHead = 0 Wend End Sub Code ca ng dng xa file qui (tt) Chng 11 : Qun l h thng file 161 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 321 Private Sub DuyetXoaFileDequi() Dim Name As String, Path As String, strFilePath As String, intAttr As Integer Path = strDirQueue(iHead) Name = Dir(Path, vbDirectory) ' ly 1 phn t tha mn pattern Do While Name <> "" ' Lp x l phn t, nu cn. If Name <> "." And Name <> ".." Then ' b th mc hin hnh v cha ca n strFilePath = Path & Name intAttr = GetAttr(strFilePath) If (intAttr And vbDirectory) = vbDirectory Then ' nu l th mc th lu gi vo hng strDirQueue(iTail) = strFilePath & "\" iTail = iTail + 1 If (iTail > QMAX) Then iTail = 0 Else ' nu l file kim tra xem tha pattern khng If LCase(Name) Like txtPattern.Text Then intAttr = intAttr And Not vbReadOnly SetAttr strFilePath, intAttr Kill strFilePath FileList.AddItem strFilePath End If End If End If Name = Dir ' ly phn t k tha mn pattern. Loop End Sub Code ca ng dng xa file qui (tt) Chng 11 : Qun l h thng file Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 322 MN TIN HC Chng 12 LINH KIN PHN MM & TRUY XUT DATABASE Chng 12 : Linh kin phn mm & truy xut database 12.1 Tng qut v linh kin phn mm 12.2 Cch to v dng linh kin phn mm 12.3 Tng qut v truy xut database 12.4 Tng qut v debug m ngun VB 162 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 323 Mc tiu ca qui trnh pht trin phn mm hng i tng l to ra ng dng c cu trc thun nht : tp cc i tng sng v tng tc ln nhau. Mi i tng ca ng dng c th c to ra nh 1 trong cc cch sau : chn menu Project.Add Class Module to ra 1 class module mi miu t cu trc chi tit ca i tng cn to ra : cc thuc tnh d liu v cc method ca i tng. chn menu Project.Add File ri khai bo ng dn ca file *.bas cha 1 class module ca 1 ng dng c sn copy class module ny vo Project ng dng hin ti (y l 1 phng php tha k thnh qu). s dng cc iu khin sn c ca VB xy dng form giao din. 'add' module *.ocx cha 1 hay nhiu ActiveX Control ang c Windows qun l vo Project ng dng hin ti dng chng y nh cc iu khin sn c ca VB. 12.1 Tng qut v linh kin phn mm Chng 12 : Linh kin phn mm & truy xut database Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 324 VB cho php to linh kin phn mm ActiveX Control nh 1 trong 3 loi Project ActiveX EXE, ActiveX DLL v ActiveX Control. Tuy nhin qui trnh chi tit to ActiveX Control vt qu khun kh ni dung ca mn hc ny. Vic dng ActiveX Control cng ging nh dng control nh sn ca VB, ta t chng 1 cch trc quan vo cc form giao din vi kch thc v v tr ph hp vi nhu cu. Khi vit code, ta c th truy xut cc thuc tnh d liu v cc method ca ActiveX Control y nh truy xut cc thnh phn trong control nh sn. 12.2 Cch to v dng linh kin phn mm Chng 12 : Linh kin phn mm & truy xut database 163 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 325 dng 1 linh kin phn mm ActiveX Control trong 1 form ca Project ng dng, trc ht ta phi thm n vo ca s Toolbox ca Project theo qui trnh in hnh sau y : Qui trnh 'add' 1 ActiveX Control vo Project 1. n phi chut vo v tr trng ca Toolbox, chn mc Components 2. chn tab Controls, duyt v chn mc tng ng, chn OK. 3. Ca s Toolbox s cha cc icon miu t cc Act. Control trong module va chn. Chng 12 : Linh kin phn mm & truy xut database Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 326 thy vic dng ActiveX Control hu xy dng phn mm d dng nh th no, chng ta hy th vit 1 trnh duyt Web vi chc nng tng t nh IE ca Microsoft, ta tm gi ng dng sp vit ny l MyIE. Vic vit phn mm duyt Web t u rt kh khn v bn cn phi trang b nhiu kin thc nh : k thut hin th vn bn v ha, k thut tng tc vi ngi dng thng qua bn phm v chut, k thut v qui trnh vit 1 chng trnh dch, lp trnh mng dng socket, giao thc truy xut ti nguyn Web HTTP (Hypertext Transfer Protocol), ngn ng DHTML,... Nhng ton b cc cng vic m 1 trnh duyt Web cn lm c Microsoft ng gi trong 1 linh kin phn mm tn l WebBrowser. Th d v cch dng ActiveX Control Chng 12 : Linh kin phn mm & truy xut database 164 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 327 ActiveX Control "WebBrowser" l 1 i tng giao din ch cha 1 vng hin th ni dung hnh ch nht vi v tr v kch thc do ngi lp trnh qui nh. Interface ca n bao gm 3 loi : cc thuc tnh interface (khong 27), cc method (khong 12) v cc s kin (khong 16) m ngi dng c th lp trnh th tc p ng cho chng. y chng ta s gii thiu 1 s method m ta dng trong vic vit ng dng MyIE : Navigate2 (URL,...) cho php download trang Web hay file *.doc, *.xls, *.ppt,... c xc nh bi URL, hin th ni dung ca n ln vng hin th ri ch v x l s tng tc ca ngi dng (n vo vng lin kt,...). GoBack cho php quay v trang Web va truy xut (ngay trc trang hin hnh). GoForward cho php tin ti trang Web (ngay sau trang hin hnh). GoHome cho php hin th trang ch. Refresh cho php download v hin th li trang hin hnh. Stop cho php dng ngay vic download v hin th trang Web hin hnh. ExecWB cho php thc thi 1 s hnh vi trn trang web nh thay i co ch, in trang Web ra my in,... Th d v cch dng ActiveX Control (tt) Chng 12 : Linh kin phn mm & truy xut database Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 328 Giao din ngh ca trnh MyIE Chng 12 : Linh kin phn mm & truy xut database 165 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 329 Chi tit cc option trong menu v toolbar (tt) Chng 12 : Linh kin phn mm & truy xut database Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 330 Trnh MyIE c giao din SDI gm 1 menu bar, 1 toolbar, 1 ComboBox lit k cc URL va truy xut, 1 ActiveX Control "WebBrowser" x l vic truy xut, hin th cc trang Web v ch phc v cc tng tc ca ngi dng. Qui trnh chi tit xy dng ng dng MyIE s c trnh by trong bi thc hnh s 4, y ch tm tt cc bc chnh : To project loi "VB Application Wizard" v tr li cc bc Wizard to Project. Chn Tools.Menu Editor to menu bar theo c t ca slide trc. Qui trnh dng Menu Editor c gii thiu trong chng 4. Cng c li chng 4 bit qui trnh to/hiu chnh Toolbar. to (v) ComboBox nhp URL mi v lit k cc URL truy xut. to (v) control "WebBrowser". Khng cn v ComboBox v WebBrowser chnh xc v code s xc nh ng mi ln ca s chng trnh thay i. to th tc x l s kin cho cc menu option v toolbar button ri vit code cho chng. Code ca cc th tc ny ch yu lm "c" v gi cc method tng ng trong i tng WebBrowser thc thi. Phn tch & thit k giao din Chng 12 : Linh kin phn mm & truy xut database 166 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 331 Lu rng trc khi thit k c giao din ca trnh MyIE, bn cn 'add' cc linh kin ActiveX Control sau y : Microsoft Common Dialog Control 6.0. Microsoft Internet Control. Microsoft Windows Common Controls 6.0. Lu rng qui trnh Wizard cho loi Project SDI to sn cho ta 1 form ca chng trnh tn l frmMain. Form ny cha sn 1 menu bar, 1 Toolbar. Chng ta ch cn hiu chnh li 2 thnh phn ny ch khng cn phi to mi chng. Phn tch & thit k giao din (tt) Chng 12 : Linh kin phn mm & truy xut database Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 332 Trong chng 11, chng ta gii thiu qui trnh truy xut d liu trn cc file. Mt trong cc dng file gii thiu l Random File, file ny l danh sch cc record d liu c cu trc v di ging nhau, mi record cha nhiu field d liu, th d file cha cc h s sinh vin, file cha cc h s nh, file cha cc h s ng x... Hu ht cc ng dng hin nay (nht l cc ng dng nghip v) u phi truy xut cc random file. Vic qun l cc random file bao gm nhiu tc v nh to file mi vi cu trc record c th, thm/bt/hiu chnh/duyt cc record, tm kim cc record tha mn 1 tiu chun no ,... thc hin cc tc v trn (nht l tm kim record) hiu qu, tin cy, ta cn nhiu kin thc khc nhau v phi tn nhiu cng sc. Random file (vi 1 s s ci tin v tng cng) c gi l database quan h. C nhiu format database quan h khc nhau ang c dng. gii phng cc ng dng khi vic qun l database, ngi ta xy dng ng dng c bit : DBMS (Database Management System). ng dng s nh DBMS truy xut database c d dng. 12.3 Tng qut v truy xut database Chng 12 : Linh kin phn mm & truy xut database 167 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 333 V nguyn tc, ng dng VB (hay vit bng ngn ng khc) c th truy xut 1 database bng 1 trong cc giao tip lp trnh sau y : ADO (ActiveX Data Objects) DAO (Data Access Objects) ODBC (Open Database Connectivity) DBMS-Specific Language Direct to database (file) Trong cc giao tip truy xut database trn ch c ADO l d dng hn c, i a s trng hp ta ch to trc quan cc ActiveX Control v khai bo cc thuc tnh ca chng l truy xut c database m khng cn vit code. Trong trng hp phi vit code th cng rt ngn v d dng. Cc giao tip lp trnh truy xut database Chng 12 : Linh kin phn mm & truy xut database Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 334 Truy xut database dng ADO thng qua cc ActiveX Control l phng php truy xut database trc quan v d dng nht. a s cc database trn Windows do Access to ra trong mi file database cha nhiu table, mi table l danh sch n record c cu trc chung no . Qui trnh in hnh truy xut cc record ca 1 table trong 1 database Access c th dng cc i tng sau : Dng i tng ADODB trong th vin "Microsoft ActiveX Data Objects 2.x Library" c th lit k cc table trong 1 database Access. Dng i tng Microsoft Data Control 6.0 qun l 1 RecordSet cha tp cc record ca 1 table tha mn 1 iu kin no . Dng i tng Microsoft DataGrid Control 6.0 hin th cc record ca 1 Data Control v cho php user thm/bt/hiu chnh cc record. thy r vic truy xut database l rt d dng, ta hy vit 1 ng dng truy xut database dng Access c giao din nh slide sau : Truy xut database dng ADO thng qua cc ActiveX Control Chng 12 : Linh kin phn mm & truy xut database 168 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 335 TextEdit qui nh file cn truy xut. ComboBox lit k cc Table trong file. ADODC qun l cc record tha mn 1 iu kin mong mun (c th n ). DataGrid hin th cc record trong ADODC user kho st v hiu chnh. Giao din ngh ca ng dng truy xut database Chng 12 : Linh kin phn mm & truy xut database Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 336 Ta c th to project dng "Standard EXE", dng cc iu khin trong Form ta cn 'add' cc ActiveX Control sau vo Project : Microosft Data Control 6.0 qun l 1 RecordSet cha tp cc record trong 1 table. Microsoft DataGrid Control 6.0 hin th cc record ca 1 Data Control v cho php user thm/bt/hiu chnh cc record. Microsoft Common Dialog Control 6.0 hin th ca s duyt file v chn file cn truy xut. dng c i tng ADODB trong Project, ta chn menu Project.References chn th vin sau : Microsoft ActiveX Data Objects 2.x Library, vi x =1 | 2 | 3 | 4 | 5 ... Thit k trc quan form theo slide trc, to cc th tc x l s kin cho button Browse v s kin Click cho ComboBox. Qui trnh xy dng ng dng ca slide trc Chng 12 : Linh kin phn mm & truy xut database 169 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 337 ' Th tc x l click button Browse Private Sub cmdBrowse_Click() ' hin th dialog box duyt v chn file CommonDialog1.ShowOpen ' hin th file c chn vo textbox txtFileName.Text = CommonDialog1.FileName ' duyt cc table v hin th tn ca chng vo ComboBox ListAccessTables (txtFileName.Text) End Sub ' Th tc x l khi user chn Table trong danh sch Private Sub cbTable_Click() Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;_ Data Source=" & txtFileName.Text Adodc1.RecordSource = cbTable.Text Adodc1.Refresh End Sub ' Th tc phc v s kin form b thay i kch thc. Private Sub Form_Resize() ' v li DataGrid ph hp vi kch thc mi ca form ScaleMode = vbPixels RsList.Move 5, 60, Me.ScaleWidth - 10, Me.ScaleHeight - 65 End Sub Chi tit cc th tc x l s kin Chng 12 : Linh kin phn mm & truy xut database Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 338 Private Sub ListAccessTables(strDBPath As String) Dim adoConnection As ADODB.Connection, adoRsFields As ADODB.Recordset While cbTable.ListCount <> 0 ' Xa danh sch hin hnh cbTable.RemoveItem 0 Wend ' To 1 connection n file database Set adoConnection = New ADODB.Connection adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath ' Duyt cc tables, 'add' tn ca tng table vo danh sch ComboBox. Set adoRsFields = adoConnection.OpenSchema(adSchemaTables) With adoRsFields Do While Not .EOF If .Fields("TABLE_TYPE") = "TABLE" Then cbTable.AddItem .Fields("TABLE_NAME") End If .MoveNext Loop End With adoRsFields.Close ' ng v xa recordset cha cc table Set adoRsFields = Nothing adoConnection.Close ' ng v xa connection n file database Set adoConnection = Nothing End Sub Chi tit th tc hin th danh sch cc Table ca database Chng 12 : Linh kin phn mm & truy xut database 170 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 339 nh ngha DSN (Data source name) miu t file database, nu c bc ny, ng dng truy xut database thng qua tn lun l DSN m khng cn bit chnh xc v tr ng dn file database v my cha file database. Dng icon "ODBC ..." trong Control Panel ca Windows nh ngha DSN. Trong ng dng ta dng i tng ADODB truy xut database theo qui trnh in hnh sau : 1. to 1 i tng Connection miu t database cn truy xut. 2. gi method OpenSchema trn i tng Connection tm cc Table trn database. 3. khi user chn 1 Table (hay dng lnh SQL miu t iu kin xc nh cc record), ta gi method Execute trn i tng Connection to 1 i tng RecordSet cha cc record tm c. 4. duyt cc record trong RecordSet v x l chng theo yu cu. 5. ng v xa RecordSet v lp li cc bc 3, 4 x l Table khc. 6. ng v xa cc i tng to ra gii phng b nh do chng chim. Lp trnh truy xut database dng ADO Chng 12 : Linh kin phn mm & truy xut database Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 340 Th d lp trnh truy xut database dng ADO TextEdit qui nh file cn truy xut. Button duyt v chn file database. ComboBox lit k cc Table trong file. Listbox hin th cc record trong 1 Table chn ( xem ch khng hiu chnh). Chng 12 : Linh kin phn mm & truy xut database 171 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 341 Dim adoConnection As ADODB.Connection ' bin tham kho n Connection Dim adoRsFields As ADODB.Recordset ' bin tham kho n RecordSet ' Th tc x l click button Browse Private Sub cmdBrowse_Click() ' hin th dialog box duyt v chn file CommonDialog1.ShowOpen ' hin th file c chn vo textbox txtFileName.Text = CommonDialog1.FileName ' duyt cc table v hin th tn ca chng vo ComboBox ListAccessTables (txtFileName.Text) End Sub ' Th tc phc v s kin form thay b thay i kch thc. Private Sub Form_Resize() ' v li ListBox ph hp vi kch thc mi ca form ScaleMode = vbPixels RsList.Move 5, 60, Me.ScaleWidth - 10, Me.ScaleHeight - 65 End Sub Chi tit cc th tc x l s kin Chng 12 : Linh kin phn mm & truy xut database Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 342 Private Sub ListAccessTables(strDBPath As String) While cbTable.ListCount <> 0 ' Xa danh sch hin hnh cbTable.RemoveItem 0 Wend ' 1. To 1 connection n file database Set adoConnection = New ADODB.Connection adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath ' 2. Duyt cc tables, 'add' tn ca tng table vo danh sch ComboBox. Set adoRsFields = adoConnection.OpenSchema(adSchemaTables) With adoRsFields Do While Not .EOF If .Fields("TABLE_TYPE") = "TABLE" Then cbTable.AddItem .Fields("TABLE_NAME") End If .MoveNext Loop End With adoRsFields.Close ' ng v xa recordset cha cc table Set adoRsFields = Nothing ' lu vn m Connection n file database hu truy xut li End Sub Chi tit th tc hin th danh sch cc Table ca database Chng 12 : Linh kin phn mm & truy xut database 172 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 343 ' Th tc x l click chn table trong ComboBox Private Sub cbTable_Click() Dim fcount As Integer, rcount As Integer, strBuf As String ' 3. To i tng RecordSet cha cc record ca Table c chn Set adoRsFields = adoConnection.Execute("SELECT * FROM " & cbTable.Text) ' 4. Duyt cc record trong RecordSet v hin th chng trong ListBox With adoRsFields rcount = 0 ' ch s record fcount = .Fields.Count ' s field trong tng record Do While Not .EOF ' duyt tng record trong recordset rcount = rcount + 1 strBuf = Str(rcount) & ": " & .Fields(0).Value For idx = 1 To fcount - 1 ' duyt tng field v ni kt vo chui strBuf strBuf = strBuf & ", " & .Fields(idx).Value Next RsList.AddItem strBuf ' add chui kt qu vo Lisbox .MoveNext ' di chuyn n record k tip Loop End With adoRsFields.Close ' ng v xa recordset Set adoRsFields = Nothing End Sub Chi tit cc th tc x l s kin Chng 12 : Linh kin phn mm & truy xut database Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 344 Sau khi vit code cho ng dng xong, ta s th chy n xc nh xem n gii quyt ng yu cu khng. Thng ng dng cha nhiu li sai thuc 1 trong 2 loi sau : cc li v t vng (tn cc phn t, t dnh ring,..) v c php ca cc phn t cu thnh ng dng. VB s pht hin cc li ny d dng v hin th thng bo li cho ta xem xt v sa cha. Thng sau khi c VB thng bo v cc li ny, ta d dng sa chng. cc li v gii thut ca ng dng. VB khng th pht hin cc li ny v chng thuc phm tr ng ngha. ng dng s chy theo gii thut c miu t, ta phi t nh gi tnh ng/sai v gii thut, nhng vic tm li gii thut thng rt kh. gip ngi lp trnh d dng tm ra cc li gii thut, VB cung cp cng c cho php h kim sot c qui trnh chy ng dng v truy xut cc bin d liu ca chng trnh, cng c ny c gi l 'Debug'. 12.4 Tng qut v hot ng debug ng dng Chng 12 : Linh kin phn mm & truy xut database 173 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 345 Trong qu trnh debug, ng dng s 1 trong 2 trng thi sau : Pause : trng thi ca ng dng trc khi chy hay khi dng li theo 1 iu kin dng no ca ngi debug. VB s ghi nh lnh sp thi hnh trc khi dng (lnh u tin ca ng dng nu n cha bt u chy). Do tnh lch s, ta dng thut ng PC - program counter ni v lnh ny. trng thi ny, ngi debug c th xem gi tr ca cc bin d liu bit ng dng chy ng hay sai theo yu cu ri iu khin vic thi hnh tip theo ca ng dng, lc ny ng dng s chuyn sang trng thi Running. Running : trng thi m ng dng ang chy cc lnh ca n n khi n gp 1 iu kin dng thit lp trc, lc ny ng dng s chuyn v trng thi Pause. Trong qu trnh debug, ng dng trng thi Pause ch yu thi gian v ngi debug tng tc vi ng dng ch yu trng thi ny. Mi khi ng dng c chy tip, n chuyn qua trng thi Running, nhng s nhanh chng chy n lnh dng v chuyn v trng thi Pause (tr phi b 'block' ch I/O hay b 'loop' trong cc vng lp v tn). Tng qut v hot ng debug ng dng Chng 12 : Linh kin phn mm & truy xut database Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 346 xem ni dung ca 1 bin d liu, ngi debug c th : chn menu Debug.Add Watch thm 1 biu thc (thng l bin d liu) vo ca s Watch xem ni dung ca n. chn menu Debug.Edit Watch hiu chnh biu thc (thng l bin d liu) hin hnh ca s Watch (context, watch type). di chut n tn bin trong ca s code, 1 ca s nh cha gi tr ca bin s c hin th ngi debug xem xt. hin th ca s cha danh sch cc th tc ang thc hin d dang (cc th tc lng nhau theo th t), ngi debug c th : chn menu View.Call Stacks. xem v tr PC hin hnh (lnh sp thc hin k tip), ngi debug c th : chn menu Debug.Show Next Statement (thng khi ng dng dng li, n s hin th lnh chy k tip - lnh b dng vi mu t c bit v c du mi tn l tri ca lnh). chn menu Debug.Set Next Statement thit lp lnh cha cursor hin hnh l lnh chy k tip (thay v lnh b dng trc ) Cc thao tc xem v hiu chnh bin d liu Chng 12 : Linh kin phn mm & truy xut database 174 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 347 Nu iu kin dng l v tr lnh c th th ngi debug c th : chn menu Debug.Clear All Breakpoints xa tt c cc im dng (breakpoint) hin ti. im dng l lnh m khi ng dng chy n, ng dng s dng li v chuyn v trng tho Pause ngi debug kim sot ni dung d liu ca ng dng. chn menu Debug.Toggle Breakpoint thit lp/xa im dng lnh cha cursor hin hnh (c th thc hin nhanh chc nng ny bng cch di cursor n l tri ca lnh cn thit lp/xa im dng ri click chut). Nu iu kin dng l bin d liu/biu thc no b thay i hay c gi tr True th ngi debug c th : chn menu Debug.Add Watch, nhp biu thc (thng l 1 bin d liu) ri chn iu kin dng "Break when value is True" hay "Break when value changes". chn menu Debug.Edit Watch, hiu chnh biu thc hin hnh (thng l 1 bin d liu) ri chn iu kin dng "Break when value is True" hay "Break when value changes". Ta c th (v nn) thit lp nhiu iu kin dng ng thi 'ro chn' lung thi hnh ca chng trnh. Cc lnh thit lp iu kin dng Chng 12 : Linh kin phn mm & truy xut database Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 348 chy tip ng dng t v tr PC hin hnh, ngi debug c th : o chn menu Run.Start bt u chy ng dng, ng dng ch dng li khi gp iu kin dng no c thit lp. o chn menu Run.Continue chy tip t v tr PC hin hnh, ng dng ch dng li khi gp iu kin dng no c thit lp. o chn menu Debug.Step Over chy tip 1 lnh ri dng li (Pause), nu lnh thi hnh l lnh gi th tc th ton b th tc s c chy. y l lnh cho php thc hin tng lnh theo mc v m. o chn menu Debug.Step Into chy tip 1 lnh ri dng li (Pause), nu lnh thi hnh l lnh gi th tc th ng dng s dng li lnh u tin ca th tc. y l lnh cho php thc hin tng lnh theo mc vi m. o chn menu Debug.Step Out chy tip cc lnh cn li ca th tc hin hnh ri quay v v dng li sau lnh gi th tc ny (Pause). o chn menu Debug.Run to Cursor chy tip ng dng t v tr PC hin hnh n lnh cha cursor hin hnh ri dng li (Pause). Cc lnh iu khin chy tip ng dng Chng 12 : Linh kin phn mm & truy xut database 175 Khoa Cng ngh Thng tin Trng H Bch Khoa Tp.HCM Mn : Tin hc Slide 349 Khi ng dng trng thi 'Pause', ngi debug c th thc hin cc lnh sau : chn menu Run.End kt thc vic chy ng dng. chn menu Run.Restart kt thc vic chy ng dng ri bt u chy li t u. chn menu Run.Break dng t ngt vic chy ng dng, lnh ang thc hin s c nh du ta d theo di. Chc nng ny gip ta bit ng dng ang b 'loop' on lnh no. Nu ng dng ang b 'block' ch bin c I/O, s khng c lnh no c dnh du c. Cc lnh iu khin khc Chng 12 : Linh kin phn mm & truy xut database