Upload
merrill-evans
View
52
Download
2
Embed Size (px)
DESCRIPTION
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 : - PowerPoint PPT Presentation
Citation preview
Các lệnh định nghĩa & khai Các lệnh định nghĩa & khai báo VBbáo VB
Chương 6Chương 6
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 22
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
Tổng quát về code của 1 ứng dụng VBTổng quát về code của 1 ứng dụng VBVB dùng VB dùng ProjectProject để quản lý các thành phần cấu thành 1 ứng dụng VB. để quản lý các thành phần cấu thành 1 ứng dụng VB.
Code của VBCode của VB được dùng trong các module với mục đích khác nhau : được dùng trong các module với mục đích khác nhau :
Class moduleClass module : hiện thực lớp các đối tượng có cấu trúc và hành vi : hiện thực lớp các đối tượng có cấu trúc và hành vi giống nhau.giống nhau.
Form moduleForm module : là trường hợp đặc biệt của class module, hiện thực : là trường hợp đặc biệt của class module, hiện thực các các sự kiện tương tácsự kiện tương tác của các đối tượng trên form giao diện. của các đối tượng trên form giao diện.
Module (Standard module)Module (Standard module) : là đơn vị phần mềm nhỏ với một chức : 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 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ý là công cụ chia nhỏ ứng dụng ra nhiều phần để dễ quản lý VB hỗ VB hỗ trợ cả 2 phương pháp lập trình : cấu trúc và OOP.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ỏ, Ngoại trừ một vài ngoại lệ nhỏ, tổ chức code tổ chức code của loại module trên hoàn 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 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ủ 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.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.
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 33
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
Tổ chức code trong moduleTổ chức code trong module
Biến / Hằng
Tác vụ
Định nghĩa
Khai báo
General
HIện thực
Hiện thực các hàm biến cố
Hiện thực các hàm bên trong
Định nghĩa Biến / Hằng
Lệnh thực thi
Định nghĩa Biến / Hằng
Lệnh thực thi
Mo
du
le
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 44
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
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,...
Tổng quát về ngôn ngữ VBTổng quát về ngôn ngữ VB
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 55
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
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 biến, hằng, hàm, thủ tục, class trước
khi dùng trong các lệnh thực thi)
Lệnh thực thi : xác định hành động nào đó tác động lên biến, hằng,
đối tượng khi chạy chương trình.
Các ký hiệu cơ bản của ngôn ngữ VBCác ký hiệu cơ bản của ngôn ngữ VB
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 66
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
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 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ễ hiểu hơn.
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
blnFpoint = False
bytPosDigit = 0
txtDisplay.Text = ".0" ' bắt đầu hiển thị .0 lên Display
End Sub
Chú thích trong chương trìnhChú thích trong chương trình
Chú thích
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 77
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
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 cấp thông tin về thủ tục
Chức năng, mục đích.
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.
Chú thích trong chương trình (tt.)Chú thích trong chương trình (tt.)
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 88
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
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 biến : tên, kiểu dữ liệu, tầm vực và thời gian sống.
Để 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
Định nghĩa dữ liệuĐịnh nghĩa dữ liệu
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 99
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
Định nghĩa Hằng gợi nhớĐị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).
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 1010
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
Qui tắc miêu tả các loại giá trịQui tắc miêu tả các loại giá trịGiá trị luận lý : True | False.
Giá trị 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 2 dấu nháy kép liên tiếp để miêu tả 1 ký tự nháy kép trong giá trị chuỗi (cơ chế dùng Escape để giải quyết nhầm lẫn).
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 1111
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
Qui tắc miêu tả các loại giá trị (tt.)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).
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 1212
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
Định nghĩa biếnĐịnh nghĩa biếnCú 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).
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 1313
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
Phát biểu định nghĩa biến (tt.)Phát biểu định nghĩa biến (tt.)Sử dụng tiếp vĩ ngữ qui định kiểu (Ch 5) : $-String, %-Integer,
&-Long, !-Single, #-Double, @-Currency, 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
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 1414
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
Định nghĩa kiểu user-definedĐịnh nghĩa kiểu user-definedKiể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]+
End TypeVí dụ : Type SystemInfo
CPU As Variant
Memory As Long
DiskDrives(25) As String ' Fixed-size array.
VideoColors As Integer
Cost As Currency
PurchaseDate As Variant
End Type
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 1515
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
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 {0|1} 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ì VB chọn cận dưới là 0.Ví dụ : Dim vector(50) As Double 'vector có 51 phần từ từ 0 - 51Dim MyArray (1 to 100, 1 to 50) As Double
Định nghĩa kiểu ArrayĐịnh nghĩa kiểu Array
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 1616
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
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 1Dim 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) 'phân phối phần tử cho ma trận
Định nghĩa kiểu Array (tt.)Định nghĩa kiểu Array (tt.)
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 1717
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
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).
Lệnh khai báo DeclareLệnh khai báo Declare
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 1818
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
Cú pháp 1 :
[Public | Private] Declare Sub name Lib "libname" [Alias "aliasname"] [([arglist])]
Cú pháp 2 :
[Public | Private] Declare Function name Lib "libname" [Alias "aliasname"] [([arglist])] [As type]
Cú pháp 1 cho phép khai báo 1 subroutine với tên là name ở thư viện tên là libname, ta có thể gọi subroutine 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.
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.
Lệnh khai báo Declare (tt.)Lệnh khai báo Declare (tt.)
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 1919
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
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 ExplicitConst IDC_EQUAL = 0 ' định nghĩa các hằng gợi nhớ miêu tả toán tửConst IDC_ADD = 1Const IDC_SUB = 2Const IDC_MUL = 3Const IDC_DIV = 4
Private dblDispValue As Double ' biến lưu giá trị đang hiển thịPrivate dblOldValue As Double ' biến lưu giá trị trước đó Private dblMemValue As Double ' biến lưu giá trị trong bộ nhớPrivate blnFpoint As Boolean ' trạng thái nhập số nguyên/lẻPrivate bytPosDigit As Byte ' vị trí lý số lẻ đang nhậpPrivate intPosNeg As Integer ' trạng thái miêu tả giá trị âm/dươngPrivate bytOperationId As Byte ' id của phép toán cần thực hiệnPrivate blnFAfterOp As Boolean ' trạng thái nhập ký số đầu sau phép toán
Thí dụ về các lệnh định nghĩa VBThí dụ về các lệnh định nghĩa VB
Môn Tin họcMôn Tin họcChương 6 : Các lệnh định nghĩa & khai báo VBChương 6 : Các lệnh định nghĩa & khai báo VB
Slide Slide 2020
Khoa Khoa học & Kỹ thuật máy tínhKhoa Khoa học & Kỹ thuật máy tínhTrường ĐH Bách Khoa Tp.HCMTrường ĐH Bách Khoa Tp.HCM
Slide này để trốngSlide này để trống