Xem mẫu

Lệnh gọi thủ tục (tt)
Sau khi đã định nghĩa thủ tục, ta có thể dùng (gọi) nó. Thủ tục chỉ
được thi hành khi người ta gọi nó bằng lệnh gọi thủ tục. Cú pháp của
lệnh gọi như sau :
[Call] name [arglist]
Ví dụ : giả sử ta đã định nghĩa (viết) 1 thủ tục sau đây :
Private Sub Update_Display(d As Byte)
nó cho phép hiệu chỉnh giá trị Display sau khi người dùng ấn thêm ký
số d. Như vậy khi người dùng ấn thêm ký số 5, ta sẽ thực hiện gọi thủ
tục như sau :
Call Update_Display (5)
hay : Update_Display (5)
Lưu ý : Trong trường hợp gọi thủ tục không có bất kỳ tham số nào ta nên
dùng thêm từ khóa "Call' để chương trình trong sáng, dễ đọc.

‰

Môn : Tin học
Chương 8 : Các lệnh thực thi VB
Slide 235

Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM

MÔN TIN HỌC
Chương 9

ĐỊNH NGHĨA THỦ TỤC & SỬ DỤNG
9.1 Thủ tục & tầm vực sử dụng thủ tục
9.2 Cú pháp định nghĩa hàm.
9.3 Cú pháp định nghĩa thủ tục
9.4 Gọi thủ tục
9.5 Cơ chế truyền tham số
9.6 Các thủ tục định nghĩa sẵn

Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM

Môn : Tin học
Chương 9 : Định nghĩa thủ tục & sử dụng
Slide 236

118

Nhắc lại cấu trúc tổ chức 1 chương trình
‰

‰

Một chương trình thường cung cấp nhiều chức năng cho người dùng ⇒
Chương trình thường là 1 hệ thống phức tạp. Để dễ quản lý và xây dựng
chương trình, người ta thường chia nó ra nhiều đơn vị nhỏ hơn. Hiện có 2
phương pháp chia nhỏ chương trình :
ƒ phương pháp có cấu trúc : chương trình được chia nhỏ thành nhiều
module chức năng, mỗi module chứa nhiều điểm nhập (entry), mỗi
điểm nhập cung cấp 1 dịch vụ (chức năng) rõ ràng, đơn giản nào đó.
Ta gọi mỗi điểm nhập là thủ tục thực hiện chức năng tương ứng.
ƒ phương pháp hướng đối tượng : chương trình được chia nhỏ thành
nhiều đối tượng, mỗi đối tượng chứa nhiều điểm nhập (entry), mỗi
điểm nhập cung cấp 1 dịch vụ (chức năng) rõ ràng, đơn giản nào đó.
Ta gọi mỗi điểm nhập là thủ tục thực hiện chức năng tương ứng.
Tóm lại, dù dùng phương pháp chia nhỏ chương trình nào thì đơn vị chức
năng nhỏ nhất mà người lập trình có thể xây dựng và dùng (gọi) lại nhiều
lần trong chương trình là thủ tục.
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM

Môn : Tin học
Chương 9 : Định nghĩa thủ tục & sử dụng
Slide 237

9.1 Phân loại thủ tục trong VB
‰

‰

Nếu ta phân tích chương trình theo cấu trúc thì chương trình VB là tập các
standard module, trong mỗi module ta có thể định nghĩa n thủ tục khác nhau
thuộc 1 trong 2 dạng :
ƒ thủ tục - Sub : 1 đoạn lệnh thực thi VB để thực hiện 1 chức năng rõ ràng,
đơn giản nhưng không trả về giá trị kèm theo tên thủ tục.
ƒ hàm - Function : 1 đoạn lệnh thực thi VB để thực hiện 1 chức năng rõ ràng,
đơn giản và trả về giá trị kèm theo tên hàm.
Nếu ta phân tích chương trình theo hướng đối tượng thì chương trình VB là tập
các form hay class module, trong mỗi module ta có thể định nghĩa n thủ tục
khác nhau thuộc 1 trong 3 dạng :
ƒ thủ tục - Sub : 1 đoạn lệnh thực thi VB để thực hiện 1 chức năng rõ ràng,
đơn giản nhưng không trả về giá trị kèm theo tên thủ tục.
ƒ hàm - Function : 1 đoạn lệnh thực thi VB để thực hiện 1 chức năng rõ ràng,
đơn giản và trả về giá trị kèm theo tên hàm.
ƒ truy xuất thuộc tính - Property : 1 đoạn lệnh thực thi VB để đọc/ghi 1 thuộc
tính tương ứng của đối tượng. Có 3 thủ tục loại này là Get, Set và Let.
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM

Môn : Tin học
Chương 9 : Định nghĩa thủ tục & sử dụng
Slide 238

119

Tầm vực sử dụng thủ tục trong VB
‰

‰

Trong mỗi standard module, ta có thể xác định tầm vực sử dụng của từng thủ
tục :
ƒ cục bộ trong module : dùng từ khóa Private trong lệnh định nghĩa thủ tục.
ƒ toàn cục trong chương trình : dùng từ khóa Public trong lệnh định nghĩa thủ
tục.
Trong mỗi form hay class module, ta có thể xác định tầm vực sử dụng của từng
thủ tục :
ƒ cục bộ trong module (đối tượng) : dùng từ khóa Private trong lệnh định nghĩa
thủ tục.
ƒ cục bộ trong Project : dùng từ khóa Friend trong lệnh định nghĩa thủ tục.
ƒ công cộng (ai dùng cũng được) : dùng từ khóa Public trong lệnh định nghĩa
thủ tục. Các thủ tục công cộng của đối tượng được gọi là method để phân
biệt với Sub/Function.
ƒ Về nguyên tắc, các thủ tục Property Get, Set và Let đều phải có tầm vực
công cộng (dùng từ khóa Public).

Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM

Môn : Tin học
Chương 9 : Định nghĩa thủ tục & sử dụng
Slide 239

9.2 Cú pháp định nghĩa hàm - Function
‰

‰

‰

Cú pháp để định nghĩa 1 hàm :
[Public | Private | Friend] [Static] Function name [(arglist)] [As type]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]
End Function
Dùng từ khóa Public để định nghĩa hàm có tầm vực toàn cục, nghĩa là
bất kỳ lệnh nào của chương trình đều có thể gọi hàm Public.
Dùng từ khóa Friend để định nghĩa method thuộc 1 class module nhưng
chỉ có tầm vực cục bộ trong Project, nghĩa là chỉ có các lệnh trong cùng
Project mới có thể gởi thông điệp đến hàm Friend của đối tượng đó, còn
các lệnh ở ngoài Project thì không thấy hàm Friend của đối tượng này.
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM

Môn : Tin học
Chương 9 : Định nghĩa thủ tục & sử dụng
Slide 240

120

Cú pháp định nghĩa hàm - Function (tt)
‰

‰

‰

‰
‰

Dùng từ khóa Private để định nghĩa hàm có tầm vực cục bộ trong
module, nghĩa là chỉ có các lệnh trong cùng module mới có thể gọi hàm
Private trong module tương ứng.
Dùng từ khóa Static để định nghĩa các biến cục bộ trong hàm đều là
Static, nghĩa là giá trị của chúng vẫn tồn tại qua các lần gọi khác nhau
đến hàm này.
[statements] là danh sách các lệnh định nghĩa biến, hằng, kiểu cục bộ
trong function và các lệnh thực thi miêu tả chính xác chức năng của
hàm.
Lệnh gán name = expression cho phép gán giá trị trả về cho lệnh gọi
hàm.
Lệnh Exit Function cho phép trả ngay điều khiển về lệnh gọi hàm này
(thay vì thực thi tiếp các lệnh còn lại của hàm).

Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM

Môn : Tin học
Chương 9 : Định nghĩa thủ tục & sử dụng
Slide 241

Cú pháp định nghĩa hàm - Function (tt)
‰

‰

‰

‰

arglist là danh sách các tham số hình thức, mỗi tham số được cách
nhau bởi dấu ',' và được định nghĩa theo cú pháp như sau :
[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type]
[=defaultvalue]
Dùng từ khóa Optional để khai báo rằng tham số tương ứng là nhiệm ý
trong lúc gọi hàm : truyền hay không cũng được. Trong trường hợp này
ta nên dùng thêm thành phần [= defaultvalue] để xác định giá trị cần
truyền nhiệm ý.
Dùng từ khóa ByRef để khai báo việc truyền tham số bằng tham khảo,
đây là chế độ truyền tham số nhiệm ý. Ngược lại dùng từ khóa ByVal để
khai báo cơ chế truyền tham số bằng giá trị.
Chỉ có thể dùng từ khóa ParamArray cho tham số cuối trong danh sách
tham số, tham số này cho phép ta truyền bao nhiêu tham số cụ thể cũng
được.
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM

Môn : Tin học
Chương 9 : Định nghĩa thủ tục & sử dụng
Slide 242

121

Thí dụ định nghĩa hàm
‰

Đoạn code sau định nghĩa hàm tính n! giai thừa theo giải thuật đệ qui :
Public Function giaithua(ByVal n As Long) As Long
If n
nguon tai.lieu . vn