Giáo trình Tin học đại cương - Chương 6: Lập trình với Visual Basic 6.0 - Trần Quang Hải Bằng
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Tin học đại cương - Chương 6: Lập trình với Visual Basic 6.0 - Trần Quang Hải Bằng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- giao_trinh_tin_hoc_dai_cuong_chuong_6_lap_trinh_voi_visual_b.pdf
Nội dung text: Giáo trình Tin học đại cương - Chương 6: Lập trình với Visual Basic 6.0 - Trần Quang Hải Bằng
- Dùng cho nhóm ngành: Công trình + C ơ khí TIN HỌC ĐẠI CƯƠNG Ch ươ ng 6: Lập trình v ới Visual Basic 6.0 bangtqh@utc2.edu.vn Nội dung 1. So ạn th ảo ch ươ ng trình 2. Các ki ểu d ữ li ệu c ơ b ản c ủa VB 3. Các toán t ử thông d ụng trong VB 6.0 4. Các c ấu trúc điều khi ển –Rẽ nhánh –Lặp 5. Gỡ r ối (debug) trong VB IDE 6. Các h ộp tho ại (dialog) thông d ụng bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 2
- 6.1. Soạn thảo chương trình Nh ắc lại – Forms là cái nền hay khung để ta xây dựng User Interface. – Controls là nh ững viên gạch để ta dùng xây dựng User Interface. – Event procedures là code nằm phía sau nh ững hình ảnh, nó là ch ất keo dùng để dán các Controls lại với nhau để tạo thành ch ươ ng trình áp dụng của ta. So ạn th ảo ch ươ ng trình trong VB 6.0 th ực ch ất là vi ết code cho từng sự ki ện mà ta quan tâm để đáp ứng lại nh ững hành độ ng của ng ườ i sử dụng bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 3 6.1. Soạn thảo chương trình (tt) Trong c ửa s ổ vi ết code: –Cần ch ọn Control trong ô bên trái – Ch ọn ti ếp Event của control đó trong ô bên ph ải. – Th ủ t ục ( Procedure ) x ử lý event đó s ẽ có d ạng: Private Sub TênControl_TênEvent (Tham s ố n ếu có ) các l ệnh x ử lý do ng ườ i vi ết ch ươ ng trình đư a vào End Sub bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 4
- 6.1. Soạn thảo chương trình (tt) Một s ố event thông d ụng – Form_Load : Xu ất hi ện khi 1 form b ắt đầ u đượ c t ải và hi ển th ị trên màn hình. – Control_Click : Xu ất hi ện khi ng ườ i dùng click chu ột vào 1 control – Control_DbClick : Xu ất hi ện khi ng ườ i dùng click đúp chu ột vào control – Control_KeyPress : Xu ất hi ện khi ng ườ i dùng nh ấn 1 phím. Ta th ườ ng dùng nó cho TextBox để lo ại ra các phím không ch ấp nh ận. KeyPress cho ta mã ASCII là số có giá tr ị t ừ 1 đế n 255 của key. – Control_DragDrop : Xu ất hi ện khi ng ườ i dùng kéo và th ả m ột cái gì lên control bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 5 6.1. Soạn thảo chương trình (tt) Một s ố event thông d ụng (tt) – Control_GotFocus : Xu ất hi ện khi 1 control đang ở tr ạng thái inactive chuy ển thành active và nh ận đượ c tươ ng tác c ủa ng ườ i dùng. – Control_LostFocus : Ng ượ c v ới GotFocus, t ức 1 control đang ở tr ạng thái active chuy ển sang tr ạng thái inactive – Control_MouseDown, Control_MouseUp : Xu ất hi ện khi ng ườ i dùng click chu ột. 1 l ần click s ẽ t ươ ng ứng với 1 l ần MouseDown và 1 l ần MouseUp. Vi ệc x ử lý event này s ẽ giúp ta gi ải quy ết tình hu ống v ẽ hay kéo th ả b ằng chu ột. bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 6
- 6.1. Soạn thảo chương trình (tt) Ví d ụ: (*) Yêu c ầu hoàn thi ện code cho các Command Button còn l ại bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 7 6.2. Các ki ểu d ữ li ệu c ơ b ản trong VB Chúng ta bi ết bộ trí nh ớ (memory ) của computer ch ứa nh ững byte (8 bit) dữ li ệu. Vd: computer của có 32MB memory thì ch ứa đượ c kho ảng hơn 32 tri ệu bytes. Tất cả data trong máy tính đề u đượ c bi ểu di ễn d ướ i dạng các con s ố. M ỗi con s ố đạ i di ện cho m ột th ứ gì đó, tùy theo quy ướ c c ủa ng ườ i dùng. Một byte có th ể ch ứa m ột con s ố t ừ 0 đế n 255, t ức là 28 -1 ( 2 l ũy th ừa 8 b ớt 1 ) . Khi dùng bits ta đế m các s ố trong h ệ th ống nh ị phân. Thí d ụ, khi b ạn ấn phím A trên keyboard, keyboard s ẽ gởi v ề computer con s ố 65 (01000001 trong nh ị phân). bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 8
- 6.2. Các ki ểu d ữ li ệu c ơ b ản trong VB (tt) Có 2 ki ểu d ữ li ệu c ơ b ản trong VB 6.0 –Dữ li ệu ki ểu s ố –Dữ li ệu không ph ải s ố: • Chu ỗi ký t ự ( string ) • Ngày gi ờ ( Date ) • Lôgic ( Boolean ) • Đố i t ượ ng ( Object ) • Variant bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 9 Dữ li ệu ki ểu s ố Byte – Độ l ớn: 1 byte – Kho ảng giá tr ị: t ừ 0 đế n 255 Integer – Độ l ớn: 2 bytes – Kho ảng giá tr ị: t ừ -32,768 đế n 32,767 Long – Độ l ớn: 4 bytes – Kho ảng giá tr ị: t ừ -2,147,483,648 đế n 2,147,483,648 bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 10
- Dữ li ệu ki ểu s ố (tt) Single – Độ l ớn: 4 bytes – Kho ảng giá tr ị: •Số âm: t ừ -3.402823E+38 đế n -1.401298E-45 •Số dươ ng: t ừ 1.401298E-45 đế n 3.402823E+38 Double – Độ l ớn: 8 bytes – Kho ảng giá tr ị: •Số âm: -1.79769313486232e+308 đế n - 4.94065645841247e-324 •Số d ươ ng: 4.94065645841247e-324 đế n 1.79769313486232e+308 bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 11 Dữ li ệu ki ểu s ố (tt) Currency – Độ l ớn: 8 bytes – Kho ảng giá tr ị: 922,337,203,685,477.5808 đế n 922,337,203,685,477.5807 – Luôn có ký hi ệu ti ền t ệ đi kèm Decimal – Độ l ớn: 12 bytes – Kho ảng giá tr ị: • +/- 79,228,162,514,264,337,593,543,950,335 • +/- 7.9228162514264337593543950335 (28 decimal places). bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 12
- Dữ li ệu không phải ki ểu s ố Chu ỗi ký t ự ( String ) – Lo ại variable-length: độ dài c ố đị nh t ừ 1 đế n 65,400 ký t ự – Lo ại fixed-length ( String*n ): 10 bytes + độ dài chu ỗi tới 2GB ký t ự Ngày gi ờ ( Date ) – Độ l ớn: 8 bytes – Kho ảng giá tr ị: January 1, 100 tới December 31, 9999 Boolean – Độ l ớn: 2 bytes – Kho ảng giá tr ị: True ho ặc False bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 13 Dữ li ệu không phải ki ểu s ố (tt) Ki ểu Variant – Là ki ểu dữ li ệu không t ườ ng minh – nó có th ể nh ận b ất k ỳ giá tr ị nào có th ể lúc nó nh ận d ữ li ệu ki ểu này, lúc nh ận dữ li ệu ki ểu khác. –Dạng s ố: 16 bytes, b ất k ỳ s ố nào n ằm trong ph ạm vi s ố Double –Dạng chu ỗi: l ớn 22 bytes + độ dài chu ỗi Ki ểu Type (do ng ườ i dùng t ự đị nh ngh ĩa) – Là c ấu trúc (record) g ồm nhi ều field, m ỗi field có ki ểu riêng theo nhu c ầu Ki ểu m ảng ( Array ) – Dãy g ồm nhi ều ph ần t ử có c ấu trúc đồ ng nh ất, m ỗi ph ần tử có th ể đượ c truy xu ất nh ờ ch ỉ s ố c ủa nó trong dãy bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 14
- Bi ến Một ứng d ụng th ườ ng x ử lý nhi ều d ữ li ệu, ta dùng khái nhi ệm " bi ến" để l ưu d ữ li ệu c ủa ch ươ ng trình VB không b ắt bu ộc nh ưng nên có khai báo rõ ràng từng bi ến tr ướ c khi truy xu ất trong ch ươ ng trình để tránh sai sót, d ễ b ảo trì và phát tri ển Khai báo bi ến – Khai báo tên nh ận d ạng cho bi ến –Kết h ợp ki ểu d ữ li ệu v ới bi ến để xác đị nh d ữ li ệu bi ến đượ c phép ch ứa – Khai báo t ầm v ực truy xu ất bi ến Cú pháp : [Static|Public|Private|Dim ] AVariable As Type bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 15 Bi ến (tt) Đặ t tên 1 bi ến – Dài t ối đa 255 ký t ự – Ký t ự đầ u tiên ph ải là ch ữ cái (letter) – Các ký t ự ti ếp theo có th ể là ch ữ cái (letter), s ố (digit) ho ặc d ấu g ạch d ướ i ( _ ) – Không đượ c ch ứa các ký t ự đặ c bi ệt: ^, &, ), (, %, !, #, @, ~, +, -, *, – Nên ch ọn cách đặ t tên ng ắn g ọn, g ợi nh ớ đế n ý ngh ĩa, m ục đích s ử d ụng bi ến – Nên vi ết hoa ch ữ cái đầ u tiên c ủa m ỗi t ừ trong tên bi ến (vd: TongCacSoChan , TichCacSoLe ) – Không đặ t tên bi ến trùng t ừ khóa ( Sub , Print , End v.v) bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 16
- Bi ến (tt) Ví d ụ khai báo bi ến Dim AStringVariable As String Dim AStringVariable As String*100 Dim AnIntegerVariable As Integer Dim ABooleanVariable As Boolean Dim ADateVariable As Date Dim AnArrayVariable (100) As Integer Type ANewType Field1Name As Integer Field2Name As String*40 Field3Name As Boolean Field4Name (10) As Double End Type Dim AVariantVariable As Variant bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 17 Tầm v ực truy xuất c ủa bi ến Bi ến c ục b ộ – Đượ c khai báo sau t ừ khóa Dim – Ch ỉ có tác d ụng trong ch ươ ng trình con, c ục b ộ trong một form ho ặc m ột module nào đó Bi ến toàn c ục – Đượ c khai báo sau t ừ khóa Public – Có tác d ụng trong toàn b ộ ch ươ ng trình – Lo ại bi ến này luôn ph ải khai báo ở vùng Declarations bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 18
- Hằng Có giá tr ị xác đị nh và không h ề thay đổ i trong b ất k ỳ hoàn c ảnh nào Khai báo h ằng – Cú pháp: Const TênH ằng = GiáTr ịCủaH ằng – Ví d ụ: Const AConstantOfDate = #01/04/2000# Ph ạm vi c ủa h ằng – Gi ống nh ư đố i v ới bi ến, h ằng toàn c ục ph ải khai báo sau t ừ khóa Public – Ví d ụ: Public Const A = 120 bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 19 6.3. Các toán t ử trong VB Dựa theo s ố l ượ ng toán h ạng ta có – Toán t ử 1 ngôi : Ch ỉ c ần 1 toán h ạng – Toán t ử 2 ngôi : C ần 2 toán h ạng Dựa theo quy trình tính toán có các lo ại toán t ử: – Toán t ử s ố h ọc – Toán t ử so sánh – Toán t ử lu ận lý và bitwise bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 20
- 6.3. Các toán t ử trong VB (tt) Các toán t ử s ố h ọc Toán tử Ý nghĩa Ví dụ + Phép cộng 2+3=5 - Phép trừ 10-9=1 ^ Phép lũy thừa 2^4=16 * Phép nhân 4*2=8 / Phép chia 12/4=3 Mod Phép chia lấy dư 15 Mod 2=1 \ Phép chia nguyên 21\4=5 & Nối chuỗi "Visual"&"Basic"="VisualBasic" bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 21 6.3. Các toán t ử trong VB (tt) Các toán t ử so sánh Toán tử Ý nghĩa Ví dụ Kết quả Lớn hơn 5 > 15 False = Lớn hơn hoặc bằng R >= 5 True | False = So sánh bằng A = B True | False B True | False Like So sánh chuỗi Xem slide kế tiếp bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 22
- 6.3. Các toán t ử trong VB (tt) Toán t ử so sánh chu ỗi " Like " – Cú pháp: AString Like Pattern – Công d ụng: Xác đị nh xem chu ỗi AString có thu ộc Pattern không? N ếu thu ộc thì tr ả v ề True , ng ượ c l ại tr ả v ề False Ví d ụ: MyCheck = "aBBBa" Like "a*a" True MyCheck = "F" Like "[A-Z]" True MyCheck = "F" Like "[!A-Z]" False MyCheck = "a2a" Like "a#a" True MyCheck = "aM5b" Like "a[L-P]#[!c-e]" True MyCheck = "aM5b" Like "a[L-P]#[!c-e]" True MyCheck = "BAT123Khg" Like "b?T*" True bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 23 6.3. Các toán t ử trong VB (tt) Toán t ử "Like" – Ký hi ệu đạ i di ện trong pattern •Dấu * Nhi ều ký t ự b ất k ỳ •Dấu ? Một ký t ự b ất k ỳ •Dấu # Một ch ữ s ố [0-9] b ất k ỳ •[charlist ] bất k ỳ ký t ự nào có trong charlist • [! charlist ]Bất k ỳ ký t ừ nòa không có trong charlist bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 24
- 6.3. Các toán t ử trong VB (tt) Các toán t ử lu ận lý Toán tử Ý nghĩa And Và: cả 2 điều kiện điều True kết quả True Or Hoặc: một trong các điều kiện True kết quả True Xor Hai điều kiện có giá trị khác nhau kết quả True Not Phủ định: True False , False True bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 25 6.3. Các toán t ử trong VB (tt) Một s ố hàm toán h ọc thông d ụng Hàm Ý nghĩa Ví dụ Int Lấy số nguyên lớn hơn gần nhất Int(6.5) = 7 Sqr Lấy căn bậc hai Sqr(16) = 4 Abs Lấy trị tuyệt đối Abs(-2) = 2 Exp Lấy giá trị e x Exp(1) = 2.7182818284590 Fix Lấy phần nguyên Fix(6.5) = 6 Round Làm tròn Round(2.3554, 2) = 2.36 Log Lất giá tr ị log(x) Log(10) = 2.302585 bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 26
- 6.3. Các toán t ử trong VB (tt) Các hàm x ử lý chu ỗi thông d ụng Hàm Ý nghĩa Ví dụ Len (“chuỗi”) Lấy độ dài chuỗi Len(“Tin Hoc Dai Cuong”)= 17 Lấy n ký tự của chuỗi từ Right (“chuỗi”, n) Right(“Visual Basic”,2) = ic phải qua trái Lấy n ký tự của chuỗi từ Left(“chuỗi”, n) Left(“Visual Basic”,5) = Visua trái qua phải Xóa các khoảng trắng Ltrim(“ VB 6.0”) = VB 6.0 Ltrim(“chuỗi”) bên trái chuỗi Xóa các khoảng trắng Rtrim(“chuỗi”) Rtrim(“GTVT ”) = GTVT bên phải chuỗi Xóa các tất cả khoảng Trim(“Tin Hoc Dai Cuong”)= Trim(“chuỗi”) trắng của chuỗi TinHocDaiCuong bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 27 6.3. Các toán t ử trong VB (tt) Các hàm x ử lý chu ỗi thông d ụng (tt) Hàm Ý nghĩa Ví dụ Lấy n ký tự từ vị trí Mid(“chuỗi”, m , n) Mid(“Lap trinh”, 2,4) =ap t m Chuyển toàn bộ chuỗi Ucase(“Lap trinh”) = LAP Ucase(“chuỗi”) thành chữ hoa TRINH Chuyển toàn bộ chuỗi Lcase(“chuỗi”) Lcase(“Lap trinh”) = lap trinh thành chữ thường Lấy ký tự từ bảng mã Chr(charcode) Chr(65)=A ASCII theo charcode Lấy charcode ASCII Asc(Character) Asc(“A”)=65 của ký tự bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 28
- 6.4. Các l ệnh thực thi trong VB Nhóm l ệnh không điều khi ển •Lệnh gán d ữ li ệu vào 1 bi ến •Lệnh gán tham kh ảo đế n đố i t ượ ng vào 1 bi ến Nhóm l ệnh t ạo quy ết đị nh •Cấu trúc If Then Else End If •Cấu trúc Select Case End Select Nhóm l ệnh l ặp •Cấu trúc: Do Loop •Cấu trúc: For Next •Cấu trúc: For each Next Nhóm l ệnh g ọi th ủ t ục –Lệnh g ọi th ủ t ục –Lệnh thoát kh ỏi c ấu trúc điều khi ển Exit bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 29 Lệnh gán dữ li ệu Là l ệnh đượ c dùng nhi ều nh ất trong ch ươ ng trình Cú pháp: AVariable = Expr – Bi ểu th ức Expr bên ph ải s ẽ đượ c tính để có 1 giá tr ị cụ th ể (thu ộc 1 ki ểu c ụ th ể). Giá tr ị này s ẽ đượ c gán vào vùng nh ớ do bi ến AVariable xác đị nh – Tr ướ c khi gán, VB s ẽ ki ểm tra tính t ươ ng thích v ề ki ểu c ủa Avariable và giá tr ị c ủa bi ểu th ức Expr Ví d ụ: DispValue = DispValue + iNegative * d * (10 ^ -bytPosDigit) bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 30
- Cấu trúc r ẽ nhánh If Then Else Cú pháp 1 If condition Then Statement1 [Else Statement2 ] Cú pháp 2 If condition Then [Statement1] + End If Cú pháp 3 If condition Then [Statement1] + Else [Statement2] + End If bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 31 Cấu trúc r ẽ nhánh If Then Else (tt) Ví d ụ: Đoạn ch ươ ng trình gi ải ph ươ ng trình b ậc nh ất bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 32
- Cấu trúc r ẽ nhánh If Then Else (tt) Ví d ụ 2: – Thi ết k ế form nh ư hình bên – Cài đặ t event Click c ủa command button trên form để gi ải ph ươ ng trình b ậc 2: ax 2 + bx + c = 0 bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 33 Ví d ụ 2 – cấu trúc r ẽ nhánh If bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 34
- Cấu trúc r ẽ nhánh (tt) Rẽ nhánh Select Case End Select – Cú pháp: Select Case Expr Case [Statement 1]+ Case [Statement 2]+ Case [Statement n]+ [Case Else [Statement n+1]+ ] End Select – Ki ểm tra xem giá tr ị bi ểu th ức Expr trùng v ới giá tr ị Vali thì th ực hi ện Statement i Nếu không tìm đượ c giá tr ị nào b ằng Expr thì th ực hi ện Statement n+1 bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 35 Cấu trúc r ẽ nhánh (tt) Rẽ nhánh Select Case End Select (tt) Ví d ụ: bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 36
- Cấu trúc l ặp Vòng l ặp Do Dạng 1: Dạng 3: Do While condition Do Until condition ‘Đoạn mã l ệnh VB ‘Đoạn mã l ệnh VB Loop Loop Dạng 2: Dạng 4: Do Do ‘Đoạn mã l ệnh VB ‘Đoạn mã l ệnh VB Loop While condition Loop Until condition bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 37 Ví dụ 1 2 3 bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 38
- Cấu trúc l ặp While . Wend Cú pháp While condition [Statement]+ Wend Công d ụng – Tính giá tr ị c ủa điều ki ện condition . N ếu k ết qu ả là True thì các l ệnh [Statement]+ đượ c th ực hi ện. Quá trình này l ặp l ại cho t ới khi điều ki ện condition có giá tr ị là False bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 39 Cấu trúc l ặp For .Next Cú pháp 1 For counter = start To end [Step increment ] [Statement]+ Next [counter] Ví d ụ: giaithua = 1 For i = 1 To 10 giaithua = giaithua * i Next Công d ụng: –Lặp th ực hi ện l ệnh cho t ới khi counter tăng quá end . Giá tr ị kh ởi d ầu c ủa counter là start . B ướ c t ăng c ủa counter là increment sau m ỗi l ần l ặp bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 40
- Cấu trúc l ặp For .Next (tt) Cú pháp 2 For Each element In group [Statement]+ Next [element] Ví d ụ: Dim dayso(10) As Integer ‘khai báo 1 m ảng 10 ph ần t ử i = 0 For Each ai In dayso MsgBox (“So thu ” & i & “= ” & ai) Next ai bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 41 Lặp For l ồng nhau Với các l ệnh [statement]+ bất k ỳ trong cú pháp l ặp ở trên, ta có th ể thay th ế nó thành m ột c ấu trúc l ặp For khác ta đượ c c ấu trúc For lồng nhau Ví d ụ: Tính t ổng 2 ma tr ận A, B Dim A(3, 3) As Integer ‘khai báo ma tr ận A Dim B(3, 3) As Integer ‘khai báo ma tr ận B Dim C(3, 3) As Integer ‘khai báo ma tr ận C For i = 1 To 3 Step 1 ‘duy ệt theo hàng For j = 1 To 3 Step 1 ‘duy ệt theo c ột C(i, j) = A(i, j) + B(i, j) Next j Next i bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 42
- Thoát đột ngột khỏi vòng l ặp Mặc đị nh trong VB , các lệnh [Statement]+ sẽ đượ c th ực thi cho tới hết vòng lặp (khi điều ki ện lặp là False ). Tuy nhiên, trong 1 vài tr ườ ng hợp đặ c bi ệt, vi ệc lặp hết tất cả các lần lặp là không cần thi ết. – Ví dụ: ki ểm tra xem ph ần tử x có thu ộc trong dãy a1, a2, ,a N không? Rõ ràng trong quá trình ki ểm tra tu ần tự các ph ần tử ai, nếu xảy ra x = ai thì không cần ki ểm tra tiêp ai+1 ta cần thoát độ t ng ột khi vòng lặp ch ưa kết thúc. Cú pháp: Exit [For | Do | Sub | Function ] VB không cho phép sử dụng Exit để thoát kh ỏi vòng lặp While .Wend bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 43 6.5. Gỡ l ỗi (Debug) trong VB IDE Bugs là nh ững lỗi của program mà ta phát hi ện khi ch ạy nó. Debug là công vi ệc lo ại tất cả nh ững lỗi trong ch ươ ng trình để nó ch ạy tốt trong mọi hoàn cảnh. Có 2 lo ại Bug th ườ ng gặp – Program không làm đúng yêu cầu cần ph ải có của đề bài Ph ải tìm hi ểu kỹ yêu cầu của đề bài, phân tích rõ input và output của bài toán – Program không th ực hi ện đúng ý programmer mu ốn. Tức là programmer dự đị nh một đàng mà kết qu ả ch ươ ng trình ra một ngã vô tình vi ết code không đúng cách Tr ườ ng hợp này ph ải dùng các Tool gỡ lỗi (Debug Tool ) có sẵn trong IDE của VB bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 44
- 6.5. Gỡ l ỗi (Debug) trong VB (tt) Một s ố th ủ thu ật tránh g ặp bug – Đặ t tên bi ến, h ằng, hàm, đố i t ượ ng m ột cách g ợi nh ớ – Vi ết code theo c ấu trúc kh ối (th ụt đầ u dòng theo phân c ấp) –Sử d ụng chú thích ( Comment ) – Xây dựng các hàm (function ) ho ặc th ủ tục (procedure ) để dễ dàng xác đị nh vị trí gặp bug ho ặc dễ dàng nâng cấp, ch ỉnh sửa ch ươ ng trình – Khai báo bi ến, h ằng tr ướ c khi truy xu ất (m ặc dù VB không bắt bu ộc ph ải khai báo bi ến) – Đừ ng sợ Error : Ch ả có lập trình viên nào không gặp error khi vi ết ch ươ ng trình. Hãy bình tĩnh đọ c cái Error Message (thông báo lỗi) để xem máy mu ốn nói gì. bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 45 6.5. Gỡ l ỗi (Debug) trong VB (tt) Xử lý Error lúc Runtime –Một ch ươ ng trình EXE vi ết bằng VB6 đang ch ạy, nếu gặp Error, nó sẽ hi ển th ị một Error Dialog cho bi ết lý do vắn tắt Sau khi bạn click OK, ch ươ ng trình sẽ ng ưng. –Nếu bạn ch ạy ch ươ ng trình trong VB6 IDE, ta có dịp bảo program ng ừng ở trong source code ch ỗ có Error bằng cách bấm button Debug trong Error Dialog . Ti ếp theo đó bạn có th ể tìm hi ểu tr ị số các bi ến để đoán nguyên do của Error bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 46
- 6.5. Gỡ l ỗi (Debug) trong VB (tt) Dùng Breakpoints – Cách hay nh ất để theo dõi quá trình th ực thi của program là dùng Breakpoint để làm cho program ng ừng lại ở một ch ỗ ta mu ốn ở trong code, rồi sau đó ta cho program bướ c từng bướ c. – Ch ỉ cần click chu ột lên lề trái trong cửa sổ code để đặ t Breakpoint dạng dấu ch ấm đỏ . Nh ấ F9 để lo ại bỏ breakpoint nếu mu ốn bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 47 6.5. Gỡ l ỗi (Debug) trong VB (tt) Lúc program đang d ừng l ại, ta có th ể xem tr ị s ố c ủa một variable bằng cách để chu ột lên trên variable ấy, tooltip sẽ hiên ra nh ư trong hình d ướ i đây: bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 48
- 6.5. Gỡ l ỗi (Debug) trong VB (tt) Khi program đang tạm ng ưng, bạn có th ể th ực thi từng hàng code bằng cách bấm F8. Menu command tươ ng đươ ng với nó là Debug | Step Into . Nếu không mu ốn program bướ c vào bên trong một Sub/Function mà mu ốn vi ệc th ực hi ện một Sub/Function nh ư một bướ c đơ n gi ản bạn dùng Menu command Debug | Step Over hay phím tắt Shift-F8. Để cho program ch ạy lại bạn bấm F5, tươ ng đươ ng với Menu command Run | Continue bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 49 6.5. Gỡ l ỗi (Debug) trong VB (tt) Để ti ện vi ệc debug, bạn có th ể dùng Debug Toolbar bằng cách hi ển th ị nó với Menu command View | Toolbars | Debug bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 50
- 6.5. Gỡ l ỗi (Debug) trong VB (tt) Debug Toolbar bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 51 6.5. Gỡ l ỗi (Debug) trong VB (tt) Dùng Immediate Window – Cho phép ta execute nh ững statement strong khi program đang d ừng l ại. Ta có th ể dùng m ột Print statement để hi ển th ị tr ị s ố c ủa m ột variable hay k ết qu ả c ủa m ột Function , g ọi m ột Sub hay thay đổ i tr ị s ố một variable tr ướ c khi ti ếp t ục cho ch ươ ng trình ch ạy lại. – Để hi ển th ị Immediate Window, dùng Menu command View | Immediate Window bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 52
- 6.5. Gỡ l ỗi (Debug) trong VB (tt) Dùng Watch Window – Đôi khi b ạn mu ốn program ng ừng không ph ải ở m ột ch ỗ nào nh ất đị nh, nh ưng khi tr ị s ố c ủa m ột variable hay c ủa m ột expression là bao nhiêu, có th ể là b ạn không bi ết t ại sao m ột variable t ự nhiên có một tr ị s ố nh ư v ậy. Câu h ỏi: Ai là th ủ ph ạm? –Bạn có th ể dùng Menu command Debug | Add Watch để thêm tên variable ho ặc expression c ần theo dõi bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 53 6.6. Các Dialog thông dụng Message Box Input Box Common Dialogs Custom Dialogs bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 54
- Message Box bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 55 Input Box Với Message Boxes , user ch ỉ có th ể click lên m ột button. Đôi khi ta mu ốn user đánh vào thêm m ột ít dữ ki ện, trong tr ườ ng h ợp ấy ta có th ể dùng Input Boxes . bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 56
- Input Box (tt) Input Box có hai d ạng Functions: – InputBox$ - returns m ột String đàng hoàng – InputBox - returns m ột String nằm trong bi ến Variant bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 57 Input Box (tt) Mặc dầu Input Boxes rất d ễ dùng, trên th ực t ế r ất ít khi ta dùng nó vì nh ững lý do sau đây: – Trong lúc user input data, ph ải đợ i sau khi user click OK thì m ới b ắt đầ u x ử lý input textstring. Nếu dùng một Textbox trong m ột Form thông th ườ ng, ta có th ể code trong các Event handlers của Events KeyPress hay Change để ki ểm soát các keystrokes c ủa user. – Input Boxes ch ỉ cho nh ập vào một text string duy nh ất. – Input Boxes xem không đẹ p m ắt. Program dùng Input Boxes có v ẻ nh ư không chuyên nghi ệp, do đó ta c ần ph ải dùng Custom Dialogs . bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 58
- 6.6. Các Dialog thông dụng (tt) Common Dialogs – Mu ốn dùng các Dialogs ấy trong VB6 ta ph ải reference Comdlg32.ocx bằng IDE Menu command Project | Components rồi ch ọn và Apply Microsoft Common Dialog Control 6.0 . bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 59 Common Dialogs Microsoft Common Dialog Control 6.0 cho ta 6 d ạng Dialog tùy theo g ọi method nào (nh ư b ản d ướ i) Tên Method Open File ShowOpen Save File ShowSave Color ShowColor Font ShowFont Print ShowPrinter Help ShowHelp bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 60
- Ví dụ v ề OpenFile Dialog Bạn hãy mở một Project mới với một button tên CmdOpen trong Form1 và đánh vào code trên sự ki ện CmdOpen_Click bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 61 Ví dụ v ề OpenFile Dialog (tt) Kết qu ả khi click button CmdOpen bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 62
- Ví dụ v ề Color Dialog Bạn hãy thêm m ột button tên CmdColor trong Form1 và đánh vào code trên s ự ki ện CmdColor_Click bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 63 Ví dụ v ề Color Dialog (tt) Kết qu ả khi click button CmdColor bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 64
- Ví dụ v ề Font Dialog Bạn hãy m ở m ột Project mới v ới m ột button tên CmdSelectFont và 1 Label tên Label1 trong Form1 và đánh vào code trên s ự ki ện CmdSelectFont _Click bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 65 Ví dụ v ề Font Dialog (tt) bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 66
- Ví dụ v ề Print Dialog Bạn hãy thêm m ột button tên CmdSelectPrinter trong Form1 và đánh vào code trên s ự ki ện CmdSelectPrinter_Click bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 67 Ví dụ v ề Print Dialog (tt) bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 68
- bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 69 Thực hành chương 6 Thi ết k ế Form v ới các Control thông d ụng bangtqh@utc2.edu.vn
- LAB 03 Sử d ụng IDE c ủa VB6.0 thi ết k ế form d ướ i đây Vi ết mã l ệnh ứng v ới event Click của Command Button trên form sao cho giá tr ị trong textbox k ết qu ả là k ết qu ả th ực hi ện phép toán t ươ ng ứng gi ữa A và B bangtqh@utc2.edu.vn Tin h ọc đạ i c ươ ng - Ch ươ ng 6 71