bÀi 6: thủ tục (sub) và hàm (function) - giáo trình fpt
DESCRIPTION
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ỗiTRANSCRIPT
BÀI 6:THỦ TỤC (SUB) VÀ HÀM (FUNCTION)
Các lệnh lặpSử dụng các điều khiển ListBox, NumericUpDown,TextBox nhiều dòngChuyển điều khiển trên FormVô hiệu hóa và kích hoạt điều khiểnSử dụng đối tượng String
Hệ thống bài cũ
Các lệnh lặpSử dụng các điều khiển ListBox, NumericUpDown,TextBox nhiều dòngChuyển điều khiển trên FormVô hiệu hóa và kích hoạt điều khiểnSử 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à SubBiết cách sử dụng tham số OptionalHiểu về phạm vị biếnHiểu về ép kiểu ngầm định thu hẹp và sử dụng lớpConvert để ép kiểu tường minhHiể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à SubBiết cách sử dụng tham số OptionalHiểu về phạm vị biếnHiểu về ép kiểu ngầm định thu hẹp và sử dụng lớpConvert để ép kiểu tường minhHiể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 chiathà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ảnhóa việc thiết kế, phát triểnvà bảo trì ứng dụng cỡ vừa vàlớn
Tổ chức trong ứng dụng
Ứngdụng
Lớp Lớp
Ứng dụng được phân chiathà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ảnhóa việc thiết kế, phát triểnvà 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àoVisual Basic cung cấp nhiều thủ tục có sẵn cho phép phát triển ứngdụ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 địnhvà 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àoVisual Basic cung cấp nhiều thủ tục có sẵn cho phép phát triển ứngdụ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 địnhvà 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 ứngdụ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ớnhơ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 ứngdụ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ớnhơ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 haicủa x
Math.Sqrt(9) là 3.0
Val(x) Trả về giá trị số củabiến x
Val(“5”) là 5Val(“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ụcKế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úcthủ 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 FunctionChứa mã thực hiện các hành độngThao tác trên tham số của danh sách tham số và trả về kếtquả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 FunctionChứa mã thực hiện các hành độngThao tác trên tham số của danh sách tham số và trả về kếtquả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 GiaTriEnd Function
Ví dụ1:Public Function() As Integer
‘ Các thao tácReturn 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 GiaTriEnd Function
Ví dụ1:Public Function() As Integer
‘ Các thao tácReturn 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,20Public Function TinhDienTich() As Double
Dim a As Double = 10Dim b As Double = 20Dim s As Doubles= a*bReturn 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,20Public Function TinhDienTich() As Double
Dim a As Double = 10Dim b As Double = 20Dim s As Doubles= a*bReturn 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 AsInteger)
Dim a,b,s As Integers=a*bReturn 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 AsInteger)
Dim a,b,s As Integers=a*bReturn 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ặpngoặ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ọiChú ý rằng giá trị của đối số phải tương thích với kiểutham số
Demo gọi Function
Gọi Function bằng cách dùng tên Function, tiếp theo là cặpngoặ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ọiChú ý rằng giá trị của đối số phải tương thích với kiểutham 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 FunctionSquare(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 đếndò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ọihàm
1
2
Khi điều khiển chương trình gặp lời gọi FunctionSquare(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 đếndòng đầu tiên của Function Square
Hàm và Thủ tục 14
…..…..…..Square(sideA)….….
…..…..…..
lời gọihàm
3
Từ khóa ByVal cho biết ứng dụng sẽ tạo giá trị bản saocủ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êntham 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 saocủ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êntham 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 returnSau 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 returnSau 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ọiFunction
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ọiFunction. Ứ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ưngkhô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úcthủ 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úcthủ 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ụcEnd SubVí dụ1:Public Sub()‘ Các thao tác
End SubVí 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ụcEnd SubVí dụ1:Public Sub()‘ Các thao tác
End SubVí 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 10Public Sub PrintNumber()
For Dim i As Integer 0 to 10Console.WriteLine(i.ToString())
NextEnd Sub
Ví dụ 2: In ra màn hình các số từ a đến bPublic Sub PrintNumber(ByVal a As Integer, ByVal b As Integer)
For Dim i As Integer a to bConsole.WriteLine(i.ToString())
NextEnd Sub
Sub
Định nghĩa thủ tục:Ví dụ 1: In ra màn hình các số từ 0 đến 10Public Sub PrintNumber()
For Dim i As Integer 0 to 10Console.WriteLine(i.ToString())
NextEnd Sub
Ví dụ 2: In ra màn hình các số từ a đến bPublic Sub PrintNumber(ByVal a As Integer, ByVal b As Integer)
For Dim i As Integer a to bConsole.WriteLine(i.ToString())
NextEnd 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ùngmột giá trị đối số cho một tham số đặc biệt Dùng thamsố OptionalTham số Optional là tham số có giá trị mặc địnhCó ba quy tắc sử dụng tham số Optional
Tham số Optional phải có giá trị mặc địnhGiá trị mặc định phải là biểu thức không đổiTất cả các tham số xuất hiện sau tham số Optional trongdanh 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ùngmột giá trị đối số cho một tham số đặc biệt Dùng thamsố OptionalTham số Optional là tham số có giá trị mặc địnhCó ba quy tắc sử dụng tham số Optional
Tham số Optional phải có giá trị mặc địnhGiá trị mặc định phải là biểu thức không đổiTất cả các tham số xuất hiện sau tham số Optional trongdanh 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 * caoEnd 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 đượcbỏ 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ố OptionaltinhTheTich()
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 đượcbỏ 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 moduleBiến được khai báo bắt đầu từ sau từ khóa Class và kết thúc trướclệ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ácphương thứcBiến thực thể có thể được tham chiếu từ mọi thủ tục trong lớpkhai báo biến đó
Phạm vi thủ tụcBiến được khai báo bên trong thủ tục có phạm vi thủ tụcBiến có phạm vi thủ tục không thể được tham chiếu từ bên ngoàithủ tục mà chúng khai báoTham số của thủ tục có phạm vi thủ tục
Phạm vi biến
Phạm vi moduleBiến được khai báo bắt đầu từ sau từ khóa Class và kết thúc trướclệ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ácphương thứcBiến thực thể có thể được tham chiếu từ mọi thủ tục trong lớpkhai báo biến đó
Phạm vi thủ tụcBiến được khai báo bên trong thủ tục có phạm vi thủ tụcBiến có phạm vi thủ tục không thể được tham chiếu từ bên ngoàithủ tục mà chúng khai báoTham 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ệnhBiến được khai báo trong khối lệnh có phạm vi khối lệnhBắt đầu từ vị trí biến được khai báo và kết thúc ở dònglệ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 truycập đến tên biến này, ứng dụng sẽ truy cập đến biến cụcbộ
Phạm vi biến
Phạm vi khối lệnhBiến được khai báo trong khối lệnh có phạm vi khối lệnhBắt đầu từ vị trí biến được khai báo và kết thúc ở dònglệ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 truycập đến tên biến này, ứng dụng sẽ truy cập đến biến cụcbộ
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ảnsao đó 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 đổigiá trị ban đầu của biến
Truyền tham chiếuTruyền bằng từ khóa ByRefBiến ban đầu trong thủ tục gọi hàm có thể được truy cậpvà thay đổi trực tiếp bởi thủ tục được gọiHữu ích trong trường hợp thủ tục muốn trả về nhiều hơnmộ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ảnsao đó 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 đổigiá trị ban đầu của biến
Truyền tham chiếuTruyền bằng từ khóa ByRefBiến ban đầu trong thủ tục gọi hàm có thể được truy cậpvà thay đổi trực tiếp bởi thủ tục được gọiHữu ích trong trường hợp thủ tục muốn trả về nhiều hơnmộ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ếuBiến chứa địa chỉ lưu đốitượ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ở đềucó kiểu giá trị, trừ kiểuString
Kiểu tham chiếuTất cả các biến không phảikiểu giá trị đều thuộc kiểutham chiếu
Ví dụ như các biến điềukhiển, các biến này thamchiếu đến đối tượngButton, TextBox…Để tương tác với đốitượng, sử dụng biến thamchiếu đến đối tượng để gọiphương thức hay truy cậpthuộc tính
Tất cả các biến không phảikiểu giá trị đều thuộc kiểutham chiếu
Ví dụ như các biến điềukhiển, các biến này thamchiếu đến đối tượngButton, TextBox…Để tương tác với đốitượng, sử dụng biến thamchiếu đến đối tượng để gọiphương thức hay truy cậpthuộ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óaByVal, bản sao giá trị củađối số chính là giá trị mà đốisố đó lưu trữGiá trị của đối số khôngthay đổi
Kiểu tham chiếuKhi truyền bằng từ khóaByVal, 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 đốitượng không thay đổinhưng giá trị của đối tượngcó thể thay đổiĐể tham chiếu đến đốitượng khác, sử dụng từkhóa ByRef
Khi truyền bằng từ khóaByVal, bản sao giá trị củađối số chính là giá trị mà đốisố đó lưu trữGiá trị của đối số khôngthay đổi
Khi truyền bằng từ khóaByVal, 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 đốitượng không thay đổinhưng giá trị của đối tượngcó thể thay đổiĐể tham chiếu đến đốitượng khác, sử dụng từkhóa ByRef
Hàm và Thủ tục 29
Ép kiểu ngầm địnhTrì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 địnhthu 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 địnhTrì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 địnhthu 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.6Dim 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ànhnhữ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ùychọn Optionstrict là On
Hàm và Thủ tục 32
Thiết lập tùychọn Optionstrict 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 minhVisual 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ụngphương thức
Ví dụ
Hàm và Thủ tục 33
Ép kiểu thành Sử dụngphươ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 đánhdấ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 theolà lời gọi thủ tục
Điều khiển chuyểnthực hiện lệnh trongthủ 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ệngiống với Step IntoNếu lệnh hiện thời là lời gọi thủ tục, thủ tục sẽ được thực thihoàn toàn chứ không chuyển điều khiển vào thủ tục đượcgọ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ệngiống với Step IntoNếu lệnh hiện thời là lời gọi thủ tục, thủ tục sẽ được thực thihoàn toàn chứ không chuyển điều khiển vào thủ tục đượcgọi
Hàm và Thủ tục 36
Step Over
Lệnh thực thi tiếptheo chứa lời gọithủ tục
Hàm và Thủ tục 37
Chuyển đến dòng cóthể thực thi tiếptheo, không chuyểnđiều khiển vào thủtục được gọi
Step OutSau khi đã vào thủ tục được gọi, sử dụng Step out để thựcthi hết tất cả các lệnh còn lại của thủ tục và trả điều khiểnvề lệnh tiếp theo của thủ tục gọi
ContinueThực thi cho đến khi gặp breakpoint tiếp theo
Stop DebuggingKết thúc gỡ lỗi
Step Out - Continue - Stop
Step OutSau khi đã vào thủ tục được gọi, sử dụng Step out để thựcthi hết tất cả các lệnh còn lại của thủ tục và trả điều khiểnvề lệnh tiếp theo của thủ tục gọi
ContinueThực thi cho đến khi gặp breakpoint tiếp theo
Stop DebuggingKế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ânchia thành nhiều Sub, Function. Làm như vậy sẽ dễ dàngtrong việc thiết kế, phát triển và bảo trì ứng dụng lớnThủ 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ìnhchuyển đến thực thi thủ tục được gọi, sau khi thực thixong lại chuyển điều khiển về cho thủ tục gọiFunction 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ânchia thành nhiều Sub, Function. Làm như vậy sẽ dễ dàngtrong việc thiết kế, phát triển và bảo trì ứng dụng lớnThủ 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ìnhchuyển đến thực thi thủ tục được gọi, sau khi thực thixong lại chuyển điều khiển về cho thủ tục gọiFunction 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ềngiá trị bằng từ khóa ByVal, truyền tham chiếu bằng từkhóa ByRefVisual 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óaByVal, có thể thay đổi giá trị của biến tham chiếuSử dụng tùy chọn Optional để thiết lập giá trị mặc địnhcho biếnBiến có thể có phạm vi module, phạm vi thủ tục hayphạm vi khối lệnhKhô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ềngiá trị bằng từ khóa ByVal, truyền tham chiếu bằng từkhóa ByRefVisual 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óaByVal, có thể thay đổi giá trị của biến tham chiếuSử dụng tùy chọn Optional để thiết lập giá trị mặc địnhcho biếnBiến có thể có phạm vi module, phạm vi thủ tục hayphạm vi khối lệnhKhô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 trongviệc gỡ lỗi
Tổng kết bài học
Hàm và Thủ tục 41