Bài tập ngôn ngữ lập trình VB docx

173 827 6
Bài tập ngôn ngữ lập trình VB docx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BÀI TP LP TRÌNH HNG S KIN Biên son: 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 MC TIÊU: SAU KHI HOÀN THÀNH CÁC BÀI TP, NGI HC CÓ TH  Khai báo các bin thuc các kiu d liu c bn (byte, integer, long, string, boolean, single) và kiu mng, kiu bn ghi trong Visual Basic.  S dng các hàm nhp xut d liu (MsgBox và InputBox) ca VB.  S dng và vn dng đc các cu trúc r nhánh (If Then và If Then Else), cu trúc đa r nhánh (Select Case) và các loi vòng lp : For; Do While Loop; Do Loop đ vit chng trình.  S dng đc mt s hàm x lý xâu thng dùng. A -  BÀI TP Bài tp 1: S dng hàm MsgBox và InputBox Vit chng trình gii phng trình bc 2. H s a, b, c nhp t bàn phím bng hàm InputBox (Gii s a ≠ 0). Bài tp 2: Minh ho cu trúc If … Then. Vit chng trình tính lng nh sau: Cho ngi dùng nhp vào lng c bn LCB, H s lng HSL và chc v CV. Nu chc v là "giam doc" thì cng thêm 500000 vào lng thc lnh (LTL), nu là "truong phong" thì cng thêm 300000, nu là "to truong" thì cng thêm 200000, nu là "nhan vien" thì không cng. Sau đó hin th tng s lng thc lnh. Bài tp 3-Select Case: Yêu cu nh bài 2, nhng s dng cu trúc Select Case Bài tp 4: Hin th các loi thông báo s dng hàm MsgBox. Vit chng trình hin th 4 loi hp thoi MsgBox nh mô t di đây khi ngi dùng nhp vào các s tng ng 1,2,3,4 bng hàm InputBox: 1 3 2 4 Bài tp 5: S dng cu trúc Select Case. Vit chng trình cho phép ngi dùng nhp vào 2 s thc a và b và mt trong các phép toán gm +, -, *, /, \ (Chia ly phn nguyên), mod (chia ly phn d) hoc ^ (Lu tha). Sau đó hin th kt qu tng ng. Ví d nu nhp 2 s 10, 20 và phép toán là + thì thông báo "Kt qu là 30" v.v. BÀI TP LP TRÌNH HNG S KIN Biên son: B môn CNPM–HSPKT HY 2005 Trang 2 Bài tp 6: S dng vòng lp FOR. Vit chng trình tính tng ca dãy s sau và hin th kt qu ra màn hình: S = 1 + 2 + 3 + + N , Vi N nhp t bàn phím. Bài tp 7: S dng vòng lp For vi điu khon Step. Hãy vit chng trình tính tng các s chn t 1 đn 100. Bài tp 8: S dng vòng lp For đm ngc “FOR … DOWNTO…”. Hãy s dng vòng lp For in ra các s t 100 đn 1 bng lnh Debug.Print. Bài tp 9: S dng vòng lp Do…Loop Until Cho ngi dùng nhp vào mt dãy các s nguyên (âm và dng) và tính tng các s âm, tng các s dng. Vic nhp kt thúc nu s nhp vào là 0. Bài tp 10: S dng cu trúc Do While … Loop. Hãy cho bit cn gi s tin tit kim 1 triu đng vào ngân hàng trong thi gian my nm đ có 2 triu đng. Bit rng lãi sut hàng nm là 8%. Bài tp 11: Thoát khi vòng lp vi Exit For, Exit Do. Vit chng trình nhp s nguyên n và kim tra xem có phi là s nguyên t hay không ?. Bài tp 12: S tng đng gia các cu trúc lp. Tính n! s dng các cu trúc lp khác nhau. Bài tp 13: S dng vòng lp FOR Lp trình tính tng ca dãy s sau và hin th kt qu ra màn hình : S = ∑∑∑ === ++ 310 300 2 200 100 2 8 1 2 nnn nnn Bài tp 14 – Tính N !: Vit chng trình nhp s nguyên N (0<N<20) và tính N!. Bài tp 15- Tính tng 1 dãy s: Tính tng ca dãy sau, vi n nhp t bàn phím: )1( )1( 4.33.22.1 +++++++++++++= nnnininnnS Bài tp 16- Tính dãy Fibonasi: Tính tng ca day s Fibonasi theo 2 cách: bng đ qui và không đ qui, vi N nhp t bàn phím. Bit rng dãy s Fibonasi đc đnh ngha nh sau: F (n) = 1 nu n = 0, n = 1 F (n) = F n-2 + F n-1 nu n ≥ 2 Bài tp 17- Tìm c s chung ln nht : Tìm c s chung ln nht ca 2 s a và b (a,b nhp t bàn phím). Bài tp 18-Ti gin phân s : Kim tra xem phân s a/b (a, b nhp t bàn phím) đã ti gin hay cha? Nu cha ti gin thì hãy thc hin rút gn phân s đó và in ra màn hình. BÀI TP LP TRÌNH HNG S KIN Biên son: B môn CNPM–HSPKT HY 2005 Trang 3 Bài tp 19- Tìm s nguyên t: Nhp vào mt dãy s nguyên dng bng hàm InputBox. Sau đó in ra các giá tr là s nguyên t. Bài tp 20-m ký t: Lp trình cho ngi dùng nhp vào mt xâu ký t S. Sau đó đm xem trong xâu nhp vào có bao nhiêu ký t là a và A. Bit rng : - Hàm Mid(S, i, 1) cho ta ký t th i trong xâu S - Hàm Len(S) cho ta đ dài ca xâu S Bài tp 21-Tính tng dãy s: Vit chng trình nhp x và n ri tính tng S = 1 432 1 32 + +++++ n xxxx n (Hay có th vit di dng S = 1 4321 3210 + +++++ n xxxxx n ) Bài tp 22 : Bài toán tìm phn t ln nht (nh nht) trong mt danh sách Vit chng trình nhp n s nguyên vào mt mng nguyên A, sau đó tìm s ln nht trong mng nguyên đó. Bài tp 23: Lit kê các phn t ln nht (nh nht) trong danh sách. Nhp danh sách gm n s nguyên, sau đó hin th các phn t có giá tr ln nht. Bài tp 24: Sp xp mt dãy s nguyên. Vit chng trình cho phép nhp vào N s nguyên. Sau đó sp xp dãy s này theo chiu tng dn và hin th dãy đã sp xp ra màn hình bng lnh Debug.Print. Bài tp 25 – Quick Sort: Nhp vào mt dãy N s nguyên dng, sau đó sp xp dãy này tng dn theo gii thut Quick-Sort. Kt qu in ra bng hàm Debug.Print. Bài tp 26- Heap Sort: Nhp vào mt dãy N s nguyên dng, sau đó sp xp dãy này tng dn theo gii thut Heap-Sort. Kt qu in ra bng hàm Debug.Print. Bài tp 27: Sp xp mt dãy các phn t, trong đó mi phn t là mt xâu ký t theo vn Alphabet (Theo th t t đin) bng thut toán sp xp đn gin. Vit chng trình nhp vào danh sách tên ca mt lp, sau đó sp xp theo vn Alphabet và hin th kt qu sp xp ra màn hình bng hàm Debug.Print Bài tp 28-Chun hoá xâu: Nhp vào mt xâu ký t bt k sau đó chun hoá và in ra màn hình. Xâu chun hoá  đây là xâu không có 2 du trng lin nhau, không có du trng  hai đu và sau du chm hoc du phy phi có mt du trng. Bài tp 29-Chun hoá xâu: Yêu cu nh bài 28 và mi ký t đu câu là ch HOA. Bài tp 30-Tách s khi xâu: Nhp vào mt xâu ký t có cha c ch s và ch cái ví d: “Ngày mng 2 tháng 9 nm 1945 Bác H đã đc tuyên ngôn đc lp ti Qung trng Ba ình lch s !”. Gi s các s là nguyên dng. Hãy tách các s đó ra khi xâu và in ra màn hình ( đây s tách đc 3 s là 2, 9 và 1945). BÀI TP LP TRÌNH HNG S KIN Biên son: B môn CNPM–HSPKT HY 2005 Trang 4 Bài tp 31-Tách Câu: Nhp vào mt xâu ký t bt k, kt thúc mi câu là mt du chm. Hãy in mi câu trong xâu đó trên mt dòng bng hàm Debug.print. Bài tp 32-Chuyn đi Font ch: Gi s mt tp vn bn có ni dung đc đnh dng vi font ch .vntime, Hãy chuyn ni dung ca tp này sang font ch VIQR và lu vào mt tp khác. Tên tp ngun và tp đích tng ng là : c:\FontVNTime.txt và c:\FontVIQR.txt. Bài tp 33-Thng kê ký t trong xâu: Nhp mt xâu ký t bt k, sau đó in ra màn hình s lng tng loi ký t đã nhp. Bài tp 34-Thay th ký t: Nhp vào mt xâu, sau đó thay th tt c các ký t trng (chr(32)) bng ký t “_”. Kt qu in ra màn hình bng hàm MsgBox. Bài tp 35-Cng s nguyên ln: Vit chng trình cng 2 s nguyên dng ln bt k và in kt qu ra màn hình. Bài tp 36-Ma trn s: Vit chng trình nhp vào mt ma trn gm m hàng và n ct. Sau đó tính tng các phn t dng, tng các phn t trên 2 đng chéo chính. Bài tp 37- Kim tra "đng thng" trong ma trn: Nhp mt ma trn vuông kích thc N x N. Ma trn này ch cha các s 0 và 1. Hãy lp trình đ cho bit ma trn đó có ít nht 5 phn t thng hàng (ngang, dc, chéo xuôi, chéo ngc) có cùng giá tr là 1 hay không ? Bài tp 38- Mng bn ghi: Vit chng trình nhp vào mt danh sách cán b, sau đó sp xp danh sách cán b theo tui và lu vào mt tp tên là Canbo.txt. Thông tin v cán b gm: H và tên, Nm sinh, Quê quán, H s lng. PH LC 1 Di đây là mô t mt s hàm rt hay dùng trong VB đ bn tham kho trong khi lp trình và cho các bài tp sau này . Tên hàm Mô t Ví d Abs (x) Hàm tính giá tr tuyt đi ca mt s. Abs(-5)  5 Sqr(x) Tính cn bc hai ca mt s x (x>=0) Sqr(4)  2 Round(x) Làm tròn s x Round(3.2)  3 Asc(Ch) Tr v mã ca 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 (Nhng không làm thay đi đn xâu S) UCase("aBc")  "ABC" LCase(S) Tr v xâu ch thng (Nhng không làm thay đi đn xâu S) UCase("aBc")  "abc" Len(S) Tr v đ dài ca xâu S Len("abc123")  6 Mid(S,i,n) Ly mt xâu con trong S t v trí th i, n ký t. Nu b qua tham s n thì mc đnh là ly t v trí i đn ht xâu. Mid("ABCDE", 2,3) "BCD" Left(S, n) Ly ra n ký t trong xâu S tính t bên trái Left(S,"ABCD",3)  "ABC" Right(S,n) Ly ra n ký t trong xâu S tính t bên phi Right(S,"ABCD",3)  "BCD" Trim(S) Tr v mt xâu S nhng b các du trng hai đu (Xâu S không b thay đi). Trim(" ABC ")  "ABC" LTrim(S) Ging nh Trim(S) nhng ch ct phía trái LTrim(" ABC ")  "ABC " RTrim(S) Ging nh Trim(S) nhng ch ct phía phi RTrim(" ABC ")  " ABC" StrReverse(S) o ngc xâu S (S không b thay đi) StrReverse("AB")  "BA" Str(x) Chuyn s x sang dng xâu Str(10)  "10" Val(S) Chuyn mt xâu sang dng s Val("10")  10 Instr(n,S1,S2) Kim tra xâu S2 có nm trong xâu S1 hay không. Hàm tr v giá tr > 0 nu có. Instr(1,"ABC", "BC")  2 Split(S, C) Tách xâu S thành các phn t, vi ký hiu phân Dim S As string, R As BÀI TP LP TRÌNH HNG S KIN Biên son: 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 bng xâu S2 Dim S As string S = Replace(“A!!”,”!!”,”!”) FileLen(F) Cho bit kích thc ca file F tính theo bytes MsgBox FileLen("C:\io.sys") CurDir Tr v đng dn ca th mc hin hành Msgbox CurDir Year(D) Tr v nm ca bin kiu Date D Dim D As Date D = Now Msgbox Year(D) Month(D) Tr v tháng ca bin kiu Date D MsgBox Month(Now) Day(D) Tr v ngày ca biu thc kiu Date D Day(#21/2/2004#)  21 Hour(T) Tr v gi ca biu thc kiu Time T Hour(Time) Now Hàm tr v ngày tháng hin hành Msgbox now Time Tr v gi phút giây hin hành Msgbox Time Rnd Hàm tr v mt s ngu nhiên trong khong [0, 1) Lu ý : trc đó phi gi th tc Randomize. Msgbox Rnd B. HNG DN - GII MU Bài tp 1 a. Hng dn: Cn tính giá tr ca Δ, Sau đó s dng cu trúc lnh If Then Else (Hoc cu trúc Select Case) đ kim tra Δ và tính nghim. b. Chng trình mu: Cách 1: S dng cu trúc If Then … Else Cách 2: S dng cu 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("Nhp h s a (a <> 0) :") b = InputBox("Nhp h s b : ") c = InputBox("Nhp h s c : ") Delta = b ^ 2 - 4 * a * c If Delta < 0 Then MsgBox "Vô nghim ", vbInformation Else If Delta = 0 Then x1 = -b / (2 * a) MsgBox "Có nghim kép:" & x1 Else x1 = (-b + Sqr(Delta)) / (2 * a) x2 = (-b - Sqr(Delta)) / (2 * a) MsgBox "x1=" &x1 & " x2=" &x2 End If '//// Ca If Delta = 0 End If '//// Ca 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("Nhp h s a (a<>0):") b = InputBox("Nhp h s b : ") c = InputBox("Nhp h s c : ") Delta = b ^ 2 - 4 * a * c Select Case Delta Case Is < 0 MsgBox "Vô nghim " Case 0 x1 = -b / (2 * a) MsgBox "Nghim 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ú: Cu trúc Select Case ca VB rt mnh, nó không nhng kim tra biu thc  dng s nguyên mà còn có th kim tra c dng s thc, xâu ký t, đng thi vi mi loi giá tr có th kim tra mt khong giá tr (s dng t khoá Case is …) BÀI TP LP TRÌNH HNG S KIN Biên son: B môn CNPM–HSPKT HY 2005 Trang 6 Bài tp 2 a. Hng dn: Lng thc lnh (LTL) = HSL * LCB + Ph cp chc v.  tính Ph cp chc v, cn s dng câu lnh If Then đ kim tra xem chc v nhp vào có là "giam doc", "truong phong" hay "to truong" hay không đ cng thêm. b. Chng trình mu: Chng trình nhp và tính lng Private Sub Form_Load() Dim HSL As Long, LCB As Long, PCCV As Long, LTL As Long Dim CV As String LCB = InputBox("nhp vào lng c bn : ", "Tính lng", 290000) HSL = InputBox("nhp vào h s lng", "Tính lng", 1.92) CV = InputBox("Chc 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 cu trúc If Then  trên bng cu trúc If Then ElseIf hoc bng cu trúc đa r nhánh Select Case (ây là cu trúc phù hp nht) Bài tp 3 a. Hng dn: Cu trúc Case trong VB cho phép kim tra c biu thc dng Xâu, S nên có th áp dng vào gii quyt bài toán này. b. Chng trình mu: Tính lng đn gin minh ho cu 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("nhp vào lng c bn : ", "Tính lng", 290000) HSL = InputBox("nhp vào h s lng", "Tính lng", 1.92) CV = InputBox("Chc 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 "Lng ca bn là : " & LTL End Sub C. Ghi chú:  chng trình vn tính đúng cho dù ngi dùng có th nhp chc v  dng ch thng hay ch HOA thì nên UCase các xâu trc tiên. (Xem ph lc 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 TP LP TRÌNH HNG S KIN Biên son: 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 Thc hin các phép toán c bn dùng cu 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 ly phn nguyên: Ví d 10 \ 3 = 3. Phép chia / là phép chia thông thng (ly c phn nguyên và phn d), ví d: 5 / 2 = 2.5. • Phép mod là chia ly phn d, ví d 10 mod 3 = 1, 6 mod 4 = 2 v.v… Bài tp 6 a. Hng dn: S là tng các s hng th i, vi i chy t 1 đn N, S hng tng quát là i. Do vy đ tính tng ca dãy s S, có th s dng mt trong 3 loi vòng lp đã bit. b. Chng trình mu (Gõ đon mã trong th tc Form_Load)  Cách 1: S dng vòng lp For Dim i As Integer Dim N As Integer Dim S As Long N=Inputbox("Nhp s N (N>0) : ") S = 0 For i=1 To N S = S + i ‘///S = S + <S hng tng quát> Next Msgbox "Tng = " & S  Cách 2: S dng vòng lp Do Loop Until Dim i As Integer Dim N As Integer Dim S As Long N=Inputbox("Nhp s N (N>0) : ") S = 0 i = 1 Do S = S + i i = i + 1 Loop UNTIL i > N Msgbox "Tng = " & S  Cách 3 : Dùng vòng lp Do While Loop Dim i As Integer Dim N As Integer Dim S As Long N=Inputbox("Nhp s N (N>0) : ") S = 0 i = 1 Do While i <= N BÀI TP LP TRÌNH HNG S KIN Biên son: B môn CNPM–HSPKT HY 2005 Trang 9 S = S + i i = i + 1 Loop Msgbox "Tng = " & S Bài tp 7 a. Hng dn: Có nhiu cách tính nhng trong trng hp này có th s dng vòng lp For kt hp vi điu khon Step: b. Chng trình mu: 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ú: • Nu không có điu khon Step thì sau mi ln lp bin chy i t đng đc tng lên 1 đn v. Còn nu có điu khon Step 2 thì sau mi ln lp, bin chy i đc tng lên 2 đn v. Tng quát, nu Step N (N nguyên âm hoc dng) thì sau mi ln lp, bin chy đc tng (nu N > 0) hay gim đi (Nu N<0) n đn v. • Nu cho i chy t 1 (For i = 1 TO 100…) thì kt qu cho ta là tng các s l . Bài tp 8 a. Hng dn: Thông thng trong VB, vi vòng lp For thì c sau mi ln lp bin chy t đng đc tng lên 1 đn v. Tuy nhiên, trong mt s trng hp ta mun bin chy thay đi theo chiu gim dn (Tng t nh For… Downto … ca Pascal), tc là sau mi ln lp thì bin chy li b gim đi mt đn v thì cn phi s dng đn điu khon Step N vi N là mt s âm. Nu mun sau mi vòng lp bin chy i gim đi mt đn v thì ta cn vit : For i = N to 1 Step -1 b. Chng trình mu: Private Sub Form_Load() Dim i As Integer For i = 100 To 1 Step -1 Debug.Print i Next End Sub Bài tp 9 a. Hng dn: Vì không bit ngi dùng nhp bao nhiêu s do vy ta có th dùng vòng lp không xác đnh đ tin hành công vic nhp. Ngoài ra, cng cn có 2 bin đ lu tng các s âm và dng. iu kin kt thúc vòng lp 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 [...]... Function ' '/// Ch ơng trình chính Private Sub Form_Load() Dim a As Integer, b As Integer, TuMoi As Integer, MauMoi As Integer a = InputBox("Nhập tử số : ") b = InputBox("Nhập mẫu số : ") If USCLN(a, b) = 1 Then MsgBox "Phân số " & a & "/" & b & " đã tối giản", vbInformation Else TuMoi = a / USCLN(a, b) MauMoi = b / USCLN(a, b) /// Tính lại... End Sub ' '/// Ch ơng trình chính Private Sub Form_Load() Dim i As Integer, n As Integer, DaySo(100) As Integer n = InputBox("Số phần tử cần nhập : ", , 10) For i = 1 To n DaySo(i) = InputBox("Nhập số thứ " & i) Next Debug.Print "Dãy số sau khi sắp xếp là : " & vbCrLf Quick_Sort DaySo, 1, n For i = 1 To n Debug.Print DaySo(i) Next End Sub Trang... End Sub ' '/// Ch ơng trình chính Private Sub Form_Load() Dim i As Integer, N As Integer, DaySo(100) As Integer N = InputBox("Số phần tử cần nhập : ", , 10) For i = 1 To N DaySo(i) = InputBox("Nhập số thứ " & i) Next Debug.Print "Dãy số sau khi sắp xếp là : " & vbCrLf Heap_Sort N, DaySo For i = 1 To N Debug.Print DaySo(i) Next End Sub c Ghi... D u nhỏy kộp l ký t c bi t c VB s d ng bao b c m t h ng xõu, do v y khi mu n in d u nhỏy kộp ra mn hỡnh thỡ c n ph i gừ 2 l n d u nhỏy kộp ú Vớ d in ra m t d u nhỏy kộp ra mn hỡnh Bi t p 34 a H b Ch ng d n : S d ng hm Replace ng trỡnh m u: '/// Thay thế ký tự Private Sub Form_Load() Dim S As String S = InputBox("Hãy nhập một xâu : ", "Sử dụng hàm Replace", "Welcome to VB" ) S = Replace(S, Chr(32),... Integer, b As Integer) As Integer If a Mod b = 0 Then USCLN_Dequi = b Else USCLN_Dequi = USCLN_Dequi(b, a Mod b) End If End Function ' '/// Ch ơng trình chính Private Sub Form_Load() MsgBox " ớc số chung lớn nhất của 20 và 30 là : " & USCLN(20, 30) MsgBox " ớc số chung lớn nhất của 20 và 30 là : " & USCLN_Dequi(20, 30) End Sub Bi t p 18: a H ng d... ! If KetQua = False Then MsgBox n & không phải là số nguyên tố ! End Sub c Ghi chỳ: thoỏt vụ i u ki n kh i vũng l p Do While, DoLoop While hay Do Loop Until thỡ c n g i l nh Exit Do Hm Sqr(n) trong VB dựng tớnh n (khụng ph i l tớnh bỡnh ph trong m t s ngụn ng l p trỡnh khỏc nh Pascal) ng nh N u cụng vi c gỡ ch lm m t l n (vớ d thụng bỏo k t qu nh trờn) thỡ KHễNG BAO GI c t trong vũng l p m ph i... LaSoNguyenTo = True For i = 2 To Round(Sqr(n)) If n Mod i = 0 Then LaSoNguyenTo = False Exit Function End If Next End Function ' '/// Ch ơng trình chính Private Sub Form_Load() Dim i As Integer, n As Integer, DaySo(100) As Integer n = InputBox("Số phần tử cần nhập : ", , 10) For i = 1 To n DaySo(i) = InputBox("Nhập số thứ " & i) Next For i... InputBox("Nhập vào số x : ") N = InputBox("Nhập vào số n : ") S=0 '// Khởi tạo tổng S = 0 For i = 0 To N S = S + x ^ i / (i + 1) /// Núi chung l : S = S + Next MsgBox "Tổng S = " & S, vbInformation, "Tính tổng chuỗi" End Sub c Chỳ ý: Khi tớnh t ng c a m t dóy s b t k , vi c khú kh n nh t l ph i xỏc nh s h ng t ng quỏt Si, sau ú l c n d i v c n trờn c a vũng l p Cũn t ng thỡ th ng tớnh... n & "! = " & KetQua End Sub c Ghi chỳ: Cú th tớnh N! b ng ph ng phỏp qui : GiaiThua = GiaiThua (n-1) * N Ng i ta ó ch ng minh c r ng t t cỏc c u trỳc l p u cú th vi t t ng theo cỏc c u trỳc khỏc Trong VB cú r t nhi u c u trỳc l p, tuy nhiờn ch c n thu c 3 c u trỳc sau l ng : o For Trang 12 BI T P L P TRèNH H NG S KI N Biờn so n: B mụn CNPM HSPKT HY 2005 o Do Loop Until < K> o Do While < K> Loop C... DaySo(i) Next End Sub Trang 22 BI T P L P TRèNH H NG S KI N Biờn so n: B mụn CNPM HSPKT HY 2005 c Ghi chỳ: Trong ph n khai bỏo hm v th t c, n u tr c tham s hỡnh th c khụng cú t khoỏ byref ng tr c thỡ VB hi u ú l tham bi n (tham chi u) Tham s hỡnh th c trong ph n khai bỏo ch ng trỡnh con l m t m ng thỡ ph i vi t d i d ng nh sau: () As , Cỏch vi t: A (10) As integer hay A (1 to 10) . chng trình.  S dng đc mt s hàm x lý xâu thng dùng. A -  BÀI TP Bài tp 1: S dng hàm MsgBox và InputBox Vit chng trình gii phng trình. 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

Ngày đăng: 06/03/2014, 20:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan