Bộ môn Tự động hóa Thiết kế Cầu đường 7 Trong lĩnh vực xây dựng công trình giao thông cũng như xây dựng dân dụng, sự ra đời của một công trình bao giờ cũng là một quá trình, mà ở đó hàng
Trang 1Bộ môn Tự động hóa Thiết kế Cầu đường 1
ĐẠI HỌC GIAO THÔNG VẬN TẢI
BỘ MÔN TỰ ĐỘNG HÓA THIẾT KẾ CẦU ĐƯỜNG
BÀI GIẢNG
TIN HỌC XÂY DỰNG
Lê Đắc Hiền
Trang 2Bộ môn Tự động hóa Thiết kế Cầu đường 2
MỤC LỤC
MỤC LỤC 2
PHẦN 1 TỔNG QUAN MÔN HỌC 6
PHẦN 2 CƠ BẢN VỀ NGÔN NGỮ LẬP TRÌNH VISUAL BASIC 11
CHƯƠNG I TỔNG QUAN VỀ VISUAL BASIC 12
I.1 GIỚI THIỆU VỀ VISUAL BASIC 12
I.2 Integrated Development Environment (IDE) 12
I.2.1 Cấu trúc một dự án VB 13
I.2.2 Các thành phần của IDE 13
I.2.3 Soạn thảo mã lệnh 14
I.3 TRỢ GIÚP TRONG QUÁ TRÌNH LÀM VIỆC (Help) 14
CHƯƠNG II NGÔN NGỮ LẬP TRÌNH VISUAL BASIC 16
II.1 QUY TẮC VIẾT MÃ LỆNH 16
II.2 CÁC TỪ KHÓA TRONG VB6 17
II.3 CÁC KIỂU DỮ LIỆU CƠ BẢN 17
II.3.1 Boolean 17
II.3.2 Byte 18
II.3.3 Integer (Kiểu nguyên) 18
II.3.4 Long 18
II.3.5 Single 18
II.3.6 Double (Kiểu thực) 18
II.3.7 String (Kiểu chuỗi) 19
II.3.8 Date (Kiểu thời gian) 20
II.3.9 Kiểu mảng (array) 21
II.3.10 Kiểu tự định nghĩa 21
II.3.11 Kiểu lớp (class) 21
II.3.12 Kiểu Variant 21
II.3.13 Chuyển đổi (convert) kiểu dữ liệu 22
II.4 CÁC KHAI BÁO 23
II.4.1 Khai báo biến với các kiểu dữ liệu thông thường 23
II.4.2 Khai báo hằng 23
II.4.3 Khai báo kiểu tự định nghĩa .23
II.4.4 Khai báo mảng 24
II.4.5 Khai báo, tạo và làm việc với biến đối tượng 26
II.4.6 Các chú ý khi khai báo 26
II.5 BIỂU THỨC 27
II.5.1 Các khái niệm 27
II.5.2 Các loại phép toán 27
II.6 CÁC CÂU LỆNH 29
II.6.1 Lệnh gán 29
II.6.2 Lệnh rẽ nhánh If 29
II.6.3 Câu lệnh lựa chọn Select Case 31
II.6.4 Câu lệnh lặp xác định 32
II.6.5 Câu lệnh lặp xác định trong một tập hợp 33
II.6.6 Câu lệnh lặp không xác định 33
II.7 CHƯƠNG TRÌNH CON (HÀM VÀ THỦ TỤC) 34
II.7.1 Khái niệm 34
II.7.2 Hàm - Function 34
II.7.3 Thủ tục - Sub 35
II.7.4 Truyền tham số cho chương trình con 36
II.8 TRUY XUẤT DỮ LIỆU TRONG VISUAL BASIC 38
II.8.1 Các khái niệm 38
II.8.2 Biến toàn cục 38
II.8.3 Biến cục bộ 38
II.8.4 Biến module 39
II.9 GỠ LỖI TRONG VISUAL BASIC (Debug) 39
Trang 3Bộ môn Tự động hóa Thiết kế Cầu đường 3
II.9.1 Phân loại lỗi lập trình 39
II.9.2 Phát hiện và khắc phục lỗi trong lập trình 40
II.9.3 Dùng khai báo Option Explicit 42
II.9.4 Dùng Breakpoints 42
II.9.5 Dùng Immediate Window 42
II.9.6 Dùng Watch Window 43
II.9.7 Dùng Comment (chú thích) 43
II.10 TỔ CHỨC CHƯƠNG TRÌNH 43
CHƯƠNG III FORM VÀ CÁC THÀNH PHẦN ĐIỀU KHIỂN 45
III.1 CÁC VẤN ĐỀ CHUNG 45
III.1.1 Thao tác tạo Form và các thành phần điều khiển trong VBIDE 46
III.1.2 Các thuộc tính của Form và các thành phần điều khiển 47
III.1.3 Các phương thức của Form và các thành phần điều khiển .48
III.1.4 Các sự kiện trên giao diện 49
III.2 LÀM VIỆC VỚI FORM 51
III.3 CÁC ĐIỀU KHIỂN THÔNG DỤNG 52
1 Điểu khiển nút lệnh (Command Button) 52
2 Điều khiển hộp văn bản (TextBox) 53
3 Điều khiển nhãn (Label) 55
4 Điều khiển hộp đánh dấu (CheckBox) 55
5 Điều khiển nút tuỳ chọn (OptionButton) 56
6 Điều khiển hộp danh sách (ListBox) 57
7 Điều khiển hộp danh sách tổ hợp (ComboBox) 60
8 Điều khiển khung (Frame) 60
9 Thanh cuộn ngang (HscrollBar) 61
10 Thanh cuộn đứng (VScrollBar) 61
11 Thời gian (Timer) 61
12 Danh sách ổ đĩa (DriveListbox), Thư mục (DirListbox), Tập tin (FileListbox) .62 CHƯƠNG IV LÀM VIỆC VỚI TẬP TIN (FILE) 63
IV.1 HÀM I/O VÀ LỆNH XỬ LÝ TẬP TIN 63
IV.1.1 Mở tập tin 63
IV.1.2 Đọc nội dung tập tin 64
IV.1.3 Ghi dữ liệu lên tập tin 64
IV.1.4 Đóng tập tin 66
IV.1.5 Ví dụ 66
IV.2 MÔ HÌNH File System Object (FSO) 67
IV.2.1 Tạo đối tượng FileSystemObject 68
IV.2.2 Truy cập ổ đĩa, thư mục, tập tin 68
IV.2.3 Đối tượng ổ đĩa 68
IV.2.4 Đối tượng thư mục, làm việc với thư mục 69
IV.2.5 Đối tượng tập tin, làm việc với tập tin 69
IV.2.6 Ví dụ 71
PHẦN 3 TIN HỌC XÂY DỰNG 74
CHƯƠNG I TIN HỌC HÓA TRONG XÂY DỰNG CÔNG TRÌNH 75
I.1 KHẢ NĂNG CỦA MÁY TÍNH 75
I.2 TẠI SAO PHẢI TIN HỌC HÓA 76
I.3 PHƯƠNG PHÁP THỰC HIỆN TIN HỌC HÓA 76
CHƯƠNG II THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG 78
II.1 LỰA CHỌN GIAO DIỆN 78
II.2 TRÌNH TỰ XÂY DỰNG GIAO DIỆN 81
Trang 4Bộ môn Tự động hóa Thiết kế Cầu đường 4
II.3 THIẾT KẾ MENU 81
II.3.1 Khái niệm 81
II.3.2 Các thuộc tính 81
II.3.3 Cách tạo menu 82
II.4 CÁC HỘP THOẠI THÔNG DỤNG 83
II.4.1 Khái niệm 83
II.4.2 Hộp thoại thông điệp 83
II.4.2.1 Loại chỉ xuất thông báo 83
II.4.2.2 Loại tương tác với người dùng 84
II.4.3 Hộp thoại nhập 84
II.4.4 Hộp thoại dựa trên điều khiển Common Dialog 84
II.4.4.1 Hộp thoại mở và lưu tập tin 85
II.4.4.2 Hộp thoại Chọn màu 85
II.4.4.3 Hộp thoại chọn Font chữ 86
II.4.4.4 Hộp thoại In ấn 87
II.5 SỰ KIỆN CHUỘT VÀ BÀN PHÍM 87
II.5.1 Sự kiện chuột 87
II.5.2 Sự kiện bàn phím 88
II.6 SỬ DỤNG GIAO DIỆN ĐA TÀI LIỆU (MDI) 88
II.6.1 Khái niệm 88
II.6.2 Thiết lập ứng dụng MDI 89
II.7 GIAO DIỆN Wizard (Thuật sĩ) 90
CHƯƠNG III ĐỒ HỌA TRONG VISUAL BASIC 92
III.1 TỌA ĐỘ MÀN HÌNH 92
III.2 MÀU (Color) 93
III.3 CÁC THUỘC TÍNH ĐỒ HỌA CỦA Form & PictureBox 94
III.4 CÁC PHƯƠNG THỨC ĐỒ HỌA 94
III.4.1 Phương thức Print 94
III.4.2 Phương thức PSet 95
III.4.3 Phương thức Line 95
III.4.4 Phương thức Circle 98
III.4.5 Phương thức PaintPicture 98
III.4.6 Vẽ đa giác bất kỳ 100
III.5 CÁC ĐIỀU KHIỂN ĐỒ HỌA 102
III.5.1 Điều khiển hộp hình ảnh (Picture Box) .102
III.5.2 Điều khiển hình ảnh (Image) .103
III.5.3 Điều khiển hình dạng (Shape) .103
III.5.4 Điều khiển Line .104
III.6 CÁC PHÉP BIẾN ĐỔI TRONG ĐỒ HỌA 2 CHIỀU 104
III.6.1 Phép tịnh tiến 104
III.6.2 Phép biến đổi tỷ lệ 104
III.6.3 Phép quay 105
III.6.4 Phép đối xứng trục 106
III.6.5 Phép biến dạng 106
III.6.6 Phép biến đổi ngược 106
III.6.7 Một số tính chất của phép biến đổi 107
CHƯƠNG IV LÀM VIỆC VỚI AUTOCAD/EXCEL 108
IV.1 TỔNG QUAN VỀ Component Object Model (COM) 108
IV.1.1 Khái niệm cơ bản về COM 108
IV.1.2 Cấu trúc cơ bản của một COM Object 108
IV.1.3 Các dạng đối tượng COM 109
IV.1.4 Quản lý các đối tượng COM trong hệ thống 110
IV.1.5 Sử dụng các đối tượng COM 110
IV.2 LÀM VIỆC VỚI AutoCAD 111
IV.2.1 Hệ thống các đối tượng trong AutoCAD 111
IV.2.1.1 Mô hình đối tượng trong AutoCAD 111
IV.2.1.2 Một số đối tượng chính trong AutoCAD 112
Trang 5Bộ môn Tự động hóa Thiết kế Cầu đường 5
IV.2.2 Kết nối VB với AutoCAD 116
IV.2.3 Các thao tác cơ bản trong AutoCAD 118
IV.2.3.1 Điều khiển AutoCAD 118
IV.2.3.2 Tạo mới đối tượng hình học 121
IV.3 LÀM VIỆC VỚI Microsoft Excel 127
IV.3.1 Hệ thống các đối tượng trong Excel 128
IV.3.1.1 Mô hình đối tượng trong Excel 128
IV.3.1.2 Một số đối tượng cơ bản trong Excel 130
IV.3.2 Kết nối VB với MS Excel 135
IV.3.3 Các thao tác cơ bản trong Excel 138
IV.3.3.1 Làm việc với Workbook 138
IV.3.3.2 Làm việc với Worksheet 139
IV.3.3.3 Làm việc với Range và Cells 140
IV.3.3.4 Sử dụng các hàm có sẵn trong Excel 142
CHƯƠNG V TRÌNH BÀY KẾT QUẢ 143
V.1 HIỂN THỊ TRỰC TIẾP TRONG CHƯƠNG TRÌNH 143
V.2 THÔNG QUA AutoCAD, Excel 145
V.3 XUẤT FILE KẾT QUẢ 145
CHƯƠNG VI CÁC BÀI TOÁN CƠ BẢN TRONG XÂY DỰNG 148
VI.1 PHÂN TÍCH KẾT CẤU CẦU 148
VI.1.1 Khái quát 148
VI.1.2 Mục đích chính 148
VI.1.3 Trình tự thực hiện 149
VI.1.3.1 Giao diện (Nhập số liệu + Điều khiển chương trình) 149
VI.1.3.2 Tính toán (Thuật toán + kiến thức chuyên môn) 149
VI.1.3.3 Xuất kết quả 149
VI.2 VẼ ĐỐI TƯỢNG HÌNH HỌC 149
VI.2.1 Khái quát 149
VI.2.2 Mục đích chính 149
VI.2.3 Trình tự thực hiện 149
VI.2.3.1 Giao diện 149
VI.2.3.2 Tính toán 149
VI.2.3.3 Xuất kết quả 149
VI.3 THIẾT KẾ CẤU KIỆN 150
VI.3.1 Khái quát 150
VI.3.2 Mục đích chính 150
VI.3.3 Trình tự thực hiện 150
VI.3.3.1 Giao diện 150
VI.3.3.2 Tính toán 151
VI.3.3.3 Xuất kết quả 151
VI.4 XỬ LÝ DỮ LIỆU ĐO ĐẠC 151
VI.4.1 Khái quát 151
VI.4.2 Mục đích chính 151
VI.4.3 Trình tự thực hiện 152
VI.4.3.1 Giao diện 152
VI.4.3.2 Tính toán 152
VI.4.3.3 Xuất kết quả 152
PHỤ LỤC 153
Trang 6
Bộ môn Tự động hóa Thiết kế Cầu đường 6
PHẦN 1 TỔNG QUAN MÔN HỌC
Trang 7Bộ môn Tự động hóa Thiết kế Cầu đường 7
Trong lĩnh vực xây dựng công trình giao thông cũng như xây dựng dân dụng, sự ra đời của
một công trình bao giờ cũng là một quá trình, mà ở đó hàng loạt các công việc được thực
hiện trong phòng cũng như ngoài công trường theo một trình tự nhất định Trong hàng loạt
công việc đó, để có được kết quả tốt nhất, người ta sử dụng những công cụ hỗ trợ, mà đắc
lực nhất cho những công việc nội nghiệp là hệ thống thông tin chuyên dùng cho xây dựng
Hệ thống thông tin bao gồm hai thành phần cơ bản:
¾ Phần cứng: bao gồm các thiết bị tin học như: máy tính, máy in, máy quét, mạng
Những thiết bị này là nền tảng cho các phần mềm hoạt động và chính chúng tạo ra
kết quả cuối cùng của công việc (bản vẽ, báo cáo, bảng biểu in trên giấy hoặc số
liệu)
¾ Phần mềm: là hệ thống các chương trình do con người tạo ra để thực hiện một mục
tiêu nào đó Nó là cầu nối cho việc biểu diễn và mô hình hóa ý tưởng của con người
trên hệ thống máy tính Nhờ có phần mềm mà hệ thống máy tính mới vận hành
được, và từ đó, sức mạnh của phần cứng được khai thác để phục vụ cho các công
việc khác nhau trong mọi lĩnh vực, ví dụ trong xây dựng, nhờ có sự phối hợp hoạt
động của phần mềm và phần cứng mà ta có được mô hình 3 chiều của công trình
(hình 1) hay hệ thống các bản vẽ (hình 2) hoặc bản tính kết cấu (hình 3) với tốc độ
nhanh chóng và chính xác hơn hẳn so với làm thủ công
Hình 1 – Mô hình 3 chiều của công trình được xây dựng trên máy tính
Trang 8Bộ môn Tự động hóa Thiết kế Cầu đường 8
Hình 2 – Hầu hết các bản vẽ kỹ thuật hiện nay đều thực hiện trên máy tính
Hình 3 – Phân tích kết cấu công trình trên máy tính
Trang 9Bộ môn Tự động hóa Thiết kế Cầu đường 9
Thông thường, khả năng của một hệ thống thông tin được biết đến ở khía cạnh chính sau:
¾ Tốc độ tính toán rất lớn, có thể thực hiện được hàng tỷ phép tính trong một giây
¾ Cho phép dựng mô hình nhanh và chi tiết (hình 1) với các phần mềm hỗ trợ
¾ Tạo bản vẽ, báo cáo, tài liệu trên giấy rõ ràng, đẹp và nhanh
¾ Lưu trữ và sử dụng lại dữ liệu rất hiệu quả
Hệ thống thông tin chuyên dụng cho ngành xây dựng bao gồm các thiết bị phần cứng và
các phần mềm, mà ở đó, các chức năng chính của chúng là phục vụ cho các công việc liên
quan đến xây dựng công trình như: dựng mô hình, tạo bản vẽ, in bản vẽ, tính toán kết cấu,
tổng hợp khối lượng, tính dự toán, lập kế hoạch Thông thường, phần cứng bao gồm các
máy tính (có thể nối mạng với nhau) và các thiết bị phụ trợ cho việc nhập dữ liệu (máy
quét, bàn số hóa) và xuất kết quả (máy in) Phần mềm là thành phần có sự khác biệt lớn
nhất giữa các hệ thống thông tin với nhau Trong lĩnh vực xây dựng, phần mềm bao gồm
các loại cơ bản sau:
¾ Hệ thống các phần mềm văn phòng (tạo văn bản, bảng tính, biểu đồ, báo cáo, kế
hoạch ) mà phổ biến nhất là bộ phần mềm Office của Microsoft
¾ Các phần mềm phân tích kết cấu như: SAP, MIDAS/Civil, Piling
¾ Các phần mềm sử lý dữ liệu khảo sát và mô hình hóa địa hình: Topo, Land
Desktop
¾ Các phần mềm lập dự toán: CE++, ACITT
¾ Các phần mềm dựng bản vẽ kỹ thuật và phối cảnh: AutoCAD, 3DS Max, Micro
Station
Khi người ta triển khai hệ thống thông tin có đặc điểm trên (về phần cứng và phần mềm)
vào quá trình xây dựng công trình thì quá trình này gọi là tin học hóa trong xây dựng
Tùy thuộc vào khả năng của hệ thống phần cứng và phần mềm mà mức độ tin học hóa hay
tự động hóa được xác định ở mức cao hay thấp Xét về tổng quát thì hiện nay ở Việt Nam,
mức độ tin học hóa theo hệ thống là chưa cao nhưng về chi tiết từng bước trong quá trình
xây dựng thì khá tốt Do đặc điểm của quá trình xây dựng, cho nên phần mềm có vai trò
quan trọng nhất trong quá trình tin học hóa vì thế hiện nay mức độ tin học hóa chủ yếu
được đánh giá dựa trên hệ thống phần mềm mà đơn vị đó sử dụng
Hệ thống phần mềm dùng trong xây dựng, về xuất xứ, được chia làm hai loại cơ bản:
¾ Phần mềm do các công ty chuyên về tin học làm ra (phần mềm thương mại), chúng
có khả năng hoạt động tốt, đáp ứng được hầu hết các vấn đề cơ bản trong quá trình
thiết kế, quản lý và tổ chức thi công của công trình
¾ Phần mềm do chính các công ty hoạt động trong lĩnh vực xây dựng thực hiện (phần
mềm tự tạo), chúng được tạo ra chủ yếu với mục đích giải quyết những vấn đề phát
sinh cục bộ của công ty mà những phần mềm thương mại không đáp ứng được hoặc
chưa có phần mềm thương mại phù hợp
Để có được những phần mềm thương mại và triển khai chúng một cách hiệu quả đòi hỏi
đơn vị hoặc công ty đó phải có được nhiều yếu tố như: nhân lực có trình độ tin học nhất
định, kinh tế, quy trình sản xuất phù hợp Trong khi đó các phần mềm tự tạo lại có thể
ứng dụng được ngay do chúng xuất phát từ nhu cầu thiết thực của công ty cũng như người
làm ra nó cũng chính là người sử dụng, và đương nhiên, nó phù hợp hoàn toàn với quy
trình làm việc của công ty đó Hơn nữa, các phần mềm thương mại không thể bao quát hết
mọi vấn đề trong lĩnh vực xây dựng công trình cho nên các công ty tin học thường tập
trung vào các bài toán cơ bản, vào những phần chính của quá trình thiết kế Do đó chúng
giải quyết tốt những vấn đề này và những vấn đề khác của công việc thường được giải
quyết bằng thủ công hoặc dựa trên phần mềm tự tạo trên nền tảng kết quả của những phần
mềm thương mại Ví dụ, trong thiết kế cầu, phần phân tích nội lực của kết cấu (phần trên
và phần dưới) đều có các phần mềm thương mại làm rất tốt (SAP, MIDAS/Civil, Piling )
Trang 10Bộ môn Tự động hóa Thiết kế Cầu đường 10
trong khi đó triển khai bản vẽ kỹ thuật cho kết cấu cầu lại chưa có phần mềm thương mại
hỗ trợ cho nên hầu hết chúng được tạo ra một cách thủ công hoặc nhờ phần mềm tự tạo
Phần mềm tự tạo, để có thể làm được nó, thì những kỹ sư chuyên ngành công trình cần
nắm được:
¾ Công cụ lập trình thích hợp, thường bao gồm:
o Ngôn ngữ lập trình: là công cụ để thể hiện những ý tưởng, kiến thức chuyên
môn, quy trình thực hiện, định dạng kết quả thành ngôn ngữ mà máy tính
có thể hiểu được
o Môi trường lập trình: là công cụ giúp cho việc xây dựng chương trình được
thuận lợi Thông thường người ta tích hợp ngôn ngữ lập trình và môi trường lập trình thành một sản phẩm thống nhất dưới tên gọi của ngôn ngữ lập trình
o Thư việc lập trình: là những bổ trợ giúp cho việc lập trình được nhanh và
hiệu quả, đây là thành phần không bắt buộc phải có thì mới lập được chương trình
¾ Phương pháp phân tích và tổng hợp vấn đề theo hướng có thể lập trình được Thông
thường khi gặp một vấn đề và cần giải quyết nó bằng một chương trình tự tạo thì sự
tổng hợp và khái quát vấn đề sẽ đưa ra cách giải tổng quát, giúp cho khả năng của
phần mềm sẽ rộng hơn và tính ứng dụng tốt hơn Trong khi đó việc phân tích theo
hướng chức năng hóa sẽ giúp cho việc xây dựng và bảo trì phần mềm thuận lợi
Như vậy có thể thấy rằng, vai trò và phạm vi ứng dụng của phần mềm tự tạo là rất lớn và
rất rộng, trong khi đó, việc xây dựng nó lại dựa chủ yếu vào nhân lực của chính công ty
xây dựng công trình, cho nên việc tin học hóa quá trình xây dựng, ngoài việc triển khai
hiệu quả các hệ thống phần mềm thương mại, thì việc xây dựng phần mềm tự tạo là một
yếu tố quan trong không kém và trong nhiều trường hợp nó mang lại hiệu quả cao hơn là
đầu tư phần mềm thương mại
Xét về mức độ phức tạp thì việc triển khai các phần mềm thương mại đơn giản hơn rất
nhiều so với việc tự xây dựng phần mềm Thông thường các phần mềm thương mại được
chuyển giao thành một gói bao gồm:
¾ Phần mềm
¾ Đào tạo, hướng dẫn sử dụng phần mềm
¾ Bảo hành, trợ giúp kỹ thuật trong quá trình sử dụng phần mềm
Quá trình triển khai này thường khá nhanh và yêu cầu nhân lực có trình độ tin học ở mức
trung bình
Trong khi đó, để xây dựng phần mềm tự tạo, đòi hỏi nhân lực có trình độ về chuyên môn
và tin học cao hơn Chính vì lý do này, cho nên mục tiêu đào tạo kỹ sư trong các trường đại
học thuộc khối xây dựng (Giao thông, Xây dựng, Mỏ địa chất, Thủy lợi ) luôn dành một
lượng thời gian thích hợp cho những môn học có thể giúp sinh viên lập trình được và môn
học này là một phần chính trong mảng kiến thức đó Với những kiến thức này, sinh viên có
thể tự xây dựng những chương trình phục vụ cho quá trình học tập trong trường đại học
cũng như trong công tác sau này
Do đó, mục tiêu chính của môn học này là hướng đến các mảng kiến thức giúp cho người
học có thể xây dựng được những chương trình ứng dụng cho ngành xây dựng công trình
nói chung Nói cách khác, tin học xây dựng ở đây được tập trung vào phần xây dựng các
chương trình tự tạo
Trang 12Bộ môn Tự động hóa Thiết kế Cầu đường 12
CHƯƠNG I TỔNG QUAN VỀ VISUAL BASIC
Mục tiêu:
Chương này giới thiệu về môi trường phát triển tích hợp (IDE) Microsoft
Visual Basic 6.0; cũng như giúp sinh viên có cái nhìn tổng quan về Visual Basic
Nội dung chính:
- Sử dụng môi trường phát triển tích hợp VB 6.0 để phát triển ứng dụng
- Cách tạo dự án mới (New Project) trong VB 6.0
- Sử dụng tốt hệ thống trợ giúp trong quá trình làm việc
Kiến thức có liên quan:
- Sử dụng hệ điều hành Windows
I.1 GIỚI THIỆU VỀ VISUAL BASIC
Visual Basic 6.0 (VB6) là một phiên bản của bộ công cụ lập trình Visual Basic (VB), cho
phép người dùng tiếp cận nhanh cách thức lập trình trên môi trường Windows
Visual Basic là gì?
Phần "Basic" đề cập đến ngôn ngữ BASIC (Beginners All-Purpose Symbolic Instruction
Code), một ngôn ngữ lập trình đơn giản, dễ học, được phát triển cho những người không
chuyên sâu về lập trình VB được phát triển và mở rộng dựa trên BASIC
Phần "Visual" đề cập đến phương pháp được sử dụng để tạo giao diện đồ họa người dùng
(Graphical User Interface hay viết tắt là GUI) VB có sẵn các thành phần điều khiển trực
quan (controls), các điểu khiển này được lập trình viên sắp xếp trên form tạo thành giao
diện người dùng
Chính bởi sự đơn giản, dễ học nên VB6 là cách nhanh và tốt nhất để lập trình trong môi
trường Microsoft Windows VB6 cung cấp bộ công cụ hoàn chỉnh để đơn giản hóa việc lập
trình ứng dụng dựa trên giao diện đồ họa
Visual Basic còn có hai dạng khác: Visual Basic for Application (VBA) và VBScript
VBA là ngôn ngữ nằm phía sau các chương trình Word, Excel, MSAccess, AutoCAD, v.v
còn gọi là Macros Dùng VBA trong MSOffice, ta có thể làm tăng chức năng bằng cách tự
động hóa các chương trình
VBScript được dùng cho Internet và chính Operating System
Cài đặt Visual Basic
Phiên bản: Visual Basic 6.0
Cấu hình tối thiểu: 32 MB RAM, CPU Pentium II, Windows 98
Sử dụng các file cài đặt (1CD) để cài, sửa đổi, xóa VB Ngoài ra có thể cài thêm thư viện
MSDN – Help (3CD)
I.2 Integrated Development Environment (IDE)
IDE là tên tắt của môi trường phát triển tích hợp, đây là nơi tạo ra các chương trình VB
Trang 13Bộ môn Tự động hóa Thiết kế Cầu đường 13
I.2.1 Cấu trúc một dự án VB
- Dự án (Project) là tập hợp các file để hình thành nên chương trình ứng dụng
- Dự án VB (VB Project) = Code Modules + Class Modules + Form
- Code Module: mã lệnh chính của chương trình
- Class Module: thiết kế các lớp của dự án
- Form: giao diện dạng hộp thoại của dự án để nhập số liệu và xuất kết quả
VB hỗ trợ tạo nhiều kiểu ứng dụng khác nhau Để tạo mới một dự án thực thi ta chọn
Standard EXE rồi chọn Open
I.2.2 Các thành phần của IDE
- Form trắng để thiết kế giao diện cho ứng dụng
- Cửa sổ dự án hiển thị các file được tạo trong ứng dụng
- Cửa sổ thuộc tính hiển thị các thuộc tính của đối tượng và điều khiển được chọn
- Toolbox chứa các điều khiển cần thiết đễ xây dựng một ứng dụng VB
- Cửa sổ viết mã chương trình (Code)
- MenuBar, Toolbar, Layout, Immediate Window,ViewCode, ViewForm
Menu Bar
Chứa đầy đủ các lệnh để làm việc với VB6, kể cả các menu để truy cập các chức năng đặc
biệt dành cho việc lập trình như Project, Format, hoặc Debug
Trang 14Bộ môn Tự động hóa Thiết kế Cầu đường 14
Toolbars (Debug, Edit, form Editor, Standard)
Các toolbars gồm các biểu tượng cho phép chọn nhanh các chức năng cần thiết Sử dụng
Menu View | Toolbars để tắt hoặc mở các toolbars
Các toolbars có thể sửa đổi theo ý thích bằng chức năng: View | Toolbars | Customize
Toolbox
Bao gồm các điều khiển (controls), dùng thiết kế giao diện đồ họa
Khi có nhiều các control, có thể sử dụng Add Tab để sắp xếp lại vị các control theo ý
muốn
Project Explorer
Là nơi liệt kê các forms, modules và class trong dự án hiện hành
Properties window
Cửa sổ thuộc tính hiển thị các thuộc tính của đối tượng và điều khiển được chọn Một
property là một đặc tính của một đối tượng chẳng hạn như size, caption, hoặc color
Khi bạn sửa đổi một property bạn sẽ thấy hiệu quả ngay lập tức, thí dụ thay đổi property
Font của một Label sẽ thấy Label ấy được display bằng Font chữ mới
Form Layout
Dùng form Layout để chỉnh vị trí của các form khi form hiện ra lần đầu lúc chương trình
chạy
Immediate Window
Dùng để gở rối (debug) quá trình kiểm tra ứng dụng
Ta có thể xem các thông số khi chạy chương trình hay khi đang tạm ngừng Có thể thay đổi
giá trị các biến hay chạy một dòng chương trình
I.2.3 Soạn thảo mã lệnh
Trong Visual Basic IDE, cửa sổ mã lệnh (Code) cho phép soạn thảo mã chương trình với
một số chức năng (Tắt mở trong Tools|Option)
- Đánh dấu (Bookmarks): Chức năng này cho phép đánh dấu các dòng lệnh của chương
trình giúp việc xem lại các phần mã lệnh dễ dàng Sử dụng tính năng này qua thanh công
cụ hoặc menu Edit
- Tự động kiểm tra cú pháp (Auto Syntax Check) Khi chức năng này bật, nếu viết một
dòng chứa lỗi, VB sẽ thông báo về lỗi và hiển thị con trỏ ngay dòng chương trình lỗi Nếu
không có chức năng này, VB chỉ hiển thị dòng mã sai với màu đỏ không kèm chú thích
- Yêu cầu khai báo biến (Require Variable Declaration) (Tùy chọn): VB sẽ thông báo lỗi
khi một biến được dùng mà không khai báo và sẽ chỉ ra vị trí của biến đó
- Gợi nhớ mã lệnh: (Auto List Members) Tự động hiển thị gợi ý khi ta gõ vào tên của
chúng Sử dụng Ctrl+Space để sử dụng chức năng tự động hoàn thành mã chương trình
I.3 TRỢ GIÚP TRONG QUÁ TRÌNH LÀM VIỆC (Help)
Trong khi lập trình có thể cần tìm hiểu thông tin liên quan đến các câu lệnh, hàm v.v của
VB6 Các thông tin này được Microsoft cung cấp rất đầy đủ trong thư viện trợ giúp
Microsoft Developer Network | MSDN Library Visual Studio 6.0
Truy cập thông qua menu Help | Contents của VB6, hoặc chọn (bôi đen) một từ khóa trong
mã lệnh rồi ấn F1
Trang 15Bộ môn Tự động hóa Thiết kế Cầu đường 15
Phần trợ giúp được thiết kế giống như 1 quyển sách, kết hợp với chức năng tìm kiếm theo
từ khóa khiến người đọc dễ dàng tra cứu Các thông tin được liên kết với nhau đầy đủ giúp
việc tham khảo đạt hiệu quả cao
Yêu cầu: Máy tính phải cài đầy đủ thư viện MSDN (3CD)
Context Sensitive Help (trợ giúp đúng tình huống)
Nhiều phần của VB6 hỗ trợ context sensitive, có nghĩa là khi gặp lỗi hoặc cần trợ giúp chỉ
cần ấn F1 hoặc bôi đen từ khóa rồi nhấn F1 Chương trình sẽ hiển thị thông tin liên quan
đến vấn đề cần trợ giúp
Các phần context sensitive là:
• Các Windows của VB6 như Properties, Code v.v
• Các control trong Toolbox
• Các Object trên một form hoặc Object tài liệu
• Các đặc tính trong Window Properties
• Các keywords của VB6
• Các thông báo lỗi (error messages)
Ngoài ra, trong Help thường có Example là các ví dụ minh họa cách dùng cho một đối
tượng nào đó dùng tham khảo rất phù hợp
Tìm kiếm trợ giúp trên Internet
Việc tìm kiếm thông tin trên Internet là hết sức cần thiết, dù trong lĩnh vực nào Đặc biệt là
trong công việc lập trình Chúng ta có thể tra cứu, tìm kiếm ví dụ, thảo luận về vấn đề mắc
phải…
Một số website hữu ích:
http://msdn.microsoft.com/ - Trang chủ của Microsoft Developer Network
http://www.google.com - Trang tìm kiếm nhanh và hiệu quả
http://www.codeproject.com - Mã nguồn miễn phí và nhiều ví dụ hữu ích
Trang 16Bộ môn Tự động hóa Thiết kế Cầu đường 16
CHƯƠNG II NGÔN NGỮ LẬP TRÌNH VISUAL BASIC
Mục tiêu:
Chương này giới thiệu về các cấu trúc lập trình trong VB; đây là các cấu trúc cốt
lõi để xây dựng nên một chương trình VB
Nội dung chính:
- Sử dụng môi trường lập trình VB để viết mã lệnh, các quy tắc, từ khóa
- Các kiểu dữ liệu trong VB
- Cách khai báo hằng, biến trong VB
- Biểu thức trong VB
- Các câu lệnh đơn cũng như các câu lệnh có cấu trúc
- Chương trình con trong VB
- Truy xuất dữ liệu, tổ chức chương trình trong VB
- Gỡ lỗi trong VB
Kiến thức có liên quan:
- Cách sử dụng môi trường phát triển của VB
II.1 QUY TẮC VIẾT MÃ LỆNH
Cũng giống như các ngôn ngữ lập trình khác, VB đưa ra những quy tắc cho người lập trình
trong quá trình viết mã lệnh Người lập trình cần phải tuân theo các quy tắc này để trình
biên dịch có thể dịch mã lệnh mà không phát sinh lỗi cú pháp
- Các câu lệnh phải là các dòng riêng biệt Nếu có nhiều lệnh trên cùng một dòng thì
giữa các lệnh ngăn cách nhau bằng dấu hai chấm (:) Nếu dòng lệnh quá dài, muốn ngắt
lệnh thành hai dòng thì sử dựng dấu cách và dấu gạch dưới (_)
- Dòng chú thích được bắt đầu bằng (‘)
Qui ước đặt tên biến của ngôn ngữ VB cũng tương tự như các ngôn ngữ khác:
• Chỉ dùng được ký tự (hoa và thường), số, và ký tự gạch chân
• Phải bắt đầu bằng ký tự, dài không quá 255 ký tự
• Không có khoảng trống, không trùng tên từ khóa
Ví dụ:
Đúng Sai
My_Car My.Car ThisYear 1NewBoy Long_Name_Can_beUSE He&HisFather
Các lỗi cú pháp sẽ được VBIDE phát hiện và báo lỗi cho người lập trình ngay trong quá
trình viết mã lệnh
Trang 17Bộ môn Tự động hóa Thiết kế Cầu đường 17
II.2 CÁC TỪ KHÓA TRONG VB6
Từ khoá là tập hợp các từ cấu thành một ngôn ngữ lập trình Mỗi ngôn ngữ lập trình có một
bộ từ khoá riêng, dưới đây là danh sách các từ khoá trong ngôn ngữ lập trình VB6:
II.3 CÁC KIỂU DỮ LIỆU CƠ BẢN
Kiểu dữ liệu là một tập hợp các giá trị mà một biến của kiểu có thể nhận và một tập hợp
các phép toán có thể áp dụng trên các giá trị đó
Trong VB6 có rất nhiều kiểu dữ liệu khác nhau như: Boolean, Double, Integer, Object,
String, Variant Từng kiểu có mục đích riêng và việc sử dụng đúng sẽ giúp chương trình
chạy nhanh Chúng ta sẽ đi tìm hiểu các kiểu dữ liệu cơ bản
II.3.1 Boolean
Đặc điểm: Chỉ có 2 trạng thái: True và False
Khi chuyển từ các dữ liệu dạng số sang kiểu logic, 0 sẽ được chuyển thành FALSE còn giá
trị khác sẽ được chuyển thành TRUE Khi chuyển từ kiểu logic sang kiểu số, giá trị FALSE
sẽ được chuyển thành 0 còn giá trị TRUE sẽ được chuyển thành -1
Phạm vi áp dụng: các bài toán lặp, if then, thường dùng làm cờ hiệu (flags)
Ví dụ:
Trang 18Đặc điểm: Sử dụng 8-bit để lưu trữ giá trị, tức có thể lưu giá trị dương từ 0 đến 255
Phạm vi áp dụng: hữu ích trong việc lưu dữ liệu nhị phân
II.3.3 Integer (Kiểu nguyên)
Đặc điểm: Kiểu số nguyên, sử dụng 16-bit để lưu trữ,
-3.402823e38 đến -1.401298e-45 với số âm và từ
1.401298e-45 đến 3.402823e38 cho số dương
Phạm vi áp dụng: Sử dụng với giá trị thập phân nằm trong khoảng trên
II.3.6 Double (Kiểu thực)
Đặc điểm: Kiểu số thực, sử dụng 64-bit để lưu trữ, kiểu dữ liệu này được gọi là độ chính
xác kép
Khoảng giá trị:
-1.79769313486232e308 đến -4.94065645841247e-324 với số âm và từ
4.94065645841247e-324 đến 1.79769313486232e308 cho số dương
Phạm vi áp dụng: Khi cần tính toán với yêu cầu độ chính xác cao
Trang 19Bộ môn Tự động hóa Thiết kế Cầu đường 19
II.3.7 String (Kiểu chuỗi)
Đặc điểm:
Chuỗi dữ liệu chứa từ 0 đến 65.500 ký tự Từng ký tự có khoảng giá trị từ 0 đến 255 trong
bảng ASCII
Có sẵn một số hàm liên quan đến chuỗi ví dụ: cắt chuỗi, tách chuỗi, nhập chuỗi,… Có thể
tra cứu các hàm này trong các tài liệu tham khảo như MSDN hoặc Object Browser (thư
viện Strings)
Phạm vi áp dụng: Khi cần làm việc với dữ liệu văn bản (Text)
Được sử dụng nhiều trong các bài toán quản lý, các bài toán yêu cầu nhập xuất dữ liệu
Việc dùng string cũng giúp cho các bài toán có giao diện thân thiện hơn
Ví dụ:
Private Sub Command1_Click()
Dim sText As String
Dim lTextLength As Long
Dim sChar As String
Dim bASCII As Byte
Dim x As Long
sText = " VB that la don gian!"
lTextLength = Len(sText) 'So ky tu trong sText
For x = 1 To lTextLength ‘ Lap den ky tu cuoi cung trong sText
sChar = Mid$(sText, x, 1) 'Lay ky tu thu x trong sText
bASCII = Asc(sChar) 'Lay gia tri ASCII cua ky tu
MsgBox "Ma ASCII cua ky tu '" & sChar & "' la " & bASCII ‘Hien
thi ket qua
Greeting = FirstWord & SecondWord
' Greeting bây giờ là "HelloWorld"
- Len: trả về chiều dài một chuỗi được chỉ định
Ví dụ: iLen = Len(Greeting) ' iLen bằng 8
- Left: Trích chuỗi con từ phần đầu chuỗi gốc Left (String, [length])
- Right: Trích chuỗi con từ phần đuôi chuỗi gốc Right (String, [length])
- Mid: Trích chuỗi con từ giữa chuỗi gốc Mid(String, Start As Long, [length])
Ví dụ:
Today = "24/05/2001"
StrDay = Left(Today,2) ' StrDay = "24" '
StrYear = Right(Today,4) ' StrYear = "2001" '
StrMonth = Mid(Today,4,2) ' StrMonth = "05"
- InStr: Tìm chuỗi con trong chuỗi gốc Nếu hàm InStr trả về 0, nghĩa là không tìm thấy
Cú pháp: InStr([start,] string1, string2, [compare])
Trang 20Bộ môn Tự động hóa Thiết kế Cầu đường 20
Trong đó:
Start: Xác định vị trí trong chuỗi bắt đầu việc tìm kiếm Nếu giá trị là Null thì sẽ bắt đầu từ
đầu chuỗi Nếu như tham số Compare có đặc tả thì bắt buộc phải khai báo tham số Start
String1: Biểu thức chuỗi để so sánh
String2: Chuỗi cần tìm
Compare: Xác định kiểu so sánh chuỗi Giá trị: vbTextCompare,
vbBinaryCompare
Ví dụ 1:
myString = "The *rain in Spain mainly "
Position = Instr(myString,"*") ' Position sẽ là 5
Nếu trong myString không có dấu "*" thì Position sẽ bằng 0
Ví dụ 2:
KeyValuePair = "BeatlesSong=Yesterday"
Pos = Instr(KeyValuePair, "=")
Key = Left(KeyValuePair, Pos-1) ‘Key= “BeatlesSong”
Value = Mid(KeyValuePair, Pos+1) ‘Key= “Yesterday”
- Replace: tìm và thay thế chuỗi
Cú pháp: Replace(Expression, find, replace[, start[, count[, compare]]])
Trong đó:
- Expression: Biểu thức chuỗi chứa chuỗi cần thay thế
- find: Chuỗi cần tìm
- replace: Chuỗi thay thế chuỗi tìm được
- start: Tương tự như hàm InStr
- count: Xác định số lần thay thế Mặc định là 1
- compare: Kiểu so sánh chuỗi Giá trị: vbTextCompare, vbBinaryCompare
- LTrim (RTrim): cắt tất cả các khoảng trắng bên trái (bên phải của chuỗi)
- UCase: đổi chuỗi sang chuỗi gồm các ký tự là chữ hoa Cú pháp: UCase(string)
- Asc: cho mã Ascii của một ký tự
- Chr: trả về ký tự ứng với mã Ascii được chỉ định
- InstrRev: tương tự như InStr nhưng việc tìm kiếm được tiến hành từ phải sang
- Val: Hàm đổi chuỗi sang số
- Str: Hàm đổi số sang chuỗi
II.3.8 Date (Kiểu thời gian)
Đặc điểm:
Dùng để lưu trữ và thao tác trên các giá trị thời gian (ngày và giờ) Để cho VB biết dữ
liệu là kiểu Date ta cần đặt giữa dấu ## hoặc “”
Việc định dạng hiển thị tùy thuộc vào việc thiết lập trong Control Panel
Phạm vi áp dụng: Lưu trữ các giá trị thời gian, ngày tháng
Ví dụ:
Trang 21Bộ môn Tự động hóa Thiết kế Cầu đường 21
Dim D As Date
D = #01/02/98# ‘ Hay “01/02/98”
Nếu hiểu theo kiểu người Mỹ, đây là ngày 2 tháng 1 năm 1998, còn nếu theo kiểu
Vietnam thì đây là ngày 1 tháng 2 năm 1998 Chọn kiểu ngày tháng trong Control
Panel|Regional Setting
- Hàm Now: trả về ngày giờ hiện tại
Ví dụ:
MsgBox "NOW IS " & Format (Now, "ddd dd-mmm-yyyy hh:nn:ss")
' sẽ hiển thị NOW IS Tue 05-Oct-2004 16:15:53
II.3.9 Kiểu mảng (array)
Đặc điểm:
- Mảng là một khối dữ liệu gồm các phần tử có cùng tên và kiểu dữ liệu Các phần tử trong
mảng phân biệt với nhau bởi các chỉ số
- Mảng có thể có một chiều hoặc nhiều chiều
- Trong VB có hai loại biến mảng: mảng có chiều dài cố định và mảng động (chiều dài có
thể thay đổi lúc thi hành)
Phạm vi áp dụng: Đôi khi chúng ta có nhiều biến tương tự nhau, thí dụ như điểm thi của 10
học sinh, nếu phải đặt tên khác nhau cho từng biến (VD: HoaMark, TaiMark, SonMark,
TamMark, NgaMark, HuongMark v.v ) thì bất tiện Chúng ta có thể dùng Array để có một
tên chung cho cả nhóm, rồi nói đến điểm của từng người một bằng cách dùng một con số
gọi là ArrayIndex
Việc lưu trữ dùng mảng còn giúp chúng ta xử lý dữ liệu dễ dàng hơn Ví dụ việc tổng hợp
điểm của danh sách trên
II.3.10 Kiểu tự định nghĩa
Đặc điểm: Kiểu dữ liệu do người dùng định nghĩa tương tự như kiểu bản ghi (Record)
trong Pascal hay kiểu cấu trúc (Struct) trong C
- Kiểu dữ liệu này gồm các trường, có thể là các kiểu dữ liệu khác nhau
Phạm vi áp dụng: Trong các trường hợp cần lưu một giá trị có nhiều thuộc tính Ví dụ các
thông số của một lỗ khoan
II.3.11 Kiểu lớp (class)
Đặc điểm: Lớp được xây dựng trong Class Module hoặc trong các thư viện có sẵn
- Lớp bao gồm:
• Các thuộc tính (Property): thực chất là các biến thành viên khai báo trong lớp đó
• Các phương thức (Method): thực chất là các chương trình con được khai báo trong
lớp - các hàm (Function) và thủ tục (Procedure) thành viên
- Ngoài ra trong VB, lớp có thể có sự kiện (Event) Sự kiện tạo ra khả năng linh động trong
xây dựng quan hệ giữa đối tượng với nhau và với mô môi trường
II.3.12 Kiểu Variant
Đặc điểm: Kiểu Variant là một kiểu dữ liệu đặc biệt trong VB Biến kiểu Variant có thể
chứa mọi giá trị của các kiểu dữ liệu khác, kể cả mảng
Tuy Variant tiện dụng nhưng nếu Variant được dùng nhiều chỗ, trong nhiều tình huống,
cần xác định rõ hiện đang là kiểu nào
Trang 22Bộ môn Tự động hóa Thiết kế Cầu đường 22
Phạm vi sử dụng: Hạn chế dùng Variant vì sẽ gây lãng phí bộ nhớ và giảm tốc độ thực thi
của chương trình
Một số chú ý khi dùng biến kiểu Variant:
- Nếu muốn thi hành các hàm toán học, Variant phải chứa giá trị kiểu số
- Nếu muốn nối chuỗi, dùng toán tử & thay vì toán tử +
Giá trị Empty:
- Đây là giá trị đặc biệt xuất hiện khi một biến chưa được gán giá trị Ta dùng hàm
IsEmpty để kiểm tra giá trị Empty
- Giá trị Empty biến mất khi có một giá trị bất kỳ được gán cho biến Variant, để trở về
giá trị Empty, ta gán từ khoá Empty cho biến Variant
Giá trị Null: Biến Variant chứa giá trị Null trong trường hợp những ứng dụng cơ sở dữ liệu
thể hiện không có dữ liệu hoặc dữ liệu không xác định
Giá trị Error: Trong một biến kiểu Variant, Error là một giá trị đặc biệt cho biết đã có một
lỗi đã xảy ra bên trong thủ tục
Ví dụ:
Private Sub cmdShowDataTypes_Click()
Dim sMess As String
Dim vVariant As Variant
vVariant = "Xin chao" 'String
sMess = TypeName(vVariant) & vbCrLf ' xuống dòng & về đầu dòng
vVariant = 25 ' Integer
sMess = sMess & TypeName(vVariant) & vbCrLf
vVariant = True ' Boolean
sMess = sMess & TypeName(vVariant) & vbCrLf 'Date
vVariant = #1/1/2001# 'trong cặp dấu #
sMess = sMess & TypeName(vVariant)
MsgBox sMess
End Sub
Khi chạy chương trình kết quả là:
II.3.13 Chuyển đổi (convert) kiểu dữ liệu
VB cung cấp một số hàm để chuyển kiểu dữ liệu của một biến từ loại này sang loại khác
Val (str): Trả về giá trị kiểu thực của một chuỗi: a= Val(“1245.43 asd”)
Nếu trong chuỗi có chứa ký tự khác số, hàm sẽ loại bỏ ký tự đó
CDbl (x):Trả về giá trị kiểu thực của chuỗi, chuỗi này phải là các số (number)
CInt (x): Trả về giá trị kiểu nguyên (Integer)
CStr (x): Trả về giá trị kiểu chuỗi
Str (x): Trả về giá trị kiểu chuỗi của một số
Các lưu ý:
- Kiểu dữ liệu số nguyên: Byte, Integer, Long khi gán giá trị thập phân thì VB sẽ gán giá trị
nguyên làm tròn Lấy VD
Trang 23Bộ môn Tự động hóa Thiết kế Cầu đường 23
- Thực hiện các phép tính số nguyên với số thực sẽ cho kết quả là số thực VD: Integer +
Double = Double
Question for today!
II.4 CÁC KHAI BÁO
VB cho phép dùng một biến mà không cần khai báo, tuy nhiên chúng ta nên định nghĩa các
biến, hằng, đối tượng sẽ dùng ,
Khai báo một biến sẽ cho VB biết về sự tồn tại của nó để cấp phát bộ nhớ lưu trữ
Để VB yêu cầu tất cả các biến trong mã lệnh phải được khai báo tường minh ta thêm khai
báo vào đầu mã lệnh (Sẽ nhắc lại ở phần sau):
Option Explicit
II.4.1 Khai báo biến với các kiểu dữ liệu thông thường
Khái niệm biến:
Biến (Variable) là vùng lưu trữ được đặt tên để chứa dữ liệu tạm thời trong quá trình tính
toán, so sánh và các công việc khác
Cách khai báo
Dim <tên_biến> as <Kiểu_dữ_liệu>
- Dùng các từ khóa Public hay Private nhằm xác định phạm vi hoạt động của biến (sẽ
giải thích ở phần sau)
Public <tên_biến> as <Kiểu_dữ_liệu>
Hay: Private <tên_biến> as <Kiểu_dữ_liệu>
Nếu khai báo biến không xác định kiểu dữ liệu thì biến đó có kiểu Variant
Ví dụ:
Dim sHoTen As String
Public iTuoi As Integer
Private iKetHon As Boolean
II.4.2 Khai báo hằng
- Là kiểu dữ liệu dùng lưu những giá trị không bao giờ thay đổi
Việc sử dụng kiểu hằng số giúp chúng ta hạn chế những nhầm lần Đơn cử như việc sử
dụng một thông số nhiều lần trong chương trình
[Public/ Private] Const <tên_hằng> = <giá_trị_hằng>
Ví dụ:
Const g = 9.8
Const Num As Integer = 4*5
II.4.3 Khai báo kiểu tự định nghĩa
- Khai báo các kiểu dữ liệu dạng bản ghi gồm các trường theo nhu cầu của người sử dụng
Cú pháp khai báo như sau:
Trang 24Bộ môn Tự động hóa Thiết kế Cầu đường 24
[Pravite/Public] Type <tên_ kiểu>
Sau khai báo, để truy cập tới một trường của biến kiểu bản ghi, dùng toán tử (.) và cặp từ
khóa With… End With
Ví dụ: Dữ liệu về điểm đo trong khảo sát địa hình có thể được xây dựng gồm: chỉ số của
điểm (id), tên điểm (name), tọa độ x, tọa độ y, cao độ z, mã địa vật (madiavat)
Private Type diemdo ‘ Khai báo kiểu
Private Sub Command1_Click()
Dim diem as diemdo ‘ Tạo biến và gán dữ liệu
[Public/ Private/ Dim] <tên_mảng>(<các thông số về chiều>) as <tên_kiểu>
Các thông số về chiều có thể biểu diễn qua các ví dụ sau:
Dim a(1 to 4) as Integer: mảng 1 chiều chỉ số từ 1 đến 4 kiểu nguyên
Dim a(3) as Long: mảng 1 chiều chỉ số tới 3 kiểu Long
(chỉ số xuất phát mặc định là 0 hoặc được xác định thông qua khai báo Option Base )
Option Base 0 hoặc Option Base 1
Dim a(1 to 4,2 to 6) as Double: mảng 2 chiều chỉ số từ 1 tới 4 và 2 tới 6
Dim a(2,2,3) as String: mảng 3 chiều với miền chỉ số trên tương là 2, 2 và 3
• Mảng động (mảng có kích thước thay đổi)
[Public/ Private/ Dim] <tên_mảng> () as <tên_kiểu>
Trong khai báo trên không có các thông số về chiều, thuần túy chỉ là một khai báo
Trang 25Bộ môn Tự động hóa Thiết kế Cầu đường 25
- Các phần tử của mảng chưa được tạo ra (hay mảng chưa được cấp phát bộ nhớ)
- Dữ liệu của mảng chỉ được tạo ra hoặc thay đổi khi có lệnh Redim
Lệnh này có tác dụng tạo ra mảng thực sự (có kích thước và các phần tử tương ứng) hoặc
thay đổi kích thước của một mảng động
Redim <tên_mảng>(<các thông số về chiều>) as <tên kiểu>
- Chú ý rằng <tên_kiểu> phải đúng như khai báo, các thông số về chiều có thể khác
trước cả về số chiều và kích thước của từng chiều
- Dữ liệu mảng cũ sẽ bị, thay vào đó là phần tử của mảng mới được khởi tạo
Ví dụ:
Dim diem as diemdo
Dim a() as Long
Redim a(1 to 5) as Long
a(1) = 100: a(2) = 200 ‘a(1) và a(2) có giá trị tương ứng 100 và 200
Redim a(1 to 3, 2 to 4) as Long
‘Mảng được làm mới hoàn toàn là một mảng 2 chiều, các giá trị a(1) và a(2) không còn ý
nghĩa nữa
- Trong trường hợp muốn thay đổi kích thước của mảng mà không mất dữ liệu, dùng lệnh
ReDim với từ khóa Preserve
Tuy nhiên chỉ thay đổi được biên trên của chiều cuối cùng trong mảng Nếu thay đổi các
chiều khác sẽ phát sinh lỗi
Ví dụ
Dim a() as Long
ReDim a(1 to 5) as Long
a(1) = 100: a(2) = 200
ReDim Preserve a(1 to 6) as Long
‘Thay đổi mở rộng mảng thêm một phần tử mà không ảnh hưởng đến các dữ liệu trước
a(1)vẫn có giá trị 100, a(2)=200
Không thêm được chỉ số 0 vào mảng trên: ReDim Preserve a(0 to 6) as Long
(Lỗi)
Một số thao tác trên mảng
- Hàm UBound trả về biên trên của một mảng
- Hàm LBound trả về biên dưới của một mảng
- Truy xuất từng phần tử trong mảng: <Tên mảng>(<Vị trí>)
- Sao chép mảng: Đối với VB6, ta có thể gán một mảng cho một mảng khác, hoặc
Cách này cũng chỉ áp dụng được cho mảng khai báo động
- Mảng là kết quả trả về của hàm Chẳng hạn như:
Trang 26Bộ môn Tự động hóa Thiết kế Cầu đường 26
Public Function ArrayFunction (b As Byte) As Byte()
II.4.5 Khai báo, tạo và làm việc với biến đối tượng
Khai báo và tạo biến đối tượng phải dùng thêm từ khóa New
Dim <tên_đối_tượng> as New <Tên_Lớp>
Phép gán đối tượng được thực hiện với từ khóa Set
Set <tên_đối_tượng> = <giá trị>
- Chú ý rằng nếu thực hiện khai báo một biến đối tượng như thông thường (không có từ
khóa New) thì biến thực sự chưa được tạo ra Trong trường hợp ấy, sau đó phải có thao tác
tạo đối tượng với các từ khóa Set và New
Dim <tên_đối_tượng > as <tên_lớp>
Set <tên_đối_tượng > = New <tên_lớp>
- Các phép toán, các toán tử có được áp dụng cho đối tượng hay không tùy thuộc vào lớp
<Tên_đối_tượng >.<Tên_phương_thức>(Các tham số)
Sẽ cụ thể hơn trong các chương sau
II.4.6 Các chú ý khi khai báo
- Có thể khai báo nhiều biến cùng lúc:
Dim passw As String, yourName As String, firstnum As Integer,
- Nếu kiểu dữ liệu không được định nghĩa, VB sẽ tự động khai báo là kiểu Variant
- Dữ liệu kiểu chuỗi (String) có hai cách khai báo, ngoài cách thông thường, có thể khai
báo độ dài của giá trị
Dim VariableName as String * n
trong đó n là số lượng ký tự mà biến có thể lưu trữ
Ví dụ:
Trang 27Bộ môn Tự động hóa Thiết kế Cầu đường 27
Dim yourName as String * 10
yourName sẽ không giữ lớn hơn 10 ký tự
II.5 BIỂU THỨC
II.5.1 Các khái niệm
- Biểu thức: là tập hợp các toán hạng và các toán tử kết hợp lại với nhau theo quy tắc nhất
định để tính toán ra một giá trị nào đó
- Toán tử hay phép toán (Operator): là từ hay ký hiệu nhằm thực hiện phép tính và xử lý
dữ liệu
- Toán hạng: là giá trị dữ liệu (biến, hằng…)
II.5.2 Các loại phép toán
Là các phép toán tác động trên kiểu Boolean và cho kết quả là kiểu Boolean Các
phép toán này bao gồm AND (và), OR (hoặc), NOT (phủ định) Sau đây là bảng giá
trị của các phép toán:
Not Not TRUE = FALSE; Not FALSE = TRUE
And TRUE And TRUE = TRUE; FALSE And FALSE = FALSE
Trang 28Bộ môn Tự động hóa Thiết kế Cầu đường 28
Các trường hợp khác cho kết quả FALSE
Or FALSE Or FALSE = FALSE; Các trường hợp khác cho kết quả TRUE
Xor A Xor B: A hoặc B nhưng không phải cả hai
Eqv A Eqv B; So sánh tương đương Giống nhau cho giá trị True
Trang 29Bộ môn Tự động hóa Thiết kế Cầu đường 29
Một số hàm toán học thông dụng
Các hàm toán học có thể tra cứu trong Object Browser (thư viện Math)
Abs (x): Hàm giá trị tuyệt đối
Exp (x): Hàm mũ cơ số tự nhiên ex
Log (x): Logarit cơ số tự nhiên
Sqr (x): lấy bình phương
Các hàm lượng giác: Cos (x), Sin (x), Tan (x)
Hàm lượng giác ngược: Atn (x) Arctg
Fix (x): Hàm lấy phần nguyên chẵn Ví dụ Fix (5.1) = 5; Fix (5.6) = 5
Int (x): Hàm lấy phần nguyên làm tròn
Round (x, num) làm tròn số thực x đến (num) chữ số thập phân
II.6 CÁC CÂU LỆNH
Một câu lệnh (statement) xác định một công việc mà chương trình phải thực hiện để xử lý
dữ liệu đã được mô tả và khai báo Các câu lệnh được ngăn cách với nhau bởi ký tự xuống
Giả sử ta có khai báo sau:
Dim TodayTemp As Single, MinAge As Integer
Dim Sales As Single, NewSales As Single, FullName As String
Các lệnh sau gán giá trị cho các biến trên:
MinAge = 18
Sales = 200000
NewSales = Sales * 1.2
Giả sử người dùng cần nhập họ và tên vào ô nhập liệu TextBox có thuộc tính Name
là txtName, câu lệnh dưới đây sẽ lưu giá trị của ô nhập liệu vào trong biến
Trang 31Bộ môn Tự động hóa Thiết kế Cầu đường 31
VB sẽ kiểm tra các điều kiện, nếu điều kiện nào đúng thì khối lệnh tương ứng sẽ được thi
hành Ngược lại nếu không có điều kiện nào đúng thì khối lệnh sau từ khóa Else sẽ được
thi hành
Ví dụ:
If (TheColorYouLike = vbRed) Then
MsgBox "You are a lucky person"
ElseIf (TheColorYouLike = vbGreen) Then
MsgBox "You are a hopeful person"
ElseIf (TheColorYouLike = vbBlue) Then
MsgBox "You are a brave person"
ElseIf (TheColorYouLike = vbMagenta) Then
MsgBox "You are a sad person"
Else
MsgBox "You are an average person"
End If
II.6.3 Câu lệnh lựa chọn Select Case
Trong trường hợp có quá nhiều các điều kiện cần phải kiểm tra, nếu ta dùng cấu trúc rẽ
nhánh If…Then thì đoạn lệnh không được rõ ràng, khó kiểm tra, sửa đổi khi có sai sót
Ngược lại với cấu trúc Select…Case, biểu thức điều kiện sẽ được tính toán một lần vào
đầu cấu trúc, sau đó VB sẽ so sánh kết quả với từng trường hợp (Case) Nếu bằng nó thi
hành khối lệnh trong trường hợp (Case) đó
Các từ khóa: Select Case, Case, End Select
Sơ đồ khối
Cú pháp
Select Case <biểu thức kiểm tra>
Case <Danh sách kết quả biểu thức 1>
[Khối lệnh 1]
Case <Danh sách kết quả biểu thức 2>
[Khối lệnh 2]
… [Case Else
[Khối lệnh n]]
End Select
Mỗi danh sách kết quả biểu thức sẽ chứa một hoặc nhiều giá trị Trong trường hợp có nhiều
giá trị thì mỗi giá trị cách nhau bởi dấu phẩy (,) Nếu có nhiều Case cùng thỏa điều kiện thì
khối lệnh của Case đầu tiên sẽ được thực hiện
Trang 32Toán tử Is: Được dùng để so sánh <Biểu thức kiểm tra> với một biểu thức nào đó
Toán tử To: Dùng để xác lập miền giá trị của <Biểu thức kiểm tra>
Thực hiện một khối lệnh lặp theo một biến đếm với số lần lặp đã được xác định
Các từ khóa: For, to, Step, Next
Cú pháp
For <biến_đếm> = <điểm_đầu> to <điểm_cuối> [Step <bước_nhảy>]
Khối_lệnh
Next
Biến đếm, điểm đầu, điểm cuối, bước nhảy là những giá trị số (Integer, Single,…) Bước
nhảy có thể là âm hoặc dương Nếu bước nhảy là số âm thì điểm đầu phải lớn hơn điểm
cuối, nếu không khối lệnh sẽ không được thi hành
Khi Step không được chỉ ra, VB sẽ dùng bước nhảy mặc định là 1
Ví dụ: Tính N!
- Xây dựng giao diện
- Viết mã cho sự kiện Command1_Click
Trang 33Bộ môn Tự động hóa Thiết kế Cầu đường 33
Private Sub Command1_Click()
Dim i As Integer, n As Integer, Kq As Long
II.6.5 Câu lệnh lặp xác định trong một tập hợp
Thực hiện một khối lệnh lặp theo một biến chạy trong một tập hợp xác định
Các từ khóa: For Each, In, Next
- Phần tử trong tập hợp chỉ có thể là biến Variant, biến Object, hoặc một đối tượng
trong Object Browser
- Không dùng For Each Next với mảng chứa kiểu tự định nghĩa vì Variant
không chứa kiểu tự định nghĩa
Ví dụ:
Dim DanhSach(1) As String
Dim HoTen As Variant
DanhSach(0) = "Tran Van A": DanhSach(1) = "Nguyen Thi B"
For Each HoTen In DanhSach
MsgBox HoTen
Next
II.6.6 Câu lệnh lặp không xác định
Thực hiện một khối lệnh với số lần lặp không định trước, theo một biểu thức điều kiện
(biểu thức điều kiện có giá trị Boolean: True hoặc False)
Kiểu 1: Lặp trong điều kiện là True
Loop While <điều kiện>
Kiểu 2: Lặp trong điều kiện là False
Trang 34Dim Check, Counter
Check = False: Counter = 0 ' Khởi tạo
Do While Counter < 5 ' Counter chạy từ 0 đến 4 => True
Counter = Counter + 1 ' Tăng biến đếm
MsgBox Counter ‘ Thông báo giá trị biến đếm
Loop ‘ Có thể chuyến While Counter < 5 xuống đây, lúc đó Counter
sẽ chạy đến 5
Do Until Check ' Check có giá trị False
Counter = Counter + 1 ' Tăng biến đếm
If Counter = 5 Then
Check= True
Loop
Để thoát khỏi vòng lặp, sử dụng câu lệnh Exit Do
II.7 CHƯƠNG TRÌNH CON (HÀM VÀ THỦ TỤC)
II.7.1 Khái niệm
Trong những chương trình lớn, có thể có những đoạn chương trình viết lặp đi lặp lại nhiều
lần, để tránh rườm rà và mất thời gian khi viết chương trình người ta thường phân chia
chương trình thành nhiều module, mỗi module giải quyết một công việc nào đó Các
module như vậy gọi là các chương trình con
Một tiện lợi khác của việc sử dụng chương trình con là ta có thể dễ dàng kiểm tra xác định
tính đúng đắn của nó trước khi ráp nối vào chương trình chính và do đó việc xác định sai
sót để tiến hành hiệu đính trong chương trình chính sẽ thuận lợi hơn
Trong Visual Basic, chương trình con có hai dạng là hàm (Function) và thủ tục (Sub)
Hàm khác thủ tục ở chỗ hàm trả về cho lệnh gọi một giá trị thông qua tên của nó còn thủ
tục thì không Do vậy ta chỉ dùng hàm khi và chỉ khi thoả mãn đồng thời các yêu cầu sau
đây:
- Ta muốn nhận lại một kết quả (chỉ một mà thôi) khi gọi chương trình con
- Ta cần dùng tên chương trình con (có chứa kết quả) để viết trong các biểu thức
Nếu không thỏa mãn hai điều kiện ấy thì dùng thủ tục
II.7.2 Hàm - Function
Hàm (Function) là một chương trình con có nhiệm vụ tính toán và cho ta một kết quả Kết
quả này được trả về trong tên hàm
Cách khai báo:
Trang 35Bộ môn Tự động hóa Thiết kế Cầu đường 35
[Private | Public | Static] Function <Tên hàm> ([<tham số>[As <KiểuDL>]]) [As <KiểuDL>]
<Các dòng lệnh> hay <Các khai báo>
End Function
Trong đó:
- <Tên hàm>: Tên hàm được đặt giống quy tắc tên biến, hằng,…
- <tham số>[As <KiểuDL>]: có thể có hay không Nếu có nhiều tham số thì mỗi tham số
phân cách nhau dấu phẩy Nếu không xác định kiểu tham số thì tham số có kiểu Variant
- <KiểuDL>: Kết quả trả về của hàm, trong trường hợp không khai báo As <kiểu dữ liệu>,
mặc định, VB hiểu kiểu trả về kiểu Variant
Cú pháp gọi hàm: <Tên hàm>[(tham số)]
Ví dụ: Tính giai thừa N
II.7.3 Thủ tục - Sub
Thủ tục là một chương trình con thực hiện một hay một số tác vụ nào đó Thủ tục có thể có
hay không có tham số
Cách khai báo:
[Private | Public] [Static] Sub <tên thủ tục> ([<tham số>[As <Kiểu dữ liệu>]])
<Các dòng lệnh> hay <Các khai báo>
End Sub
Trong đó:
- <Tên thủ tục>: Tên được đặt giống quy tắc tên biến, hằng,…
- ([<tham số>[As <Kiểu dữ liệu>] : có thể có hay không Nếu có nhiều tham số thì mỗi
tham số phân cách nhau dấu phẩy Nếu không xác định kiểu tham số thì tham số có kiểu
Variant
Để gọi thủ tục để thực thi, có 2 cách:
<Tên thủ tục> [<Các tham số >]
Hoặc Call <Tên thủ tục> ([<Các tham số >])
Ví dụ: Thủ tục kiểm tra xem số nguyên N có phải là số nguyên tố hay không?
Sub KTraNgTo(N As Integer)
Trang 36Bộ môn Tự động hóa Thiết kế Cầu đường 36
II.7.4 Truyền tham số cho chương trình con
Có hai cách truyền tham số cho chương trình con:
- ByVal – Truyền tham số theo tham trị (giá trị)
Một bản sao của biến được truyền vào chương trình con Chương trình con không làm việc
với biến mà chỉ làm việc với bản sao giá trị của biến Do đó, nếu trong chương trình con có
sự thay đổi giá trị của biến thì chỉ có bản sao bị ảnh hưởng mà không liên quan đến giá trị
của biến Trong VB, truyền tham số theo tham trị phải được chỉ rõ bằng từ khóa ByVal
Kết quả thực hiện của đoạn chương trình trên: 4 8 4
- ByRef – Truyền tham số theo tham biến (địa chỉ)
Địa chỉ của biến sẽ được truyền cho chương trình con Do đó bất kì thay đổi nào của thủ
tục trên biến sẽ tác động trực tiếp lên giá trị của biến Trong VB, truyền tham số theo tham
biến là mặc định Dùng từ khóa ByRef
Kết quả thực hiện của đoạn chương trình trên: 4 8 8
Các ví dụ tạo chương trình con đơn giản
- Cách tạo chương trình con trong VB: Tools > Add Procedure
Trang 37Bộ môn Tự động hóa Thiết kế Cầu đường 37
Public Function GiaiThua(ByVal A As Integer) As Integer
- Truyền tham số dạng mảng (Byref)
Function TrungBinhCong(X() As Integer) As Double
Dim vItem As Variant
Dim iTong As Integer
iTong = 0
For Each vItem In X
Tong = Tong + vItem
Next
TrungBinhCong = Tong / UBound(X)
End Function
Private Sub Form_Load()
Dim List(1 To 5) As Integer
Trang 38Bộ môn Tự động hóa Thiết kế Cầu đường 38
Function DienTichCN(X As Double , Optional Y As Variant ) As Double
Private Sub Form_Load()
MsgBox DienTichCN(3) ‘Diện tích hình vuông
MsgBox DienTichCN(3, 4) ‘Diện tích hình chữ nhật
End Sub
II.8 TRUY XUẤT DỮ LIỆU TRONG VISUAL BASIC
II.8.1 Các khái niệm
a Module:
Một ứng dụng đơn giản có thể chỉ có một Form, lúc đó tất cả mã lệnh của ứng dụng đó
được đặt trong cửa sổ mã lệnh của Form đó (gọi là Form Module) Khi ứng dụng được phát
triển lớn lên, chúng ta có thể có thêm một số Form nữa và lúc này khả năng lặp đi lặp lại
nhiều lần của một đoạn mã lệnh trong nhiều Form khác nhau là rất lớn Để tránh việc lặp
đi lặp lại trên, ta tạo ra một Module riêng rẽ chứa các chương trình con được dùng chung
Visual Basic cho phép 3 loại Module:
Module Form: đi kèm với mỗi một Form là một module của Form đó để chứa mã lệnh của
Form này Với mỗi điều khiển trên Form, module Form chứa các chương trình con và
chúng sẵn sàng được thực thi để đáp ứng lại các sự kiện mà người sử dụng ứng dụng tác
động trên điều khiển Module Form được lưu trong máy tính dưới dạng các tập tin có đuôi
là *.frm
Module chuẩn (Standard module): Mã lệnh không thuộc về bất cứ một Form hay một
điều khiển nào sẽ được đặt trong một module đặc biệt gọi là module chuẩn (được lưu với
đuôi *.bas) Các chương trình con được lặp đi lặp lại để đáp ứng các sự kiện khác nhau của
các điều khiển khác nhau thường được đặt trong module chuẩn
Module lớp (Class module): được sử dụng để tạo các đối tượng Các đối tượng sẽ có các
thuộc tính và phương thức của lớp mà nó tạo ra (Class module được lưu với đuôi *.cls)
b Phạm vi của biến(scope): xác định biến có thể sử dụng trong phạm vi nào Một biến sẽ
thuộc một trong 3 loại phạm vi:
Phạm vi biến cục bộ
Phạm vi biến module
Phạm vi biến toàn cục
II.8.2 Biến toàn cục
Khái niệm: Biến toàn cục là biến có phạm vi hoạt động trong toàn bộ ứng dụng
Khai báo: Global <Tên biến> [As <Kiểu dữ liệu>]
II.8.3 Biến cục bộ
Khái niệm: Biến cục bộ là biến chỉ có hiệu lực trong những khối chương trình mà chúng
được định nghĩa
Trang 39Bộ môn Tự động hóa Thiết kế Cầu đường 39
Khai báo: Dim <Tên biến> [As <Kiểu dữ liệu>]
Lưu ý: Biến cục bộ được định nghĩa bằng từ khóa Dim sẽ kết thúc ngay khi việc thi hành
thủ tục kết thúc
II.8.4 Biến module
Khái niệm: Biến Module là biến được định nghĩa trong phần khai báo
(General|Declaration) của Module và mặc nhiên phạm vi hoạt động của nó là toàn bộ
Module ấy
Khai báo: Biến Module được khai báo bằng từ khóa Dim hay Private & đặt trong phần
khai báo của Module
Ví dụ: Private Num As Integer
Tuy nhiên, các biến Module này có thể được sử dụng bởi các khối chương trình khác trong
các Module khác Muốn thế chúng phải được khai báo là Public trong phân Khai báo
(General|Declaration) của Module
Ví dụ: Public Num As Integer
Lưu ý: Không thể khai báo biến với từ khóa là Public trong chương trình con
II.9 GỠ LỖI TRONG VISUAL BASIC (Debug)
Trong quá trình viết mã lệnh và chạy thử một dự án, việc phát sinh các lỗi là không thể
tránh khỏi Vì vậy, việc phát hiện và xử lý lỗi là điều tất yếu Trình tự của công việc này
như sau:
1 Phát hiện lỗi và phân loại lỗi phát sinh
2 Tìm kiếm vị trí mã lệnh phát sinh lỗi
3 Sửa lỗi
4 Xử lý, ngăn chặn lỗi có thể xảy ra trong tương lai (bẫy lỗi)
(Dù các lỗi xảy ra trong khi xây dựng chương trình đã được khắc phục, nhưng không thể
đảm bảo rằng sẽ không phát sinh lỗi khi chương trình hoạt động trong tương lai Vì vậy,
người lập trình phải xem xét trước tới những khả năng có thể xảy ra và có xử lý tương
ứng)
Chúng ta có các công cụ hỗ trợ quá trình gỡ lỗi Debug Toolbar: View | Toolbars | Debug
II.9.1 Phân loại lỗi lập trình
Có các loại lỗi cơ bản thường gặp:
Các lỗi cú pháp (Syntax Error)
Các lỗi phát sinh do viết mã lệnh sai quy tắc
- Vi phạm khi đặt hay gọi tên biến và hàm: Lỗi loại này thường rất dễ tìm ra trong lúc phát
triển mã
Trang 40Bộ môn Tự động hóa Thiết kế Cầu đường 40
- Lỗi chính tả: người viết mã có thể viết hay gọi sai tên hàm, tên biến Trong VB nếu
không sử dụng khai báo Option Explicit thì sẽ có thể gây sai sót nghiêm trọng vì trong quá
trình dịch VB không phát hiện ra
- Vượt quá khả năng tính toán: Bản thân máy tính và hệ điều hành cũng có rất nhiều giới
hạn về phần cứng, phần mềm và các đặc diểm chuyên biệt Khi người lập trình yêu cầu
máy làm quá khả năng sẽ gây ra các lỗi mà đôi khi không xác định được
- Gán sai dữ liệu: Tức là dùng một dữ liệu có kiểu khác với kiểu của biến để gán cho biến
đó một cách không chủ ý
Khi biên soạn, Visual Basic sẽ dò lỗi cú pháp tửng lệnh mỗi khi Enter, và thông báo ngay
lỗi đó Nếu đúng cú pháp, nó sẽ chỉnh lại khoảng cách giữa 2 từ, viết lại các từ khóa hay
tên các hàm của Basic
Các lỗi khi chạy chương trình (Runtime Error)
Các lỗi phát sinh khi chương trình được thực thi Tất nhiên, các lỗi này thường không do
nguyên nhân lỗi cú pháp mà tuỳ thuộc điều kiện cụ thể khi chương trình được thực thi Ví
dụ các lỗi do hệ thống không đáp ứng được yêu cầu của mã lệnh thực thi như tràn bộ nhớ,
các tài nguyên mà chương trình sử dụng không có trong hệ thống,…Các lỗi thực thi thường
dẫn tới sự chấm dứt hoạt động của chương trình thậm chí của toàn bộ hệ thống
Các lỗi do thuật giải
Các lỗi xảy ra do sự sai sót trong thuật toán xử lý hoặc trong quá trình cài đặt và sử dụng
các thuật toán Các lỗi thuật giải thường dẫn tới kết quả xử lý của chương trình bị sai, trong
nhiều trường hợp các lỗi thuật giải cũng có thể là nguyên nhân làm phát sinh các lỗi thực
thi Các lỗi thuật giải là những lỗi không được môi trường biên dịch phát hiện Việc phát
hiện và sửa lỗi chỉ có thể được thực hiện bởi người lập trình Vì vậy, đây là loại lỗi khó
phát hiện và khắc phục nhất
II.9.2 Phát hiện và khắc phục lỗi trong lập trình
Ø Các lỗi cú pháp
Các lỗi cú pháp có thể được khắc phục khá dễ dàng do người lập trình được thông báo của
trình biên dịch ngay trong quá trình viết mã lệnh
Ø Các lỗi thực thi và lỗi thuật giải
Trước hết người dùng phải xác định rõ loại lỗi, nguyên nhân và tiến trình gây lỗi Từ đó
phát hiện ra đoạn mã lệnh gây lỗi và tiến hành sửa chữa Trong các trình biên dịch hiện đại
nói chung và VBIDE nói riêng, người dùng được hỗ trợ rất nhiều thông qua các tính năng
gỡ rối như biên dịch theo từng bước, theo các điểm dừng, hiển thị các kết quả trung gian
Các tính năng này được tổ chức trong menu Debug của VBIDE Cụ thể như sau:
- Chạy từng bước (Step Into – phím tắt F8): chương trình được dịch theo từng dòng
lệnh
- Chạy từng bước với khối lệnh (Step Over – phím tắt SHIFT+F8): tương tự như chạy
từng bước (Step Into) nhưng việc thực thi một chương trình con được coi như thực thi một
dòng lệnh Vì vậy nếu trong chương trình hiện tại có một lời gọi chương trình con thì
chương trình con sẽ được thực thi như một lệnh và do đó con trỏ biên dịch sau đó sẽ nhảy
tới dòng lệnh tiếp theo của chương trình hiện tại (Trong khi đó nếu thực hiện biên dịch với
lệnh Step Into, con trỏ biên dịch sẽ nhảy tới dòng lệnh đầu tiên của chương trình con được
gọi)
- Chạy ra ngoài chương trình con (Step Out – phím tắt CTRL+SHIFT+F8): nếu con trỏ
biên dịch đang ở trong một chương trình con, thì lệnh biên dịch Step Out sẽ dịch toàn bộ
các lệnh còn lại trong chương trình con đó và đưa con trỏ lệnh tới vị trí tiếp sau vị trí có lời
gọi chương trình con
- Chạy tới vị trí con trỏ chuột (Run to Cursor – phím tắt CTRL+F8): Chạy từ vị trí con
trỏ biên dịch hiện tại tới vị trí có con trỏ chuột