1. Trang chủ
  2. » Công Nghệ Thông Tin

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

41 335 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thủ Tục (Sub) Và Hàm (Function)
Trường học Trường Đại Học
Thể loại Bài
Định dạng
Số trang 41
Dung lượng 1,11 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ứ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 Khi gặp từ khóa return, giá trị bên phải return được trả về vị trí lời gọi Fu

Trang 1

BÀI 6:

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

Trang 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

Trang 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

Trang 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

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

Trang 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 ứ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 đị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 ứ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 định

và có thể dùng lại về sau

Trang 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

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

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.0Val(x) Trả về giá trị số của

biến x Val(“5”) là 5Val(“abc5”) là 0

Trang 7

Function trả về giá trị sau khi thực hiện

Trang 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

Function tinhBinhPhuong (ByVal x As Double) As Double

Tên thủ tục Danh sách 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

Trang 9

Cú pháp khai báo:

[ Public, Private] Function TenSub[( ThamSo1,ThamSo2,…)]

As KieuGiaTri

' Các thao tác của hàmReturn GiaTri

End Function

Ví dụ1:

Public Function() As Integer

‘ Các thao tácReturn GiaTri

End Function

Ví dụ1:

Public Function() As Integer

‘ Các thao tácReturn GiaTri

End Function

Trang 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 = 10Dim b As Double = 20Dim s As Double

s= a*bReturn sEnd Function

s= a*bReturn sEnd Function

Trang 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)

Trang 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ố

Gọi hàm

Trang 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

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

Trang 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

Trang 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

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

Trang 17

Từ khóa return

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

Trang 18

Sub là một tập mã thực hiện một tác vụ cụ thể nhưng

Trang 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

Trang 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

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

Trang 21

Cú pháp gọi thủ tục không có tham số:

Trang 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 đị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ù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 đị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

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

giá trị mặc định

Trang 23

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ị

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ị

Trang 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 đượ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àithủ 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 đượ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àithủ tục mà chúng khai báo

Tham số của thủ tục có phạm vi thủ tục

Trang 25

đượ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ộ

đượ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ộ

Trang 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ị

Trang 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

Dim x As Integer = 7

biến x chứa giá trị là 7

Dim ten As String = “Nam”

biến ten chứa địa chỉ đến String “Nam”

Trang 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ềukhiển, các biến này thamchiếu đến đối tượng

Button, 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ải kiểu giá trị đều thuộc kiểu tham chiếu

Ví dụ như các biến điềukhiển, các biến này thamchiếu đến đối tượng

Button, 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

Trang 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

Trang 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 đị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 đị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 địnhthu hẹp bằng cách thiết lập tùy chọn Option Strict là on

Dim x As Double = 4.6 Dim y As Integer = value1

y có giá trị

là 5

Trang 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

Byte Short, Integer, Long, Decimal, Single,

Double hoặc Object Char String hoặc Object

Trang 32

Demo bật tùy chọn Option Strict

Thiết lập tùy chọn Option strict là On

Thiết lập tùy chọn Option strict là On

Trang 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

Integer ToInt32 value = Convert.ToInt32(“24”)

Decimal ToDecimal value = Convert.ToDecimal(“24.1”)

Double ToDouble value = Convert.ToDouble(“24.1”)

Trang 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

Step Over Stop Debugging

Pause

Trang 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 đó

Trang 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ệngiố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 thihoàn toàn chứ không chuyển điều khiển vào thủ tục đượcgọi

Trang 37

theo, không chuyển

điều khiển vào thủ

tục được gọi

Trang 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

Trang 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ử

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ử

Ngày đăng: 23/05/2014, 19:23

TỪ KHÓA LIÊN QUAN

w