Chương 9 Định nghĩa và sử dụng thủ tục Cấu trúc tổ chức một chương trình Có 2 cách tổ chức chương trình.
Download ReportTranscript Chương 9 Định nghĩa và sử dụng thủ tục Cấu trúc tổ chức một chương trình Có 2 cách tổ chức chương trình.
Ch ươ ng 9
Định nghĩa và sử dụng thủ tục
Cấu trúc tổ chức một chương trình
C ó 2 cách tổ chức chương trình : Phương pháp có cấu trúc : Chương trình Module Thủ tục ( Lệnh) phương pháp hướng đối tượng : Chương trình Đối tượng Tác vụ (thủ tục) ( Lệnh) Tóm lại, dù dùng phương pháp 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 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 9 : Định nghĩa và sử dụng thủ tục Slide 2
Phân loại thủ tục trong VB
Trong lập trình cấu trúc, có 2 loại : Sub : không trả trị về, thi hành như một lệnh .
Function : trả trị về, thi hành như một biểu thức .
Theo lập trình hướng đối tượng, có 3 loại : Sub : không trả trị về, thi hành như một lệnh .
Function : trả trị về, thi hành như một biểu thức .
Property : cho phép truy xuất một thuộc tính của đối tượng. Được chia ra 3 loại nhỏ là GET , SET và LET .
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 9 : Định nghĩa và sử dụng thủ tục Slide 3
Tầm vực sử dụng của thủ tục
Trong Standard module, có thể định ra 2 loại tầm vực : Toàn cục : dùng từ khóa Public để định nghĩa.
Cục bộ trong module : dùng từ khóa Private để định nghĩa.
Trong Form hay Class module, có thể định ra 3 loại tầm vực : Công cộng : Phương thức dùng từ khóa (Method) Public để định nghĩa. Còn được gọi là để phân biệt với Sub / Function.
Cục bộ trong Project : dùng từ khóa Friend để định nghĩa.
Cục bộ trong module : dùng từ khóa Private để định nghĩa.
Về nguyên tắc, các thủ tục tầm vực công cộng .
Property Get, Set và Let đều phải 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 9 : Định nghĩa và sử dụng thủ tục Slide 4
Định nghĩa hàm - Function
Cú pháp : [
Public | Private | Friend
] [
Static
] [<
N lệnh>
]
Function
[
(
)
] [
As
<
kiểu>
]
End Function
Public , Static Private , qui định Friend qui định tầm vực.
tất cả các biến trong hàm đều là Static.
Giá trị trả về là
của hàm phải được gán vào một biến có tên chính 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 9 : Định nghĩa và sử dụng thủ tục Slide 5
Danh sách tham số hình thức
Danh sách tham số hình thức có dạng :
[
Optional ] [ ByVal | ByRef ] [ ParamArray
]
[ () ] [ As
] [ =
] Optional
cho biết tham số có thể cung cấp khi gọi hàm hay không cung cấp cũng được. Dùng kết hợp với
ByVal cung qui định tham số hình thức nhận giá trị từ tham số thực (là tham số cấp lúc gọi hàm). Nói cách khác, tham số thực có thể là một biểu thức.
ByRef qui định tham số hình thức nhận tham khảo từ tham số thực. Tham số thực phải là biến. Nếu không có ByVal hay ByRef thì hiểu ngầm là ByRef .
ParamArray chỉ dùng cho số cuối sẽ tương ứng với tham số cuối số thực nhiều hơn tham số hình thức).
của danh sách và được hiểu tham một dãy nhiều tham số (nghĩa là số lượng tham 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 9 : Định nghĩa và sử dụng thủ tục Slide 6
Ví 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 vòng lặp : Private Function giaithua ( ByVal n As Integer ) As Long Dim gt As Long If n <= 0 Then giaithua = -1 Exit Function ' nếu n <=0 thì trả về -1 End If gt=1 Do While n>1 gt = gt * n n = n - 1 Loop giaithua = gt End Function 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 9 : Định nghĩa và sử dụng thủ tục Slide 7
Hàm đệ qui
Hàm tự gọi lại chính nó hàm đệ qui ( recursive ).
trong khi thực hiện các lệnh được gọi là Hàm đệ qui thường rất gọn nhưng khi thi hành sẽ sử dụng bộ nhớ rất nhiều do sinh ra biến cục bộ liên tục.
Đa số các bài toán có dạng f hàm đệ qui.
n
(x)=g(f
n-1
(x)) đều có thể viết thành Đệ qui hổ tương : A gọi B và B gọi lại A.
Định nghĩa hàm nào trước ?
Vấn đề : tham khảo trước = khai báo tham khảo định nghĩa .
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 9 : Định nghĩa và sử dụng thủ tục Slide 8
Định nghĩa thủ tục - Sub
Cú pháp : [
Public | Private | Friend
[ <
N lệnh>
]
End Sub
] [
Static
]
Sub
[
(
)
] Ý nghĩa các thông số Public, Private, Friend, Static,
Các sự kiện tương tác của các đối tượng giao diện đều là Sub.
Sub tham không trực tiếp trả trị về nhưng có thể trả trị gián tiếp qua số biến (ByRef).
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 9 : Định nghĩa và sử dụng thủ tục Slide 9
Ví dụ Sub
Tính tổng các số nguyên từ 1 đến n. Số n nhập từ bàn phím.
Private Sub Main() Dim S As Integer Call TinhTong (S) Debug.Print "Tong = " & S End Sub Private Sub TinhTong ( ByRef Tong As Integer ) Dim n As Integer, i As Integer n = CInt(InputBox("Nhap n =")) Tong = 0 For i = 1 To n Tong = Tong + i Next End Sub 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 9 : Định nghĩa và sử dụng thủ tục Slide 10
Định nghĩa Method Get
Cú pháp :
Public
[ <
N
Property Get
lệnh>
]
End Sub
Get
cho phép bên ngoài có thể đọc giá trị của một thuộ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 9 : Định nghĩa và sử dụng thủ tục Slide 11
Định nghĩa Method Let
Cú pháp :
Public
[ <
N
Property Let
lệnh>
]
End Sub
Let
tượng đó.
cho phép bên ngoài có thể gán giá trị mới cho một thuộc tính bên trong đối tượng nhưng dưới sự kiểm soát của đối 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 9 : Định nghĩa và sử dụng thủ tục Slide 12
Định nghĩa Method Set
Cú pháp :
Public
[ <
N
Property Set
lệnh>
]
End Sub
Set
cho phép bên ngoài có thể kiểm soát của đối tượng đó.
gán tham khảo cho một thuộc tính (kiểu đối tượng) bên trong đối tượng nhưng dưới sự 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 9 : Định nghĩa và sử dụng thủ tục Slide 13
Cơ chế truyền tham số
Tham số hình thức : tham số lúc định nghĩa.
Tham số thực : tham số lúc gọi.
Nguyên tắc truyền tham số : Số lượng bằng nhau.
Tương hợp kiểu.
Tham ứng.
số thực sẽ được gán vào cho tham số hình thức tương Cách gán tham số thực thay đổi tùy theo ByVal hay ByRef : ByVal : gán trị tham số thực có thể là biểu thức .
ByRef : gán tham khảo tham số thực phải là biế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 9 : Định nghĩa và sử dụng thủ tục Slide 14
Cơ chế truyền tham số (tt.2)
// version truyền bằng giá trị Private Sub Hoanvi1 ( ByVal x As Integer, ByVal Dim tmp As Integer tmp = x x = y y = tmp End Sub y As Integer) // version truyền bằng tham khảo Private Sub Hoanvi2 ( ByRef x As Integer, ByRef Dim tmp As Integer tmp = x x = y y = tmp End Sub y As Integer) // version truyền bằng tham khảo Private Sub Hoanvi3 (x As Integer, y As Integer) Dim tmp As Integer tmp = x x = y y = tmp End Sub 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 9 : Định nghĩa và sử dụng thủ tục Slide 15
Cơ chế truyền tham số (tt.3)
Hãy khảo sát kỹ 3 thủ tục hoán vị dữ liệu trong slide trước.
Bây giờ hãy chú ý tới việc sử dụng chúng và kết quả đạt được : ...
Dim intN As Integer Dim intM As Integer intN = 4 intM = 8
intN = 4 intM = 8
Call Hoanvi1 (intN, intM) Call Hoanvi2 (intN, intM) Call Hoanvi3 (intN, intM) ...
intN = 4 intM = 8 intN = 8 intM = 8
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 9 : Định nghĩa và sử dụng thủ tục Slide 16
Các thủ tục định sẵn của VB
Về nguyên tắc, các thủ tục (Sub, Function, Property) phải được định nghĩa trước khi sử dụng.
Tuy nhiên, đối với một số các thủ tục định sẵn của VB, ta có thể gọi bất cứ lúc nào mà không cần phải định nghĩa .
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 9 : Định nghĩa và sử dụng thủ tục Slide 17
Hàm MsgBox - hiển thị thông báo
Cú pháp :
MsgBox (
prompt [, buttons ] [, title ] [, helpfile , context
]) trong đó :
prompt
là biểu thức chuỗi miêu tả thông báo cần hiển thị.
buttons
chọn số lượng và loại nút nhấn hiện trên form.
title
là biểu thức chuỗi miêu tả title bar của form thông báo.
helpfile
là biểu thức chuỗi miêu tả đường dẫn file Help được dùng với form thông báo (theo cơ chế context-sensitive Help).
context
là biểu thức số miêu tả chỉ số của "topic" cần dùng trong file Help Thường để gọi dễ dàng hàm
prompt
bắt buộc.
MsgBox , ta chỉ cần miêu tả tham số Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
MSDN
Môn Tin học Chương 9 : Định nghĩa và sử dụng thủ tục Slide 18
Hàm InputBox - nhập chuỗi
Cú pháp :
InputBox (
prompt
[,
title
] [,
default
] [,
xpos
] [,
ypos
] [,
helpfile
,
context
]
)
trong đó :
prompt , title, helpfile, context
: giống trong MsgBox.
xpos , ypos
: biểu thức số chỉ tọa độ (x,y) của điểm sổ (mặc định là giữa màn hình).
default
: trên-trái của cửa biểu thức chuỗi miêu tả giá trị default của chuỗi được nhập.
Thường để gọi dễ dàng hàm số
prompt
bắt buộc.
InputBox , ta chỉ cần miêu tả tham Khoa Khoa học & Kỹ thuật máy tính Trường ĐH Bách Khoa Tp.HCM
MSDN
Môn Tin học Chương 9 : Định nghĩa và sử dụng thủ tục Slide 19
Hàm chuyển đổi kiểu
VB cung xác định : cấp các hàm sau để ta có thể chuyển giá trị từ kiểu nào đó về kiểu
CBool
(expression) : chuyển trị của biểu thức về kiểu
CByte
(expression) :
Boolean
chuyển trị của biểu thức về kiểu
Byte CCur CDate
(expression) : (expression) : chuyển trị của biểu thức về kiểu
Currency
chuyển trị của biểu thức về kiểu
Date CDbl
(expression) : chuyển trị của biểu thức về kiểu
Double CDec
(expression) : chuyển trị của biểu thức về kiểu
Decimal CInt
(expression) : chuyển trị của biểu thức về kiểu
Integer CLng
(expression) : chuyển trị của biểu thức về kiểu
Long CSng
(expression) : chuyển trị của biểu thức về kiểu
Single CStr
(expression) : chuyển trị của biểu thức về kiểu
String CVar
(expression) : chuyển trị của biểu thức về kiểu
Variant
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 9 : Định nghĩa và sử dụng thủ tục Slide 20
Các hàm thư viện liên kết động
Khi các viết code VB, người lập trình còn có thể sử dụng các hàm / thủ tục trong thư viện liên kết động .
Thư viện liên kết động thường là các tập tin *.dll lưu giữ các hàm / thủ tục.
Hàm / thủ tục trong thư viện DLL được nạp vào bộ nhớ và thi hành lúc chạy chương trình (run-time).
Sử dụng thư viện DLL giúp giảm nhẹ không gian lưu trữ chương trình vì chỉ cần một thư viện DLL dùng chung cho mọi ứng dụng.
Hệ điều hành Windows cung cấp nhiều thư viện DLL dưới dạng các hàm API (Application Programming Interface).
Chương trình VB có thể gọi bất kỳ hàm nào trong thư viện này theo cơ chế liên kết động như đã trình bày ở trên.
Muốn sử dụng một hàm / thủ tục trong thư viện DLL, người lập trình phải khai báo bằng lệnh
Declare
(Ch 6).
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 9 : Định nghĩa và sử dụng thủ tục Slide 21