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 Report

Transcript 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.

là danh sách các tham số hình thức (slide kế).

là kiểu dữ liệu trả về.

do nsd đặt, dùng để gọi hàm sau này.

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, giống trong định nghĩa hàm.

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

[( )] [ As ] Method tính bên trong đối tượng nhưng dưới sự kiểm soát của đối tượng đó.

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

([ , ] ) Method

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

([ , ] ) Method

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