Trang 1 trên 1

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

Đã gửi: T.Hai 14/07/2008 1:59 pm
gửi bởi vo_minhdat2007
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.

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

Đã gửi: T.Hai 14/07/2008 2:29 pm
gửi bởi vo_minhdat2007
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.

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

Đã gửi: T.Ba 15/07/2008 1:06 pm
gửi bởi Dang Minh Du
Thanks nhé!
Đang định tìm hỉu một chút về .Net :)

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

Đã gửi: T.Ba 15/07/2008 9:44 pm
gửi bởi vo_minhdat2007
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! ;)

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

Đã gửi: CN 25/10/2009 10:13 am
gửi bởi huynguyen
Ko viết tiếp luôn sao bạn. Đang hay mà ko có hồi kết T.T

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

Đã gửi: CN 25/10/2009 11:49 am
gửi bởi vo_minhdat2007
Ồ 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!

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

Đã gửi: CN 25/10/2009 2:37 pm
gửi bởi vo_minhdat2007
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!

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

Đã gửi: CN 25/10/2009 2:48 pm
gửi bởi vo_minhdat2007
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 ;)

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

Đã gửi: T.Năm 25/02/2010 11:42 pm
gửi bởi hagiang01
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. :)

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

Đã gửi: T.Tư 08/05/2013 2:02 am
gửi bởi ninolam
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