Download miễn phí Giáo trình Bài tập lập trình hướng sự kiện





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



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

guyªn tè !”
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…, Do…Loop While hay
Do … Loop Until thì cần gọi lệnh Exit Do
• Hàm Sqr(n) trong VB dùng để tính n (không phải là tính bình phương như
trong một số ngôn ngữ lập trình khác – như Pascal).
• Nếu công việc gì chỉ làm 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 đặt ở ngoài vòng lặp. Vì
đặc điểm của vòng lặp là “lặp đi lặp lại” nhiều lần một công việc !
Bài tập 12
a. Hướng dẫn: Giai thừa của số N được tính theo công thức N!=1.2.3…N-1.N. Để
tính toán ta thực hiện nhân dồn các số i ( i = 1 ÷ N) vào kết quả.
b. Chương trình mẫu:
Private Sub Form_Load()
Dim n As Integer, i As Integer, KetQua As Long
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 12
'/// NhËp sè n, ®¶m b¶o 0 Do
n = InputBox("CÇn tÝnh giai thõa cña mÊy : ")
Loop Until (0 < n And n < 10)
'/// Sö dông vßng lÆp For
KetQua = 1
For i = 1 To n
KetQua = KetQua * i
Next
Debug.Print "KÕt qu¶ cña " & n & "! = " & KetQua
'/// Sö dông vßng lÆp Do While
KetQua = 1
i = 1
Do While i <= n
KetQua = KetQua * i
i = i + 1
Loop
Debug.Print "KÕt qu¶ cña " & n & "! = " & KetQua
'/// Sö dông vßng lÆp Do Until
KetQua = 1
i = 1
Do Until i > n
KetQua = KetQua * i
i = i + 1
Loop
Debug.Print "KÕt qu¶ cña " & n & "! = " & KetQua
'/// Sö dông vßng lÆp Do ... Loop While
i = 1
KetQua = 1
Do
KetQua = KetQua * i
i = i + 1
Loop While i <= n
Debug.Print "KÕt qu¶ cña " & n & "! = " & KetQua
'/// Sö dông vßng lÆp Do ... Loop Until
i = 1
KetQua = 1
Do
KetQua = KetQua * i
i = i + 1
Loop Until i > n
Debug.Print "KÕt qu¶ cña " & 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
đươ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à đủ:
o For …
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 13
o Do
………
Loop Until
o Do While
……..
Loop
• Cấu trúc Do While … Loop và Do Until …. Loop cùng có điểm
giống nhau là kiểm tra điều kiện trước khi lặp (giống như cấu trúc While …do
trong Pascal hay While trong C/C++) nhưng cấu trúc Do While …
Loop chỉ lặp khi điều kiện vẫn đúng, còn cấu trúc Do Until ….
Loop chỉ lặp khi điều kiện vẫn sai (Hay thoát nếu là đúng).
• Cấu trúc Do … Loop While và cấu trúc Do … Loop Until cùng
giống nhau là thực hiện lặp sau đó mới kiểm tra điều kiện (Giống cấu trúc
Repeat … Until trong pascal hay do … While trong C/C++), nhưng cấu trúc
Do … Loop While chỉ lặp nếu điều kiện vẫn còn đúng, trong khi đó cấu
trúc Do … Loop Until chỉ lặp nếu biểu thức điều kiện vẫn còn sai (Hay
nói cách khác là kết thúc lặp nếu điều kiện lặp là đúng)
• Khi thực hành, không nhất thiết phải nhớ cả 4 kiểu lặp đã nêu ở trên mà bạn
nên vận dụng thành thạo 3 cấu trúc lặp được khuyến cáo dùng là For, Do
While và Do … Loop Until, vì 3 cấu trúc này tương tự như các cấu trúc lặp
trong một số ngôn ngữ lập trình phổ biến khác (For,While…do,Repeat
..Until).
Bài tập 13
a. Hướng dẫn: Ta có thổng S = S1 + S2 + S3, với S1, S2, S3 tương ứng với 3 tổng
trên. Sử dụng vòng lặp để tính tổng của mỗi Si, sau đó cộng lại để được kết quả.
b. Chương trình mẫu:
Private Sub form_load()
Dim i As Integer
Dim Tong As Long
Dim S1 As Long, S2 As Long, S3 As Long
Tong = 0 ' §Çu tiªn do ch−a tÝnh nªn Tong b»ng 0
S1 = 0
S2 = 0
S3 = 0
'/// TÝnh tæng S1
For i = 1 To 8
S1 = S1 + i ^ 2
Next
'/// TÝnh tæng S2
For i = 100 To 200
S2 = S2 + i ^ 2
Next
'/// TÝnh tæng S3
For i = 300 To 310
S3 = S3 + i ^ 2
Next
S = S1 + S2 + S3
MsgBox "Tæng lµ : " & Tong, vbInformation, "Th«ng b¸o ..."
End Sub
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 14
Bài tập 14:
a. Hướng dẫn: Công thức tính giai thừa của số N là: N! = 1.2.3…N-1.N, như vậy ở
đây ta cần nhân liên tiếp các số i (i chạy từ 1 đến n) vào kết quả. Trong đó, giá trị
khởi tạo cho kết quả là 1. Bài này có thể giải theo cách đệ qui hay không đệ qui.
b. Chương trình mẫu
Cách 1: Dùng vòng lặp (Không dùng đệ qui)
Private Sub Form_Load()
Dim i As Integer, n As Integer
Dim KetQua As Long
'/// NhËp sè n (0 Do
n = InputBox("NhËp sè N : ", "TÝnh giai thõa")
Loop Until (0 < n And n < 20)
KetQua = 1
For i = 1 To n
KetQua = KetQua * i
Next
MsgBox n & " ! bằng " & KetQua
End Sub
Cách 2: Dùng đệ qui
'/// Hµm ®Ö qui tÝnh N !
Function GiaiThua(ByVal N As Integer) As Long
If N = 1 Then
GiaiThua = 1
Else
GiaiThua = GiaiThua(N - 1) * N
End If
End Function
Private Sub Form_Load()
Dim i As Integer, N As Integer
Dim KetQua As Long
'/// NhËp sè n (0 Do
N = InputBox("NhËp sè N : ", "TÝnh giai thõa")
Loop Until (0 < N And N < 20)
MsgBox N & " ! bằng " & GiaiThua(N)
End Sub
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 15
Bài tập 15:
a. Hướng dẫn: Với bài toán dạng tính tổng của một chuỗi số khi biết số hạng tổng
quát Si, nói chung là đơn giản. Có thể thực hiện theo giải thuậ như sau:
S = 0
For i = i0 TO in
S = S + Si
Next
Với mỗi dãy khác nhau thì giá trị i0, N, Si có thể khác nhau và cần xác định.
- Giá trị i0 và N thường xác định bởi giải phương trình Si = S0 và Si = Sn
- Số hạng tổng quát Si thường có thể nhìn thấy ngay trong đề bài.
Trong bài này:
- )1(* ++= iniSi
- Xác định i0: Cho S0 = Si ⇔ 2*1 +n = )1(* ++ ini ⇒ i0=1
- Xác định in: Cho Sn = Si ⇔ )1(* ++ nnn = )1(* ++ ini ⇒ in=n
b. Chương trình mẫu:
Private Sub Form_Load()
Dim S As Single, i As Integer, N As Integer
N = InputBox("NhËp sè N : ")
S = 0
For i = 1 To N
S = S + i * Sqr(N + (i + 1))
Next
MsgBox "Tæng cña d·y ®· cho lµ : " & S
End Sub
Bài tập 16
a. Hướng dẫn: Với các bài toán được định nghĩa theo kiểu đệ qui thì cách giải phù
hợp và dễ nhất là theo giải thuật qui. Tuy nhiên, tốc độ bị chậm đáng kể khi số N lớn,
ngoài ra còn có thể bị tràn Stack.
b. Chương trình mẫu:
'/// TÝnh d·y Fibonasi dïng §Ö qui
Function Fib_Dequi(ByVal N As Integer) As Long
If N = 0 Or N = 1 Then Fib_Dequi = 1
If N > 1 Then Fib_Dequi = Fib_Dequi(N - 2) + Fib_Dequi(N - 1)
End Function
'/// TÝnh d·y Fibonasi KH¤NG dïng §Ö qui
Function Fib_KhongDequi(ByVal N As Integer) As Long
Dim i As Integer
Dim F1 As Long, F2 As Long, KetQua As Long
F1 = 1
F2 = 1
KetQua = 1
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 16
i = 2
Do While i <= N
KetQua = F1 + F2
F1 = F2
F2 = KetQua
i = i + 1
Loop
Fib_KhongDequi = KetQua
End Function
'---------------------------------------------------------------------------------------------------------------------------
'/// Ch−¬ng tr×nh chÝnh
Private Sub Form_Load()
MsgBox "Fib (30) = " & Fib_Deq ui(30)
MsgBox "Fib (30) = " & Fib_KhongDequi(30)
End Sub
Chú ý: Riêng với bài toán này, người ta còn có thể giải bằng phương pháp qui hoạch
động (Dynamic Programming) rất đơn giản như sau:
Function Fib_DynamicPrgramming(ByVal N As Integer) As Long
Dim i As Integer
Dim F(1000) As Long '/// B¶ng chøa gi¸ trÞ ®· tÝnh to¸n ®−îc ë b−íc trung gian
'/// §iÓ...
 

Các chủ đề có liên quan khác

Top