Bài giảng Tin học đại cương - Chương 6: Lập trình với Visual Basic 6.0
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.
36 trang |
Chia sẻ: vutrong32 | Lượt xem: 1498 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Tin học đại cương - Chương 6: Lập trình với Visual Basic 6.0, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
bangtqh@utc2.edu.vn
TIN HỌC ĐẠI CƯƠNG
Chương 6: Lập trình với Visual Basic 6.0
Dùng cho nhóm ngành: Công trình + Cơ khí
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
Tin học đại cương - Chương 6 2
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 3
bangtqh@utc2.edu.vn
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:
Tin học đại cương - Chương 6 4
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
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
Tin học đại cương - Chương 6 5
bangtqh@utc2.edu.vn
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.
Tin học đại cương - Chương 6 6
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 7
bangtqh@utc2.edu.vn
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).
Tin học đại cương - Chương 6 8
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 9
bangtqh@utc2.edu.vn
Dữ liệu kiểu số
Tin học đại cương - Chương 6 10
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
Dữ liệu kiểu số (tt)
Tin học đại cương - Chương 6 11
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
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).
Tin học đại cương - Chương 6 12
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 13
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 14
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 15
bangtqh@utc2.edu.vn
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)
Tin học đại cương - Chương 6 16
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 17
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 18
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 19
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 20
bangtqh@utc2.edu.vn
6.3. Các toán tử trong VB (tt)
Các toán tử số học
Tin học đại cương - Chương 6 21
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
6.3. Các toán tử trong VB (tt)
Các toán tử so sánh
Tin học đại cương - Chương 6 22
Toán tử Ý nghĩa Ví dụ Kết quả
< Nhỏ hơn 2 < 3 True
> Lớn hơn 5 > 15 False
<= Nhỏ hơn hoặc bằng X <= 0 True | False
>= Lớn hơn hoặc bằng R >= 5 True | False
= So sánh bằng A = B True | False
So sánh khác nhau A B True | False
Like So sánh chuỗi Xem slide kế tiếp
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 23
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 24
bangtqh@utc2.edu.vn
6.3. Các toán tử trong VB (tt)
Các toán tử luận lý
Tin học đại cương - Chương 6 25
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
6.3. Các toán tử trong VB (tt)
Một số hàm toán học thông dụng
Tin học đại cương - Chương 6 26
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ị ex 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
6.3. Các toán tử trong VB (tt)
Các hàm xử lý chuỗi thông dụng
Tin học đại cương - Chương 6 27
Hàm Ý nghĩa Ví dụ
Len (“chuỗi”) Lấy độ dài chuỗi Len(“Tin Hoc Dai Cuong”)= 17
Right (“chuỗi”, n)
Lấy n ký tự của chuỗi từ
phải qua trái
Right(“Visual Basic”,2) = ic
Left(“chuỗi”, n)
Lấy n ký tự của chuỗi từ
trái qua phải
Left(“Visual Basic”,5) = Visua
Ltrim(“chuỗi”)
Xóa các khoảng trắng
bên trái chuỗi
Ltrim(“ VB 6.0”) = VB 6.0
Rtrim(“chuỗi”)
Xóa các khoảng trắng
bên phải chuỗi
Rtrim(“GTVT ”) = GTVT
Trim(“chuỗi”)
Xóa các tất cả khoảng
trắng của chuỗi
Trim(“Tin Hoc Dai Cuong”)=
TinHocDaiCuong
bangtqh@utc2.edu.vn
6.3. Các toán tử trong VB (tt)
Các hàm xử lý chuỗi thông dụng (tt)
Tin học đại cương - Chương 6 28
Hàm Ý nghĩa Ví dụ
Mid(“chuỗi”, m , n)
Lấy n ký tự từ vị trí
m
Mid(“Lap trinh”, 2,4) =ap t
Ucase(“chuỗi”)
Chuyển toàn bộ chuỗi
thành chữ hoa
Ucase(“Lap trinh”) = LAP
TRINH
Lcase(“chuỗi”)
Chuyển toàn bộ chuỗi
thành chữ thường
Lcase(“Lap trinh”) = lap trinh
Chr(charcode)
Lấy ký tự từ bảng mã
ASCII theo charcode
Chr(65)=A
Asc(Character)
Lấy charcode ASCII
của ký tự
Asc(“A”)=65
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 29
bangtqh@utc2.edu.vn
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)
Tin học đại cương - Chương 6 30
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 31
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 32
bangtqh@utc2.edu.vn
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:
ax2 + bx + c = 0
Tin học đại cương - Chương 6 33
bangtqh@utc2.edu.vn
Ví dụ 2 – cấu trúc rẽ nhánh If
Tin học đại cương - Chương 6 34
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 35
bangtqh@utc2.edu.vn
Cấu trúc rẽ nhánh (tt)
Rẽ nhánh Select Case.....End Select (tt)
Ví dụ:
Tin học đại cương - Chương 6 36
bangtqh@utc2.edu.vn
Cấu trúc lặp
Vòng lặp Do
Dạng 1:
Do While condition
‘Đoạn mã lệnh VB
Loop
Dạng 2:
Do
‘Đoạn mã lệnh VB
Loop While condition
Dạng 3:
Do Until condition
‘Đoạn mã lệnh VB
Loop
Dạng 4:
Do
‘Đoạn mã lệnh VB
Loop Until condition
Tin học đại cương - Chương 6 37
bangtqh@utc2.edu.vn
Ví dụ
Tin học đại cương - Chương 6 38
1
2
3
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 39
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 40
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 41
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 42
bangtqh@utc2.edu.vn
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,,aN 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
Tin học đại cương - Chương 6 43
bangtqh@utc2.edu.vn
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àiPhả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
Tin học đại cương - Chương 6 44
bangtqh@utc2.edu.vn
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ì.
Tin học đại cương - Chương 6 45
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 46
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 47
bangtqh@utc2.edu.vn
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:
Tin học đại cương - Chương 6 48
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 49
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 50
bangtqh@utc2.edu.vn
6.5. Gỡ lỗi (Debug) trong VB (tt)
Debug Toolbar
Tin học đại cương - Chương 6 51
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 52
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 53
bangtqh@utc2.edu.vn
6.6. Các Dialog thông dụng
Message Box
Input Box
Common Dialogs
Custom Dialogs
Tin học đại cương - Chương 6 54
bangtqh@utc2.edu.vn
Message Box
Tin học đại cương - Chương 6 55
bangtqh@utc2.edu.vn
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.
Tin học đại cương - Chương 6 56
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 57
bangtqh@utc2.edu.vn
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.
Tin học đại cương - Chương 6 58
bangtqh@utc2.edu.vn
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.
Tin học đại cương - Chương 6 59
bangtqh@utc2.edu.vn
Common Dialogs
Tin học đại cương - Chương 6 60
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
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
Tin học đại cương - Chương 6 61
bangtqh@utc2.edu.vn
Ví dụ về OpenFile Dialog (tt)
Kết quả khi click button CmdOpen
Tin học đại cương - Chương 6 62
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 63
bangtqh@utc2.edu.vn
Ví dụ về Color Dialog (tt)
Kết quả khi click button CmdColor
Tin học đại cương - Chương 6 64
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 65
bangtqh@utc2.edu.vn
Ví dụ về Font Dialog (tt)
Tin học đại cương - Chương 6 66
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 67
bangtqh@utc2.edu.vn
Ví dụ về Print Dialog (tt)
Tin học đại cương - Chương 6 68
bangtqh@utc2.edu.vn Tin học đại cương - Chương 6 69
bangtqh@utc2.edu.vn
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
Tin học đại cương - Chương 6 71
Các file đính kèm theo tài liệu này:
- ch6_6384.pdf