Tải bản đầy đủ (.pdf) (41 trang)

BÀI 6 THỦ TỤC (SUB) VÀ HÀM (FUNCTION)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.11 MB, 41 trang )

BÀI 6:
THỦ TỤC (SUB) VÀ HÀM (FUNCTION)
Các lệnh lặp
Sử dụng các điều khiển ListBox, NumericUpDown,
TextBox nhiều dòng
Chuyển điều khiển trên Form
Vô hiệu hóa và kích hoạt điều khiển
Sử dụng đối tượng String
Hệ thống bài cũ
Các lệnh lặp
Sử dụng các điều khiển ListBox, NumericUpDown,
TextBox nhiều dòng
Chuyển điều khiển trên Form
Vô hiệu hóa và kích hoạt điều khiển
Sử dụng đối tượng String
Hàm và Thủ tục
2
Biết về tổ chức ứng dụng, khái niệm “chia để trị”
Biết cách sử dụng Function và Sub
Biết cách sử dụng tham số Optional
Hiểu về phạm vị biến
Hiểu về ép kiểu ngầm định thu hẹp và sử dụng lớp
Convert để ép kiểu tường minh
Hiểu về cách sử dụng các tùy chọn của trình gỡ lỗi
Mục tiêu bài học
Biết về tổ chức ứng dụng, khái niệm “chia để trị”
Biết cách sử dụng Function và Sub
Biết cách sử dụng tham số Optional
Hiểu về phạm vị biến
Hiểu về ép kiểu ngầm định thu hẹp và sử dụng lớp
Convert để ép kiểu tường minh


Hiểu về cách sử dụng các tùy chọn của trình gỡ lỗi
Hàm và Thủ tục
3
Ứng dụng được phân chia
thành nhiều thành phần nhỏ
hơn để dễ quản lý
Kỹ thuật này gọi là “Chia để
trị”
Kỹ thuật này giúp đơn giản
hóa việc thiết kế, phát triển
và bảo trì ứng dụng cỡ vừa và
lớn
Tổ chức trong ứng dụng
Ứng
dụng
Lớp Lớp
Ứng dụng được phân chia
thành nhiều thành phần nhỏ
hơn để dễ quản lý
Kỹ thuật này gọi là “Chia để
trị”
Kỹ thuật này giúp đơn giản
hóa việc thiết kế, phát triển
và bảo trì ứng dụng cỡ vừa và
lớn
Hàm và Thủ tục
4
Thủ tục Thủ tục Thủ tục
Thủ tục gồm một tập các dòng lệnh dùng để thực hiện một tác vụ
cụ thể. Thủ tục không trả về giá trị nào

Visual Basic cung cấp nhiều thủ tục có sẵn cho phép phát triển ứng
dụng một cách nhanh chóng, dễ dàng.
Có thể tự tạo cho mình các thủ tục để thực hiện công việc nhất định
và có thể dùng lại về sau
Thủ tục
Thủ tục gồm một tập các dòng lệnh dùng để thực hiện một tác vụ
cụ thể. Thủ tục không trả về giá trị nào
Visual Basic cung cấp nhiều thủ tục có sẵn cho phép phát triển ứng
dụng một cách nhanh chóng, dễ dàng.
Có thể tự tạo cho mình các thủ tục để thực hiện công việc nhất định
và có thể dùng lại về sau
Hàm và Thủ tục
5
Hàm gồm một tập các dòng lệnh dùng để thực hiện một tác vụ cụ
thể. Hàm luôn luôn trả về một giá trị
Visual Basic cung cấp nhiều hàm có sẵn cho phép phát triển ứng
dụng một cách nhanh chóng, dễ dàng, ví dụ:
Có thể tự tạo cho mình các hàm để thực hiện công việc nhất định và
có thể dùng lại về sau
Hàm
Thủ tục
Mô tả
Ví dụ
Math.Max(x,y)
Trả về giá trị lớn
hơn của x và y
Math.Max(2.3,
12.7) là 12.7
Hàm gồm một tập các dòng lệnh dùng để thực hiện một tác vụ cụ
thể. Hàm luôn luôn trả về một giá trị

Visual Basic cung cấp nhiều hàm có sẵn cho phép phát triển ứng
dụng một cách nhanh chóng, dễ dàng, ví dụ:
Có thể tự tạo cho mình các hàm để thực hiện công việc nhất định và
có thể dùng lại về sau
Hàm và Thủ tục
6
Trả về giá trị lớn
hơn của x và y
Math.Max(2.3,
12.7) là 12.7
Math.Min(x,y)
Trả về giá trị nhỏ
hơn của x và y
Math.Min(2.3,
12.7) là 2.3
Math.Sqrt(x)
Trả về căn bậc hai
của x
Math.Sqrt(9) là 3.0
Val(x)
Trả về giá trị số của
biến x
Val(“5”) là 5
Val(“abc5”) là 0
Function trả về giá trị sau khi thực hiện
Định nghĩa Function gồm 3 phần chính
Tiêu đề
Thân thủ tục
Kết thúc thủ tục
Hàm (Function)

Hàm và Thủ tục
7
Function tinhBinhPhuong (ByVal input As Double) As Double
[Thân thủ tục]
Return
End Function
Tiêu đề
Kết thúc
thủ tục
Tiêu đề
Tham số cho phép thủ tục nhận dữ liệu và thao tác trên nó
Có thể có nhiều tham số, các tham số cách nhau bởi dấu phẩy
Thân Function
Chứa mã thực hiện các hành động
Thao tác trên tham số của danh sách tham số và trả về kết
quả
Các tham số chỉ được dùng trong thân hàm
Function
Function tinhBinhPhuong (ByVal x As Double) As Double
Tên thủ tục
Danh sách tham số
Tên tham số Kiểu tham số
Kiểu trả về
Tiêu đề
Tham số cho phép thủ tục nhận dữ liệu và thao tác trên nó
Có thể có nhiều tham số, các tham số cách nhau bởi dấu phẩy
Thân Function
Chứa mã thực hiện các hành động
Thao tác trên tham số của danh sách tham số và trả về kết
quả

Các tham số chỉ được dùng trong thân hàm
Hàm và Thủ tục
8
Cú pháp khai báo:
[ Public, Private] Function TenSub[( ThamSo1,ThamSo2,…)]
As KieuGiaTri
' Các thao tác của hàm
Return GiaTri
End Function
Ví dụ1:
Public Function() As Integer
‘ Các thao tác
Return GiaTri
End Function
Function
Cú pháp khai báo:
[ Public, Private] Function TenSub[( ThamSo1,ThamSo2,…)]
As KieuGiaTri
' Các thao tác của hàm
Return GiaTri
End Function
Ví dụ1:
Public Function() As Integer
‘ Các thao tác
Return GiaTri
End Function
Hàm và Thủ tục
9
Định nghĩa Hàm:
Ví dụ 1: Tính diện tích hình chữ nhật có 2 cạnh là 10,20

Public Function TinhDienTich() As Double
Dim a As Double = 10
Dim b As Double = 20
Dim s As Double
s= a*b
Return s
End Function
Function
Định nghĩa Hàm:
Ví dụ 1: Tính diện tích hình chữ nhật có 2 cạnh là 10,20
Public Function TinhDienTich() As Double
Dim a As Double = 10
Dim b As Double = 20
Dim s As Double
s= a*b
Return s
End Function
Hàm và Thủ tục
10
Định nghĩa Hàm:
Ví dụ 2: Tính diện tích hình chữ nhật có 2 cạnh là a,b
Public Function TinhDienTich(ByVal a As Integer, ByVal b As
Integer)
Dim a,b,s As Integer
s=a*b
Return s
End Function
Function
Định nghĩa Hàm:
Ví dụ 2: Tính diện tích hình chữ nhật có 2 cạnh là a,b

Public Function TinhDienTich(ByVal a As Integer, ByVal b As
Integer)
Dim a,b,s As Integer
s=a*b
Return s
End Function
Hàm và Thủ tục
11
Cú pháp gọi Hàm không có tham số:
Ví dụ 1: Gọi hàm tính diện tích với kiểu trả về là Double
Dim DT As Double=TinhDienTich()
Cú pháp gọi Hàm có tham số:
Ví dụ 2: Gọi hàm tính diện tích với kiểu trả về là Integer,
2 tham số truyền vào là 10,20
Dim DT As Integer =TinhDienTich(10,20)
Function
Cú pháp gọi Hàm không có tham số:
Ví dụ 1: Gọi hàm tính diện tích với kiểu trả về là Double
Dim DT As Double=TinhDienTich()
Cú pháp gọi Hàm có tham số:
Ví dụ 2: Gọi hàm tính diện tích với kiểu trả về là Integer,
2 tham số truyền vào là 10,20
Dim DT As Integer =TinhDienTich(10,20)
Hàm và Thủ tục
12
Gọi Function bằng cách dùng tên Function, tiếp theo là cặp
ngoặc đơn chứa đối số
Sau khi hoàn thành tác vụ, hàm được gọi trả lại quyền
điều khiển cho lệnh gọi
Chú ý rằng giá trị của đối số phải tương thích với kiểu

tham số
Demo gọi Function
Gọi Function bằng cách dùng tên Function, tiếp theo là cặp
ngoặc đơn chứa đối số
Sau khi hoàn thành tác vụ, hàm được gọi trả lại quyền
điều khiển cho lệnh gọi
Chú ý rằng giá trị của đối số phải tương thích với kiểu
tham số
Hàm và Thủ tục
13
Gọi hàm
Khi điều khiển chương trình gặp lời gọi Function
Square(sideA). Tại đây ứng dụng tạo bản sao cho giá trị
của biến sideA và điều khiển chương trình chuyển đến
dòng đầu tiên của Function Square
Thứ tự thực thi khi gọi Function



Square(sideA)
….
….



Thủ tục gọi Hàm được gọi
lời gọi
hàm
1
2

Khi điều khiển chương trình gặp lời gọi Function
Square(sideA). Tại đây ứng dụng tạo bản sao cho giá trị
của biến sideA và điều khiển chương trình chuyển đến
dòng đầu tiên của Function Square
Hàm và Thủ tục
14



Square(sideA)
….
….



lời gọi
hàm
3
Từ khóa ByVal cho biết ứng dụng sẽ tạo giá trị bản sao
của đối số và truyền giá trị này vào Function, Sub.
Function, Sub sẽ nhận bản sao đó và lưu trong tham số
Khi thực thi Function, Sub, ứng dụng sẽ thao tác trên
tham số này
 Giá trị của đối số không bị thay đổi
Từ khóa ByVal
Từ khóa ByVal cho biết ứng dụng sẽ tạo giá trị bản sao
của đối số và truyền giá trị này vào Function, Sub.
Function, Sub sẽ nhận bản sao đó và lưu trong tham số
Khi thực thi Function, Sub, ứng dụng sẽ thao tác trên
tham số này

 Giá trị của đối số không bị thay đổi
Hàm và Thủ tục
15
Khi gặp từ khóa return, giá trị bên phải return được trả
về vị trí lời gọi Function.
Ứng dụng sẽ không thực thi những lệnh sau lệnh return
Sau khi trả về, tham số chứa bản sao giá trị sẽ bị hủy
Từ khóa return



Square(sideA)
….
….



return input
……
……
Thủ tục gọi Function được gọi
1
2
Khi gặp từ khóa return, giá trị bên phải return được trả
về vị trí lời gọi Function.
Ứng dụng sẽ không thực thi những lệnh sau lệnh return
Sau khi trả về, tham số chứa bản sao giá trị sẽ bị hủy
Hàm và Thủ tục
16




Square(sideA)
….
….



return input
……
……
lời gọi
Function
1
2
3
Từ khóa return
Hàm và Thủ tục
17
Sau khi thực thi Function, giá trị sẽ được trả về tại vị trí lời gọi
Function. Ứng dụng sẽ thực hiện lệnh tiếp theo là gán giá trị trả
về của Function Square cho biến squareSideA
Sub là một tập mã thực hiện một tác vụ cụ thể nhưng
không trả về kết quả
Thủ tục (Sub)
Sub tên_thu_tuc (ByVal tham_so1 As kieu_tham_so1)
//Thân thủ tục
End Sub
Tiêu đề
Kết thúc

thủ tục
không có
kiểu trả về
Hàm và Thủ tục
18
Sub tên_thu_tuc (ByVal tham_so1 As kieu_tham_so1)
//Thân thủ tục
End Sub
Kết thúc
thủ tục
không có
kiểu trả về
Cú pháp khai báo:
[ Public, Private] Sub TenSub[( ThamSo1,ThamSo2,…)]
' Các thao tác của thủ tục
End Sub
Ví dụ1:
Public Sub()
‘ Các thao tác
End Sub
Ví dụ2:
Public Sub(ByVal ThamSo1 As Integer)
‘ Các thao tác
End Sub
Sub
Cú pháp khai báo:
[ Public, Private] Sub TenSub[( ThamSo1,ThamSo2,…)]
' Các thao tác của thủ tục
End Sub
Ví dụ1:

Public Sub()
‘ Các thao tác
End Sub
Ví dụ2:
Public Sub(ByVal ThamSo1 As Integer)
‘ Các thao tác
End Sub
Hàm và Thủ tục
19
Định nghĩa thủ tục:
Ví dụ 1: In ra màn hình các số từ 0 đến 10
Public Sub PrintNumber()
For Dim i As Integer 0 to 10
Console.WriteLine(i.ToString())
Next
End Sub
Ví dụ 2: In ra màn hình các số từ a đến b
Public Sub PrintNumber(ByVal a As Integer, ByVal b As Integer)
For Dim i As Integer a to b
Console.WriteLine(i.ToString())
Next
End Sub
Sub
Định nghĩa thủ tục:
Ví dụ 1: In ra màn hình các số từ 0 đến 10
Public Sub PrintNumber()
For Dim i As Integer 0 to 10
Console.WriteLine(i.ToString())
Next
End Sub

Ví dụ 2: In ra màn hình các số từ a đến b
Public Sub PrintNumber(ByVal a As Integer, ByVal b As Integer)
For Dim i As Integer a to b
Console.WriteLine(i.ToString())
Next
End Sub
Hàm và Thủ tục
20
Cú pháp gọi thủ tục không có tham số:
Ví dụ 1: Gọi thủ tục in ra màn hình các số từ 0 đến 10
PrintNumber()
Cú pháp gọi thủ tục có tham số:
Ví dụ 2: Gọi thủ tục in ra màn hình các số từ 10 đến 20
PrintNumber(10,20)
Sub
Cú pháp gọi thủ tục không có tham số:
Ví dụ 1: Gọi thủ tục in ra màn hình các số từ 0 đến 10
PrintNumber()
Cú pháp gọi thủ tục có tham số:
Ví dụ 2: Gọi thủ tục in ra màn hình các số từ 10 đến 20
PrintNumber(10,20)
Hàm và Thủ tục
21
Chương trình thường phải gọi thủ tục nhiều lần với cùng
một giá trị đối số cho một tham số đặc biệt  Dùng tham
số Optional
Tham số Optional là tham số có giá trị mặc định
Có ba quy tắc sử dụng tham số Optional
Tham số Optional phải có giá trị mặc định
Giá trị mặc định phải là biểu thức không đổi

Tất cả các tham số xuất hiện sau tham số Optional trong
danh sách tham số đều là tham số Optional
Tham số Optional
Chương trình thường phải gọi thủ tục nhiều lần với cùng
một giá trị đối số cho một tham số đặc biệt  Dùng tham
số Optional
Tham số Optional là tham số có giá trị mặc định
Có ba quy tắc sử dụng tham số Optional
Tham số Optional phải có giá trị mặc định
Giá trị mặc định phải là biểu thức không đổi
Tất cả các tham số xuất hiện sau tham số Optional trong
danh sách tham số đều là tham số Optional
Hàm và Thủ tục
22
Function tinhTheTich( Optional ByVal dai As Integer = 1_
Optional ByVal rong As Integer = 1, _
Optional ByVal cao As Integer = 1 ) As Integer
Return dai * rong * cao
End Function
giá trị
mặc định
tinhTheTich()
Trả về 1, sử dụng giá trị mặc định cho chiều dài, chiều rộng và
chiều cao
tinhTheTich(10)
Trả về 10, sử dụng giá trị mặc định cho chiều rộng và chiều cao
tinhTheTich(10,20)
Trả về 200, sử dụng giá trị mặc định cho chiều cao
tinhTheTich(10,20,30)
Trả về 6000, không sử dụng giá trị mặc định

tinhTheTich(,20,30)
Trả về 60, sử dụng giá trị mặc định cho chiều dài
Trong lời gọi thủ tục, khi đối số của tham số Optional được
bỏ qua, trình biên dịch sẽ viết lại lời gọi thủ tục và chèn giá trị
mặc định của tham số Optional
Tham số Optional
tinhTheTich()
Trả về 1, sử dụng giá trị mặc định cho chiều dài, chiều rộng và
chiều cao
tinhTheTich(10)
Trả về 10, sử dụng giá trị mặc định cho chiều rộng và chiều cao
tinhTheTich(10,20)
Trả về 200, sử dụng giá trị mặc định cho chiều cao
tinhTheTich(10,20,30)
Trả về 6000, không sử dụng giá trị mặc định
tinhTheTich(,20,30)
Trả về 60, sử dụng giá trị mặc định cho chiều dài
Trong lời gọi thủ tục, khi đối số của tham số Optional được
bỏ qua, trình biên dịch sẽ viết lại lời gọi thủ tục và chèn giá trị
mặc định của tham số Optional
Hàm và Thủ tục
23
Phạm vi module
Biến được khai báo bắt đầu từ sau từ khóa Class và kết thúc trước
lệnh End Class được gọi là biến thực thể.
Biến thực thể có phạm vi module
Biến thực thể là biến được khai báo trong lớp và ngoài các
phương thức
Biến thực thể có thể được tham chiếu từ mọi thủ tục trong lớp
khai báo biến đó

Phạm vi thủ tục
Biến được khai báo bên trong thủ tục có phạm vi thủ tục
Biến có phạm vi thủ tục không thể được tham chiếu từ bên ngoài
thủ tục mà chúng khai báo
Tham số của thủ tục có phạm vi thủ tục
Phạm vi biến
Phạm vi module
Biến được khai báo bắt đầu từ sau từ khóa Class và kết thúc trước
lệnh End Class được gọi là biến thực thể.
Biến thực thể có phạm vi module
Biến thực thể là biến được khai báo trong lớp và ngoài các
phương thức
Biến thực thể có thể được tham chiếu từ mọi thủ tục trong lớp
khai báo biến đó
Phạm vi thủ tục
Biến được khai báo bên trong thủ tục có phạm vi thủ tục
Biến có phạm vi thủ tục không thể được tham chiếu từ bên ngoài
thủ tục mà chúng khai báo
Tham số của thủ tục có phạm vi thủ tục
Hàm và Thủ tục
24
Phạm vi khối lệnh
Biến được khai báo trong khối lệnh có phạm vi khối lệnh
Bắt đầu từ vị trí biến được khai báo và kết thúc ở dòng
lệnh cuối cùng của khối lệnh (ví dụ như Else hoặc End If)
Biến có phạm vi thủ tục và biến có phạm vi khối lệnh
được gọi là biến cục bộ
Nếu biến cục bộ có cùng tên với biến thực thể, khi truy
cập đến tên biến này, ứng dụng sẽ truy cập đến biến cục
bộ

Phạm vi biến
Phạm vi khối lệnh
Biến được khai báo trong khối lệnh có phạm vi khối lệnh
Bắt đầu từ vị trí biến được khai báo và kết thúc ở dòng
lệnh cuối cùng của khối lệnh (ví dụ như Else hoặc End If)
Biến có phạm vi thủ tục và biến có phạm vi khối lệnh
được gọi là biến cục bộ
Nếu biến cục bộ có cùng tên với biến thực thể, khi truy
cập đến tên biến này, ứng dụng sẽ truy cập đến biến cục
bộ
Hàm và Thủ tục
25

×