การเขียนโปรแกรมด้วย Visual Basic นั้นจะใช้ภาษา BASIC (เบสิก) ที่รับความสามารถใหม่ๆ เข้าไป ทำให้กลายเป็นภาษาที่มีความสามารถมากขึ้น วัตถุประสงค์ของภาษาเบสิกก็เพื่อที่จะเป็นภาษากลางที่เราจะสามารถสื่อสารให้คอมพิวเตอร์เข้าได้เหมือนภาษาพูด เช่น ภาษาอังกฤษที่ใช้เป็นภาษากลางในการพูดคุย ภาษาเบสิกก็เช่นเดียวกัน ไม่ว่านักพัฒนาโปรแกรมจะอยู่ส่วนใดของโลกถ้าต้องการสั่งงานเหมือนกัน ก็จะใช้คำสั่งเบสิกคำสั่งเดียวกันทั้งโลก
จากบทที่ผ่านมาเราได้รู้จักคำสั่งของ VB และคอนโทรลพื้นฐานกันมาบ้างแล้ว สำหรับในบทนี้จะให้ความรู้พื้นฐานเกี่ยวกับเขียนโปรแกรมด้วย VB เพื่อให้เราสามารถเขียนโปรแกรมให้ทำงานตรงตามจุดประสงค์ต่อไป โดยการฝึกเขียนโปรแกรมนั้นอาจเขียนโปรแกรมเล็กๆ ขึ้นมาก่อน โดยพัฒนาโปรแกรมแบบ Console Application
ตัวอย่าง จากโปรแกรมต่อไปนี้เป็นการเขียนโปรแกรมให้แสดงผลในโหมดตัวอักษรเป็นข้อความจำนวนสองบรรทัด ให้สร้างโปรเจ็กต์ใหม่ชื่อ Pro4_1 ในแบบ Console Application แล้วคีย์คำสั่งเข้าไปดังนี้
พิมพ์คำสั่งเข้าไปดังนี้
เมื่อรันโปรแกรมจะได้ผลลัพธ์จะแสดงทางหน้าต่างเอาต์พุต ดังต่อไปนี้
จากคำสั่งที่เขียนขึ้นจะเรียกใช้เมธอด Write เพื่อพิมพ์ข้อความที่อยู่ในวงเล็บ โดยหลังจากพิมพ์แล้วจะไม่ขึ้นบรรทัดใหม่ ส่วนคำสั่ง WriteLine จะเป็นการพิมพ์ที่ขึ้นบรรทัดใหม่หลังจากพิมพ์ข้อความ ส่วนเมธอด ReadLine จะใช้รับค่าการกดคีย์แป้นพิมพ์ สำหรับรูปแบบการเขียนคำสั่งจะได้ศึกษาในหัวข้อต่อไปนี้
การเขียนคำสั่งในรูปแบบต่างๆ
ในการเขียนคำสั่งโปรแกรมบางครั้งเราอาจต้องการให้มีคำอธิบายสำหรับคำสั่งโปรแกรมในส่วนนั้นๆ หรือต้องการแบ่งคำสั่งในบรรทัดหนึ่งออกเป็นหลายบรรทัด เนื่องจากคำสั่งในบรรทัดนั้นยาวเกินไป การเขียนคำสั่งในรูปแบบเป็นดังนี้
การแบ่งคำสั่งบรรทัดหนึ่งออกเป็นหลายบรรทัด
เนื่องจากคำสั่งใน VB นั้นเราต้องใส่คำสั่งต่างๆ ให้จบภายใน 1 บรรทัด แต่ในบางครั้งคำสั่งนั้นยาวมาก ทำให้ไม่สะดวกในการทำงาน จึงสามารถแตกบรรทัดหนึ่งออกเป็นหลายบรรทัดได้ด้วยการใช้ตัวอักขระช่องว่าง ตามด้วยตัวอักขระ _ ดังตัวอย่างต่อไปนี้
เราสามารถแยกเป็นหลายๆ บรรทัดได้ ดังการเขียนคำสั่งต่อไปนี้
การรวมคำสั่งหลายคำสั่งไว้เป็นบรรทัดเดียว
เราสามารถรวมคำสั่งมากกว่าหนึ่งคำสั่งให้อยู่ในบรรทัดเดียวกันโดยใช้เครื่องหมาย : ในการแยกแต่ละคำสั่งออกจากกัน ตัวอย่างเช่น
เราสามารถรวมเป็นบรรทัดเดียวกันได้ ดังการเขียนคำสั่งต่อไปนี้
จากตัวอย่างข้างต้น จะเป็นการรวมคำสั่ง X = 1, Y = 2 และ Z = X + Y ให้อยู่ในบรรทัดเดียวกัน โดยเว้นแต่ละคำสั่งด้วยเครื่องหมาย :
หากพิจารณาตัวอย่างโปรแกรมที่ 4.1 สามารถรวมคำสั่งสองบรรทัดเข้าด้วยกันได้ดังนี้
การใส่คำอธิบายสำหรับโปรแกรม (Comment)
เราสามารถเพิ่มคำอธิบายสำหรับคำสั่งโปรแกรมในหน้าต่าง Code Editor ได้ เพื่อช่วยให้ทำความเข้าใจกับคำสั่งที่เราพิมพ์ได้ง่ายขึ้น โดยเราสามารถใส่คำอธิบายได้ด้วยการใช้อักขระ ซึ่งเป็นอักขระที่บอกให้ VB ไม่ได้สนใจข้อความที่ตามหลังอักขระนั้น ตัวอย่างการเขียนโปรแกรมจะเป็นการเขียนคำอธิบายไว้หลัง End Sub เพื่ออธิบายว่าเป็นการสิ้นสุดคำสั่งของโปรแกรม
ตัวแปร ค่าคงที่ และชนิดของข้อมูล
การเขียนคำสั่งต่างๆ ใน VB นั้น บางครั้งเราจำเป็นต้องมีการจำข้อมูลบางอย่าง เช่น เมื่อต้องการคูณเลข 2 จำนวน จำนวนนั้นเขียนลงบนกระดาษแล้วจึงตั้งคูณกัน ซึ่งกระดาษทดจะทำหน้าที่เหมือนหน่วยความจำชั่วคราว ตัวแปรใน VB ก็มีความหมายในทำนองเดียวกันคือมีไว้เก็บข้อมูลชั่วคราวในระหว่างการทำงานของโปรแกรม และข้อมูลในตัวแปรสามารถเปลี่ยนแปลงได้
สำหรับค่าคงที่ก็ทำหน้าที่คล้ายกับตัวแปร เพียงแต่ค่าของมันจะไม่เปลี่ยนแปลงตลอดการทำงานของโปรแกรม ค่าคงที่มีประโยชน์ในการเก็บค่าที่ไม่เปลี่ยนแปลง เช่น เก็บค่าคงที่ Pi ที่ใช้คำนวณเกี่ยวกับวงกลม เป็นต้น
ทั้งตัวแปรและค่าคงที่จะมีชื่อสำหรับใช้อ้างอิงในโปรแกรม และตัวแปรจะมีชนิดข้อมูลที่บอกว่าตัวแปรสามารถเก็บค่าอะไรได้บ้าง เช่น ตัวแปรชนิดตัวเลขจะไม่สามารถเก็บข้อความได้ เป็นต้น การใช้ชนิดข้อมูลให้เหมาะสมจะทำให้โปรแกรมที่พัฒนาขึ้นทำงานได้อย่างมีประสิทธิภาพมากขึ้นด้วย
ตัวแปรและการประกาศตัวแปร
ตัวแปรของ VB มีหน้าที่เก็บข้อมูลในการทำงานของโปรแกรมไว้เป็นการชั่วคราว ตัวแปรที่เรากำหนดขึ้นจะต้องประกอบด้วยชื่อและชนิดของข้อมูล (Data Type) ที่ตัวแปรเก็บไว้ ตัวอย่างของการใช้งานตัวแปร เช่น ถ้าหากต้องการคำนวณราคาของหนังสือทั้งหมด โดยให้ผู้ใช้ป้อนข้อมูลเป็นราคาหนังสือต่อเล่ม และจำนวนหนังสือผ่านเท็กบ็อกซ์ และเมื่อผู้ใช้คลิกเมาส์ปุ่มราคารวมทั้งหมด ให้โปรแกรมแสดงราคาหนังสือออกมา ในการพัฒนาโปรแกรมจะต้องนำราคาหนังสือต่อเล่มและจำนวนหนังสือที่ป้อนเข้าไปมาเก็บในตัวแปรเสียก่อน จากนั้นจึงนำค่าในตัวแปรทั้งสองมาคำนวณหาราคารวม
การสร้างตัวแปรขึ้นมาใช้ในโปรแกรมนั้นจะทำได้โดยการประกาศตัวแปร (Variable Declaration) ซึ่งเป็นการบอกว่าในโปรแกรมของเรามีตัวแปรนี้อยู่ และสามารถนำไปใช้งานได้ ใน VB การประกาศตัวแปรจะเริ่มด้วยคำว่า Dim ตามด้วยชื่อตัวแปร และประเภทของข้อมูลที่เก็บในตัวแปร โดยมีรูปแบบดังนี้
ในการประกาศตัวแปร เราจะต้องกำหนดชื่อตัวแปรเพื่อนำชื่อนี้ไปใช้อ้างอิงตลอดทั้งโปรแกรมสำหรับคำว่า As Type จะเป็นการบอกว่าตัวแปรนั้นเป็นข้อมูลชนิดใด ตัวอย่างของชนิดข้อมูลเช่น ชนิด Interger ที่ใช้สำหรับเก็บตัวเลข ข้อมูลชนิด String สำหรับใช้เก็บข้อความ เป็นต้น
สำหรับการประกาศตัวแปรที่ไม่มีส่วนของ [As Type] นั้น VB จะกำหนดให้ตัวแปรที่สร้างขึ้นเป็นข้อมูลชนิดดีฟอลต์ ซึ่งก็คือชนิด Object โดยข้อมูลนี้จะใช้เก็บข้อมูลได้ทั้งตัวเลขและข้อความ สำหรับการตั้งชื่อตัวแปรจะต้องตั้งชื่อตามกฎต่อไปนี้
• ชื่อตัวแปรแต่ละตัวจะต้องไม่ซ้ำกันในขอบเขตของการทำงานเดียวกัน
• ชื่อตัวแปรจะต้องไม่ซ้ำกับคำสงวน (Reserved Word) หรือคำที่ VB รู้จัก เช่น คำว่า Dim. Integer เอามาใช้ตั้งเป็นชื่อตัวแปรไม่ได้
• ตัวแปรต้องเริ่มต้นด้วยตัวอักขระ A-Z หรือ a-z
ตัวอย่างการประกาศตัวแปรในบรรทัดแรกจะเป็นการประกาศตัวแปรชื่อ Name ซึ่งเป็นตัวแปรชนิดข้อความ ส่วนบรรทัดที่สองให้ตัวแปร X เป็นตัวแปรที่เก็บเลขจำนวนเต็ม ส่วนบรรทัดสุดท้ายเป็นตัวแปรชื่อ Lastname ซึ่งเป็นข้อมูลชนิดดีฟอลต์ ซึ่งก็คือ Object โดยข้อมูลชนิดนี้สามารถเก็บได้ทั้งตัวเลขและข้อความ
หลังจากที่ได้ประกาศตัวแปรขึ้นมาแล้ว เราสามารถนำตัวแปรนี้ไปใช้ในการกระทำต่างๆในโปรแกรมได้
ขอบเขตการประกาศตัวแปร (Scope of variables)
ในการเขียนโปรแกรมเราสามารถกำหนดได้ว่าจะให้โปรแกรมมองเห็นตัวแปรนั้นในส่วนใดบ้าง โดยนำวิธีการกำหนดขอบเขตของตัวแปรมาใช้ เช่น ต้องการให้เข้าถึงตัวแปรได้เฉพาะในโปรแกรมย่อยเท่านั้น หรือให้ทุกโปรแกรมย่อยในคลาสนั้นเข้าถึงตัวแปรได้ทั้งหมด เป็นต้น
สำหรับคำสั่ง Dim ที่ใช้ในการประกาศตัวแปรจะมีรูปแบบดังนี้
ในการประกาศตัวแปรถ้าหากใช้คำว่า Public นำหน้าหมายความว่าตัวแปรนั้นทุกๆ ส่วนของโปรแกรมสามารถของมองเห็นและเรียกมาใช้งานได้ แต่ถ้าหากใช้คำว่า Private นำหน้าหมายความว่าตัวแปรนั้นจะใช้ได้เฉพาะภายในโปรแกรมย่อยนั้นเท่านั้น
จากตัวอย่างข้างต้นจะพบว่า
• ตัวแปร name1 และ ตัวแปร name2 จะเป็นตัวแปรที่ประกาศแบบ Public
ในระดับคลาสซึ่งจะทำให้ทุกไฟล์ในโปรเจ็กต์นี้ใช้ตัวแปรนี้ได้ เช่นในไฟล์ Form2 สามารถใช้ตัวแปร name1 และ name2
ที่ประกาศไว้ใน Form1 ได้
• ตัวแปร name3 และ name4 เป็นตัวแปรระดับโปรแกรมย่อย ซึ่งจะใช้ในโปรแกรมย่อยที่มันถูกประกาศเท่านั้น เช่น name3
จะใช้ในโปรแกรมย่อย Button1_Click ส่วน name4 จะใช้ในโปรแกรมย่อย Form1_Load ไม่สามารถใช้งานข้ามโปรแกรมย่อยได้
• การประกาศตัวแปรระดับคลาส เช่น name1 และ name2 จะต้องประกาศไว้ภายนอกโปรแกรมย่อยหรือฟังก์ชัน
ตัวแปรระดับโปรแกรมย่อยนั้นจะใช้งานได้เมื่อโปรแกรมทำงานอยู่ในโปรแกรมย่อยเท่านั้นเมื่อออกจากโปรแกรมย่อย ตัวแปรนั้นจะถูกทำลายทันทีเมื่อมีการเรียกโปรแกรมย่อยอีกครั้งตัวแปรนี้ก็จะถูกสร้างขึ้นมาอีกครั้งหนึ่ง
สำหรับการเขียนโปรแกรมด้วย VB นั้น นอกจากการประกาศตัวแปรแบบ Public และ Private แล้วยังมีการประกาศตัวแปรแบบอื่นๆ อีก ซึ่งศึกษาได้ในเรื่องการเขียนโปรแกรมเชิงวัตถุ (Object-Oriented)
ชนิดของข้อมูล (Data Types)
ชนิดของข้อมูลที่กำหนดให้กับตัวแปรนั้นจะเป็นตัวบอกว่าตัวแปรที่สร้างขึ้นใช้เก็บข้อมูลประเภทใด ตัวแปรนั้นใช้หน่วยความจำจำนวนเท่าใด ในการเขียนโปรแกรมด้วย VB มีชนิดของข้อมูลพื้นฐานดังตารางต่อไปนี้
ในการประกาศตัวแปรบางครั้งเราสามารถกำหนดค่าเริ่มต้นให้กับตัวแปรได้ทันที ดังตัวอย่างการปราศตัวแปรต่อไปนี้
การประกาศตัวแปรบรรทัดแรกจะให้ X เก็บข้อมูลชนิดเลขจำนวนเต็ม ส่วนบรรทัดที่สองจะให้ Y เก็บข้อมูลเลขทศนิยม การประกาศในสองบรรทัดนี้เมื่อคอมพิวเตอร์จองหน่วยความจำจะกำหนดค่าเริ่มต้นให้เป็นศูนย์ ส่วนประทัดที่สามจะให้ตัวแปร blnlsValid เป็นตัวแปรเก็บข้อมูลแบบบูลีนแล้วกำหนดค่าเริ่มต้นให้เป็น "จริง" ส่วนการประกาศตัวแปรในบรรทัดสุดท้ายจะกำหนดให้ตัวแปร StrMessage เก็บข้อความเริ่มต้นเป็นคำว่า "Good morning"
ตัวแปรแบบสแตติก (Static Variables)
การประกาศตัวแปรระดับโปรแกรมย่อยนั้น ตัวแปรที่ประกาศขึ้นจะใช้งานได้เฉพาะโปรแกรมย่อยที่ทำงานอยู่เท่านั้น หลังจากทำงานเสร็จแล้วตัวแปรนั้นจะถูกทำลายไป เมื่อมีการเรียกโปรแกรมย่อยนั้นใหม่ตัวแปรระดับโปรแกรมย่อยก็จะถูกสร้างขึ้นมาใหม่ ซึ่งอาจทำให้ค่าของตัวแปรไม่ใช่ค่าเก่าอีกต่อไป แต่เราสามารถรักษาค่าของตัวแปรระดับโปรแกรมย่อยได้ โดยประกาศตัวแปรแบบสแตติกโดยใช้คำว่า Static แทนคำว่า Dim ในการประกาศตัวแปร ตัวอย่าง
ตัวอย่าง การใช้ตัวแปรแบบสแตติก โดยออกแบบให้คลิกปุ่ม Button1 แล้วให้โปรแกรมแสดงจำนวนครั้งที่คลิกออกมาทางกล่องข้อความ ให้สร้างโปรเจ็กต์ใหม่ โหมด Windows Forms Application โดยสร้างฟอร์มแล้ววางปุ่มกดลงไปดังรูปต่อไปนี้
จากโปรแกรมที่เขียนขึ้นจะเป็นการเขียนโปรแกรมย่อยให้กับปุ่มกด โดยประกาศตัวแปร Count เป็นแบบสแตติก เมื่อมีการคลิกที่ปุ่มกดจะเพิ่มค่าให้กับตัวแปร Count เป็นแบบสแตติก เมื่อมีการคลิกที่ปุ่มกดจะเพิ่มค่าให้กับตัวแปร Count ขึ้นหนึ่งค่าแล้วแสดงผลออกทางกล่องข้อความ โดยค่าจะเพิ่มขึ้นเรื่อยๆ เพราะค่าเก่าของตัวแปร Count ยังคงอยู่
เมื่อรันโปรแกรมแล้วคลิกปุ่ม Button1 โปรแกรมจะแสดงจำนวนครั้งที่คลิกออกมาดังนี้
ค่าคงที่ (Constants)
ค่าคงที่มีไว้สำหรับเก็บค่าที่ไม่มีการเปลี่ยนแปลงตลอดช่วงเวลาที่โปรแกรมทำงานอยู่ ซึ่งถ้าในโปรแกรมมีการใช้คำสั่งให้เปลี่ยนค่าคงที่ VB จะแสดงข้อผิดพลาดออกมา เนื่องจากเราไม่สามารถเปลี่ยนค่าที่ประกาศค่าคงที่ได้ การประกาศค่าคงที่จะคล้ายกับการประกาศค่าตัวแปร แต่จะใช้คำว่า Const โดยมีรูปแบบดังนี้
ในการประกาศค่าคงที่เราสามารถกำหนดชนิดของข้อมูลให้ค่าคงที่ได้ ส่วนค่าที่กำหนดให้กับค่าคงที่จะเป็นตัวเลข ข้อความ หรือค่าที่เก็บในตัวแปร รวมทั้งใช้ตัวดำเนินการกับค่าที่กำหนดได้ดังตัวอย่างการประกาศต่อไปนี้
ตัวดำเนินการ (Operator)
ตัวดำเนินการหรือโอเปอ์เรเตอร์นั้นเป็นการกระทำบางอย่างกับข้อมูล และได้ผลลัพธ์ออกมาสำหรับตัวดำเนินการของ VB สามารถแบ่งออกเป็นประเภทใหญ่ๆ ได้ดังต่อไปนี้
- ตัวดำเนินการทางคณิตศาสตร์
- ตัวดำเนินการทางตรรกะ
- ตัวดำเนินการเกี่ยวกับข้อมูลสตริง
- ตัวดำเนินการเปรียบเทียบ
ตัวดำเนินการทางคณิตศาสตร์
เป็นตัวดำเนินการที่เกี่ยวข้องกับการคำนวณทางคริตศาสตร์ เช่น การบวก การลบ การคูณ การหาร เป็นต้น ดังตารางต่อไปนี้
ตัวอย่าง การเขียนโปรแกรมทางคณิตศาสตร์อย่างง่าย โปรแกรมจะให้ป้อนข้อมูลตัวเลขเข้าไปสองค่า จากนั้นโปรแกรมจะแสดงผลรวมของตัวเลขทั้งสองออกมา
ให้เขียนโปรแกรมในโหมด Console Application ดังต่อไปนี้
ตัวดำเนินการทางตรรกะ
ตัวดำเนินการประเภทนี้จะนำข้อมูลสองค่ามากระทำทางตรรกะต่อกัน แล้วให้ผลลัพธ์เป็นค่าจริง (True) หรือเท็จ (False) โดยตัวดำเนินการและตารางดำเนินการต่างๆ จะเป็นดังนี้
• ตัวดำเนินการ And ถ้าทุกนิพจน์ที่มา And กันมีค่าเป็น True ทุกนิพจน์ ผลลัพธ์ที่ได้จะมีค่าเป็น จริง (True)
• ตัวดำเนินการ Or ถ้าทุกนิพจน์ที่มา Or กันมีค่าเป็น True เพียงนิพจน์เดียว ผลลัพธ์ที่ได้จะเป็น True
• ตัวดำเนินการ Xor ตัวดำเนินการนี้ใช้ตรวจสอบว่านิพจน์ที่นำมาดำเนินการต่อกันมีค่าตรงกันหรือไม่ ถ้าไม่ตรงกันผลลัพธ์ที่ได้จะเป็น True
• ตัวดำเนินการ AndAlso จะคล้ายกับตัวดำเนินการ And ยกเว้นแต่ว่าถ้านิพจน์แรกมีค่าเป็น False โปรแกรม VB
จะไม่หาค่านิพจน์ที่สองเลย และจะให้ผลลัพธ์กลับมาเป็น False
• ตัวดำเนินการ OrElse จะคล้ายกับตัวดำเนินการ Or ยกเว้นแต่ว่าถ้านิพจน์แรกมีค่าเป็น True โปรแกรม VB
จะไม่หาค่านิพจน์ที่สองเลย และจะให้ผลลัพธ์กลับมาเป็น True
• ตัวดำเนิการ Not จะใช้สำหรับกลับค่าทางลอจิกจาก True เป็น False จาก False เป็น True
ตัวดำเนินการเกี่ยวกับข้อมูลสตริง
ตัวดำเนินการกลุ่มนี้จะเป็นตัวดำเนินการที่ใช้เชื่อมข้อความ (String) เก็บข้อความเข้าด้วยกัน หรือข้อความกับตัวเลข ประกอบด้วยตัวดำเนินการดังนี้
• + ใช้เชื่อมข้อความกับข้อความ
• & ใช้เชื่อมข้อความกับตัวเลข หรือข้อความกับข้อความก็ได้
จากตัวอย่างข้างต้น ถ้าค่าของตัวแปร MyFriend เท่ากับคำว่า "John" ผลลัพธ์ที่ได้ออกมาคือ "Your friend is John"
ตัวดำเนินการเปรียบเทียบ
ตัวเนินการประเภทนี้จะใช้เปรียบค่า 2 ค่า โดยมีผลลัพธ์เป็น True หรือ False อย่างใดอย่างหนึ่งเท่านั้น ตัวดำเนินการและตัวอย่างการใช้งานเป็นดังตารางต่อไปนี้
กำหนดให้ A = 10 และ B = 15
ลำดับการทำงานของตัวดำเนินการ
ในการเขียนโปรแกรมบางครั้งในนิพจน์ที่เขียนขึ้นอาจมีการใช้ตัวดำเนินการหลายตัวประกอบกันอยู่ ในการคำนวณค่าของนิพจน์ใด จะดูว่าตัวดำเนินการใดมีลำดับในการทำก่อนสูงสุดก็ให้ค่าจากการกระทำของตัวดำเนินการนั้นก่อน ตามด้วยหาค่าจากการกระทำของตัวดำเนินการที่มีลำดับในการทำงานต่ำลงมา และทำเช่นนี้ไปเรื่อยๆ จนกระทั่งได้ผลลัพธ์ขึ้นสุดท้ายออกมา ลำดับการทำงานก่อนหลัง (Precedence) ของตัวดำเนินการต่างๆ ใน VB เป็นดังตารางต่อไปนี้
ตารางแสดงลำดับการทำงานก่อนหลังของตัวดำเนินงาน โดยเรียงลำดับการทำก่อนจากบนลงล่าง
สำหรับในกรณีที่ตัวดำเนินการมีลำดับการทำงานเท่ากัน โปรแกรมจะทำงานจากซ้ายไปขวา
ตัวอย่างเช่น
X * 2 / 4 < 20 Or Y = "rat"
ในนิพจน์ข้างต้น จะหาค่าของนิพจน์ตามลำดับดังต่อไปนี้
• คำนวณ x * 2 / 4 เนื่องจากมีลำดับเท่ากัน จึงทำตามลำดับจากซ้ายไปขวา โดยทำการคูณก่อน และหาร
• การเปรียบเทียบ X * 2 / 4 < 20
• การเปรียบเทียบ Y = "rat"
• การเชื่อมต่อทางตรรกะ Or
ในการเขียนโปรแกรมเราสามารถกำหนดให้ตัวดำเนินการใดทำงานก่อนหลังได้ด้วยการใช้วงเล็บในการจัดกลุ่มตัวดำเนินการที่
ต้องการให้ทำงานก่อน เช่น
(X + 1) * Y
จากตัวอย่าง โปรแกรมจะทำการบวกของ X + 1 ก่อน แล้วจึงไปคูณกับตัวแปร Y
การใช้ฟังก์ชัน InputBox และ MessageBox
การเขียนโปรแกรมด้วย VB ซึ่งเป็นโปรแกรมที่ทำงานบนระบบปฏิบัติการวินโดว์ เราสามารถนำฟังก์ชัน InputBox ซึ่งจะรับข้อมูลผ่านทางไดอะล็อกบ็อกมาใช้งานได้ การใช้งานฟังก์ชันนี้ยังสามารถให้โปรแกรมแสดงข้อความในไดอะล็อกบ็อกซ์ได้อีกด้วย รูปแบบการใช้งานฟังก์ชันนี้เป็นดังนี้
การใช้งานฟังก์ชัน InputBox อาจไม่มีส่วนของไตเติลและค่าเริ่มต้นก็ได้ เมื่อมีการป้อนข้อมูลเข้าไปทางช่องรับข้อความ เมื่อคลิกปุ่ม OK โปรแกรมจะนำข้อมูลไปเก็บในตัวแปรที่นำมารับข้อมูลทันที สำหรับรูปแบบการใช้งานเป็นดังตัวอย่างต่อไปนี้
จากตัวอย่างโปรแกรมจะแสดงข้อความว่า Enter your first name พร้อมไตเติลคำว่า Name Enter เมื่อป้อนข้อมูลเข้าไปแล้วคลิก OK โปรแกรมจะนำข้อมูลที่ป้อนเข้าไปเก็บในตัวแปร strName ซึ่งประกาศเป็นตัวแปรสตริงทันที
จากตัวอย่างโปรแกรมจะแสดงข้อความว่า State name และมีไตเติลคำว่า State โดยมีค่าเริ่มต้นในช่องรับข้อมูลเป็น Alaska เมื่อมีการป้อนข้อมูลและคลิกปุ่ม OK จะทำให้ข้อมูลถูกนำไปเก็บในตัวแปร strName ทันที
ตัวอย่าง โปรแกรมโหมด Console Application บวกเลขผ่านไดอะล็อกอินพุตโดยในโปรแกรมจะประกาศตัวแปร X,Y และ Z สำหรับเก็บเลขจำนวนเต็ม และจะรับค่าตัวเลขของ X และ Y ผ่านทางไดอะล็อก
เมื่อรันโปรแกรมจะป้อนตัวเลขเข้าไปสองค่า ในตัวอย่างนี้จะป้อน 6 และ 8 โดยการป้อนแต่ละค่าจะต้องคลิกปุ่ม OK เพื่อให้โปรแกรมนำข้อมูลไปเก็บในตัวแปรดังต่อไปนี้
การเขียนโปรแกรมในโหมด Console Application นั้นสามารถให้โปรแกรมแสดงกล่องข้อความออกมาได้ โดยเรียกใช้ MessageBox ซึ่งเป็นคลาสตัวหนึ่งใน .Net แต่ก่อนที่จะเรียกคลาสนี้ได้เราจะต้องเพิ่มคลาสนี้เข้าไปในโปรเจ็กต์เสียก่อน ซึ่งทำได้ดังขั้นตอนต่อไปนี้
1. เลือกเมนู Project แล้วเลือก App Reference จะปรากฏหน้าต่างออกมาดังรูป
2. ให้เลือก System.Windows.Forms แล้วคลิกปุ่ม OK โปรแกรมก็จะเพิ่มส่วนนี้เข้าไป ทำให้เราสามารถเรียกใช้คลาส MessageBox ได้ และถ้าหากคลิกที่ Solution Explorer จะเห็น Reference ส่วนนี้ปรากฏอยู่
สำหรับในการเขียนโค้ดโปรแกรม ถ้าหากต้องการเรียกใช้ MessageBox จะต้อง Imports Reference ส่วนนี้ขึ้นมาในบรรทัดแรกของโปรแกรมด้วย ดังตัวอย่าง
ตัวอย่าง โปรแกรมแสดงตัวอย่างการใช้กล่องข้อความในโหมด Console
จากโปรแกรมที่เขียนขึ้นจะเรียกคลาส MessageBox ขึ้นมาซึ่งในคลาสนี้จะมีเมธอด Show สำหรับแสดงข้อความที่อยู่ในวงเล็บเมื่อรันโปรแกรมผลลัพธ์ที่ได้จะเป็นดังนี้
การใช้งาน MessageBox สำหรับแสดงกล่องข้อความนั้น ทำได้หลายรูปแบบดังต่อไปนี้
ตัวอย่าง โปรแกรมแสดงกล่องข้อความในโหมด Console โดยแสดงไตเติลบาร์ด้วย
การแปลงชนิดของข้อมูล
การเขียนโปรแกรมด้วย VB ให้ทำงานในลักษณะการเชื่อมต่อกับผู้ใช้แบบกราฟฟิกนั้น การรับและแสดงผลต่างๆ มักจะเป็นข้อมูลชนิดสตริง ทำให้บางครั้งเราไม่สามารถนำข้อมูลนั้นมาใช้งานได้โดยตรง ซึ่งจะต้องแปลงข้อมูลให้อยู่ในรูปแบบที่ต้องการก่อนจึงจะใช้งานได้ การแปลงประเภทของข้อมูลนี้ใน VB มีอยู่หลายวิธีดังต่อไปนี้
การแปลงโดยใช้ฟังก์ชัน CType
การแปลงข้อมูลด้วยฟังก์ชัน CType จะระบุชนิดของข้อมูลที่ต้องการแปลง โดยมีรูปแบบดังนี้
โดยที่ VarName เป็นตัวแปรที่นำมารับค่าผลลัพธ์ที่ได้จากการแปลงข้อมูล
Value เป็นตัวแปรหรือข้อมูลที่ต้องการแปลง
NewType เป็นชนิดของข้อมูลใหม่ที่ต้องการ
เป็นการเปลี่ยนข้อมูลที่รับเข้ามาในตัวแปร dataDouble ให้เป็นข้อมูลประเภท Integer แล้วนำไปเก็บในตัวแปร dataInteger ซึ่งถูกประกาศไว้เป็นข้อมูลชนิด Integer
การแปลงโดยใช้คลาส Convert
การแปลงข้อมูลวิธีจะเปลี่ยนข้อมูลได้หลายรูปแบบ ทำให้สามารถเปลี่ยนข้อมูลที่ใช้งานอยู่ให้เป็นข้อมูลอีกประเภทหนึ่งได้ โดยคลาสนี้จะมีเมธอดสำหรับแปลงข้อมูลให้เลือกใช้มากมาย สำหรับรูปแบบการใช้งานเป็นดังนี้
โดยที่ VarName เป็นตัวแปรที่นำมารับค่าผลลัพธ์ที่ได้จากการแปลงข้อมูล
Method เป็นเมธอดในคลาส Convert ที่ใช้ในแปลงข้อมูล เช่น ToDecimal. Tolnt32, Tostring ซึ่งก็คือชนิดข้อมูลที่ต้องการนั่นเอง
Value เป็นตัวแปรหรือข้อมูลที่ต้องการแปลง
สำหรับเมธอดที่ใช้ในการแปลงนั้นมีอยู่มากมาย การใช้เมธอดนี้จะต้องแปลงข้อมูลให้เป็นข้อมูลของตัวแปร VarName ที่นำมาใช้รับข้อมูล
เป็นการเปลี่ยนข้อมูลตัวเลข 0.05 ให้เป็นข้อมูลชนิด Decimal แล้วเก็บไว้ในตัวแปร decTaxRate
เป็นการเปลี่ยนข้อมูลที่อยู่ในตัวแปร intTotalScores เป็นข้อความ เพื่อนำไปแสดงผลคุณสมบัติ Text ของเลเบล lblTotal
เป็นการเปลี่ยนตัวเลข 0.1 ให้เป็นข้อมูลชนิด Decimal แล้วนำไปคูณกับค่าในตัวแปร decSales จากนั้นนำผลลัพธ์ที่ได้ไปเก็บในตัวแปร decCommission
การแปลงโดยใช้เมธอด TryParse
การแปลงข้อมูลชนิดข้อความให้เป็นข้อมูลชนิดตัวเลขสามารถนำไปคำนวณได้ โดยใช้ เมธอด TryParse ซึ่งเมธอดนี้สามารถเปลี่ยนเป็นตัวเลขได้หลายประเภท มีรูปแบบการใช้งานดังนี้
โดยที่ dataType เป็นชนิดข้อมูลประเภทตัวเลข
String เป็นข้อความที่ต้องการแปลง
Variable เป็นชื่อตัวแปรที่จะนำมาใช้เก็บข้อมูล ซึ่งเป็นข้อมูล ซึ่งข้อมูลชนิดเดียวกับ dataType
เป็นการเปลี่ยนข้อความที่อยู่ในเลเบล txtSales ให้เป็นข้อมูลชนิด Double แล้วเก็บผลลัพธ์ไว้ในตัวแปร dblSales แต่ถ้าหากมาสามารถแปลงเป็นตัวเลขได้จะเก็บค่า 0 ในตัวแปร dblSales
เป็นการเปลี่ยนข้อความที่อยู่ในตัวแปร strNumber ไปเป็นข้อมูลชนิดเลขจำนวนเต็ม แล้วเก็บในตัวแปร intNumber ถ้าหากไม่สามารถแปลงได้จะเก็บค่า 0
เปลี่ยนข้อความที่เก็บอยู่ในคอลโทรล txtGross ไปเป็นข้อมูลชนิด Decimal แล้วเก็บผลลัพธ์ไว้ในตัวแปร decGross ถ้าหากแปลงไม่ได้จะเก็บค่า 0
สำหรับในตารางต่อไปนี้แสดงการใช้เมธอด TryParse เปลี่ยนข้อความไปเป็นข้อมูลชนิด Double, Decimal และ Integer ถ้าหากข้อความที่นำมาแปลงไม่สามารถเปลี่ยนเป็นตัวเลขได้ เช่น เป็นข้อความที่มีตัวอักษรผสมอยู่ มีที่ว่างในข้อความ โปรแกรมจะเก็บค่า 0 ลงในตัวแปร
การแปลงโดยใช้ฟังก์ชัน Val
ถ้าหากต้องการเปลี่ยนข้อความให้เป็นตัวเลข สามารถนำฟังก์ชัน Val มาใช้ได้ โดยมีรูปแบบดังนี้
เมื่อเรียกใช้ฟังก์ชัน โปรแกรมจะคืนค่าตัวเลขที่ได้จากการแปลงข้อความนั้นออกมา โดยในข้อความอาจมีเว้นวรรคหรือมีเครื่องหมายเปอร์เซ็นต์ได้ แต่ต้องไม่มีตัวอักษร คอมม่า ตัวอักขระพิเศษถ้าหากในข้อความไม่สามารถเปลี่ยนเป็นตัวเลขได้ ฟังก์ชันจะคืนค่า 0 กลับมา ตัวอย่างการใช้ฟังก์ชัน Val เป็นดังตารางต่อไปนี้
ฟังก์ชัน Val นี้จะเปลี่ยนข้อความให้เป็นตัวเลขเพื่อนำไปคำนวณ จากนั้นยังสามารถเปลี่ยนกลับเป็นข้อความเพื่อนำไปแสดงผลได้อีกด้วย ตัวอย่างเช่น
จากการเขียนคำสั่ง โปรแกรมจะเปลี่ยนข้อความจากเลเบล txtData1 และ เลเบล txtData2 เป็นตัวเลข แล้วนำมาบวกกัน จากนั้นนำผลลัพธ์ที่ได้ไปแสดงผลเป็นข้อความในเลเบล lblToal
เป็นการนำข้อความจากเลเบล txtData1 มาเปลี่ยนเป็นตัวเลข แล้วนำไปคูณกับ 25 จากนั้นนำผลลัพธ์ที่ได้ไปแสดงผลทางเลเบล lblTotal
สำหรับวิธีการเขียนโปรแกรมที่ต้องใช้วิธีการแปลงข้อมูลที่ได้กล่าวมานี้ จะนำเสนอในตัวอย่างโปรแกรมที่เกี่ยวข้อง แต่ไม่ว่าจะเป็นการแปลงข้อมูลด้วยวิธีใดข้อมูลที่ได้จากการแปลงอาจเกิดข้อผิดพลาดได้ ซึ่งมีรูปแบบข้อผิดพลาดดังนี้
1. ข้อมูลสูญเสียความละเอียดในการแปลงข้อมูลเลขทศนิยมมาเป็นเลขจำนวนเต็มนั้นอาจมีการสูญเสียความละ
เอียดของตัวเลขหลังจุดทศนิยมไป
2. เกิดข้อผิดพลาดจากการแปลงข้อมูลที่มีชนิดใหญ่ว่าไปยังข้อมูลที่มีชนิดเล็กกว่า ถ้าหากข้อมูลที่ต้องการแปลงนั้นเก็บอยู่ในตัว
แปรที่เก็บข้อมูลได้มากกว่าแล้วต้องการแปลงข้อมูลนั้นไปอยู่ในตัวแปรที่เก็บข้อมูลได้น้อยกว่า
โปรแกรมจะแจ้งข้อผิดพลาดออกมาดังนั้นการแปลงข้อมูลนั้นควรทำในลักษณะของการแปลงข้อมูลที่มีขอบเขตเล็ก
ไปยังข้อมูลที่มีขอบเขตใหญ่กว่า
ตัวอย่าง โปรแกรมเครื่องคิดเลขอย่างง่าย โดยให้ผู้ใช้ป้อนตัวเลขเข้าไปทางเท็กซ์บ็อกซ์ 2 ค่าเมื่อกดปุ่ม ADD โปรแกรมจะแสดงผลบวกออกมา ให้สร้างโปรเจ็กต์ใหม่โหมด Windows แล้ววางออบเจ้กต์ต่างๆ ลง พร้อมปรับคุณสมบัติไปดังนี้
เนื่องจากตัวเลขที่ป้อนเข้าไปทางเท้กซ์บ็อกซ์จะเป็นข้อมูลชนิดข้อความ ดังนั้นจะต้องเปลี่ยนข้อมูลให้เป็นตัวเลขเสียก่อนจึงจะคำนวณได้ ดังนั้นในการออกแบบโปรแกรมจะประกาศ ตัวแปรขึ้นมา 3 ตัว คือ x, y และ sum ให้เป็นตัวแปรชนิดเลขจำนวนเต็ม แล้วใช้ฟังก์ชัน Val มาเปลี่ยนเป็นตัวเลข หลังจากที่นำข้อมูลมาบวกกันแล้วจะต้องเปลี่ยนให้เป็นข้อความอีกครั้ง จึงจะแสดงผลทางเท้กซ์บ็อกซ์ได้ ให้ดับเบิลคลิกที่ ADD แล้วเขียนโปรแกรมดังนี้
ทดลองรันโปรแกรม ให้ป้อนตัวเลขเข้าไป แล้วคลิกปุ่ม ADD จะได้ผลออกมา
ตัวอย่าง โปรแกรมต่อไปนี้จะแสดงการคอลโทรลต่างๆ มาวางบนฟอร์มเพื่อพัฒนาโปรแกรมสำหรับร้านหนังสืออย่างง่ายโดยนำวิธีการแปลงข้อมูลมาใช้ด้วย โปรแกรมจะให้ผู้ใช้ป้อนจำนวนหนังสือ ชื่อหนังสือ และราคาลงไป จากนั้นโปรแกรมจะคำควณส่วนลดและราคาที่ลดแล้วออกมาให้ออกแบบหน้าจอของฟอร์ม นำคอนโทรล PrintForm มาวางบนฟอร์ม และกำหนดชื่อต่างๆลงไปดังนี้
ในการออกแบบฟอร์มจะวางคอนโทรล GroupBox ลงไปก่อน แล้วจึงวางคอลโทรลอื่นๆลงไป โดยคอลโทรล GroupBox1 จะกำหนดค่า Text เป็น "ป้อนข้อมูล" ซึ่งในกรุ๊ปนี้จะเป็นส่วนที่ผู้ใช้ป้อนข้อมูลลงไป สำหรับ GroupBox2 จะไม่กำหนดข้อความใน Text โดยคอลโทรลในกรุ๊ปนี้จะเป็นส่วนของการแสดงผล สำหรับคอลโทรลที่เป็นปุ่มคำสั่งจะเขียนโปรแกรมให้ตอบสนอง อีเวนต์ต่างๆดังนี้
• ปุ่ม Print From สร้างอีเวนต์ Click เพื่อใช้สำหรับพิมพ์ผลลัพธ์
• ปุ่ม Calulate สร้างอีเวนต์ Click เพื่อใช้สำหรับคำนวณราคาส่วนลด และราคาของโดยจะโปรแกรม ดังรหัสเทียมต่อไปนี้
ประกาศตัวแปร
เปลี่ยนข้อมูลอินพุตใน Quantity และใน Price ซึ่งเป็นค่าจำนวนและราคาที่ให้เป็นตัวเลข
คำนวณราคารวม โดย Extended Price = Quantity * Price
คำนวณราคาลด โดย Discount = Extended Price * Discount Rate
คำนวณราคา โดย Discounted Price = Extended Price – Discount
แสดงผลออกทาง Textbok
• ปุ่ม Clear Sale สร้างอีเวนต์ Click ให้ล้างข้อมูลเท็กซ์บ็อกซ์ทั้งหมด และโฟกัสไปที่ Textbok
• ปุ่ม Exit สร้างอีเวนต์ Click เพื่ออกจากโปรแกรม
ในการเขียนโปรแกรมจะสร้างค่าคงที่ชื่อ DISCOUNT_RATE_Decimal สำหรับเก็บอัตราส่วนลด สำหรับในตัวอย่างนี้จะให้ลด 15% จึงประกาสตัวแปรเป็นชนิด Decimal และกำหนดค่า 0.15 ลงไป โดยโปรแกรมทั้งหมดเขียนได้ดังนี้
ให้ทดลองรันโปรแกรมแล้วป้อนข้อมูลต่างๆ ลงไป จากนั้นให้คลิกปุ่มต่างๆ แล้วดูผลลัพธ์ที่เกิดขึ้น ดังตัวอย่าง
|