Function Procedures
ฟังก์ชันและโพซีเยอร์ เป็นชุดของคำสั่งเพื่อให้ในโปรแกรมทำงานบางอย่าง โดยฟังก์ชันและโพซีเยอร์นั้นถือว่าเป็นสิ่งเดียวกัน แต่สิ่งที่แตกต่างกันคือฟังก์ชันจะมีการส่งค่ากลับหลังจากการทำงานเสร็จสิ้น ส่วนโพซีเยอร์นั้นไม่มีการส่งค่ากลับ
การใช้ฟังก์ชันและโพซีเยอร์นั้นมีประโยชน์มากสำหรับการเขียนโปรแกรม มันเป็นการนำโค้ดเดิมกลับมาใช้ใหม่ การปกปิดข้อมูล และช่วยให้เราสามารถแบ่งโค้ดออกเป็นส่วนย่อยๆ รวมทั้งช่วยให้การจัดการและแก้ไขโค้ดได้ง่าย
การสร้าง Procedures
โพซีเยอร์ คือฟังก์ชันที่ไม่มีการส่งค่ากลับมายังส่วนที่เรียกใช้ ในการประกาศโพซีเยอร์ในภาษา Visual Basic เราใช้คำสั่ง Sub
และสิ้นสุดบล็อคของโพซีเยอร์ด้วยคำสั่ง End Sub
ภายในบล็อคของคำสั่งประกอบด้วยคำสั่งของโปรแกรมที่เราต้องการให้ทำงาน
Module ProceduresExample
Sub Main()
ShowMessage()
End Sub
Sub ShowMessage()
Console.WriteLine("Hello World!")
End Sub
End Module
ในตัวอย่าง เราได้สร้างโพซีเยอร์ ShowMessage()
โค้ดภายในบล็อคของโพซีเยอร์นั้นเป็นส่วนการทำงานของมัน ซึ่งจะแสดงข้อความออทางหน้าจอ
ShowMessage()
ภายในฟังก์ชัน Main() เราได้เรียกใช้โพซีเยอร์ด้วยคำสั่ง ShowMessage()
คุณจะสังเกตว่าทั้งสองนั้นเป็นโพซีเยอร์เช่นเดียวกัน
Hello World!
และนี่เป็นผลลัพธ์ของโปรแกรมในการเรียกใช้โพซีเยอร์
Info: ส่วนมากเรามักจะเรียกทั้งฟังก์ชันและโพซีเยอร์ว่าฟังก์ชัน เพื่อความรวดเร็วและเข้าใจง่ายในการเขียนโปรแกรม
การสร้าง Function
คุณได้รู้จักโพซีเยอร์ไปแล้ว ต่อไปคุณจะได้รู้จักกับฟังก์ชัน สิ่งที่แตกต่างกันก็อย่างที่เราได้บอกไป ฟังก์ชันจะมีการส่งค่ากลับไปยังทีที่เรียกใช้มัน มาดูตัวอย่างการประกาศและใช้งานฟังก์ชันในภาษา Visual Basic
Module FunctionExample
Sub Main()
Dim name As String
Console.Write("Enter your name: ")
name = GetName()
Console.WriteLine("Hello {0}", name)
End Sub
Function GetName() As String
Dim s As String = Console.ReadLine()
Return s
End Function
End Module
ในตัวอย่าง เป็นโปรแกรมสำหรับรับค่าชื่อจากฟังก์ชันที่มีการส่งค่ากลับ และนำชื่อนั้นมาแสดงผลทักทาย
Function GetName() As String
Dim s As String = Console.ReadLine()
Return s
End Function
นี่เป็นส่วนในการประกาศฟังก์ชันที่มีชื่อว่า GetName()
โดยการประกาศฟังก์ชันนั้นจะใช้คำสั่ง Function
และสิ้นสุดบล็อคของฟังก์ชันด้วย End Function
สำหรับฟังก์ชันนั้นจะมีการส่งค่ากลับ เราต้องกำหนดว่าจะส่งค่ากลับเป็นข้อมูลแบบไหน คำสั่ง As String
หลังจากชื่อของฟังก์ชัน บอกว่าฟังก์ชันนี้จะส่งค่ากลับเป็น String และเราใช้คำสั่ง Return
สำหรับส่งค่ากลับไป
name = GetName()
ในฟังก์ชัน Main() เราเรียกใช้ฟังก์ชันเหมือนกับโพซีเยอร์ แต่สำหรับฟังก์ชันจะต้องนำตัวแปรมารับค่าที่ส่งกลับมาจากฟังก์ชัน ซึ่งต้องเป็นตัวแปรประเภทเดียวกันกับที่เรากำหนดไว้ในการส่งค่ากลับของฟังก์ชัน
Enter your name: Daniel
Hello Daniel
นี่เป็นผลลัพธ์ของโปรแกรม เมื่อกรอกชื่อเป็น Daniel ซึ่งเป็นค่าที่ส่งกลับมาจากฟังก์ชันและเรานำมาแสดงผลออกทางหน้าจอ
พารามิเตอร์และอากิวเมนต์ของฟังก์ชัน
ในตัวอย่างก่อนหน้า เป็นการใช้งานฟังก์ชันและโพซีเยอร์ที่ไม่มีการส่งค่าเข้าไปในฟังก์ชัน ค่าที่ส่งเข้าไปในฟังก์ขันนั้นสามารถเป็นได้ทั้งตัวแปร ออบเจ็ค อาเรย์ หรือเมธอด ซึ่งเรียกว่าพารามิเตอร์ ต่อไปมาดูการส่งค่าไปใช้งานในฟังก์ชัน
Module FunctionParameterExample
Sub Main()
Hello("Sam")
Dim x, y As Integer
x = 5
y = 3
Console.WriteLine("5 + 3 = {0}", Sum(x, y))
Console.WriteLine("10 + 23 = {0}", Sum(10, 23))
End Sub
Sub Hello(ByVal name As String)
Console.WriteLine("Hello " & name)
End Sub
Function Sum(ByVal a As Integer, ByVal b As Integer) As Integer
Dim c As Integer = a + b
Return c
End Function
End Module
ในตัวอย่าง เราได้สร้างโพซีเยอร์ Hello()
สำหรับแสดงข้อความทักทาย และฟังก์ชัน Sum()
ในการหาผลรวมของตัวเลขและส่งค่ากลับ
Sub Hello(ByVal name As String)
Console.WriteLine("Hello " & name)
End Sub
นี่เป็นการสร้างโพซีเยอร์ Hello()
โดยมีพารามิเตอร์หนึ่งตัว เราใช้คำสั่ง ByVal
ตามด้วยชื่อและประเภทข้อมูลสำหรับใช้ในโพซีเยอร์ ถ้าหากมีพารามิเตอร์มากกว่า 1 ตัว คุณสามารถคั่นด้วยเครื่องหมาย comma ได้
Hello("Sam")
นี่เป็นการเรียกใช้งานโพซีเยอร์ที่สร้างขึ้น เราจะต้องส่งตัวแปรเข้าไปภายในบ ()
ให้สอดคล้องกับพารามิเตอร์ของโพซีเยอร์ ส่งค่าไปให้กับพารามิเตอร์เราเรียกว่าอากิวเมนต์
Function Sum(ByVal a As Integer, ByVal b As Integer) As Integer
Dim c As Integer = a + b
Return c
End Function
ตัวไปเราสร้างฟังก์ชัน Sum()
ที่มีพารามิเตอร์สองตัวเป็น Integer โดยฟังก์ชันจะนำเลขทั้งสองบวกกันและส่งค่ากลับ เราได้เรียกใช้ฟังก์ชันในคำสั่ง Sum(x, y)
และ Sum(10, 23)
ซึ่งส่งอากิวเมนต์ Integer สองตัวเข้าไปยังฟังก์ชัน
Hello Sam
5 + 3 = 8
10 + 23 = 33
นี่เป็นผลลัพธ์ของโปรแกรม การใช้งานฟังก์ชันพารามิเตอร์
การใช้งานฟังก์ชันกับอาเรย์
คุณสามารถส่งอาเรย์เข้าไปในฟังก์ชันได้เช่นเดียวกันกับตัวแปร และการส่งค่าอาเรย์กลับด้วยคำสั่ง Return ต่อไปมาดูตัวอย่างการใช้งานอาเรย์กับฟังก์ชัน
Module FunctionWithArray
Sub Main()
Dim numbers = New Integer() {1, 2, 3, 5, 8, 9, 10, 13, 15, 17}
Dim r() As Boolean = IsPrimeArray(numbers)
Console.WriteLine("Are these numbers prime?")
For i As Integer = 0 To numbers.Length - 1
Console.WriteLine("{0} = {1}", numbers(i), r(i))
Next
End Sub
Function IsPrimeArray(ByVal numbers() As Integer) As Boolean()
Dim result(numbers.Length) As Boolean
For i As Integer = 0 To numbers.Length - 1
result(i) = IsPrime(numbers(i))
Next
Return result
End Function
Function IsPrime(ByVal number As Integer) As Boolean
If number = 1 Then
Return False
End If
For i As Integer = 2 To number - 1
If number Mod i = 0 And i <> number Then
Return False
End If
Next
Return True
End Function
End Module
ในตัวอย่าง เป็นโปรแกรมในการตรวจสอบว่าตัวเลขในอารย์เป็นจำนวนเฉพาะหรือไม่ โดยเราจะทำการส่งอาเรย์เข้าไปในฟังก์ชัน และทำการส่งผลลัพธ์กลับมาในรูปแบบอาเรย์เช่นเดียวกัน
Function IsPrimeArray(ByVal numbers() As Integer) As Boolean()
...
ในการประกาศฟังก์ชันสำหรับการรับค่าพารามิเตอร์แบบอารย์นั้น เราจะใส่เครื่องหมาย ()
หลังจากชื่อตัวแปร เช่นเดียวกันกับในตอนที่เราประกาศอาเรย์ คำสั่ง ByVal numbers() As Integer
คือการประกาศพารามิเตอร์สำหรับรัยค่าอาเรย์ของ Integer ที่จะส่งเข้ามา
เช่นเดียวกันสำหรับการส่งค่ากลับ เราประกาศรูปแบบของฟังก์ชันเป็น As Boolean()
นั่นหมายความว่าฟังก์ชันนี้จะส่งค่ากลับเป็นอาเรย์ของ Boolean ที่ผลลัพธ์ของตัวเลขแต่ละตัวว่าเป็นจำนวนเฉพาะหรือไม่
Dim r() As Boolean = IsPrimeArray(numbers)
นี่เป็นคำสั่งในการเรียกใช้ฟังก์ชัน โดยการส่งอาเรย์ numbers
เข้าไป และในขณะเดียวกันตัวแปรอาเรย์ r
กับรับค่าที่ส่งกลับมาจากฟังก์ชัน
Function IsPrime(ByVal number As Integer) As Boolean
...
นี่เป็นฟังก์ชันในการหาว่าตัวเลขเป็นคำนวนเฉพาะหรือไม่ โดยโปรแกรมจะทำงานตามอัลกอริทึมของการหาจำนวนเฉพาะ และส่งผลลัพธ์เป็น Boolean กลับไป
Are these numbers prime?
1 = False
2 = True
3 = True
5 = True
8 = False
9 = False
10 = False
13 = True
15 = False
17 = True
นี่เป็นผลลัพธ์ของโปรแกรมในการใช้งานอาเรย์กับฟังก์ชัน
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับการสร้างและใช้งานฟังก์ชันและโพซีเยอร์ และรู้ในความแตกต่างของทั้งสองแบบนี้ และการใช้งานอาเรย์กับฟังก์ชัน