Chương 6 Các lệnh định nghĩa & khai báo VB Tổng quát về code của 1 ứng dụng VB VB dùng Project để.
Download ReportTranscript Chương 6 Các lệnh định nghĩa & khai báo VB Tổng quát về code của 1 ứng dụng VB VB dùng Project để.
Ch ươ ng 6
Các lệnh định nghĩa & khai báo VB
Tổng quát về code của 1 ứng dụng VB
VB dùng Project để quản lý các thành phần cấu thành 1 ứng dụng VB.
Code của VB được dùng trong các module với mục đích khác nhau :
Class module
giống nhau.
: hiện thực lớp các đối tượng có cấu trúc và hành vi
Form module
các : là trường hợp đặc biệt của class module, hiện thực sự kiện tương tác của các đối tượng trên form giao diện.
Module (Standard module)
: là đơn vị phần mềm nhỏ với một chức năng xác định. Theo quan điểm lập trình cấu trúc (cổ điển), module là công cụ chia nhỏ ứng dụng ra nhiều phần để dễ quản lý VB hỗ trợ cả 2 phương pháp lập trình : cấu trúc và OOP.
Ngoại trừ một vài ngoại lệ nhỏ, tổ chức code của loại module trên hoàn toàn giống nhau : đó là danh sách nhiều lệnh VB phục vụ định nghĩa kiểu, hằng, biến và thủ tục trong module đó. Trong lệnh định nghĩa thủ tục, ta sẽ dùng các lệnh thực thi để miêu tả giải thuật của thủ tục.
Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 2
Tổ chức code trong module
General Định nghĩa Khai báo Biến / Hằng Tác vụ HIện thực Hiện thực các hàm biến cố Định nghĩa Biến / Hằng Lệnh thực thi Hiện thực các hàm bên trong Định nghĩa Biến / Hằng Lệnh thực thi
Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 3
Tổng quát về ngôn ngữ VB
Ngôn ngữ lập trình VB cũng định nghĩa 1 tập các ký tự cơ bản (chưa có nghĩa), các qui tắc ghép các ký tự để tạo thành các từ có nghĩa (identifier), biểu thức (expression), câu lệnh (statement), thủ tục (Function, Sub, Property) cùng ngữ nghĩa của các phần tử được tạo ra. Vì ngôn ngữ VB là ngôn ngữ lập trình cho máy tính thực hiện nên sẽ không cho phép 1 ngoại lệ nào trong việc xây dựng các phần tử.
Nghiên cứu ngôn ngữ lập trình là học để nhớ rõ các ký tự cơ bản của ngôn ngữ, các qui tắc để tạo danh hiệu, biểu thức, các qui tắc để viết các câu lệnh... cùng ngữ nghĩa của chúng rất giống với việc học 1 ngôn ngữ tự nhiên : Anh, Pháp, Nhật,...
Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 4
Các ký hiệu cơ bản của ngôn ngữ VB
Các ký tự cho phép : đa số các ký tự nhập từ bàn phím, chủ yếu là ký tự chữ và số .
Qui tắc đặt tên (Ch.5) dùng chung cho các thành phần : biến, hằng gợi nhớ, Function, Sub, Property, Form, Class module, Module,...
Qui tắc xây dựng biểu thức sẽ được trình bày trong chương 7.
Qui tắc viết lệnh (cú pháp) : là riêng theo từng lệnh (dưới 20 loại).
Các câu lệnh được chia làm 2 nhóm chính :
Lệnh định nghĩa / khai báo
: xác định hành động nào đó lúc dịch chương trình. (Cần định nghĩa khi dùng trong các lệnh thực thi) biến , hằng , hàm , thủ tục , class trước
Lệnh thực thi
đối tượng khi : xác định hành động nào đó tác động lên chạy chương trình.
biến , hằng , Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 5
Chú thích trong chương trình
Các lệnh định nghĩa và các lệnh thực thi chỉ dùng để ra lệnh cho máy tính. Chúng không thể hiện ý nghĩa của công việc mà chúng làm.
Chú thích cho phép giải thích dưới hiểu hơn.
hình thức ngôn ngữ tự nhiên về ý nghĩa công việc mà các lệnh thực hiện giúp người đọc chương trình dễ Máy sẽ không dịch và không thực hiện các chú thích.
Cú pháp của chú thích rất đơn giản : chỉ qui định bắt đầu chú thích bằng ký tự
'
và có thể được viết trên hàng riêng hay theo sau một lệnh khác.
Ví dụ : Private Sub cmdCE_Click() ' hàm xử lý biến cố khi ấn nút CE (Clear Entry) dblDispValue = 0
Chú thích
blnFpoint = False bytPosDigit = 0 txtDisplay.Text = ".0" End Sub ' bắt đầu hiển thị .0 lên Display Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 6
Chú thích trong chương trình (tt.)
Việc dùng chú thích trong chương trình là sự dung hòa giữa 2 thái cực : lạm dụng và không bao giờ dùng .
Thường ta nên dùng chú thích ở những vị trí sau : Tiêu đề của thủ tục : cung Chức năng, mục đích.
cấp thông tin về thủ tục Thông số ban đầu.
Kết quả trả về sau khi làm.
Các đoạn code phức tạp : để ghi chú đoạn code này hiện thực giải thuật nào trong lý thuyết đã học.
Hàng lệnh có hiệu ứng đặc biệt.
Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 7
Định nghĩa dữ liệu
Lệnh định nghĩa dữ liệu cho phép định nghĩa tính chất của các thuộc tính dữ liệu : Đối với hằng : tên và giá trị.
Đối với sống.
biến : tên, kiểu dữ liệu, tầm vực và thời gian Để VB kiểm tra việc định nghĩa biến bắt buộc trong 1 module nào đó, ta dùng lệnh sau ở đầu module đó :
Option Explicit
Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 8
Định nghĩa Hằng gợi nhớ
Cú pháp :
Const
AConst
=
Value
Lưu ý : Phần
chữ nghiêng
là phần tự chọn (người lập trình xác định theo ý nghĩa câu lệnh và phải thỏa mãn qui tắc VB) Phần
chữ đậm
là từ khóa (người lập trình phải viết
đúng theo cú pháp
).
Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 9
Qui tắc miêu tả các loại giá trị
Giá trị Giá trị luận lý :
True
|
False
.
thập phân nguyên : [
+|-
] [
decdigit
]+ ( Vd: 125, -548 ) Lưu ý ta dùng | để miêu tả sự chọn lựa, [...] để miêu tả có từ 0 tới 1, [...]* để miêu tả có từ 0 tới n, [...]+ để miêu tả có từ 1 tới n (n>1).
Giá trị thập lục phân nguyên : [
+|-
]
&H
[
hexdigit
]+ ( Vd: &HFF ) Giá trị bát phân nguyên : [
+|-
]
&O
[
ocdigit
]+ ( Vd: &O77 ) Giá trị thập phân thực : [
+|-
] [
decdigit
]+ [
.
[
decdigit
]* ] [
E
[
+|-
] [
decdigit
]+] Vd: 3.14159, 0.31459E1,-83.1E-9,...
Giá trị chuỗi : "Nguyen Van A", " "" Nguyen Van A "" " Lưu ý dùng trong 2 dấu nháy kép liên tiếp để miêu tả 1 ký tự nháy kép giá trị chuỗi (cơ chế dùng Escape để giải quyết nhầm lẫn).
Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 10
Qui tắc miêu tả các loại giá trị (tt.)
Giá trị ngày tháng (Date) : (xem chương 5).
Ví dụ: #January 1, 2000# #Jan 1, 2000# #1/1/ 2000# #December 31, 1999 11:59:59PM# #December 31, 1999 23:59:59# Giá trị ngày tháng luôn được đặt trong cặp dấu #....#.
Có nhiều dạng thức khác nhau để miêu tả giờ trong ngày và miêu tả ngày/tháng/năm.
Dạng thức miêu tả ngày dạng 2/1/2000 sẽ được phân giải theo thông số "locale" của Windows (có thể là dd/mm/yyyy hay mm/dd/yyyy).
Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 11
Định nghĩa biến
Cú pháp 1 : định nghĩa biến cục bộ trong Function, Sub, Property :
Dim
AVariable
[
As
Type
]
Static
AVariable
[
As
Type
] Cú pháp 2 : định nghĩa biến cục bộ trong module (class, form, standard) :
Dim
AVariable
[
As
Type
]
Private
AVariable
[
As
Type
]
Cú pháp 3 : định nghĩa biến toàn cục (standard module):
Public
AVariable
[
As
Type
] Lưu ý hạn chế tối đa việc dùng biến toàn cục (trong OOP ta không cần dùng biến toàn cục).
Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 12
Phát biểu định nghĩa biến (tt.)
Sử dụng tiếp vĩ ngữ qui định kiểu (Ch 5) : $ -String, & -Long, !
-Single, # -Double, @ -Currency, % -Integer, không có - Variant.
Có thể định nghĩa nhiều biến trên cùng một dòng lệnh cách nhau bằng dấu ' , '.
Ví dụ : Dim x As Integer, y As Single, b As Boolean Sử dụng cách đặt tên biến Hungarian.
Nên định nghĩa biến một cách tường minh cho chương trình dễ hiểu.
Thay vì dùng : Private DispValue # định nghĩa biến DispValue thuộc kiểu Double , ta nên dùng Private dblDispValue As Double Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 13
Định nghĩa kiểu user-defined
Kiểu này dùng cho dữ liệu có cấu trúc.
Người lập trình mô tả cấu trúc của dữ liệu bằng phát biểu Type / End Type .
Cú pháp :
Type
TypeName
[
AfieldName
As
Type
]+ Ví dụ :
End Type
Type SystemInfo CPU As Variant Memory As Long DiskDrives(25) As String VideoColors As Integer Cost As Currency PurchaseDate As Variant End Type ' Fixed-size array.
Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 14
Định nghĩa kiểu Array
Nếu trong 1 module nào đó cần danh sách gồm nhiều dữ liệu có cấu trúc đồng nhất, ta sẽ dùng phát biểu định nghĩa kiểu array để miêu tả danh sách này. Cú pháp cơ bản như sau : Dim varname [
(
[
subscripts
]
)
] [
As
[
New
]
type
] trong đó subscripts là danh sách từ 1 đến n chiều cách nhau bằng dấu ',', mỗi chiều miêu tả phạm vi chỉ số các phần tử thuộc chiều đó ở dạng : [
lower
To
]
upper
.
Nếu chỉ số cận dưới của 1 chiều nào đó không được miêu tả thì VB chọn giá trị ngầm định (là 0 hay 1).
Phát biểu định nghĩa giá trị cận dưới ngầm định có cú pháp :
Option Base
Ví dụ : {
0|1
VB chọn cận dưới là 0.
} Lưu ý dấu {..} miêu tả có 1 và chỉ 1 lần. Nếu không có phát biểu này thì Dim vector(50) As Double 'vector có 51 phần từ từ 0 - 51 Dim MyArray (1 to 100, 1 to 50) As Double Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 15
Định nghĩa kiểu Array (tt.)
Nếu số lượng phần tử của danh sách chưa biết tại thời điểm viết chương trình và chỉ biết tại thời điểm chạy, ta dùng 1 trong 2 cách sau : khai báo số lượng tĩnh tại thời điểm viết, cách này thường phí phạm bộ nhớ hay khai báo thiếu số lượng phần tử.
Thí dụ để giải hệ n phương trình tuyến tính, n ẩn số, ta có thể khai báo tĩnh ma trận thông số như sau : Option Base 1 Dim matran(100,100) As Double nhưng nếu đại đa số lần dùng ứng dụng này, ta chỉ giải các hệ phương trình có 2, 3,... ẩn số thì sẽ rất phí phạm bộ nhớ. Còn 1 lần chạy nào đó, nếu ta cần giải hệ 200 phương trình thì chương trình sẽ chạy sai.
khai báo số lượng động tại thời điểm chạy. Cú pháp như sau : Dim varname() [
As
[
New
]
type
] Ví dụ : Dim matran() As Double 'để trống số lượng ...
n = Val(txtInput.Text) ReDim matran(n,n) Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
'phân phối phần tử cho ma trận Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 16
Lệnh khai báo Declare
Các lệnh định nghĩa hằng, biến, kiểu, thủ tục cho phép ta sản sinh phần tử tương ứng trong phạm vi ngữ cảnh tương ứng (thủ tục, module, toàn cục).
Ngoài ra Windows (và nhiều hãng, cá nhân khác) đã viết nhiều module tổng quát, mỗi module chứa nhiều thủ tục khác nhau, các thủ tục này giải quyết những vần đề nào đó. Thí dụ ta có module các hàm lượng giác, module các hàm thống kê, module các hàm xử lý dữ liệu multimedia,...
Windows dùng kỹ thuật liên kết động các module trên vào ứng dụng dùng chúng, mỗi module được cất trên 1 file *.dll (dynamic link library).
VB cung cấp lệnh khai báo "Declare" để cho phép người lập trình khai báo chữ ký (signature, interface, prototype, header,...) của các thủ tục có sẵn trong các module *.dll để gọi nó trong ngữ cảnh của mình (module).
Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 17
Lệnh khai báo Declare (tt.)
Cú pháp 1 :
[
Public | Private
]
Declare Sub
name
Lib
"
libname
" [
Alias
"
aliasname
"] [([
arglist
])]
Cú pháp 2 :
[
Public | Private
]
Declare Function
name
[([
arglist
])] [As
type
]
Lib
"
libname
" [
Alias
"
aliasname
"] Cú pháp 1 cho phép khai báo 1 subroutine với tên là
name
truyền cho nó 1 danh sách đối số tương thích với
arglist
.
ở thư viện tên là
libname
, ta có thể gọi subroutine này bằng 1 tên khác là
aliasname
Cú pháp 2 cho phép khai báo 1 function với tên là
name
ở thư viện tên là
libname
, ta có thể gọi function này bằng 1 tên khác là
aliasname
và truyền cho nó 1 danh sách đối số tương thích với
arglist
. Sau khi hoàn thành, function sẽ trả về 1 giá trị kết quả thuộc kiểu
type
.
Chi tiết về sự khác biệt giữa subroutine và function sẽ được trình bày trong chương 9 và 10.
và Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 18
Thí dụ về các lệnh định nghĩa VB
Chúng ta đã trình bày qui trình thiết kế trực quan giao diện của trình MiniCalculator cho phép giả lập 1 máy tính tay đơn giản. Chương trình này chỉ có 1 form, trong form này chúng ta sẽ định nghĩa các hằng, biến cục bộ sau đây để phục vụ hoạt động cho ứng dụng : Option Explicit Const IDC_EQUAL = Const IDC_ADD = 1 Const IDC_SUB = 2 Const Const IDC_MUL = IDC_DIV = 4 3 0 ' định nghĩa các hằng gợi nhớ miêu tả toán tử Private Private Private Private Private Private Private Private dblDispValue As dblOldValue dblMemValue blnFpoint As bytPosDigit intPosNeg As As As bytOperationId blnFAfterOp Double As Double Double Boolean Integer As Byte As Byte Boolean ' biến lưu giá trị đang hiển thị ' biến lưu giá trị trước đó ' biến lưu giá trị trong bộ nhớ ' trạng thái nhập số nguyên/lẻ ' vị trí lý số lẻ đang nhập ' trạng thái miêu tả giá trị âm/dương ' id của phép toán cần thực hiện ' trạng thái nhập ký số đầu sau phép toán Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 19
Slide này để trống
Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
Môn Tin học Chương 6 : Các lệnh định nghĩa & khai báo VB Slide 20