การใช้ลูปแบบ for
for เป็นคีย์เวิร์ดสำหรับกำหนดการทำงานแบบวงรอบหรือลูป (Loop) จากค่าเริ่มต้น จนถึงค่าสุดท้ายของตัวที่ใช้เป็นตัวนับ โดยที่ตัวนับไม่จำเป็นต้องเริ่มต้นจาก 0 และอาจเป็นการนับแบบเพิ่มค่า หรือลดค่าก็ได้รูปแบบพื้นฐาน คือการใช้ลูปแบบ forโดยโปรแกรมจะเปรียบเทียบตัวนับว่าอยู่ภายในเงื่อนไขหรือไม่ หากอยู่ภายในเงื่อนไขก็เปลี่ยนค่าของตัวนับเพื่อนวนลูปถัดไป แต่หากตัวนับไม่อยู่ในเงื่อนไขก็จะออกจากลูปไป เช่น
ความหมายของลูป for จากโค้ดข้างบนคือ ให้เริ่มนับจาก 0 ถ้า i ยังมีค่าน้อยกว่าหรือเท่ากับ 10 ก็ให้เพิ่มค่าตัวนับไปอีก 1 แล้ววนลูปไปเรื่อยๆและในรูปต่อๆไปค่า i ก็จะถูกเพิ่มทีละ 1 ซึ่งลูปจะสิ้นสุดเมื่อเงื่อนไข i <= 10 เป็นเท็จ หรือเมื่อ i มีค่ามากกว่า 10 นั่นเอง
ของควรรู้เพิ่มเติมสำหรับลูป for มีดังนี้
1. สำหรับวิธีการเปลี่ยนค่าของตัวนับนั้น อาจจะเป็นการเพิ่มค่า หรือลดค่าก็ได้ นอกจากนี้ก็ไม่จาเป็นต้องเพิ่มหรือลดทีละ 1 อาจเป็นค่ามากกว่า 1 ก็ได้ เช่น2. ตัวนับอาจไม่ใช่เลขจำนวนเต็มเสมอไป อาจเป็นเลขจุดทศนิยมก็ได้ เช่น
3. ไม่ ควรเปลี่ยนไปค่าตัวนับภายในลูป เพราะอาจเกิดข้อผิดพลาดขึ้นได้ เช่น
ตัวอย่าง 3.4 ถ้าเราต้องสร้างรูปสามเหลี่ยมที่มีการจัดเรียงดังรูป จะมีหลักการคิดดังนี้ คือ
- จำนวนที่เครื่องหมาย * แต่ละบรรทัดจะเท่ากับลำดับของบรรทัดนั้น เช่น บรรทัดที่ 1 มี 1 อัน, บรรทัด
ที่ 2 มี 2 อันเป็นต้น
- ใน .NET นั้นตัวแปรชนิดสตริงจะมีคำสั่ง (เมธอด) ในการเขียนอักขระซ้า เพื่อให้ผลลัพธ์มีจำนวน
อักขระตามที่กำหนด คือ PadRight() เช่น
- สำหรับการเขียนโปรแกรม เราจะใช้ลูป for เพื่อเขียนแต่ละบรรทัด โดยตัวนับของลูปก็คือลำดับ
บรรทัด และจะใช้ตัวนับในการกำหนดเป็นจำนวน * ที่ต้องเขียนในลูปนั้นๆ ในตัวอย่างจะมีการ
พลิกแพลงเล็กน้อย คือ ผู้ใช้สามารถกำหนดจำนวนบรรทัด และอักขระที่จะใช้เองได้ ดังต่อไปนี้
1.วางคอนโทรล พร้อมกำหนดชื่อที่จำเป็นดังรูป
2.ดับเบิลคลิกที่ปุ่ม แสดงผล แล้วกำหนดโค้ดดังนี้
3. รันโปรแกรม แล้วใส่อักขระและจำนวนที่ต้องการ ซึ่งลักษณะผลลัพธ์จะเป็นดังนี้
4. จากตัวอย่างนี้ หากเราต้องการให้เป็นสามเหลี่ยมกลับหัวดังรูป ให้กำหนดลูปแบบนับลง โดย
เริ่มนับลง โดยเริ่มนับจากจำนวนบรรทัดไปยัง 1 เช่น ซึ่งเราแก้ไขโค้ดเพียงบรรทัดเดียว คือ
ตัวอย่าง 3.5
ตัวอย่างนี้เป็นการพลิกแพลงเพิ่มเติมจากตัวอย่างที่แล้ว โดยนำอักขระที่กำหนดมาสร้างเป็นรูปสามเหลี่ยมในลักษณะดังรูป โดยมีหลักการคิดที่ซับซ้อนกว่าตัวอย่างที่เล็กน้อย ดังแนวทางต่อไปนี้
- จากรูป สิ่งที่เราต้องเขียนลงไปแต่ละแถว คือ อักขระและช่องว่างหน้าอักขระ
- จำนวนอักขระที่ต้องเขียนในแต่ละแถว คือ 1,3,5,7, … ตามลำดับ หรือเป็นเลขคี่นั่นเองสูตรในการคิดก็
คือ (2*ลาดับ)-1
- จำนวนช่องว่างหน้าอักขระที่ต้องเขียนในแต่ละแถว จะสัมพันธ์กับจำนวนแถวที่ต้องเขียน เช่น สมมุติ
เราจะเขียนทั้งหมด 4 แถว แสดงว่า
แถวที่ 1 จะต้องมีช่องว่าง 3 ช่อง
แถวที่ 2 จะต้องมีช่องว่าง 2 ช่อง
แถวที่ 3 จะต้องมีช่องว่าง 1 ช่อง
แถวที่ 4 จะต้องมีช่องว่าง 0 ช่อง
ดังนั้น สูตรในการคิดสำหรับการเขียนช่องว่างของแต่ละบรรทัด คือ จำนวนแถว – ลำดับแถว
- เนื่องจากฟอนต์ โดยทั่วไปความกว้างของอักขระกับความกว้างของช่องว่างจะไปเท่ากัน ทำให้แต่ใน
การแสดงผลนั้น แถวในแนวตั้งมักจะจัดเรียงได้ไม่ตรงกัน ซึ่งจะดูไม่สวย แต่เราสามารถแก้ไขปัญหา
โดยการกำหนดฟอนต์เป็นชนิด Fixed Font หรือฟอนต์ที่มีความกว้างของอักขระเท่ากันหมด เช่น
Courier
ที่ 2 มี 2 อันเป็นต้น
อักขระตามที่กำหนด คือ PadRight() เช่น
บรรทัด และจะใช้ตัวนับในการกำหนดเป็นจำนวน * ที่ต้องเขียนในลูปนั้นๆ ในตัวอย่างจะมีการ
พลิกแพลงเล็กน้อย คือ ผู้ใช้สามารถกำหนดจำนวนบรรทัด และอักขระที่จะใช้เองได้ ดังต่อไปนี้
คือ (2*ลาดับ)-1
เราจะเขียนทั้งหมด 4 แถว แสดงว่า
แถวที่ 2 จะต้องมีช่องว่าง 2 ช่อง
แถวที่ 3 จะต้องมีช่องว่าง 1 ช่อง
แถวที่ 4 จะต้องมีช่องว่าง 0 ช่อง
การแสดงผลนั้น แถวในแนวตั้งมักจะจัดเรียงได้ไม่ตรงกัน ซึ่งจะดูไม่สวย แต่เราสามารถแก้ไขปัญหา
โดยการกำหนดฟอนต์เป็นชนิด Fixed Font หรือฟอนต์ที่มีความกว้างของอักขระเท่ากันหมด เช่น
Courier
หลังจากที่เราพอจะเข้าใจแนวทางบ้างแล้ว ต่อไปก็คือการลงมือสร้างโปรเจ็กต์จริง โดยมีขั้นตอนดังนี้
1. จัดวางคอนโทรลลงไป พร้อมกำหนดพร็อปเพอร์ตี้ที่สาคัญดังรูป
2. ดับเบิ้ลคลิกที่ปุ่ม แสดงผล แล้วกำหนดโค้ดลงไปดังนี้
3. รันโปรแกรม แล้วกำหนดอักขระและจำนวนแถว ลักษณะผลลัพธ์เป็นดังนี้