SlideShare a Scribd company logo
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 SubKế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
Truyền giá trị
Truyền bằng từ khóa ByVal
Ứng dụng tạo bản sao của giá trị đối số và và truyền bản
sao đó cho thủ tục được gọi.
Những thay đổi thực hiện trên bản sao không làm thay đổi
giá trị ban đầu của biến
Truyền tham chiếu
Truyền bằng từ khóa ByRef
Biến ban đầu trong thủ tục gọi hàm có thể được truy cập
và thay đổi trực tiếp bởi thủ tục được gọi
Hữu ích trong trường hợp thủ tục muốn trả về nhiều hơn
một giá trị
Truyền đối số:
Truyền giá trị và truyền tham chiếu
Truyền giá trị
Truyền bằng từ khóa ByVal
Ứng dụng tạo bản sao của giá trị đối số và và truyền bản
sao đó cho thủ tục được gọi.
Những thay đổi thực hiện trên bản sao không làm thay đổi
giá trị ban đầu của biến
Truyền tham chiếu
Truyền bằng từ khóa ByRef
Biến ban đầu trong thủ tục gọi hàm có thể được truy cập
và thay đổi trực tiếp bởi thủ tục được gọi
Hữu ích trong trường hợp thủ tục muốn trả về nhiều hơn
một giá trị
Hàm và Thủ tục 26
Kiểu giá trị và kiểu tham chiếu
Kiểu giá trị
Biến chứa giá trị của biến
đó
Kiểu tham chiếu
Biến chứa địa chỉ lưu đối
tượng trong bộ nhớ
Dim x As Integer = 7 Dim ten As String = “Nam”
Kiểu dữ liệu trong Visual Basic được chia làm hai loại
7
Hàm và Thủ tục 27
Dim x As Integer = 7
biến x chứa giá trị là 7
Dim ten As String = “Nam”
x “Nam”ten
biến ten chứa địa chỉ
đến String “Nam”
Kiểu giá trị và kiểu tham chiếu
Kiểu giá trị
Tất cả các biến cơ sở đều
có kiểu giá trị, trừ kiểu
String
Kiểu tham chiếu
Tất cả các biến không phải
kiểu giá trị đều thuộc kiểu
tham chiếu
Ví dụ như các biến điều
khiển, các biến này tham
chiếu đến đối tượng
Button, TextBox…
Để tương tác với đối
tượng, sử dụng biến tham
chiếu đến đối tượng để gọi
phương thức hay truy cập
thuộc tính
Tất cả các biến không phải
kiểu giá trị đều thuộc kiểu
tham chiếu
Ví dụ như các biến điều
khiển, các biến này tham
chiếu đến đối tượng
Button, TextBox…
Để tương tác với đối
tượng, sử dụng biến tham
chiếu đến đối tượng để gọi
phương thức hay truy cập
thuộc tính
Hàm và Thủ tục 28
Kiểu giá trị và kiểu tham chiếu
Kiểu tham trị
Khi truyền bằng từ khóa
ByVal, bản sao giá trị của
đối số chính là giá trị mà đối
số đó lưu trữ
Giá trị của đối số không
thay đổi
Kiểu tham chiếu
Khi truyền bằng từ khóa
ByVal, bản sao giá trị của
đối số là địa chỉ tham chiếu
đến đối tượng
Địa chỉ tham chiếu đến đối
tượng không thay đổi
nhưng giá trị của đối tượng
có thể thay đổi
Để tham chiếu đến đối
tượng khác, sử dụng từ
khóa ByRef
Khi truyền bằng từ khóa
ByVal, bản sao giá trị của
đối số chính là giá trị mà đối
số đó lưu trữ
Giá trị của đối số không
thay đổi
Khi truyền bằng từ khóa
ByVal, bản sao giá trị của
đối số là địa chỉ tham chiếu
đến đối tượng
Địa chỉ tham chiếu đến đối
tượng không thay đổi
nhưng giá trị của đối tượng
có thể thay đổi
Để tham chiếu đến đối
tượng khác, sử dụng từ
khóa ByRef
Hàm và Thủ tục 29
Ép kiểu ngầm định
Trình biên dịch tự chuyển kiểu này sang kiểu khác mà
không phải viết mã
Ép kiểu ngầm định mở rộng
Ép kiểu “nhỏ hơn” thành kiểu “lớn hơn”
Không mất dữ liệu
Ép kiểu ngầm định thu hẹp
Ép kiểu “lớn hơn” thành kiểu “nhỏ hơn”
Mất dữ liệu  Gây lỗi logic  Hạn chế ép kiểu ngầm định
thu hẹp bằng cách thiết lập tùy chọn Option Strict là on
Ép kiểu ngầm định
Ép kiểu ngầm định
Trình biên dịch tự chuyển kiểu này sang kiểu khác mà
không phải viết mã
Ép kiểu ngầm định mở rộng
Ép kiểu “nhỏ hơn” thành kiểu “lớn hơn”
Không mất dữ liệu
Ép kiểu ngầm định thu hẹp
Ép kiểu “lớn hơn” thành kiểu “nhỏ hơn”
Mất dữ liệu  Gây lỗi logic  Hạn chế ép kiểu ngầm định
thu hẹp bằng cách thiết lập tùy chọn Option Strict là on
Hàm và Thủ tục 30
Dim x As Double = 4.6
Dim y As Integer = value1
y có giá trị
là 5
Kiểu dữ liệu Có thể được ép kiểu ngầm định thành
những kiểu lớn hơn
Bolean Object
Byte Short, Integer, Long, Decimal, Single,
Double hoặc Object
Char String hoặc Object
Các phép ép kiểu ngầm định mở rộng
Char String hoặc Object
Date Object
Decimal Single, Double hoặc Object
Double Object
Integer Long, Decimal, Single, Double hoặc Object
Hàm và Thủ tục 31
Demo bật tùy chọn Option Strict
Thiết lập tùy
chọn Option
strict là On
Hàm và Thủ tục 32
Thiết lập tùy
chọn Option
strict là On
Khi Option Strict được thiết lập là On, phải viết mã để
thực hiện các phép ép kiểu thu hẹp tường minh
Visual Basic cung cấp lớp Convert để thực hiện các phép
ép kiểu
Lớp Convert
Ép kiểu thành Sử dụng
phương thức
Ví dụ
Hàm và Thủ tục 33
Ép kiểu thành Sử dụng
phương thức
Ví dụ
Integer ToInt32 value = Convert.ToInt32(“24”)
Decimal ToDecimal value = Convert.ToDecimal(“24.1”)
Double ToDouble value = Convert.ToDouble(“24.1”)
Các ToolStripButton gỡ lỗi
Sử dụng trình gỡ lỗi:
Các điều khiển gỡ lỗi
Start Debugging Step Into Step Out
Các ToolStripButton gỡ lỗi
Hàm và Thủ tục 34
Step OverStop DebuggingPause
Thực thi lệnh tiếp theo trong ứng dụng (dòng được đánh
dấu)
Nếu lệnh tiếp theo là lời gọi thủ tục, điều khiển sẽ chuyển
đến thủ tục được gọi và thực thi từng lệnh của thủ tục đó
Step Into
Hàm và Thủ tục 35
Lệnh thực thi tiếp theo
là lời gọi thủ tục
Điều khiển chuyển
thực hiện lệnh trong
thủ tục
Thực thi lệnh hiện thời, không đi vào lệnh đó mà chuyển
đến thực hiện lệnh tiếp theo
Nếu lệnh hiện thời không chứa lời gọi thủ tục, thực hiện
giống với Step Into
Nếu lệnh hiện thời là lời gọi thủ tục, thủ tục sẽ được thực thi
hoàn toàn chứ không chuyển điều khiển vào thủ tục được
gọi
Step Over
Thực thi lệnh hiện thời, không đi vào lệnh đó mà chuyển
đến thực hiện lệnh tiếp theo
Nếu lệnh hiện thời không chứa lời gọi thủ tục, thực hiện
giống với Step Into
Nếu lệnh hiện thời là lời gọi thủ tục, thủ tục sẽ được thực thi
hoàn toàn chứ không chuyển điều khiển vào thủ tục được
gọi
Hàm và Thủ tục 36
Step Over
Lệnh thực thi tiếp
theo chứa lời gọi
thủ tục
Hàm và Thủ tục 37
Chuyển đến dòng có
thể thực thi tiếp
theo, không chuyển
điều khiển vào thủ
tục được gọi
Step Out
Sau khi đã vào thủ tục được gọi, sử dụng Step out để thực
thi hết tất cả các lệnh còn lại của thủ tục và trả điều khiển
về lệnh tiếp theo của thủ tục gọi
Continue
Thực thi cho đến khi gặp breakpoint tiếp theo
Stop Debugging
Kết thúc gỡ lỗi
Step Out - Continue - Stop
Step Out
Sau khi đã vào thủ tục được gọi, sử dụng Step out để thực
thi hết tất cả các lệnh còn lại của thủ tục và trả điều khiển
về lệnh tiếp theo của thủ tục gọi
Continue
Thực thi cho đến khi gặp breakpoint tiếp theo
Stop Debugging
Kết thúc gỡ lỗi
Hàm và Thủ tục 38
Ứ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 được gọi là “chia để trị”.
Ứng dụng được phân chia thành lớp, lớp lại được phân
chia thành nhiều Sub, Function. Làm như vậy sẽ dễ dàng
trong việc thiết kế, phát triển và bảo trì ứng dụng lớn
Thủ tục là một tập lệnh nhằm giải quyết một tác vụ cụ
thể
Khi gặp lời gọi Sub, Function, điều khiển chương trình
chuyển đến thực thi thủ tục được gọi, sau khi thực thi
xong lại chuyển điều khiển về cho thủ tục gọi
Function trả về giá trị còn thủ tục Sub thì không
Tổng kết bài học
Ứ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 được gọi là “chia để trị”.
Ứng dụng được phân chia thành lớp, lớp lại được phân
chia thành nhiều Sub, Function. Làm như vậy sẽ dễ dàng
trong việc thiết kế, phát triển và bảo trì ứng dụng lớn
Thủ tục là một tập lệnh nhằm giải quyết một tác vụ cụ
thể
Khi gặp lời gọi Sub, Function, điều khiển chương trình
chuyển đến thực thi thủ tục được gọi, sau khi thực thi
xong lại chuyển điều khiển về cho thủ tục gọi
Function trả về giá trị còn thủ tục Sub thì không
Hàm và Thủ tục 39
Có thể truyền giá trị hay tham chiếu cho đối số. Truyền
giá trị bằng từ khóa ByVal, truyền tham chiếu bằng từ
khóa ByRef
Visual Basic cung cấp hai kiểu biến, biến kiểu giá trị và
biến kiểu tham chiếu. Khi truyền đối số với từ khóa
ByVal, có thể thay đổi giá trị của biến tham chiếu
Sử dụng tùy chọn Optional để thiết lập giá trị mặc định
cho biến
Biến có thể có phạm vi module, phạm vi thủ tục hay
phạm vi khối lệnh
Không nên ép kiểu nghầm định thu hẹp, bởi dữ liệu có
thể bị mất. Thiết lập tùy chọn Option Strict là On và sử
dụng lớp Convert để ép kiểu tường minh
Tổng kết bài học
Có thể truyền giá trị hay tham chiếu cho đối số. Truyền
giá trị bằng từ khóa ByVal, truyền tham chiếu bằng từ
khóa ByRef
Visual Basic cung cấp hai kiểu biến, biến kiểu giá trị và
biến kiểu tham chiếu. Khi truyền đối số với từ khóa
ByVal, có thể thay đổi giá trị của biến tham chiếu
Sử dụng tùy chọn Optional để thiết lập giá trị mặc định
cho biến
Biến có thể có phạm vi module, phạm vi thủ tục hay
phạm vi khối lệnh
Không nên ép kiểu nghầm định thu hẹp, bởi dữ liệu có
thể bị mất. Thiết lập tùy chọn Option Strict là On và sử
dụng lớp Convert để ép kiểu tường minh
Hàm và Thủ tục 40
Visual Basic cung cấp các tùy chọn Debug như Step Into,
Step Over, Step Out, Continue, Pause để dễ dàng trong
việc gỡ lỗi
Tổng kết bài học
Hàm và Thủ tục 41

More Related Content

What's hot

Đề tài: Xây dựng website bán hàng trực tuyến, HAY
Đề tài: Xây dựng website bán hàng trực tuyến, HAYĐề tài: Xây dựng website bán hàng trực tuyến, HAY
Đề tài: Xây dựng website bán hàng trực tuyến, HAY
Dịch vụ viết thuê Khóa Luận - ZALO 0932091562
 
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng HồBáo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng HồzDollz Lovez
 
Pewarisan (inheritance) pada JAVA
Pewarisan (inheritance) pada JAVAPewarisan (inheritance) pada JAVA
Pewarisan (inheritance) pada JAVA
dyko ananta
 
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGPHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
Thùy Linh
 
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Nguyễn Danh Thanh
 
Luận văn: Tìm hiểu công nghệ thực tế ảo và ứng dụng, HAY
Luận văn: Tìm hiểu công nghệ thực tế ảo và ứng dụng, HAYLuận văn: Tìm hiểu công nghệ thực tế ảo và ứng dụng, HAY
Luận văn: Tìm hiểu công nghệ thực tế ảo và ứng dụng, HAY
Dịch vụ viết bài trọn gói ZALO: 0909232620
 
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
nataliej4
 
Đề tài: Quản lý cửa hàng điện thoại di động, HAY
Đề tài: Quản lý cửa hàng điện thoại di động, HAYĐề tài: Quản lý cửa hàng điện thoại di động, HAY
Đề tài: Quản lý cửa hàng điện thoại di động, HAY
Dịch vụ viết thuê Khóa Luận - ZALO 0932091562
 
Đồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềmĐồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềm
Nguyễn Anh
 
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTITBài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
Popping Khiem - Funky Dance Crew PTIT
 
lý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tánlý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tánNgo Trung
 
Luận văn: Xây dựng hệ thống quản lý điểm trường phổ thông, HOT
Luận văn: Xây dựng hệ thống quản lý điểm trường phổ thông, HOTLuận văn: Xây dựng hệ thống quản lý điểm trường phổ thông, HOT
Luận văn: Xây dựng hệ thống quản lý điểm trường phổ thông, HOT
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Kiến thức toán cao cấp dùng cho xác suất thống kê toán
Kiến thức toán cao cấp dùng cho xác suất thống kê toánKiến thức toán cao cấp dùng cho xác suất thống kê toán
Kiến thức toán cao cấp dùng cho xác suất thống kê toánQuynh Anh Nguyen
 
Bai tap va loi giai sql
Bai tap va loi giai sqlBai tap va loi giai sql
Bai tap va loi giai sql. .
 
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Tú Cao
 
PHÂN CỤM DỮ LIỆU TRONG DATAMING.pdf
PHÂN CỤM DỮ LIỆU TRONG DATAMING.pdfPHÂN CỤM DỮ LIỆU TRONG DATAMING.pdf
PHÂN CỤM DỮ LIỆU TRONG DATAMING.pdf
Man_Ebook
 
Kết thúc dự án - bt nhóm1
Kết thúc dự án -  bt nhóm1Kết thúc dự án -  bt nhóm1
Kết thúc dự án - bt nhóm1
Ngọc Hà Nguyễn
 
Báo cáo Quản lý Sinh viên Làm Đồ án Access 01677525178
Báo cáo Quản lý Sinh viên Làm Đồ án Access 01677525178Báo cáo Quản lý Sinh viên Làm Đồ án Access 01677525178
Báo cáo Quản lý Sinh viên Làm Đồ án Access 01677525178
Đồ án access 01677525178
 
Xây dựng biểu đồ use case
Xây dựng biểu đồ use caseXây dựng biểu đồ use case
Xây dựng biểu đồ use caseTrung Chinh Hà
 

What's hot (20)

Báo cáo đồ án - Thiết kế web tại Thanh Hóa
Báo cáo đồ án - Thiết kế web tại Thanh HóaBáo cáo đồ án - Thiết kế web tại Thanh Hóa
Báo cáo đồ án - Thiết kế web tại Thanh Hóa
 
Đề tài: Xây dựng website bán hàng trực tuyến, HAY
Đề tài: Xây dựng website bán hàng trực tuyến, HAYĐề tài: Xây dựng website bán hàng trực tuyến, HAY
Đề tài: Xây dựng website bán hàng trực tuyến, HAY
 
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng HồBáo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
 
Pewarisan (inheritance) pada JAVA
Pewarisan (inheritance) pada JAVAPewarisan (inheritance) pada JAVA
Pewarisan (inheritance) pada JAVA
 
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGPHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
 
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
 
Luận văn: Tìm hiểu công nghệ thực tế ảo và ứng dụng, HAY
Luận văn: Tìm hiểu công nghệ thực tế ảo và ứng dụng, HAYLuận văn: Tìm hiểu công nghệ thực tế ảo và ứng dụng, HAY
Luận văn: Tìm hiểu công nghệ thực tế ảo và ứng dụng, HAY
 
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
 
Đề tài: Quản lý cửa hàng điện thoại di động, HAY
Đề tài: Quản lý cửa hàng điện thoại di động, HAYĐề tài: Quản lý cửa hàng điện thoại di động, HAY
Đề tài: Quản lý cửa hàng điện thoại di động, HAY
 
Đồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềmĐồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềm
 
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTITBài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
Bài tập lớn Phát triển phần mềm hướng dịch vụ PTIT
 
lý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tánlý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tán
 
Luận văn: Xây dựng hệ thống quản lý điểm trường phổ thông, HOT
Luận văn: Xây dựng hệ thống quản lý điểm trường phổ thông, HOTLuận văn: Xây dựng hệ thống quản lý điểm trường phổ thông, HOT
Luận văn: Xây dựng hệ thống quản lý điểm trường phổ thông, HOT
 
Kiến thức toán cao cấp dùng cho xác suất thống kê toán
Kiến thức toán cao cấp dùng cho xác suất thống kê toánKiến thức toán cao cấp dùng cho xác suất thống kê toán
Kiến thức toán cao cấp dùng cho xác suất thống kê toán
 
Bai tap va loi giai sql
Bai tap va loi giai sqlBai tap va loi giai sql
Bai tap va loi giai sql
 
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
 
PHÂN CỤM DỮ LIỆU TRONG DATAMING.pdf
PHÂN CỤM DỮ LIỆU TRONG DATAMING.pdfPHÂN CỤM DỮ LIỆU TRONG DATAMING.pdf
PHÂN CỤM DỮ LIỆU TRONG DATAMING.pdf
 
Kết thúc dự án - bt nhóm1
Kết thúc dự án -  bt nhóm1Kết thúc dự án -  bt nhóm1
Kết thúc dự án - bt nhóm1
 
Báo cáo Quản lý Sinh viên Làm Đồ án Access 01677525178
Báo cáo Quản lý Sinh viên Làm Đồ án Access 01677525178Báo cáo Quản lý Sinh viên Làm Đồ án Access 01677525178
Báo cáo Quản lý Sinh viên Làm Đồ án Access 01677525178
 
Xây dựng biểu đồ use case
Xây dựng biểu đồ use caseXây dựng biểu đồ use case
Xây dựng biểu đồ use case
 

Similar to BÀI 6: Thủ tục (SUB) và hàm (FUNCTION) - Giáo trình FPT

Hàm và nạp chồng hàm
Hàm và nạp chồng hàmHàm và nạp chồng hàm
Hàm và nạp chồng hàm
LAnhHuy4
 
Hàm và Chuỗi
Hàm và ChuỗiHàm và Chuỗi
Hàm và Chuỗi
pnanhvn
 
lap trinh c Phan2 chuong5
 lap trinh c Phan2 chuong5 lap trinh c Phan2 chuong5
lap trinh c Phan2 chuong5thanhyu
 
Bai 17
Bai 17Bai 17
Chuong 01
Chuong 01Chuong 01
Chuong 01
Nam le Van
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_cao
Huy Nguyễn
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_cao
Bác Luân
 
Asp
AspAsp
Asp
thinhtu
 
Nmlt c06 ham
Nmlt c06 hamNmlt c06 ham
Nmlt c06 ham
Minh Ngoc Tran
 
Nmlt c06 ham_in
Nmlt c06 ham_inNmlt c06 ham_in
Nmlt c06 ham_in
Huy Nguyễn
 
Nmlt c15 ham_nangcao_phan1_in
Nmlt c15 ham_nangcao_phan1_inNmlt c15 ham_nangcao_phan1_in
Nmlt c15 ham_nangcao_phan1_in
Huy Nguyễn
 
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTBài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
MasterCode.vn
 
Thực hành lập trình Visual Bacsic
Thực hành lập trình Visual BacsicThực hành lập trình Visual Bacsic
Thực hành lập trình Visual Bacsic
LE The Vinh
 
Web201 slide 3
Web201   slide 3Web201   slide 3
Web201 slide 3
tuanduongcntt
 
Hàm can bản
Hàm can bảnHàm can bản
Hàm can bản
tienhien110293
 

Similar to BÀI 6: Thủ tục (SUB) và hàm (FUNCTION) - Giáo trình FPT (20)

Hàm và nạp chồng hàm
Hàm và nạp chồng hàmHàm và nạp chồng hàm
Hàm và nạp chồng hàm
 
Hàm và Chuỗi
Hàm và ChuỗiHàm và Chuỗi
Hàm và Chuỗi
 
lap trinh c Phan2 chuong5
 lap trinh c Phan2 chuong5 lap trinh c Phan2 chuong5
lap trinh c Phan2 chuong5
 
Bai 17
Bai 17Bai 17
Bai 17
 
Chuong 01
Chuong 01Chuong 01
Chuong 01
 
Chuong 01 mo dau
Chuong 01 mo dauChuong 01 mo dau
Chuong 01 mo dau
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_cao
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_cao
 
Asp
AspAsp
Asp
 
Con tro ham c++
Con tro ham c++Con tro ham c++
Con tro ham c++
 
Bai 18
Bai 18Bai 18
Bai 18
 
User Control
User ControlUser Control
User Control
 
Chuong 04 ham
Chuong 04 hamChuong 04 ham
Chuong 04 ham
 
Nmlt c06 ham
Nmlt c06 hamNmlt c06 ham
Nmlt c06 ham
 
Nmlt c06 ham_in
Nmlt c06 ham_inNmlt c06 ham_in
Nmlt c06 ham_in
 
Nmlt c15 ham_nangcao_phan1_in
Nmlt c15 ham_nangcao_phan1_inNmlt c15 ham_nangcao_phan1_in
Nmlt c15 ham_nangcao_phan1_in
 
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTBài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
 
Thực hành lập trình Visual Bacsic
Thực hành lập trình Visual BacsicThực hành lập trình Visual Bacsic
Thực hành lập trình Visual Bacsic
 
Web201 slide 3
Web201   slide 3Web201   slide 3
Web201 slide 3
 
Hàm can bản
Hàm can bảnHàm can bản
Hàm can bản
 

More from MasterCode.vn

Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vnPd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
MasterCode.vn
 
Why apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vnWhy apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vn
MasterCode.vn
 
Dzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vnDzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vn
MasterCode.vn
 
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vnGoogle công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
MasterCode.vn
 
Nghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vnNghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vn
MasterCode.vn
 
Lập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vnLập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vn
MasterCode.vn
 
Pd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vnPd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vn
MasterCode.vn
 
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vnPd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
MasterCode.vn
 
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vnPdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
MasterCode.vn
 
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vnPd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
MasterCode.vn
 
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vnPd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
MasterCode.vn
 
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vnPd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
MasterCode.vn
 
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vnPdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
MasterCode.vn
 
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vnPdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
MasterCode.vn
 
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vnPdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
MasterCode.vn
 
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vnPdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
MasterCode.vn
 
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vnPdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
MasterCode.vn
 
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vnPdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
MasterCode.vn
 
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vnPdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
MasterCode.vn
 
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vnPdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn
MasterCode.vn
 

More from MasterCode.vn (20)

Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vnPd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
 
Why apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vnWhy apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vn
 
Dzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vnDzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vn
 
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vnGoogle công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
 
Nghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vnNghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vn
 
Lập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vnLập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vn
 
Pd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vnPd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vn
 
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vnPd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
 
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vnPdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
 
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vnPd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
 
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vnPd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
 
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vnPd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
 
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vnPdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
 
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vnPdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vnPdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vnPdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vnPdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vnPdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vnPdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vnPdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn
 

BÀI 6: Thủ tục (SUB) và hàm (FUNCTION) - Giáo trình FPT

  • 1. BÀI 6: THỦ TỤC (SUB) VÀ HÀM (FUNCTION)
  • 2. 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
  • 3. 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
  • 4. Ứ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
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. Đị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
  • 11. Đị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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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 SubKết thúc thủ tục không có kiểu trả về
  • 19. 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
  • 20. Đị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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. Truyền giá trị Truyền bằng từ khóa ByVal Ứng dụng tạo bản sao của giá trị đối số và và truyền bản sao đó cho thủ tục được gọi. Những thay đổi thực hiện trên bản sao không làm thay đổi giá trị ban đầu của biến Truyền tham chiếu Truyền bằng từ khóa ByRef Biến ban đầu trong thủ tục gọi hàm có thể được truy cập và thay đổi trực tiếp bởi thủ tục được gọi Hữu ích trong trường hợp thủ tục muốn trả về nhiều hơn một giá trị Truyền đối số: Truyền giá trị và truyền tham chiếu Truyền giá trị Truyền bằng từ khóa ByVal Ứng dụng tạo bản sao của giá trị đối số và và truyền bản sao đó cho thủ tục được gọi. Những thay đổi thực hiện trên bản sao không làm thay đổi giá trị ban đầu của biến Truyền tham chiếu Truyền bằng từ khóa ByRef Biến ban đầu trong thủ tục gọi hàm có thể được truy cập và thay đổi trực tiếp bởi thủ tục được gọi Hữu ích trong trường hợp thủ tục muốn trả về nhiều hơn một giá trị Hàm và Thủ tục 26
  • 27. Kiểu giá trị và kiểu tham chiếu Kiểu giá trị Biến chứa giá trị của biến đó Kiểu tham chiếu Biến chứa địa chỉ lưu đối tượng trong bộ nhớ Dim x As Integer = 7 Dim ten As String = “Nam” Kiểu dữ liệu trong Visual Basic được chia làm hai loại 7 Hàm và Thủ tục 27 Dim x As Integer = 7 biến x chứa giá trị là 7 Dim ten As String = “Nam” x “Nam”ten biến ten chứa địa chỉ đến String “Nam”
  • 28. Kiểu giá trị và kiểu tham chiếu Kiểu giá trị Tất cả các biến cơ sở đều có kiểu giá trị, trừ kiểu String Kiểu tham chiếu Tất cả các biến không phải kiểu giá trị đều thuộc kiểu tham chiếu Ví dụ như các biến điều khiển, các biến này tham chiếu đến đối tượng Button, TextBox… Để tương tác với đối tượng, sử dụng biến tham chiếu đến đối tượng để gọi phương thức hay truy cập thuộc tính Tất cả các biến không phải kiểu giá trị đều thuộc kiểu tham chiếu Ví dụ như các biến điều khiển, các biến này tham chiếu đến đối tượng Button, TextBox… Để tương tác với đối tượng, sử dụng biến tham chiếu đến đối tượng để gọi phương thức hay truy cập thuộc tính Hàm và Thủ tục 28
  • 29. Kiểu giá trị và kiểu tham chiếu Kiểu tham trị Khi truyền bằng từ khóa ByVal, bản sao giá trị của đối số chính là giá trị mà đối số đó lưu trữ Giá trị của đối số không thay đổi Kiểu tham chiếu Khi truyền bằng từ khóa ByVal, bản sao giá trị của đối số là địa chỉ tham chiếu đến đối tượng Địa chỉ tham chiếu đến đối tượng không thay đổi nhưng giá trị của đối tượng có thể thay đổi Để tham chiếu đến đối tượng khác, sử dụng từ khóa ByRef Khi truyền bằng từ khóa ByVal, bản sao giá trị của đối số chính là giá trị mà đối số đó lưu trữ Giá trị của đối số không thay đổi Khi truyền bằng từ khóa ByVal, bản sao giá trị của đối số là địa chỉ tham chiếu đến đối tượng Địa chỉ tham chiếu đến đối tượng không thay đổi nhưng giá trị của đối tượng có thể thay đổi Để tham chiếu đến đối tượng khác, sử dụng từ khóa ByRef Hàm và Thủ tục 29
  • 30. Ép kiểu ngầm định Trình biên dịch tự chuyển kiểu này sang kiểu khác mà không phải viết mã Ép kiểu ngầm định mở rộng Ép kiểu “nhỏ hơn” thành kiểu “lớn hơn” Không mất dữ liệu Ép kiểu ngầm định thu hẹp Ép kiểu “lớn hơn” thành kiểu “nhỏ hơn” Mất dữ liệu  Gây lỗi logic  Hạn chế ép kiểu ngầm định thu hẹp bằng cách thiết lập tùy chọn Option Strict là on Ép kiểu ngầm định Ép kiểu ngầm định Trình biên dịch tự chuyển kiểu này sang kiểu khác mà không phải viết mã Ép kiểu ngầm định mở rộng Ép kiểu “nhỏ hơn” thành kiểu “lớn hơn” Không mất dữ liệu Ép kiểu ngầm định thu hẹp Ép kiểu “lớn hơn” thành kiểu “nhỏ hơn” Mất dữ liệu  Gây lỗi logic  Hạn chế ép kiểu ngầm định thu hẹp bằng cách thiết lập tùy chọn Option Strict là on Hàm và Thủ tục 30 Dim x As Double = 4.6 Dim y As Integer = value1 y có giá trị là 5
  • 31. Kiểu dữ liệu Có thể được ép kiểu ngầm định thành những kiểu lớn hơn Bolean Object Byte Short, Integer, Long, Decimal, Single, Double hoặc Object Char String hoặc Object Các phép ép kiểu ngầm định mở rộng Char String hoặc Object Date Object Decimal Single, Double hoặc Object Double Object Integer Long, Decimal, Single, Double hoặc Object Hàm và Thủ tục 31
  • 32. Demo bật tùy chọn Option Strict Thiết lập tùy chọn Option strict là On Hàm và Thủ tục 32 Thiết lập tùy chọn Option strict là On
  • 33. Khi Option Strict được thiết lập là On, phải viết mã để thực hiện các phép ép kiểu thu hẹp tường minh Visual Basic cung cấp lớp Convert để thực hiện các phép ép kiểu Lớp Convert Ép kiểu thành Sử dụng phương thức Ví dụ Hàm và Thủ tục 33 Ép kiểu thành Sử dụng phương thức Ví dụ Integer ToInt32 value = Convert.ToInt32(“24”) Decimal ToDecimal value = Convert.ToDecimal(“24.1”) Double ToDouble value = Convert.ToDouble(“24.1”)
  • 34. Các ToolStripButton gỡ lỗi Sử dụng trình gỡ lỗi: Các điều khiển gỡ lỗi Start Debugging Step Into Step Out Các ToolStripButton gỡ lỗi Hàm và Thủ tục 34 Step OverStop DebuggingPause
  • 35. Thực thi lệnh tiếp theo trong ứng dụng (dòng được đánh dấu) Nếu lệnh tiếp theo là lời gọi thủ tục, điều khiển sẽ chuyển đến thủ tục được gọi và thực thi từng lệnh của thủ tục đó Step Into Hàm và Thủ tục 35 Lệnh thực thi tiếp theo là lời gọi thủ tục Điều khiển chuyển thực hiện lệnh trong thủ tục
  • 36. Thực thi lệnh hiện thời, không đi vào lệnh đó mà chuyển đến thực hiện lệnh tiếp theo Nếu lệnh hiện thời không chứa lời gọi thủ tục, thực hiện giống với Step Into Nếu lệnh hiện thời là lời gọi thủ tục, thủ tục sẽ được thực thi hoàn toàn chứ không chuyển điều khiển vào thủ tục được gọi Step Over Thực thi lệnh hiện thời, không đi vào lệnh đó mà chuyển đến thực hiện lệnh tiếp theo Nếu lệnh hiện thời không chứa lời gọi thủ tục, thực hiện giống với Step Into Nếu lệnh hiện thời là lời gọi thủ tục, thủ tục sẽ được thực thi hoàn toàn chứ không chuyển điều khiển vào thủ tục được gọi Hàm và Thủ tục 36
  • 37. Step Over Lệnh thực thi tiếp theo chứa lời gọi thủ tục Hàm và Thủ tục 37 Chuyển đến dòng có thể thực thi tiếp theo, không chuyển điều khiển vào thủ tục được gọi
  • 38. Step Out Sau khi đã vào thủ tục được gọi, sử dụng Step out để thực thi hết tất cả các lệnh còn lại của thủ tục và trả điều khiển về lệnh tiếp theo của thủ tục gọi Continue Thực thi cho đến khi gặp breakpoint tiếp theo Stop Debugging Kết thúc gỡ lỗi Step Out - Continue - Stop Step Out Sau khi đã vào thủ tục được gọi, sử dụng Step out để thực thi hết tất cả các lệnh còn lại của thủ tục và trả điều khiển về lệnh tiếp theo của thủ tục gọi Continue Thực thi cho đến khi gặp breakpoint tiếp theo Stop Debugging Kết thúc gỡ lỗi Hàm và Thủ tục 38
  • 39. Ứ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 được gọi là “chia để trị”. Ứng dụng được phân chia thành lớp, lớp lại được phân chia thành nhiều Sub, Function. Làm như vậy sẽ dễ dàng trong việc thiết kế, phát triển và bảo trì ứng dụng lớn Thủ tục là một tập lệnh nhằm giải quyết một tác vụ cụ thể Khi gặp lời gọi Sub, Function, điều khiển chương trình chuyển đến thực thi thủ tục được gọi, sau khi thực thi xong lại chuyển điều khiển về cho thủ tục gọi Function trả về giá trị còn thủ tục Sub thì không Tổng kết bài học Ứ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 được gọi là “chia để trị”. Ứng dụng được phân chia thành lớp, lớp lại được phân chia thành nhiều Sub, Function. Làm như vậy sẽ dễ dàng trong việc thiết kế, phát triển và bảo trì ứng dụng lớn Thủ tục là một tập lệnh nhằm giải quyết một tác vụ cụ thể Khi gặp lời gọi Sub, Function, điều khiển chương trình chuyển đến thực thi thủ tục được gọi, sau khi thực thi xong lại chuyển điều khiển về cho thủ tục gọi Function trả về giá trị còn thủ tục Sub thì không Hàm và Thủ tục 39
  • 40. Có thể truyền giá trị hay tham chiếu cho đối số. Truyền giá trị bằng từ khóa ByVal, truyền tham chiếu bằng từ khóa ByRef Visual Basic cung cấp hai kiểu biến, biến kiểu giá trị và biến kiểu tham chiếu. Khi truyền đối số với từ khóa ByVal, có thể thay đổi giá trị của biến tham chiếu Sử dụng tùy chọn Optional để thiết lập giá trị mặc định cho biến Biến có thể có phạm vi module, phạm vi thủ tục hay phạm vi khối lệnh Không nên ép kiểu nghầm định thu hẹp, bởi dữ liệu có thể bị mất. Thiết lập tùy chọn Option Strict là On và sử dụng lớp Convert để ép kiểu tường minh Tổng kết bài học Có thể truyền giá trị hay tham chiếu cho đối số. Truyền giá trị bằng từ khóa ByVal, truyền tham chiếu bằng từ khóa ByRef Visual Basic cung cấp hai kiểu biến, biến kiểu giá trị và biến kiểu tham chiếu. Khi truyền đối số với từ khóa ByVal, có thể thay đổi giá trị của biến tham chiếu Sử dụng tùy chọn Optional để thiết lập giá trị mặc định cho biến Biến có thể có phạm vi module, phạm vi thủ tục hay phạm vi khối lệnh Không nên ép kiểu nghầm định thu hẹp, bởi dữ liệu có thể bị mất. Thiết lập tùy chọn Option Strict là On và sử dụng lớp Convert để ép kiểu tường minh Hàm và Thủ tục 40
  • 41. Visual Basic cung cấp các tùy chọn Debug như Step Into, Step Over, Step Out, Continue, Pause để dễ dàng trong việc gỡ lỗi Tổng kết bài học Hàm và Thủ tục 41