Hàm và thủ tục do ngườI dùng định nghĩa

Một phần của tài liệu Thiết kế cho hệ thống quản lý công chức – tiền lương của UBDS-GĐ&TE (Trang 26 - 28)

Trong visual Basic, thực tế có hai kiểu thủ tục chung: các thủ tục Function và thủ tục Sub.

Thủ tục Function, còn gọI là hàm do ngườI dùng định nghĩa, là phương cách để xây dựng các hàm riêng ngồi các hàm do Visual Basic định sẵn. Dẫu đó là hàm do ta viết hay của các lập trình viên Visual Basic cung cấp, nói chung ta xem nó như một đoạn mã tự chưa, được thiết kế để xử lý dữ liệu và trả về giá trị.

Trong khi đó, các thủ tục Sub là những : chương trình trợ lực nhỏ, được dùng khi cần. Như vậy các thủ tục Sub là những phần tổng quát hố của các thủ tục sự kiện mà ta đã quen thuộc. Khác vớI hàm, thường trả về một giá trị, các thủ tục đơn giản thực hiện các việc.

Tóm lạI, dẫu chọn thủ tục Function hay thủ tục Sub, điểm chủ yếu vẫn là: các thủ tục Function và Sub thực hiện một hay nhiều nộI dung dướI đây:

- Giúp tách nhỏ các công việc lớn thành các phần việc nhỏ. - Tự động hố các tác vụ lặp lại.

- Làm rõ nộI dung mà ta đang gắng hồn tất bằng cách “ Nêu tên” một đoạn mã. Các tính năng này giúp giảm bớt đáng kể thờI gian gỡ rốI chương trình.

1 .Hàm ( FUNCTION)

Khi phảI dùng một biểu thức phức hợp nhiều lần trong một đề án thì cũng là lúc ta nên nghĩ đến phương án định nghĩa các hàm riêng. Ta có thểvận dụng một cách nào đó để tựu động hố tiến trình, nghĩa là để Visual Basic thực hiện một phần nào đó để tự động hố tiến trình, nghĩa là để Visual Basic thực hiện một phần công việc. Đây là vai trò của chương trình con, muốn trả về một giá trị, ta phảI tạo một

thủ tục Function, tức là hàm do ngườI dùng định nghĩa. Như thường lệ, Cửa sổ Code vẫn là nơi để tạo mã cho các thủ tục Function.

Tên hàm cũng linh hoạt như tên biến, do đó ta nên chọn các tên có ý nghĩa. Nhờ vậy, chương trình sẽ minh bạch hơn và cũng dễ gỡ rốI hơn. Lưu ý, trừ khi gán cho nó một dấu định danh kiểu rõ rệt ở cuốI tên hoặc thông qua mệnh đề As, kiểu của hàm sẽ ngầm định theo kiểu dữ liệu Variant. DướI đây là một dạng định nghĩa hàm, tuy đơn giản nhất nhưng khá phổ biến.

Pulic Function FunctionName (parameter 1, paratemeter 2, …) Staterments FunctionName = expression Staterments FunctionName = expression Staterments Vân vân END FUNCTION

Ở đó, parameter 1, paratemeter 2, vân vân …, đều là biến. Các biến này được xem như những tham số hay đốI số của hàm. Kiểu của tham số có thể được chỉ định bởI các thẻ gán khai báo kiểu hoặc bằng các cụm từ As.

Khi một điều lệnh Visual Basic sử dụng một hàm, thường có: gọI hàm và chuyển các biểu thức cho các tham số. Hàm được xem là trả về giá trị của nó. Kiểu giá trị mà hàm trả về sẽ được chỉ định bằng một thẻ gán khai báo biến (%, !, &, # hoặc $) được chắp vào tên hàm, hoặc tên dùng trong mệnh đề As ở cuốI dòng Function, hoặc một điều lệnh DefType xuất hiện bên trên phần định nghĩa Function. Ngồi ra, vớI một ngoạI lệ ta chỉ có thể gọI một hàm khi dùng cùng vớI số lượng đốI số như các tham số trong phần định nghĩa hàm. Từng biến muốn gởI cho tham số phảI thuộc cùng kiểu ( số nguyên, số nguyên dài, v.v..) vớI tham số tương ứng. Ngồi ra, có thể dùng bất kỳ biến nào nếu như tham số thuộc kiểu Variant.

Có nghĩa là, chỉ có thể chuyển một đốI số biến số nguyên cho một tham số số nguyên. Ta không thể trực tiếp chuyển nó cho một tham số số nguyên dài của một hàm.

Như ta đã biết Visual Basic từ chốI chuyển một biến có kiểu số nguyên cho một tham số kiểu long, cho dù trong hầu hết các trường hợp một số nguyên sẽ làm việc tạI mọI nơi số nguyên dài làm việc.

CuốI cùng, đừng quên rằng trong tất cả các hàm, chúng ta chưa thay đổI các biến bằng cách đưa biến tham số vào bên trái của một điều lệnh gán bên trong thân hàm. Nghĩa là, ta chưa thực hiện phép gán nào cho các tham số trong thân hàm. Tuy nhiên, trong thực tế, hiếm khi phảI thay đổI giá trị của một tham số trong thủ tục Function. Nói chung, một hàm sẽ đơn giản điều tác các giá trị hiện có và trả về một giá trị mới .

2. Thủ tuc ( SUB)

Các thủ tục Function được thành lập để thực hiện hầu như mọI thứ, chỉ cần nộI dung muốn thực hiện chính là để có một đáp số - một giá trị - rút ra từ các hàm đó. Như đã nêu trên đây, tuy các hàm có thể thay đổI các tính chất của một Form, ảnh

hưởng đến giá trị của các biến chuyển dướI dạng tham số, hoặc ảnh hưởng đến các biến cấp Form, song không thể làm thế trừ khi sự thay đổI đó có liên quan đến nộI dung thực hiện của hàm được thiết kế. Trong mọI trường hợp, một hàm sẽ nhận dữ liệu thô, điều tác nó, rồI trả về một giá rị.

Để tránh gõ lặp các điều lệnh gán vô bổ và làm rốI tung vấn đề, ta có một cấu trúc mớI: thủ tục Sub. Thủ tục Sub là công cụ chọn lựa trong trường hợp chỉ muốn viết một khốI mã thực hiện một nộI dung nào đó, cũng tương tự như thủ tục Event. Giống như trong thủ tục Function, ta thường dùng Tools/ Add Procedure báo cho Visual Basic biết muốn định nghĩa một thủ tục Sub. Nhưng có trường hợp, ta nhắp nút tuỳ chọn Sub. DướI đây là cấu trúc đơn giản nhất của thủ tục Sub – song vẫn đủ mạnh để phiên dịch đề cương:

Puclic Sub Chorus () ‘ Nhiều điều lệnh in End Sub.

Cũng như các hàm khác, dòng đầu tiên của thủ tục Sub có tên là phần đầu. Cũng như các hàm do ngườI dùng định nghĩa, phần đầu này có thể có các từ chỉ định truy cập ( chẳng hạn là Pulic ). Sau đó là từ khố Sub rồI đến thủ tục. Tên thủ tục Sub cũng phảI theo các qui tắc như trong biến. Kế tiếp là danh sách tham số, được bao trong các dấu ngoặc đơn, dành cho các thông tin mà hàm sẽ dùng. Chẳng hạn, thủ tục sự kiện Click () và thủ tục Chorus Sub không dùng tham số nào cả. Lưu ý, cho dù thủ tục không dùng tham số, song vẫn phảI có dấu ngoặc đơn trống trong Sub. Sau Sub là các dòng chứa các điều lệnh tạo thành thủ tục. Các điều lệnh này còn gọI là thân ( của thủ tục ). CuốI cùng, Ta có các từ khố End Sub nằm ở tên các dòng riêng biệt. Cũng như trong các thủ tục sự kiện, các từ khố này được dùng để nêu rõ điểm cuốI của một thủ tục chung. Ngồi ra, ta cần một phương cách để

chuyển giao thông tin giữa chương trình chính và thủ tục Sub. Để thực hiện, ta theo cùng cách thức như các hàm: dùng danh sách tham số. Danh sách tham số được dùng để liên lạc giữa chương trình chính và thủ tục, khi gọI thủ tục Sub ta dùng tên của nó theo sau là các đốI số (tham số), được tách biệt bởI các dấu phẩy.

Các giá trị (mà thực tế là các vị trí bộ nhớ) của các đốI số sẽ được chuyển cho các tham số tương ứng trong thủ tục, và các điều lệnh bên trong thủ tục Sub được thi hành. Khi đạt đến điều lệnh End_ Sub, việc thi hành sẽ tiếp tục vớI các dòng theo sau lệnh gọI đến thủ tục Sub. Cũng như các thủ tục Function, ta phảI dùng cùng số lượng tham số như số lượng tham số đã định nghĩa trong thủ tục Sub, và chúng phảI có cùng kiểu tương thích.

Một phần của tài liệu Thiết kế cho hệ thống quản lý công chức – tiền lương của UBDS-GĐ&TE (Trang 26 - 28)