210 likes | 400 Views
โพร ซี เยอร์ และอี เวนต์. โพร ซี เยอร์ และอี เวนต์.
E N D
โพรซีเยอร์และอีเวนต์ ซับโพรซีเยอร์เป็นชุดคำสั่งที่ใช้ในการทำงานอย่างใดอย่างหนึ่ง ส่วนมากมักเป็นสิ่งที่ต้องทำซ้ำบ่อยๆ ภายในโปรแกรมนั้น โดยแยกสิ่งที่ต้องทำซ้ำๆ ดังกล่าวออกมาเป็นชุดคำสั่งย่อยๆ ต่างหาก เพื่อให้สามารถเรียกใช้งานเฉพาะส่วนนี้ได้ทันทีเมื่อต้องการ ดังนั้น ซัพโพรซีเยอร์จึงช่วยให้ไม่ต้องเขียนโปรแกรมที่ต้องทำสิ่งเดียวกันซ้ำบ่อยๆ ทำให้ประหยํดเวลาและลดขนาดของโค๊ดลงไปได้ ซึ่งก็จะส่งผลให้โปรแกรมทำงานได้เร็วขึ้นด้วย รูปแบบพื้นฐานในการเขียนซับโพรซีเยอร์
โพรซีเยอร์และอีเวนต์ โมดิฟายเออร์Sub ชื่อซับโพรซีเยอร์ (พารามิเตอร์) คำสั่ง End Sub
โพรซีเยอร์และอีเวนต์ โมดิฟายเออร์(modifier)เป็นระดับการควบคุมการเรียกใช้ซับโพรซีเยอร์จากภายนอก(จากคลาสอื่นๆ) แม้ว่าไม่จำเป็นต้องกำหนดโมดิฟายเออร์อะไรเลยก็ได้ แต่เพื่อให้ถูกต้องตามหลัก OOP และเป็นแนวทางเดียวกับตัวจัดการอีเวนต์ กำหนดให้โมดิฟายเออร์ให้แก่ซับโพรซีเออร์เสมอ ชื่อซับโพรซีเยอร์ มีหลักการคล้ายดับการตั้งชื่อตัวแปร สำหรับในvbนิยมเขียนชื่อซับโพรซีเยอร์ให้ขึ้นตัวใหญ่พิมพ์ใหญ่ แล้วตัวถัดไปเป็นตัวพิมพ์เล็ก ถ้าเป็นการนำหลายๆ ค่ามารวมกันก็ได้เขียนติดกัน และควรเขียนขึ้นต้นและแต่ละคำด้วยตัวพิมพ์ใหญ่ เช่น FindCircleArea, ShowError, PrintEmployeeData พารามิเตอร์ คือการรับข้อมูลจากภายนอกเข้ามา เช่นซับโพรซีเยอร์สำหรับหาพื้นที่วงกลมก็อาจรับค่ารัสมีจากภายนอกเข้ามา เป็นต้น แต่ทั้งนี้พารามิเตอร์อาจจะไม่มีก็ได้ ขึ้นกับความจำเป็น
โพรซีเยอร์และอีเวนต์ Private Sub SayHello() ‘--กรณีไม่มีพารามิเตอร์ MessageBox.Show(“Hellor”) End Sub PravateSub ShowMessage(ByValmsg As String) ‘--กรณีมีพารามิเตอร์ MessageBox.Show(msg) End Sub
โพรซีเยอร์และอีเวนต์ การกำหนดพารามิเตอร์เบื้องต้น พารามิเตอร์(Parameter) คือข้อมูลที่รับเข้ามาจากภายนอกเพื่อใช้งานในโพรซีเยอร์ ซึ่งพารามิเตอร์นี้จะช่วยให้โพรซีเยอร์สามารถเปลี่ยนแปลงการทำงานไปตามข้อมูลที่รับเข้ามา และให้ผลลัพธ์ที่แตกต่างกันออกไปด้วย ดังนั้น พารามิเตอร์จึงช่วยให้โพรซีเยอร์มีความยืดหยุ่นในการทำงานมากขึ้น โดยหลักการที่สำคัญเกี่ยวกับพารามิเตอร์
โพรซีเยอร์และอีเวนต์ เนื่องจากพารามิเตอร์ก็คือ ตัวแปรในอีกลักษณะหนึ่ง ดังนั้น การกำหนดชื่อพารามิเตอร์ก็ใช้หลักการเดี่ยวกับการกำหนดชื่อตัวแปร พร้อมระบุชนิดข้อมูลให้กับพารามิเตอร์นั้นด้วย และที่สำคัญคือต้องระบุคีย์เวิร์ด ByValแทน Dim เช่น Private Sub Test(ByVal a As Integer) ….. End Sub
โพรซีเยอร์และอีเวนต์ ถ้ามีพารามิเตอร์มากกว่า 1 ตัว ก็ให้คั่นด้วยเครื่องหมาย Private Sub Test(ByVal a As Integer, ByVal b As Integer, ByVal c As Integer) ….. End Sub
โพรซีเยอร์และอีเวนต์ กรณีที่มีพารามิเตอร์มากว่า 1 ตัว ตัวที่ข้อมูลเป็นชนิดเดียวกัน เราไม่สามารถนำมาเขียนรวมกันไว้ในคีย์เวิร์ด ByValเดียวกันได้ ต้องแยกเขียนทีละตัว ดังเช่นในการต่อไปนี้ ผิด Private Sub Test(ByVala, b, c As Integer) ….. End Sub
โพรซีเยอร์และอีเวนต์ ข้อมูลที่รับผ่านพารามิเตอร์เข้ามาในโพรซีเยอร์ ไม่จำเป็นต้องเป็นชนิดพื้นฐาน(เช่น ตัวเลข สตริง บูลีน) แต่สามารถเป็นชนิดออบเจ็กต์ของคอนโทรลได้ๆ ก็ได้ Private Sub Test(ByVal a As Button, ByVal b As TextBox) ….. End Sub
โพรซีเยอร์และอีเวนต์ พารามิเตอร์ที่กำหนดเป็นตัวแปรของโพรซีเยอร์ สามารถเรียกใช้งานได้ Private Sub Test(ByVal data As Double, ByVal txt As TextBox) Data +=1 txt.Text=data End Sub
โพรซีเยอร์และอีเวนต์ การเรียกใช้ซับโพรซีเยอร์ การเรียกใช้งานซับโพรซีเยอร์ให้ระบุชื่อซับโพรซีเยอร์ พร้อมกำหนดค่าอาร์กิวเมนต์(ถ้ามี) ณ ตำแหน่งที่ต้องการใช้ซับโพรซีเยอร์
โพรซีเยอร์และอีเวนต์ การเรียกใช้โพรซีเยอร์ข้อมูลที่จะส่งไปให้แก่โพรซีเยอร์ จะเรียกว่า Actual Parameter หรือเรียกอีกอย่างว่า อาร์กิวเมนต์ (Argument) แต่รูปแบบการรับข้อมูลที่กำหนดไว้ที่โพรซีเยอร์ จะเรียกว่า Formal Parameter หรือเรียกสั่นๆ ว่า พารามิเตอร์(parameter)
โพรซีเยอร์และอีเวนต์ สิ่งสำคัญในการกำหนดข้อมูลของส่วนอาร์กิวเมนต์ต้องตรงกับรูปแบบพารามิเตอร์ที่กำหนดไว้ที่โพรซีเยอร์ทั้ง จำนวน ชนิดข้อมูล และลำดับต้องตรงกัน
โพรซีเยอร์และอีเวนต์ ตัวอย่าง
โพรซีเยอร์และอีเวนต์ การสร้างฟังก์ชั่น(Function) ฟังก์ชั่นโพรซีเยอร์(Function Procedure) หรือ ฟังก์ชั่น จัดเป็นโพรซีเยอร์อีกรูปแบบหนึ่ง แต่มีการทำงานแตกต่างคือ ฟังก์ชั่นจะต้องส่งผลลัพธ์กลับมายังส่วนที่เรียกใช้งานเสมอ
โพรซีเยอร์และอีเวนต์ ตัวอย่าง
โพรซีเยอร์และอีเวนต์ การหยุดการทำงานของโพรซีเยอร์ คำสั่ง Return โดยไม่ต้องระบุข้อมูลใดๆ ต่อท้าย สามารถใช้ได้กับทั้งซับโพรซีเยอร์และฟังก์ชั่น คำสั่ง Exit ถ้าต้องการออกจากซับโพรซีเยอร์ให้กำหนดเป็น Exit Sub แต่หากต้องการออกจากฟังก์ชั่นให้กำหนดเป็น Exit Funtion