BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN - CHƯƠNG 1

37 1.7K 2
BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN - CHƯƠNG 1

Đ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

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.

BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ mụn CNPMHSPKT HY 2005 Bài tập chơng NGÔN NGữ LËP TR×NH VISUAL BASIC MỤC TIÊU: SAU KHI HỒN THÀNH CÁC BÀI TẬP, NGƯỜI HỌC CÓ THỂ Khai báo biến thuộc kiểu liệu (byte, integer, long, string, boolean, single) kiểu mảng, kiểu ghi Visual Basic Sử dụng hàm nhập xuất liệu (MsgBox InputBox) VB Sử dụng vận dụng cấu trúc rẽ nhánh (If Then If Then Else), cấu trúc đa rẽ nhánh (Select Case) loại vòng lặp : For; Do While Loop; Do Loop để viết chương trình Sử dụng 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 InputBox Viết chương trình giải phương trình bậc Hệ số a, b, c nhập từ bàn phím 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 sau: Cho người dùng nhập vào lương LCB, Hệ số lương HSL chức vụ CV Nếu chức vụ "giam doc" cộng thêm 500000 vào lương thực lĩnh (LTL), "truong phong" cộng thêm 300000, "to truong" cộng thêm 200000, "nhan vien" 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 2, sử dụng cấu trúc Select Case Bài tập 4: Hiển thị loại thơng báo sử dụng hàm MsgBox Viết chương trình hiển thị loại hộp thoại MsgBox mô tả người dùng nhập vào số tương ứng 1,2,3,4 hàm InputBox: 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 số thực a b phép toán gồm +, -, *, /, \ (Chia lấy phần nguyên), mod (chia lấy phần dư) ^ (Luỹ thừa) Sau hiển thị kết tương ứng Ví dụ nhập số 10, 20 phép tốn + thơng báo "Kết 30" v.v Trang BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ mơn CNPM–ĐHSPKT HY 2005 Bài tập 6: Sử dụng vòng lặp FOR Viết chương trình tính tổng dãy số sau hiển thị kết hình: S = + + + + 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 số chẵn từ đế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 số từ 100 đến 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 dãy số nguyên (âm dương) tính tổng số âm, tổng số dương Việc nhập kết thúc số nhập vào 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 triệu đồng vào ngân hàng thời gian năm để có triệu đồng Biết lãi suất hàng năm 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ố ngun n kiểm tra xem có phải số nguyên tố hay không ? Bài tập 12: Sự tương đương cấu trúc lặp Tính n! sử dụng cấu trúc lặp khác Bài tập 13: Sử dụng vịng lặp FOR Lập trình tính tổng dãy số sau hiển thị kết hình : S= ∑ n2 + n =1 200 ∑ n2 + n =100 310 ∑n n =300 Bài tập 14 – Tính N !: Viết chương trình nhập số ngun N (0 có Tách xâu S thành phần tử, với ký hiệu phân Abs(-5) Sqr(4) Round(3.2) Asc("A") 65 Chr(65) "A" UCase("aBc") "ABC" UCase("aBc") "abc" Len("abc123") Mid("ABCDE", 2,3) "BCD" Left(S,"ABCD",3) "ABC" Right(S,"ABCD",3) "BCD" Trim(" ABC ") "ABC" LTrim(" ABC ") "ABC " RTrim(" ABC ") " ABC" StrReverse("AB") "BA" Str(10) "10" Val("10") 10 Instr(1,"ABC", "BC") Dim S As string, R As Trang BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ mơn CNPM–ĐHSPKT HY 2005 tách C Replace (S, S1, S2) FileLen(F) CurDir Cho biết kích thước file F tính theo bytes Trả đường dẫn thư mục hành Year(D) Trả năm biến kiểu Date D Month(D) Day(D) Hour(T) Now Time Trả tháng biến kiểu Date D Trả ngày biểu thức kiểu Date D Trả biểu thức kiểu Time T Hàm trả ngày tháng hành Trả phút giây hành Hàm trả số ngẫu nhiên khoảng [0, 1) Lưu ý: trước phải gọi thủ tục Randomize Rnd Thay xâu S1 S xâu S2 Variant Dim I As integer S = “ha,noi,viet,nam” R = Split(S,”,”) For i=0 to Ubound(R) Msgbox R(i) Next Dim S As string S = Replace(“A!!”,”!!”,”!”) MsgBox FileLen("C:\io.sys") Msgbox CurDir Dim D As Date D = Now Msgbox Year(D) MsgBox Month(Now) Day(#21/2/2004#) 21 Hour(Time) Msgbox now Msgbox Time Msgbox Rnd B HƯỚNG DẪN - GIẢI MẪU Bài tập a Hướng dẫn: Cần tính giá trị ∆, Sau sử dụng cấu trúc lệnh If Then Else (Hoặc cấu trúc Select Case) để kiểm tra ∆ 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 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 ^ - * a * c If Delta < Then MsgBox "Vô nghiệm ", vbInformation Else If Delta = 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 = End If '//// Của If Delta < End Sub a = InputBox("Nhập hệ số a (a0):") b = InputBox("Nhập hệ số b : ") c = InputBox("Nhập hệ số c : ") Delta = b ^ - * a * c Select Case Delta Case Is < MsgBox "Vô nghiệm " Case x1 = -b / (2 * a) MsgBox "Nghiệm kép:" & x1 Case Is > 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 VB mạnh, khơng kiểm tra biểu thức dạng số ngun mà cịn kiểm tra dạng số thực, xâu ký tự, đồng thời với mối loại giá trị kiểm tra khoảng giá trị (sử dụng từ khoá Case is …) Trang BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ mơn CNPM–ĐHSPKT HY 2005 Bài tập 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ó "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 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 : ", "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 cấu trúc If Then cấu trúc If Then ElseIf cấu trúc đa rẽ nhánh Select Case (Đây cấu trúc phù hợp nhất) Bài tập a Hướng dẫn: Cấu trúc Case VB cho phép kiểm tra biểu thức dạng Xâu, Số nên áp dụng vào giải tốn 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 : ", "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 bạn : " & LTL End Sub C Ghi chú: Để chương trình tính cho dù người dùng nhập chức vụ dạng chữ thường hay chữ HOA nên UCase xâu trước tiên (Xem phụ lục 1) Trang BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 Bài tập a Hướng dẫn: Để hiển thị hộp thoại Msgbox với nút biểu tượng khác nhau, ta cần thêm vào tham số thứ hàm MsgBox, ví dụ : vbQuestion, vbYesNo, vbOKCancel, vbInformation, vbAbortRetryIgnore Ngoài ra, để biết người dùng muốn hiển thị loại hộp thoại (nhập vào số mấy) cần sử dụng cấu trúc Select Case để kiểm tra định b Chương trình mẫu: Private Sub Form_Load() Dim Kieu As Byte Kieu = InputBox("Bạn hÃy nhập vào sè (1-4) ®Ĩ chän kiĨu MsgBox : ") Select Case Kieu Case 1: MsgBox "Kiểu đơn giản có nút OK" '///Viết nhiều lệnh cần cách dấu ":" Case 2: MsgBox "Cã 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ã 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 4", vbExclamation, "nhập sai" End Select End Sub c Ghi chú: • • Có thể kết hợp hiển thị nút, biểu tượng cách tổ hợp OR số: Ví dụ vbOKCancel Or vbExclamation để hiển thị nút OK/Cancel kèm thêm biểu tượng khuyến cáo … Hàm MsgBox trả số biết người dùng vừa click chọn nút hộp thông báo MsgBox Ví dụ: giá trị trả vbOK, vbCancel… Bài tập a Hướng dẫn: Việc cộng, trừ, nhân hay chia a với b v.v phụ thuộc vào phép toán (toán tử) mà người dùng nhập vào Do vậy, để định thực phép toán lên toán hạng a b đó, cần sử dụng cấu trúc Select Case để kiểm tra tốn tử nhập vào b Chương trình mẫu: 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 Trang BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 Case Else: MsgBox "Tôi không hiểu phép toán !", vbExclamation, "Nhập sai" End Select MsgBox "KÕt qu¶ cđa " & a & PhepToan & b & " lµ : " & KetQua End Sub Thực phép toán dùng cấu trúc Select Case C Ghi : phép chia nguyên chia dư VB: • Phép chia \ phép chia lấy phần nguyên: Ví dụ 10 \ = Phép chia / phép chia thơng thường (lấy phần ngun phần dư), ví dụ: / = 2.5 • Phép mod chia lấy phần dư, ví dụ 10 mod = 1, mod = v.v… Bài tập a Hướng dẫn: S tổng số hạng thứ i, với i chạy từ đến N, Số hạng tổng quát i Do để tính tổng dãy số S, sử dụng loại vịng lặp biết b Chương trình mẫu (Gõ đoạn mã 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 + 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 : 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 0) hay giảm (Nếu N Then TongDuong = TongDuong + n Else TongAm = TongAm + n End If Loop Until n = '/// Lặp nhập n = dừng MsgBox "Tổng số âm = " & TongAm & " Tong số dơng = " & TongDuong End Sub c Ghi chú: • • • • Vịng lặp Do … Loop Until kết thúc điều kiện true Vòng lặp Do…Loop Until khác với vòng lặp dạng Do….Loop While chỗ vòng lặp Do…Loop While kết thúc False Thực chất, cấu trúc lặp Do…Loop Until Do … Loop While tương đương nhau, để tránh nhầm lẫn nên nhớ loại thực hành Có thể khỏi vịng lặp dạng Do… Loop câu lệnh Exit Do Bài tập 10 a Hướng dẫn: Vì khơng thể biết sau năm tổng số tiền 2.000.000, mà biết năm tăng thêm lượng Do vậy, ta sử dụng vịng lặp không xác định lần lặp ta kiểm tra xem số tiền cần thiết hay chưa? Nếu đủ số lần thử số năm cần tìm Nhưng ta lại sử dụng vòng lặp Do While…Loop mà khơng Do …Loop ? Sở dĩ sử dụng vịng lặp Do While … Loop số tiền gửi vào ban đầu lớn số tiền kỳ vọng ! b Chương trình mẫu: Private Sub Form_Load() Dim SoNam As Integer, TongTien As Long SoNam = TongTien = 1000000 Do While TongTien < 2000000 SoNam = SoNam + TongTien = (1 + 0.05) ^ SoNam * TongTien /// Công thức cần nhớ Loop MsgBox "Cần phải gửi " & SoNam & " năm !" End Sub c Ghi chỳ: õy l bi tốn tính tiền gửi tiết kiệm, GDP áp dụng sống Trang 10 BÀI 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 hàm thủ tục, trước tham số hình thức khơng có từ khố byref đứng trước VB hiểu tham biến (tham chiếu) • Tham số hình thức phần khai báo chương trình mảng phải viết dạng sau: () As , Cách viết: A (10) As integer hay A (1 to 10) As String v.v… sai ! • Giải thuật Quick_Sort thực tương đối nhanh n lớn Người ta gọi giải thuật xếp Quick_Sort số giải thuật xếp nhanh khác (như Merge sort, Heap sort…) thuộc phương pháp “Công nghiệp”, cần phải nhớ vận dụng thành thạo giải thuật Bài tập 26 a Hướng dẫn: Ý tưởng giải thuật dùng mảng chiều để biểu diễn nhị phân Sau tinh chỉnh dần xếp kết cuối b Chương trình mẫu '/// Thđ tơc hoán đổi giá trị biến a b cho (sẽ s dụng chơng trình) Sub Swap(a As Integer, b As Integer) Dim Tam As Integer Tam = a a=b b = Tam End Sub ' '/// Thủ tục điều chỉnh lại nút i để trở thành đống (Heap) '/// Điều chỉnh nút i DS, có N phÇn tư Sub DieuChinhNut(i As Integer, N As Integer, DS() As Integer) Dim R As Integer If i > (N \ 2) Then Exit Sub '/// So s¸nh trái phải nút i, lớn '/// R lu vị trí R=2*i '/// Giả sử trái lớn If (R + hay dấu “.” = “.” + dấu trắng S = Replace(S, ".", "." & Chr(32)) '//Thêm dấu trắng vào sau dÊu ph¶y "," -> hay thay dấu “,” dấu “,” + dấu trắng S = Replace(S, ",", "," & Chr(32)) '/// Thay dÊu tr¾ng b»ng dÊu tr¾ng không dấu trắng liền Do While InStr(1, S, Chr(32) & Chr(32)) > S = Replace(S, Chr(32) & Chr(32), Chr(32)) Loop '/// C¾t dấu trắng đầu xâu S = Trim(S) '/// Trả kết cho hàm (Lu ý: Bản thân xâu S không bị thay đổi khỏi hàm) ChuanHoa = S End Function ' '/// Chơng trình chÝnh Private Sub Form_Load() Dim S As String S = InputBox("H·y nhËp mét x©u ký tù : ") MsgBox "X©u sau chuẩn hoá : " & ChuanHoa(S) End Sub Trang 25 BÀI 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ú: • Vì viết dấu trắng (có mã 32) tài liệu khó khăn cho người đọc nên thay viết dấu trắng “ “, viết chr(32) • Có thể dùng Hàm String(N, Ch) để tạo xâu gồm có N ký tự Ch Bài tập 29 a Hướng dẫn: • Các bước cần làm giống tập 28, cần phải thực việc đổi thành chữ hoa ký tự đầu câu đầu xâu văn • Khi chuẩn hố theo 28 ký tự cần chuyển thành chữ HOA nằm vị trí dấu chấm + b Chng trỡnh mu: '/// Hàm chuẩn hoá xâu ký tự S Giá trị trả cho hàm xâu đợc chuẩn hoá '/// Xâu vào đợc truyền dạng tham trị Hàm không làm thay đổi xâu vào S Function ChuanHoa(ByVal S As String) As String Dim i As Integer, S2 As String '/// Thêm dấu trắng vào sau dấu chÊm "." S = Replace(S, ".", "." & Chr(32)) '/// Thêm dấu trắng vào sau dấu phảy "," S = Replace(S, ",", "," & Chr(32)) '/// Thay dÊu tr¾ng dấu trắng không dÊu tr¾ng liỊn Do While InStr(1, S, Chr(32) & Chr(32)) > S = Replace(S, Chr(32) & Chr(32), Chr(32)) Loop '/// Cắt dấu trắng đầu xâu S = Trim(S) '/// - ChuyÓn đổi thành ký tự HOA đầu câu (Sau dÊu ".") /// S2 = "" '/// Biến để lu kết sau chuyển thành chữ Hoa đầu câu '///Kiểm tra ký tự, dấu "." chuyển ký tự đứng cạnh (cách vị trí) thành chữ HOA For i = To Len(S) If (Mid(S, i, 1) = ".") And (i < Len(S)) Then S2 = S2 & "." & Mid(S, i+1, 1) & UCase(Mid(S, i + 2, 1)) i = i + '/// Bá qua vÞ trÝ i+1 i+2 (vì đà cộng vào kết S2 dòng rồi) Else S2 = S2 & Mid(S, i, 1) '/// Nếu dấu "." cộng vào S2 End If Next '// Cũng cần chuyển ký tự đầu văn thành chữ HOA S2 = UCase(Left(S2, 1)) & Mid(S2, 2) '/// Tr¶ kÕt qu¶ vỊ cho hµm ChuanHoa = S2 End Function Trang 26 BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ mơn CNPM–ĐHSPKT HY 2005 ' '/// Chơng trình Private Sub Form_Load() Dim S As String S = InputBox("H·y nhËp mét x©u ký tù : ") MsgBox "X©u sau chuÈn hoá : " & ChuanHoa(S) End Sub c Ghi chú: • Hàm Mid(S,i,n) để lấy n ký tự vị trí i xâu S Nếu bỏ qua tham số n hàm trả ký tự lại từ vị trị i cuối xâu Nếu n = cho ta ký tự vị trí thứ i (Trong ngơn ngữ lập trình khác, để lấy ký tự thứ i xâu S, ta thường viết S[i] VB phải viết Mid(S,i,1) ) • Left(S,n) : Trả n ký tự phía trái xâu S • Right(S,n) : Trả n ký tự phía phải xâu S • Hàm Ucase(S) : Trả xâu S dạng chữ HOA • Lcase(S) : Trả xâu chữ thường S Bài tập 30 a Hướng dẫn: Ở ta cần duyệt ký tự kiểm tra, có khả xảy q trình thực hiện, ta dùng biến xâu để lưu số • Trường hợp ký tự xét ký tự số việc cộng vào biến xâu • Trường hợp ký tự xét khơng ký tự số xét tiếp: Nếu biến xâu khơng rỗng in sau xố xâu b Chương trình mẫu '/// T¸ch c¸c sè khái x©u Private Sub Form_Load() Dim S As String, i As Integer, So As String S = InputBox("H·y nhËp mét x©u ký tù : ") So = "" i=1 Do While i hết • Phát biểu On error goto err thường dùng để chủ động bắt lỗi, tránh bị treo máy Trước nhãn Err: thường phải Exit Sub hay Exit Function Hãy sử dụng chế bắt lỗi toán hay đoạn chương trình mà dễ xảy lỗi Runtime Cịn có lệnh bắt lỗi khác On error Resume Next Xin tra cứu tài liệu hướng dẫn trực tuyến MSDN, gồm đĩa CDs Bài tập 33 a hướng dẫn: Có nhiều cách giải này, cách nhanh gọn dùng mảng để lưu trữ số lượng ký tự nhập Chỉ số phần tử mảng để lưu số lượng ký tự giá trị ASCII ký tự Ví dụ: M[65] dùng để lưu số lượng ký tự chữ “A” b Chương trình mẫu '/// §Õm số lợng loại ký tự Private Sub Form_Load() Dim i As Integer Dim S As String Dim M(1 To 255) As Integer For i = To 255 M(i) = Next S = InputBox("HÃy nhập vào xâu ký tự chứa chữ HOA : ") For i = To Len(S) M(Asc(Mid(S, i, 1))) = M(Asc(Mid(S, i, 1))) + Next For i = To 255 Trang 29 BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 If M(i) > Then Debug.Print "Sè l−ỵng ký tù """ & Chr(i); """ lµ : " & M(i) End If Next End Sub c Ghi chú: • Hàm ASC(Ch) cho ta mã ASCII ký tự Ch, ví dụ: ASC(“A”) • Dấu nháy kép ký tự đặc biệt VB sử dụng để bao bọc xâu, muốn in dấu nháy kép hình cần phải gõ lần dấu nháy kép Ví dụ “” để in dấu nháy kép hình 65 Bài tập 34 a Hướng dẫn : Sửdụng hàm Replace b Chương trình mẫu: '/// Thay thÕ ký tù Private Sub Form_Load() Dim S As String S = InputBox("HÃy nhập xâu : ", "Sử dụng hàm Replace", "Welcome to VB") S = Replace(S, Chr(32), "_") MsgBox "Xâu sau thay : " & S End Sub Bài tập 35 a Hướng dẫn: Thực cộng từ phải sang trái cặp ký tự số với (có tính đến phần nhớ) b Chương trình mẫu Private Sub Form_Load() Dim S1 As String, S2 As String, S As String Dim i As Integer, Nho As Integer, DonVi As Integer /// Nho=Nhớ, DonVI=Đơn Vị S1 = InputBox("Nhập vào số nguyên dơng thứ : ") S2 = InputBox("Nhập vào số nguyên dơng thứ hai : ") '/// Chèn thêm số vào trớc xâu s2 để xâu dài S2 < S1 If len(s2) < len(s1) Then S2 = String(Len(S1) - Len(S2), "0") & S2 /// Chèn thêm số vào trớc xâu S1 để xâu dài S1 < S2 If Len(s1) < len(s2) Then S1 = String(Len(S2) - Len(S1), "0") & S1 S = "" Nho = For i = Len(S1) To Step -1 DonVi = (Val(Mid(S1, i, 1)) + Val(Mid(S2, i, 1)) + Nho) Mod 10 Nho = (Val(Mid(S1, i, 1)) + Val(Mid(S2, i, 1)) + Nho) \ 10 S = DonVi & S Next If Nho > Then S = Nho & S MsgBox "kÕt qu¶ cđa " & S1 & "+" & S2 & " = " & S End Sub Trang 30 BÀI 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ú: • Có thể áp dụng để thực cộng số nguyên, hai số thực hay số nguyên với số thực… • Có thể vận dụng vào việc nhân số lớn • Hàm String(N,Ch) : Trả xâu chứa N ký tự Ch • Hàm Val (S) : Chuyển xâu S thành số • Phép Mod thực việc chia lấy phần dư • Phép tốn \ thực việc chia lấy phần nguyên Bài tập 36 a hướng dẫn: Các phần tử đường chéo thứ có số [i,i] (với i chạy từ đến n) Đường chéo thứ hai có số [i,j] (với i chạy từ đến n j chạy từ n-i+1 đến 1) b Chương trình mẫu: Private Sub Form_Load() Const MAX = 10 Dim TongDuong As Long, TongAm As Long Dim A(1 To MAX, To MAX) As Integer Dim N As Integer, i As Integer, j As Integer N = InputBox("KÝch th−íc cđa ma trËn : ") '/// NhËp d÷ liƯu cho ma trËn For i = To N For j = To N A(i, j) = InputBox("NhËp phÇn tư A[" & i & "," & j & "]") Next j Next i TongAm = TongDuong = '/// Cộng đờng chéo thø nhÊt For i = To N If A(i, i) < Then TongAm = TongAm + A(i, i) Else TongDuong = TongDuong + A(i, i) End If Next '/// Cộng đờng chéo thứ hai For i = To N If A(i, N - i + 1) < Then TongAm = TongAm + A(i, N - i + 1) Else TongDuong = TongDuong + A(i, N - i + 1) End If Next MsgBox "Tỉng ©m = " & TongAm & " Tỉng d−¬ng = " & TongDuong End Sub Trang 31 BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 Bài tập 37 a Hướng dẫn: Kiểm tra vị trí A[i,j] ma trận Với vị trí ta “thử” lan chiều ngang, dọc, chéo xem liệu có liền kề mà có giá trị hay khơng ? Nếu có ghi nhận thêm vào, trình ghi nhận cần kiểm tra, số >=5 dừng thơng báo có tồn hàng liền có giá trị b Chương trình mẫu: Option Explicit Dim A(1 To 10, To 10) As Integer Dim N As Integer '///Hàm kiểm tra xem vị trí hàng h, cột c có ô có giá trị hay không ? '/// Nếu tồn hàm trả giá trị True, trái lại trả False Function KiemTraHangNgang(h As Integer, c As Integer) As Boolean Dim i As Integer, SoPT As Integer SoPT = For i = To If i + c = 5) End Function ' '/// Hµm kiĨm tra hµng däc Function KiemTraHangDoc(h As Integer, c As Integer) As Boolean Dim i As Integer, SoPT As Integer SoPT = For i = To If i + h = 5) End Function ' Function KiemTraCheo1(h As Integer, c As Integer) As Boolean Dim i As Integer, SoPT As Integer SoPT = For i = To If (h + i DS(j).NamSinh Then Tam = DS(i) DS(i) = DS(j) DS(j) = Tam End If Next Next '/// L−u kÕt qu¶ tƯp Dim F As Long F = FreeFile Open "c:\Canbo.txt" For Output As #F For i = To SoLuong Print #F, DS(i).HoTen, vbTab, DS(i).NamSinh Next Msgbox “Mở file c:\Canbo.txt để quan sát “ Close F End Sub c Ghi chú: • Có thể gán giá trị biến cấu trúc cho Trang 34 BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN • Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 Hàm FreeFile trả số (gọi thẻ file) trống C – BÀI TẬP TỰ GIẢI Bài 1: Viết chương trình nhập vào cạnh tam giác (Lưu ý phải đảm bảo kiểm tra tổng cạnh lớn cạnh lại) Dùng hàm MsgBox hiển thị chu vi, diện tích, độ dài đường cao, đường trung tuyến, đường phân giác, bán kính đường trịn nội tiếp, ngoại công thức sau: V = a+b+c = 2p 2S S = p ( p − a )( p − b)( p − c) = a ma = ga = 2b + 2c − a bcp( p − a) b+c S abc r= R= P 4S Bài tập 2: Thông tin sinh viên gồm có: Họ tên, Tuổi, Điểm toán (Hệ số 2), điểm tin (Hệ số 1) Hãy nhập thông tin cho lớp in bảng điểm gồm chi tiết nêu điểm trung bình HD: Định nghĩa kiểu liệu từ khoá Type (Tương tự Record pascal) khai báo Mảng để lưu trữ danh sách sinh viên Dùng hàm inputbox để nhập liệu, hàm Debug.print để in kết Bài tập 3: Nhập số a, b, c Hãy cho biết số độ dài cạnh tam giác hay khơng ? Nếu lập thành tam giác tam giác : Vng, đều, cân, vng cân hay tam giác thường HD: Sử dụng cấu trúc If Then If Then Else Bài tập 4: Nhập ký tự Hãy cho biết chữ viết hoa, thường, chữ số hay ký tự khác HD: Sử dụng cấu trúc Select Case Bài tập 5: Nhập vào tháng năm dương lịch Hãy hiển thị số ngày tháng HD: Sử dụng cấu trúc Select Case lưu ý tháng năm nhuận (Tức tháng có 29 ngày) Bài tập : Nhập vào tên hàm (Chữ thường hoa) giá trị biến số Sau in kết hàm Ví dụ : Nếu nhập tên hàm Cos giá trị biến số kết HD: Sử dụng cấu trúc Select Case hàm UCase (hoặc LCase) Bài tập 7: Vừa gà vừa chó bó lại cho trịn 36 con, 100 chân chẵn Hãy lập trình cho biết có gà, chó HD: Sử dụng vòng lặp lồng để thử Nếu kiểm tra thoả mãn đầu hiển thị kết dừng vịng lặp Bài tập 8: Có 100 trâu, 100 bó cỏ, trâu đứng ăn năm bó, trâu nằm ăn bó, trâu già ăn bó Hãy lập trình tìm xem có trâu loại HD : Tương tự tập 7, sử dụng vòng lặp để thử Trang 35 BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 Bài tập : Yêu cau sáu bổ ba, ghét cau sáu bổ làm mười Giận thương có bảy mươi hai người, thời cau có mười thơi Hãy cho biết có người thương người giận HD: Sử dụng vòng lặp Bài tập 10: Nhập vào xâu ký tự, sau đếm xem có chữ hoa, chữ thường, chữ số ký tự khác HD : Sử dụng hàm inStr kết hợp với vòng lặp For Bài tập 11: Nhập vào xâu ký tự đảo ngược xâu ký tự Bài tập 12 : Nhập vào xâu ký tự cắt khoảng trắng đầu (không sử dụng hàm Trim VB) Bài tập 13: Viết chương trình cho người dùng nhập vào số tự nhiên n hiển thị tổng dãy số sau : + + + + n n 2n − S3= 2n S1 = S5 = + + + + (n dấu căn) S2= 12 + 2 + + + n S4= 1 + 2 + 3 + + n n S6 = n ! Hướng dẫn: Sử dụng vòng lặp (Nên thử làm với loại vòng lặp) Bài tập 14: Nhập vào số nguyên dương n Hãy lập trình biết có phải số ngun tố hay khơng ? HD: Số n gọi nguyên tố không chia hết cho số nằm khoảng [2, [ n ]] Bài tập 15 : Nhập vào tuổi người tuổi nhập vào số âm HD: Sử dụng vòng lặp Loop Bài tập 16: Nhập vào dãy ký tự (mỗi lần ký tự) Điều kiện nhập kết thúc ký tự nhập vào dấu chấm Sau hiển thị số lượng ký tự chữ số số lượng ký tự ký tự số Bài tập 17: Tìm số dương n lớn thoả mãn điều kiện : 1 < 2.101999 a + + + + 2n − b en-1999Log10n < 2000 (HD: Trong VB : Log10n viết Log(n)/Log(10)) Bài tập 18 : Viết chương trình tìm ước số chung lớn hai số a b Bài tập 19 : Viết chương trình nhập vào hai số nguyên T M Hãy in phân số T/M dạng tối giản Ví dụ nhập T = 10, M = 20 in ½ Hướng dẫn : Áp dụng kết 18 Bài tập 20 : Nhập vào xâu ký tự, sau in ngược xâu thủ tục debug.print Mỗi ký tự in dịng riêng biệt Trang 36 BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 Bài tập 21: Viết chương trình tính diện tích hình giới hạn đường y1=0, y2 = x2 xa=-2, xb=5 phương pháp trung bình, bước nhảy ∆i = xi+1-xi = 0.0000001 n  ( xi +1 + xi )  HD: Diện tích S = ∑1 ∆ i * y i ; n = ( xb − x a ) / ∆ i ; y i =     Bài tập 22: Viết chương trình cho người dùng nhập vào số nguyên dương, sau in hình dạng chữ, ví dụ nhập "12345" in "mười hai nghìn ba trăm bốn mươi lăm" HD: Phân chia thành cụm chữ số sau "đọc" cụm số kết hợp với hàng số Như ví dụ số 12 đọc "mười hai", số thuộc hàng nghìn nên thêm từ "nghìn" Bài tập 23: Nhập vào n số in ước số chung lớn n số Bài tập 24: Viết chương trình mã hố file văn phương pháp mã hoá cổ điển Kết lưu vào file văn khác Qui tắc mã hoá sau: Ký tự ban đầu a b c z A B Z Ký tự sau bị mã hoá b c d a B C A Bài tập 25: Viết chương trình giải mã theo qui tắc 24 (B-> A, A->Z ) Bài tập 26 : Viết chương trình chuyển đổi dãy số (dãy số cho dạng xâu, ví dụ '142345') Sau chuyển dãy số thành số chuỗi nhị phân, chữ số chuyển thành cụm bit nhị phân ví dụ nhập xâu '1234567' kết cho ta : '0001 0010 0011 0100 0101 0110 0111' Bài tập 26: Viết chương trình chuyển đổi dãy nhị phân thành dãy ký tự ASCII tương ứng, biết cụm gồm bit nhị phân biểu diễn ký tự có mã giá trị hệ 10 bit Bài tập 27: Nhập vào n điểm toạ độ phẳng Sau in hình số lượng tam giác có từ n điểm Bài tập 28: Yêu cầu tập 27 đếm số lượng tam giác đều, cân, vuông, vuông cân tam giác thường Bài tập 29 : Yêu cầu tập 27 đếm số lượng tam giác góc phần tư thứ I, II, III, IV Bài tập 30: Nhập vào số hệ 10 sau in giá trị hệ số 2, 8, 16 Trang 37 ... ký tự số Bài tập 17 : Tìm số dương n lớn thoả mãn điều kiện : 1 < 2 .10 1999 a + + + + 2n − b en -1 9 99Log10n < 2000 (HD: Trong VB : Log10n viết Log(n)/Log (10 )) Bài tập 18 : Viết chương trình tìm... phân, chữ số chuyển thành cụm bit nhị phân ví dụ nhập xâu ''12 34567'' kết cho ta : ''00 01 0 010 0 011 010 0 010 1 011 0 011 1'' Bài tập 26: Viết chương trình chuyển đổi dãy nhị phân thành dãy ký tự ASCII tương... "Thông báo " End Sub Trang 13 BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN Biên soạn: Bộ môn CNPM–ĐHSPKT HY 2005 Bài tập 14 : a Hướng dẫn: Cơng thức tính giai thừa số N là: N! = 1. 2.3…N -1 . N, ta cần nhân liên tiếp

Ngày đăng: 20/08/2013, 15:35

Hình ảnh liên quan

         Dim  F(1000)  As  Long   '/// Bảng chứa giá trị đã tính toán đ − ợc ở b − ớc trung gian  - BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN - CHƯƠNG 1

im.

F(1000) As Long '/// Bảng chứa giá trị đã tính toán đ − ợc ở b − ớc trung gian Xem tại trang 16 của tài liệu.
                         If  So &lt;&gt; &#34;&#34;  Then                                 '/// Đã đọc hết số  đú  rồi-&gt; in ra màn hình  - BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN - CHƯƠNG 1

f.

So &lt;&gt; &#34;&#34; Then '/// Đã đọc hết số đú rồi-&gt; in ra màn hình Xem tại trang 27 của tài liệu.
         '/// In nốt câu S1 ra màn hình (Trong tr − ờng hợp xâu S1 không có dấu chấm câu)  - BÀI TẬP LẬP TRÌNH HƯỚNG SỰ KIỆN - CHƯƠNG 1

n.

nốt câu S1 ra màn hình (Trong tr − ờng hợp xâu S1 không có dấu chấm câu) Xem tại trang 28 của tài liệu.

Từ khóa liên quan

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

Tài liệu liên quan