Lập trình Visual Basic ngày càng được yêu cầu trong các dự án phần mềm hiện nay. Bài giảng được biên soạn cơ bản dựa trên quyển Visual Basic 6 Certification Exam Guide của Dan Mezick & Scot Hillier xuất bản bởi McGraw-Hill năm 1998. Giáo trình cũng được biên soạn dựa trên kinh nghiệm thực tế về Visual Basic.
BÀI TP LP TRÌNH HNG S KIN Biên son: B môn CNPM–HSPKT HY 2005 Trang 1 Bμi tËp ch−¬ng 1 NG¤N NG÷ LËP TR×NH VISUAL BASIC MC TIÊU: SAU KHI HOÀN THÀNH CÁC BÀI TP, NGI HC CÓ TH Khai báo các bin thuc các kiu d liu c bn (byte, integer, long, string, boolean, single) và kiu mng, kiu bn ghi trong Visual Basic. S dng các hàm nhp xut d liu (MsgBox và InputBox) ca VB. S dng và vn dng đc các cu trúc r nhánh (If .Then và If .Then .Else), cu trúc đa r nhánh (Select Case) và các loi vòng lp : For; Do While .Loop; Do .Loop đ vit chng trình. S dng đc mt s hàm x lý xâu thng dùng. A - BÀI TP Bài tp 1: S dng hàm MsgBox và InputBox Vit chng trình gii phng trình bc 2. H s a, b, c nhp t bàn phím bng hàm InputBox (Gii s a ≠ 0). Bài tp 2: Minh ho cu trúc If … Then. Vit chng trình tính lng nh sau: Cho ngi dùng nhp vào lng c bn LCB, H s lng HSL và chc v CV. Nu chc v là "giam doc" thì cng thêm 500000 vào lng thc lnh (LTL), nu là "truong phong" thì cng thêm 300000, nu là "to truong" thì cng thêm 200000, nu là "nhan vien" thì không cng. Sau đó hin th tng s lng thc lnh. Bài tp 3-Select Case: Yêu cu nh bài 2, nhng s dng cu trúc Select Case Bài tp 4: Hin th các loi thông báo s dng hàm MsgBox. Vit chng trình hin th 4 loi hp thoi MsgBox nh mô t di đây khi ngi dùng nhp vào các s tng ng 1,2,3,4 bng hàm InputBox: 1 3 2 4 Bài tp 5: S dng cu trúc Select Case. Vit chng trình cho phép ngi dùng nhp vào 2 s thc a và b và mt trong các phép toán gm +, -, *, /, \ (Chia ly phn nguyên), mod (chia ly phn d) hoc ^ (Lu tha). Sau đó hin th kt qu tng ng. Ví d nu nhp 2 s 10, 20 và phép toán là + thì thông báo "Kt qu là 30" v.v. BÀI TP LP TRÌNH HNG S KIN Biên son: B môn CNPM–HSPKT HY 2005 Trang 2 Bài tp 6: S dng vòng lp FOR. Vit chng trình tính tng ca dãy s sau và hin th kt qu ra màn hình: S = 1 + 2 + 3 + . + N , Vi N nhp t bàn phím. Bài tp 7: S dng vòng lp For vi điu khon Step. Hãy vit chng trình tính tng các s chn t 1 đn 100. Bài tp 8: S dng vòng lp For đm ngc “FOR … DOWNTO…”. Hãy s dng vòng lp For in ra các s t 100 đn 1 bng lnh Debug.Print. Bài tp 9: S dng vòng lp Do…Loop Until Cho ngi dùng nhp vào mt dãy các s nguyên (âm và dng) và tính tng các s âm, tng các s dng. Vic nhp kt thúc nu s nhp vào là 0. Bài tp 10: S dng cu trúc Do While … Loop. Hãy cho bit cn gi s tin tit kim 1 triu đng vào ngân hàng trong thi gian my nm đ có 2 triu đng. Bit rng lãi sut hàng nm là 8%. Bài tp 11: Thoát khi vòng lp vi Exit For, Exit Do. Vit chng trình nhp s nguyên n và kim tra xem có phi là s nguyên t hay không ?. Bài tp 12: S tng đng gia các cu trúc lp. Tính n! s dng các cu trúc lp khác nhau. Bài tp 13: S dng vòng lp FOR Lp trình tính tng ca dãy s sau và hin th kt qu ra màn hình : S = ∑∑∑ === ++ 310 300 2 200 100 2 8 1 2 nnn nnn Bài tp 14 – Tính N !: Vit chng trình nhp s nguyên N (0<N<20) và tính N!. Bài tp 15- Tính tng 1 dãy s: Tính tng ca dãy sau, vi n nhp t bàn phím: )1( )1( 4.33.22.1 +++++++++++++= nnnininnnS Bài tp 16- Tính dãy Fibonasi: Tính tng ca day s Fibonasi theo 2 cách: bng đ qui và không đ qui, vi N nhp t bàn phím. Bit rng dãy s Fibonasi đc đnh ngha nh sau: F (n) = 1 nu n = 0, n = 1 F (n) = F n-2 + F n-1 nu n ≥ 2 Bài tp 17- Tìm c s chung ln nht : Tìm c s chung ln nht ca 2 s a và b (a,b nhp t bàn phím). Bài tp 18-Ti gin phân s : Kim tra xem phân s a/b (a, b nhp t bàn phím) đã ti gin hay cha? Nu cha ti gin thì hãy thc hin rút gn phân s đó và in ra màn hình. BÀI TP LP TRÌNH HNG S KIN Biên son: B môn CNPM–HSPKT HY 2005 Trang 3 Bài tp 19- Tìm s nguyên t: Nhp vào mt dãy s nguyên dng bng hàm InputBox. Sau đó in ra các giá tr là s nguyên t. Bài tp 20-m ký t: Lp trình cho ngi dùng nhp vào mt xâu ký t S. Sau đó đm xem trong xâu nhp vào có bao nhiêu ký t là a và A. Bit rng : - Hàm Mid(S, i, 1) cho ta ký t th i trong xâu S - Hàm Len(S) cho ta đ dài ca xâu S Bài tp 21-Tính tng dãy s: Vit chng trình nhp x và n ri tính tng S = 1 . 432 1 32 + +++++ n xxxx n (Hay có th vit di dng S = 1 . 4321 3210 + +++++ n xxxxx n ) Bài tp 22 : Bài toán tìm phn t ln nht (nh nht) trong mt danh sách Vit chng trình nhp n s nguyên vào mt mng nguyên A, sau đó tìm s ln nht trong mng nguyên đó. Bài tp 23: Lit kê các phn t ln nht (nh nht) trong danh sách. Nhp danh sách gm n s nguyên, sau đó hin th các phn t có giá tr ln nht. Bài tp 24: Sp xp mt dãy s nguyên. Vit chng trình cho phép nhp vào N s nguyên. Sau đó sp xp dãy s này theo chiu tng dn và hin th dãy đã sp xp ra màn hình bng lnh Debug.Print. Bài tp 25 – Quick Sort: Nhp vào mt dãy N s nguyên dng, sau đó sp xp dãy này tng dn theo gii thut Quick-Sort. Kt qu in ra bng hàm Debug.Print. Bài tp 26- Heap Sort: Nhp vào mt dãy N s nguyên dng, sau đó sp xp dãy này tng dn theo gii thut Heap-Sort. Kt qu in ra bng hàm Debug.Print. Bài tp 27: Sp xp mt dãy các phn t, trong đó mi phn t là mt xâu ký t theo vn Alphabet (Theo th t t đin) bng thut toán sp xp đn gin. Vit chng trình nhp vào danh sách tên ca mt lp, sau đó sp xp theo vn Alphabet và hin th kt qu sp xp ra màn hình bng hàm Debug.Print Bài tp 28-Chun hoá xâu: Nhp vào mt xâu ký t bt k sau đó chun hoá và in ra màn hình. Xâu chun hoá đây là xâu không có 2 du trng lin nhau, không có du trng hai đu và sau du chm hoc du phy phi có mt du trng. Bài tp 29-Chun hoá xâu: Yêu cu nh bài 28 và mi ký t đu câu là ch HOA. Bài tp 30-Tách s khi xâu: Nhp vào mt xâu ký t có cha c ch s và ch cái ví d: “Ngày mng 2 tháng 9 nm 1945 Bác H đã đc tuyên ngôn đc lp ti Qung trng Ba ình lch s !”. Gi s các s là nguyên dng. Hãy tách các s đó ra khi xâu và in ra màn hình ( đây s tách đc 3 s là 2, 9 và 1945). BÀI TP LP TRÌNH HNG S KIN Biên son: B môn CNPM–HSPKT HY 2005 Trang 4 Bài tp 31-Tách Câu: Nhp vào mt xâu ký t bt k, kt thúc mi câu là mt du chm. Hãy in mi câu trong xâu đó trên mt dòng bng hàm Debug.print. Bài tp 32-Chuyn đi Font ch: Gi s mt tp vn bn có ni dung đc đnh dng vi font ch .vntime, Hãy chuyn ni dung ca tp này sang font ch VIQR và lu vào mt tp khác. Tên tp ngun và tp đích tng ng là : c:\FontVNTime.txt và c:\FontVIQR.txt. Bài tp 33-Thng kê ký t trong xâu: Nhp mt xâu ký t bt k, sau đó in ra màn hình s lng tng loi ký t đã nhp. Bài tp 34-Thay th ký t: Nhp vào mt xâu, sau đó thay th tt c các ký t trng (chr(32)) bng ký t “_”. Kt qu in ra màn hình bng hàm MsgBox. Bài tp 35-Cng s nguyên ln: Vit chng trình cng 2 s nguyên dng ln bt k và in kt qu ra màn hình. Bài tp 36-Ma trn s: Vit chng trình nhp vào mt ma trn gm m hàng và n ct. Sau đó tính tng các phn t dng, tng các phn t trên 2 đng chéo chính. Bài tp 37- Kim tra "đng thng" trong ma trn: Nhp mt ma trn vuông kích thc N x N. Ma trn này ch cha các s 0 và 1. Hãy lp trình đ cho bit ma trn đó có ít nht 5 phn t thng hàng (ngang, dc, chéo xuôi, chéo ngc) có cùng giá tr là 1 hay không ? Bài tp 38- Mng bn ghi: Vit chng trình nhp vào mt danh sách cán b, sau đó sp xp danh sách cán b theo tui và lu vào mt tp tên là Canbo.txt. Thông tin v cán b gm: H và tên, Nm sinh, Quê quán, H s lng. PH LC 1 Di đây là mô t mt s hàm rt hay dùng trong VB đ bn tham kho trong khi lp trình và cho các bài tp sau này . Tên hàm Mô t Ví d Abs (x) Hàm tính giá tr tuyt đi ca mt s. Abs(-5) 5 Sqr(x) Tính cn bc hai ca mt s x (x>=0) Sqr(4) 2 Round(x) Làm tròn s x Round(3.2) 3 Asc(Ch) Tr v mã ca ký t Ch Asc("A") 65 Chr(n) Tr v ký t có mã Ascii là n Chr(65) "A" UCase(S) Tr v xâu ch hoa (Nhng không làm thay đi đn xâu S) UCase("aBc") "ABC" LCase(S) Tr v xâu ch thng (Nhng không làm thay đi đn xâu S) UCase("aBc") "abc" Len(S) Tr v đ dài ca xâu S Len("abc123") 6 Mid(S,i,n) Ly mt xâu con trong S t v trí th i, n ký t. Nu b qua tham s n thì mc đnh là ly t v trí i đn ht xâu. Mid("ABCDE", 2,3) "BCD" Left(S, n) Ly ra n ký t trong xâu S tính t bên trái Left(S,"ABCD",3) "ABC" Right(S,n) Ly ra n ký t trong xâu S tính t bên phi Right(S,"ABCD",3) "BCD" Trim(S) Tr v mt xâu S nhng b các du trng hai đu (Xâu S không b thay đi). Trim(" ABC ") "ABC" LTrim(S) Ging nh Trim(S) nhng ch ct phía trái LTrim(" ABC ") "ABC " RTrim(S) Ging nh Trim(S) nhng ch ct phía phi RTrim(" ABC ") " ABC" StrReverse(S) o ngc xâu S (S không b thay đi) StrReverse("AB") "BA" Str(x) Chuyn s x sang dng xâu Str(10) "10" Val(S) Chuyn mt xâu sang dng s Val("10") 10 Instr(n,S1,S2) Kim tra xâu S2 có nm trong xâu S1 hay không. Hàm tr v giá tr > 0 nu có. Instr(1,"ABC", "BC") 2 Split(S, C) Tách xâu S thành các phn t, vi ký hiu phân Dim S As string, R As BÀI TP LP TRÌNH HNG S KIN Biên son: B môn CNPM–HSPKT HY 2005 Trang 5 tách là C. Variant Dim I As integer S = “ha,noi,viet,nam” R = Split(S,”,”) For i=0 to Ubound(R) Msgbox R(i) Next Replace (S, S1, S2) Thay th các xâu con S1 trong S bng xâu S2 Dim S As string S = Replace(“A!!”,”!!”,”!”) FileLen(F) Cho bit kích thc ca file F tính theo bytes MsgBox FileLen("C:\io.sys") CurDir Tr v đng dn ca th mc hin hành Msgbox CurDir Year(D) Tr v nm ca bin kiu Date D Dim D As Date D = Now Msgbox Year(D) Month(D) Tr v tháng ca bin kiu Date D MsgBox Month(Now) Day(D) Tr v ngày ca biu thc kiu Date D Day(#21/2/2004#) 21 Hour(T) Tr v gi ca biu thc kiu Time T Hour(Time) Now Hàm tr v ngày tháng hin hành Msgbox now Time Tr v gi phút giây hin hành Msgbox Time Rnd Hàm tr v mt s ngu nhiên trong khong [0, 1) Lu ý : trc đó phi gi th tc Randomize. Msgbox Rnd B. HNG DN - GII MU Bài tp 1 a. Hng dn: Cn tính giá tr ca Δ, Sau đó s dng cu trúc lnh If .Then .Else (Hoc cu trúc Select Case) đ kim tra Δ và tính nghim. b. Chng trình mu: Cách 1: S dng cu trúc If Then … Else Cách 2: S dng cu trúc Select Case Private Sub Form_Load() Dim a As Single, b As Single Dim c As Single Dim Delta As Single Dim x1 As Single, x2 As Single a = InputBox("Nhp h s a (a <> 0) :") b = InputBox("Nhp h s b : ") c = InputBox("Nhp h s c : ") Delta = b ^ 2 - 4 * a * c If Delta < 0 Then MsgBox "Vô nghim ", vbInformation Else If Delta = 0 Then x1 = -b / (2 * a) MsgBox "Có nghim kép:" & x1 Else x1 = (-b + Sqr(Delta)) / (2 * a) x2 = (-b - Sqr(Delta)) / (2 * a) MsgBox "x1=" &x1 & " x2=" &x2 End If '//// Ca If Delta = 0 End If '//// Ca If Delta < 0 End Sub Private Sub Form_Load() Dim a As Single, b As Single Dim c As Single Dim Delta As Single Dim x1 As Single, x2 As Single a = InputBox("Nhp h s a (a<>0):") b = InputBox("Nhp h s b : ") c = InputBox("Nhp h s c : ") Delta = b ^ 2 - 4 * a * c Select Case Delta Case Is < 0 MsgBox "Vô nghim " Case 0 x1 = -b / (2 * a) MsgBox "Nghim kép:" & x1 Case Is > 0 x1 = (-b + Sqr(Delta)) / (2 * a) x2 = (-b - Sqr(Delta)) / (2 * a) MsgBox "x1=" &x1 &" x2=" &x2 End Select End Sub c. Ghi chú: Cu trúc Select Case ca VB rt mnh, nó không nhng kim tra biu thc dng s nguyên mà còn có th kim tra c dng s thc, xâu ký t, đng thi vi mi loi giá tr có th kim tra mt khong giá tr (s dng t khoá Case is …) BÀI TP LP TRÌNH HNG S KIN Biên son: B môn CNPM–HSPKT HY 2005 Trang 6 Bài tp 2 a. Hng dn: Lng thc lnh (LTL) = HSL * LCB + Ph cp chc v. tính Ph cp chc v, cn s dng câu lnh If . Then đ kim tra xem chc v nhp vào có là "giam doc", "truong phong" hay "to truong" hay không đ cng thêm. b. Chng trình mu: Chng trình nhp và tính lng Private Sub Form_Load() Dim HSL As Long, LCB As Long, PCCV As Long, LTL As Long Dim CV As String LCB = InputBox("nhp vào lng c bn : ", "Tính lng", 290000) HSL = InputBox("nhp vào h s lng", "Tính lng", 1.92) CV = InputBox("Chc v ") If CV = "giam doc" Then LTL = HSL * LCB + 500000 If CV = "truong phong" Then LTL = HSL * LCB + 300000 If CV = "to truong" Then LTL = HSL * LCB + 20000 If CV = "nhan vien" Then LTL = HSL * LCB End Sub c. Ghi chú: Có th thay th cu trúc If .Then trên bng cu trúc If Then .ElseIf hoc bng cu trúc đa r nhánh Select Case (ây là cu trúc phù hp nht) Bài tp 3 a. Hng dn: Cu trúc Case trong VB cho phép kim tra c biu thc dng Xâu, S nên có th áp dng vào gii quyt bài toán này. b. Chng trình mu: Tính lng đn gin minh ho cu trúc Select Case Private Sub Form_Load() Dim HSL As Long, LCB As Long, PCCV As Long, LTL As Long Dim CV As String LCB = InputBox("nhp vào lng c bn : ", "Tính lng", 290000) HSL = InputBox("nhp vào h s lng", "Tính lng", 1.92) CV = InputBox("Chc v ") Select Case CV Case "giam doc" LTL = HSL * LCB + 500000 Case "truong phong" LTL = HSL * LCB + 300000 Case "to truong" LTL = HSL * LCB + 20000 Case Else LTL = HSL * LCB End Select MsgBox "Lng ca bn là : " & LTL End Sub C. Ghi chú: chng trình vn tính đúng cho dù ngi dùng có th nhp chc v dng ch thng hay ch HOA thì nên UCase các xâu trc tiên. (Xem ph lc 1) BI TP LP TRèNH HNG S KIN Biờn son: B mụn CNPMHSPKT HY 2005 Trang 7 Bi tp 4 a. Hng dn: hin th hp thoi Msgbox vi cỏc nỳt v biu tng khỏc nhau, ta ch cn thờm cỏc hng vo tham s th 2 ca hm MsgBox, vớ d : vbQuestion, vbYesNo, vbOKCancel, vbInformation, vbAbortRetryIgnore Ngoi ra, bit ngi dựng mun hin th loi hp thoi no (nhp vo s my) cn s dng cu trỳc Select Case kim tra v ra quyt nh. b. Chng trỡnh mu: Private Sub Form_Load() Dim Kieu As Byte Kieu = InputBox("Bạn hãy nhập vào một số (1-4) để chọn kiểu MsgBox : ") Select Case Kieu Case 1: MsgBox "Kiểu đơn giản chỉ có nút OK" '///Viết nhiều lệnh cần cách nhau dấu ":" Case 2: MsgBox "Có 2 nút Yes và No", vbYesNo Case 3: MsgBox "Có nút OK, Cancel và dấu hỏi chấm", vbOKCancel Or vbQuestion Case 4: MsgBox "Có 3 nút và dấu cảnh báo màu đỏ", vbAbortRetryIgnore Or vbCritical Case Else: MsgBox "Bạn phải nhập 1,2,3 hoặc 4", vbExclamation, "nhập sai" End Select End Sub c. Ghi chỳ: Cú th kt hp hin th cỏc nỳt, cỏc biu tng bng cỏch t hp OR gia cỏc hng s: Vớ d vbOKCancel Or vbExclamation hin th 2 nỳt OK/Cancel kốm thờm biu tng khuyn cỏo . Hm MsgBox luụn tr v mt s cho bit l ngi dựng va click chn nỳt no ca hp thụng bỏo MsgBox. Vớ d: giỏ tr tr v l vbOK, vbCancel. Bi tp 5 a. Hng dn: Vic cng, tr, nhõn hay chia a vi b v.v . cũn ph thuc vo phộp toỏn (toỏn t) m ngi dựng nhp vo l gỡ. Do vy, ra quyt nh l thc hin phộp toỏn no lờn 2 toỏn hng a v b ú, cn s dng cu trỳc Select Case kim tra toỏn t nhp vo. b. Chng trỡnh mu: Private Sub Form_Load() Dim a As Single, b As Single, KetQua As Single Dim PhepToan As String a = InputBox("Nhập số hạng thứ nhất: ") PhepToan = InputBox("Nhập vào phép toán (+,-,*,/,mod,div,^)") b = InputBox("Nhập số hạng thứ hai: ") Select Case PhepToan Case "+": KetQua = a + b Case "-" KetQua = a - b Case "*": KetQua = a * b Case "/": KetQua = a / b Case "div": KetQua = a \ b Case "mod": KetQua = a Mod b Case "^": KetQua = a ^ b BÀI TP LP TRÌNH HNG S KIN Biên son: B môn CNPM–HSPKT HY 2005 Trang 8 Case Else: MsgBox "T«i kh«ng hiÓu phÐp to¸n nµy !", vbExclamation, "NhËp sai" End Select MsgBox "KÕt qu¶ cña " & a & PhepToan & b & " lµ : " & KetQua End Sub Thc hin các phép toán c bn dùng cu trúc Select Case C. Ghi chú : các phép chia nguyên và chia d trong VB: • Phép chia \ là phép chia ly phn nguyên: Ví d 10 \ 3 = 3. Phép chia / là phép chia thông thng (ly c phn nguyên và phn d), ví d: 5 / 2 = 2.5. • Phép mod là chia ly phn d, ví d 10 mod 3 = 1, 6 mod 4 = 2 v.v… Bài tp 6 a. Hng dn: S là tng các s hng th i, vi i chy t 1 đn N, S hng tng quát là i. Do vy đ tính tng ca dãy s S, có th s dng mt trong 3 loi vòng lp đã bit. b. Chng trình mu (Gõ đon mã trong th tc Form_Load) Cách 1: S dng vòng lp For Dim i As Integer Dim N As Integer Dim S As Long N=Inputbox("Nhp s N (N>0) : ") S = 0 For i=1 To N S = S + i ‘///S = S + <S hng tng quát> Next Msgbox "Tng = " & S Cách 2: S dng vòng lp Do .Loop Until Dim i As Integer Dim N As Integer Dim S As Long N=Inputbox("Nhp s N (N>0) : ") S = 0 i = 1 Do S = S + i i = i + 1 Loop UNTIL i > N Msgbox "Tng = " & S Cách 3 : Dùng vòng lp Do While . Loop Dim i As Integer Dim N As Integer Dim S As Long N=Inputbox("Nhp s N (N>0) : ") S = 0 i = 1 Do While i <= N BÀI TP LP TRÌNH HNG S KIN Biên son: B môn CNPM–HSPKT HY 2005 Trang 9 S = S + i i = i + 1 Loop Msgbox "Tng = " & S Bài tp 7 a. Hng dn: Có nhiu cách tính nhng trong trng hp này có th s dng vòng lp For kt hp vi điu khon Step: b. Chng trình mu: Private Sub Form_Load() Dim i As Integer, S As Long S = 0 For i = 2 To 100 Step 2 S = S + i Next MsgBox "Tæng c¸c sè ch½n tõ 1->100 lµ : " & S End Sub c. Ghi chú: • Nu không có điu khon Step thì sau mi ln lp bin chy i t đng đc tng lên 1 đn v. Còn nu có điu khon Step 2 thì sau mi ln lp, bin chy i đc tng lên 2 đn v. Tng quát, nu Step N (N nguyên âm hoc dng) thì sau mi ln lp, bin chy đc tng (nu N > 0) hay gim đi (Nu N<0) n đn v. • Nu cho i chy t 1 (For i = 1 TO 100…) thì kt qu cho ta là tng các s l . Bài tp 8 a. Hng dn: Thông thng trong VB, vi vòng lp For thì c sau mi ln lp bin chy t đng đc tng lên 1 đn v. Tuy nhiên, trong mt s trng hp ta mun bin chy thay đi theo chiu gim dn (Tng t nh For… Downto … ca Pascal), tc là sau mi ln lp thì bin chy li b gim đi mt đn v thì cn phi s dng đn điu khon Step N vi N là mt s âm. Nu mun sau mi vòng lp bin chy i gim đi mt đn v thì ta cn vit : For i = N to 1 Step -1 b. Chng trình mu: Private Sub Form_Load() Dim i As Integer For i = 100 To 1 Step -1 Debug.Print i Next End Sub Bài tp 9 a. Hng dn: Vì không bit ngi dùng nhp bao nhiêu s do vy ta có th dùng vòng lp không xác đnh đ tin hành công vic nhp. Ngoài ra, cng cn có 2 bin đ lu tng các s âm và dng. iu kin kt thúc vòng lp s là n=0. BI TP LP TRèNH HNG S KIN Biờn son: B mụn CNPMHSPKT HY 2005 Trang 1 0 b.Gii mu: Private Sub Form_load() Dim n As Long, i As Long Dim TongAm As Long Dim TongDuong As Long TongAm = 0 '/// Khởi tạo trớc khi tính tổng TongDuong = 0 '/// Khởi tạo trớc khi tính tổng Do n = InputBox("Nhập vào một số nguyên : ") If n > 0 Then TongDuong = TongDuong + n Else TongAm = TongAm + n End If Loop Until n = 0 '/// Lp cho n khi no nhp n = 0 thỡ dng. MsgBox "Tổng các số âm = " & TongAm & ". Tong các số dơng = " & TongDuong End Sub c. Ghi chỳ: Vũng lp Do . Loop Until <K> s kt thỳc khi iu kin <K> bng true Vũng lp DoLoop Until khỏc vi vũng lp dng Do.Loop While <K> ch vũng lp DoLoop While <K> kt thỳc khi <K> vn l False. Thc cht, cu trỳc lp DoLoop Until v Do Loop While l tng ng nhau, do vy trỏnh nhm ln chỳng ta ch nờn nh mt loi khi thc hnh. Cú th thoỏt khi vũng lp dng Do Loop bng cõu lnh Exit Do Bi tp 10 a. Hng dn: Vỡ khụng th bit c l sau bao nhiờu nm thỡ tng s tin s l 2.000.000, m ch bit rng mi nm s tng thờm mt lng no ú. Do vy, õy ta s s dng vũng lp khụng xỏc nh v mi ln lp ta s kim tra xem ó c s tin cn thit hay cha? Nu ri thỡ thoỏt v s ln th chớnh l s nm cn tỡm. Nhng õy ti sao ta li s dng vũng lp Do WhileLoop m khụng l Do Loop ?. S d s dng vũng lp Do While Loop l vỡ rng s tin gi vo ban u ó rt cú th ln hn s tin k vng ! b. Chng trỡnh mu: Private Sub Form_Load() Dim SoNam As Integer, TongTien As Long SoNam = 0 TongTien = 1000000 Do While TongTien < 2000000 SoNam = SoNam + 1 TongTien = (1 + 0.05) ^ SoNam * TongTien /// Công thức cần nhớ Loop MsgBox "Cần phải gửi trong " & SoNam & " năm !" End Sub c. Ghi chỳ: õy l bi toỏn tớnh tin gi tit kim, GDP cú th ỏp dng trong cuc sng . chng trình. S dng đc mt s hàm x lý xâu thng dùng. A - BÀI TP Bài tp 1: S dng hàm MsgBox và InputBox Vit chng trình gii phng trình. BÀI TP LP TRÌNH HNG S KIN Biên son: B môn CNPM–HSPKT HY 2005 Trang 1 Bμi tËp ch−¬ng 1 NG¤N NG÷ LËP TR×NH VISUAL BASIC MC TIÊU: