• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Hàm và thủ tục trong VB.NET

Các bài viết hướng dẫn về Visual Basic .NET và C#

Điều hành viên: tungcan5diop, QUANITGROBEST

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Hàm và thủ tục trong VB.NET

Gửi bàigửi bởi vo_minhdat2007 » T.Hai 14/07/2008 1:59 pm

Tên bài viết: Hàm trong VB.NET
Tác giả: Võ Minh Đạt
Cấp độ bài viết: Người mới bắt đầu
Tóm tắt: Cách sử dụng và khai báo hàm, phạm vi hoạt động của nó


Cấu trúc của một Function (hàm) như sau :

Mã: Chọn hết

  1. [ <attributelist> ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ] _
  2. Function name [ (Of typeparamlist) ] [ (parameterlist) ] [ As returntype ]
  3.     [ statements ]
  4. [ Exit Function ]
  5.     [ statements ]
  6. End Function

Tham số :
attributelist
Tuỳ chọn.
accessmodifier
Tuỳ chọn, là một trong danh sách sau :
Public
Protected
Friend
Private
Protected Friend
Xem phụ lục 1.
proceduremodifiers
Tuỳ chọn : là một trong danh sách sau :
Overloads
Overrides
Overridable
NotOverridable
MustOverride
MustOverride Overrides
NotOverridable Overrides

Shared
Tuỳ chọn.
Shadows
Tuỳ chọn.
name
Bắt buộc và phải tuân theo qui tắc đặt tên.
typeparamlist
Tuỳ chọn. Loại tham số của tham số.
parameterlist
Tuỳ chọn. Danh sách các biến cục bộ của hàm.
returntype
Bắc buộc nếu Option Strict là On. Dữ liệu của hàm trả về.
statements
Tuỳ chọn, các câu lệnh của hàm. Tuy nhiên không ai lại để trống nội dung của một hàm bao giờ.
End Function
Bắt buộc. Từ khoá kết thúc hàm.


Thân,
Advance Members Group.

P/S : Em có nguyện vọng lập lại box Hướng dẫn cơ bản nhưng cần có thêm 1 MOD để phụ giúp thêm về tài liệu.
Sửa lần cuối bởi vo_minhdat2007 vào ngày T.Hai 14/07/2008 3:15 pm với 2 lần sửa.



Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Hàm và thủ tục trong VB.NET

Gửi bàigửi bởi vo_minhdat2007 » T.Hai 14/07/2008 2:29 pm

Tên bài viết: Phụ lục 1
Tác giả: Võ Minh Đạt
Cấp độ bài viết: Người mới bắt đầu
Tóm tắt: Phụ lục 1 : Mức độ truy cập trong Visual Basic

Mức độ truy cập (Access Level) của tham số khai báo là qui mô của khả năng tiếp cận chúng, cái mà code có quyền để đọc hoặc ghi chúng. Nó được xác định không chỉ bởi lập trình viên, mà còn bởi mức độ truy cập của đối tượng chứa (container). Code không truy cập được đối tượng chứa thì không thể truy cập đến đối tượng bị chứa, cho dù đã được khai báo là Public. Ví dụ, một khai báo Public trong một cấu trúc Private có thể truy cập bởi class chứa cấu trúc đó, nhưng bên ngoài class thì không.
Public
Từ khoá Public trong cấu trúc khai báo chỉ định nguyên tố (biến, tham số, …) đó có thể truy cập bởi bất kì nơi nào trong project, hay từ project khác mà trong referecnce của project đó có project này. Ví dụ khai báo một class Public :

Mã: Chọn hết

  1. Public Class classForEverybody

Public chỉ có thể dùng trong module, giao diện (Interface) hoặc Namespace. Có nghĩa là bạn có thể khai báo một nguyên tố public ở tập tin source của namespace, hoặc ở interface, module, class hoặc structure, nhưng không được ở một hàm/thủ tục.
Protected
Từ khoá Protected trong cấu trúc khai báo chỉ định nguyên tố có thể được truy cập chỉ trong class hoặc từ class con. Ví dụ về khai báo một class Protected :

Mã: Chọn hết

  1. Protected Class classForMyHeirs

Protected chỉ có thể dùng trong class, và chỉ khi bạn khai báo một thành viên của class. Nó nghĩa là bạn có thể khai báo một nguyên tố protected trong class, nhưng không được khai báo ở nguồn namespace, hoặc trong một interface, module, structure hay hàm/thủ tục.
Friend
Từ khoá Friend trong cấu trúc khai báo chỉ định nguyên tố có thể được truy cập trong cùng một assembly, nhưng không được từ assembly khác. Ví dụ khai báo một biến Friend :

Mã: Chọn hết

  1. Friend stringForThisProject As String

Friend chỉ có thể được sử dụng ở module, interface hoặc namespace. Nó có nghĩa là bạn có thể khai báo một nguyên tố friend tại tập tin nguồn của namespace, hoặc trong một interface, module, class hoặc cấu trúc nhưng không được ở một hàm/thủ tục.
Protected Friend
Hai từ khoá ProtectedFriend đi cùng nhau trong cấu trúc khai báo chỉ định nguyên tố có thể truy cập được từ class con, trong cùng assembly hoặc cả hai. Ví dụ về khai báo một biến Protected Friend :

Mã: Chọn hết

  1. Protected Friend stringForProjectAndHeirs As String

Protected Friend chỉ có thể thể dùng ở class, và chỉ có thể dùng để khai báo một thành viên của class. Nó có nghĩa là bạn có thể khai báo một nguyên tố protected friend trong một class, nhưng không thể khai báo ở namespace, hoặc trong inteface, module, structure, hàm/thủ tục.
Private
Từ khoá Private trong cấu trúc khai báo chỉ định nguyên tố có thể truy cập chỉ trong cùng module, class hoặc structure. Ví dụ về khai báo một biến Private :

Mã: Chọn hết

  1. Private numberForMeOnly As Integer

Private chỉ có thể dùng được ở module. Nó có nghĩa bạn có thể khai báo một nguyên tố private trong một module, class hoặc structure, nhưng không khai báo được ở tập tin nguồn namespace, trong interface hay hàm/thủ tục.
Trong module, cấu trúc Dim mà không có bất kì từ khoá truy cập nào thì được hiểu như là một khai báo Private. Tuy nhiên, bạn có thể cần dùng từ khoá Private để code dễ đọc hơn.


Thân,
Advance Members Group.

Hình đại diện của người dùng
Dang Minh Du
Thành viên ưu tú
Thành viên ưu tú
Bài viết: 531
Ngày tham gia: T.Tư 02/04/2008 2:08 pm
Đến từ: RGames Team
Has thanked: 3 time
Been thanked: 17 time
Liên hệ:

Re: Hàm và thủ tục trong VB.NET

Gửi bàigửi bởi Dang Minh Du » T.Ba 15/07/2008 1:06 pm

Thanks nhé!
Đang định tìm hỉu một chút về .Net :)
~°Dòng Sông Mùa Thu°~
Studying...!

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Hàm và thủ tục trong VB.NET

Gửi bàigửi bởi vo_minhdat2007 » T.Ba 15/07/2008 9:44 pm

Xin lỗi mọi người, nhận tin được tuyển đi Tin học trẻ Quốc gia nên đành tạm ngưng, cái thủ tục và các phụ lục chắc dời qua hơn nửa tháng 9. Mong mọi người thông cảm! ;)

huynguyen
Thành viên chính thức
Thành viên chính thức
Bài viết: 16
Ngày tham gia: T.Hai 31/03/2008 9:32 pm

Re: Hàm và thủ tục trong VB.NET

Gửi bàigửi bởi huynguyen » CN 25/10/2009 10:13 am

Ko viết tiếp luôn sao bạn. Đang hay mà ko có hồi kết T.T

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Hàm và thủ tục trong VB.NET

Gửi bàigửi bởi vo_minhdat2007 » CN 25/10/2009 11:49 am

Ồ còn thiếu bài này à :-s . Thế mà nhớ là mình đã hoàn thành rồi chứ :(. Xin lỗi, sẽ viết tiếp!

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Hàm và thủ tục trong VB.NET

Gửi bàigửi bởi vo_minhdat2007 » CN 25/10/2009 2:37 pm

Tên bài viết: Thủ tục trong VB.NET
Tác giả: Võ Minh Đạt
Cấp độ bài viết: Người mới bắt đầu
Tóm tắt: Về cơ bản, hàm và thủ tục giống hệt nhau, chỉ khác nhau về nhiệm vụ của chúng, nên không khác hàm là mấy!



Khai báo :

Mã: Chọn hết

  1. [ <attributelist> ] [Partial] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ]
  2. Sub name [ (Of typeparamlist) ] [ (parameterlist) ] [ Implements implementslist | Handles eventlist ]
  3.     [ statements ]
  4.     [ Exit Sub ]
  5.     [ statements ]
  6. End Sub


Tham số :

attributelist
Tuỳ chọn.

accessmodifier
Tuỳ chọn, là một trong danh sách sau :
Public
Protected
Friend
Private
Protected Friend

proceduremodifiers
Tuỳ chọn : là một trong danh sách sau :
Overloads
Overrides
Overridable
NotOverridable
MustOverride
MustOverride Overrides
NotOverridable Overrides

Shared
Tuỳ chọn.

Shadows
Tuỳ chọn.

name
Bắt buộc và phải tuân theo qui tắc đặt tên.

typeparamlist
Tuỳ chọn. Loại tham số của tham số.

parameterlist
Tuỳ chọn. Danh sách các biến cục bộ của thủ tục.

statements
Tuỳ chọn, các câu lệnh của thủ tục.

End Sub
Bắt buộc. Từ khoá kết thúc thủ tục.

Ngoài ra đối với VB.NET còn có thêm từ khoá Handles rất hay. Nhiệm vụ của Handles là điều khiển sự kiện của một control nào đó bằng chính thủ tục này mà không cần thông qua AddHandler! Ta sẽ bàn sau!

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Hàm và thủ tục trong VB.NET

Gửi bàigửi bởi vo_minhdat2007 » CN 25/10/2009 2:48 pm

Tên bài viết: Hàm và thủ tục, khi nào?
Tác giả: Võ Minh Đạt
Cấp độ bài viết: Rất dễ
Tóm tắt: Làm sao để phân biệt khi nào dùng hàm hay thủ tục? Handles của thủ tục trong VB.NET dùng để làm gì?



I- Phân biệt hàm và thủ tục?
  • Thủ tục : Làm một công việc nào đó lặp đi lặp lại nhiều lần, ở nhiều nơi.
  • Hàm : Giống thủ tục, nhưng cuối cùng trả về một giá trị nào đó (kể cả Nothing, ...)
  • Tóm lại : Hàm hoàn toàn có thể thay thế thủ tục (không trả về giá trị gì), và đôi khi người ta gọi nhầm thủ tục thành luôn là hàm! Trong VB.NET, hàm và thủ tục đều khai báo tham số trong dấu ngoặc đơn nên gần như không cần quan tâm nó là hàm hay thủ tục cả!

II- Từ khoá Handles của thủ tục :
Nói vậy nhưng thực ra hàm vẫn không thay thế thủ tục được. Bạn có để ý rằng trong một sự kiện (event) của bất kì control nào sẽ có khai báo dạng :

Mã: Chọn hết

  1.    Private Sub frmPortal_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) [b]Handles Me.KeyDown[/b]
  2.  
  3.     End Sub


Thực chất nếu bạn xoá phần đã tô đậm, nó sẽ trở về một thủ tục bình thường, là một thủ tục có tên là frmPortal_KeyDown, với 2 tham số là sender và e. Tương tự, nếu bạn có thay đổi frmPortal_KeyDown thành cái khác, thì VB.NET vẫn sẽ quản lí sự kiện KeyDown của form bằng thủ tục này. Đặc biệt nếu bạn thêm vào như sau :

Mã: Chọn hết

  1.    Private Sub frmPortal_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown, [b]tmrTime.Tick[/b]
  2.  
  3.     End Sub


thì cả 2 sự kiện KeyDown của Form và sự kiện Tick của Timer khi gặp đều sẽ đến đây hết, do 1 thủ tục này quyết định!

Giờ bạn đã thấy vai trò của hàm và thủ tục rồi. Hi vọng bạn sẽ có quyết định của mình khi cần dùng đến hàm/thủ tục ;)

Hình đại diện của người dùng
hagiang01
Bài viết: 8
Ngày tham gia: T.Bảy 20/02/2010 8:54 pm
Đến từ: TX-Ha Giang
Liên hệ:

Re: Hàm và thủ tục trong VB.NET

Gửi bàigửi bởi hagiang01 » T.Năm 25/02/2010 11:42 pm

bài viết hay wa'
thank bác nhiều.
em cung mới học nên cần tham kảo mấy thứ này. :)

ninolam
Bài viết: 1
Ngày tham gia: T.Tư 08/05/2013 12:29 am

Re: Hàm và thủ tục trong VB.NET

Gửi bàigửi bởi ninolam » T.Tư 08/05/2013 2:02 am

mong các bác giúp e viết cái chương trình tính theo công thức này cái.thankssss
[{1+(2h/s)^2}.{1+(h/s)^2}]^0,25


Quay về “[.NET] Bài viết hướng dẫn”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.3 khách