บทที่ 7 for |
|
[วิดีโอประจำบท] | |
ที่ผ่านมาทั้งหมดเรารู้กันแล้วว่าฟังก์ชั่น loop มันจะทำงานซ้ำๆแบบไม่รู้จบ ทีนี้ถ้าเราต้องการให้มันมีการทำงานที่แน่นอน เช่น ทำซ้ำ 10 รอบ, ทำซ้ำ 7 รอบ แบบนี้จะให้มันหยุดเมื่อเราพอแล้วยังไงล่ะ ปัญหานี้แก้ได้ด้วยคำสั่ง for ครับ ตามที่เปิดบทนี้มาครับ for เป็นคำสั่งภาษาซีที่สั่งให้โปรแกรมทำงานในเงื่อนไขตามที่เรากำหนด ซึ่งมีรอบการทำงานตายตัวตามที่ได้ยกตัวอย่างนะครับ เช่น ทำแค่ 10 รอบ เป็นต้น เราสามารถใช้คำสั่ง for มาสั่งให้มันทำงานนี้ได้ โดยโครสร้างของคำสั่ง for มีดังนี้ |
|
for (ค่าเริ่มต้น; เงื่อนไข; จำนวนที่เพิ่มขึ้น) { คำสั่งต่างๆที่ให้ทำ; } ยกตัวอย่างเปรียบเทียบกันก่อนนะครับ for (ก้าว=1; ก้าว <=10; ก้าว=ก้าว+1){ เดินหน้า 1 ก้าว; } |
|
จากโปรแกรมที่เปรียบเทียบไว้อธิบายว่า เมื่อโปรแกรมเริ่มขึ้นมานั้น เรากำหนดให้ก้าว = 1 โปรแกรมก็จะเอา 1 อันนี้ไปเทียบกับเงื่อนไข ที่นี้คือ ค่าของก้าวน้อยกว่าหรือเท่ากับ 10 หรือไม่ ก้าวเราคือ 1 เป็นจริง ก็จะทำงานตามคำสั่งคือเดินหน้า 1 ก้าว แล้วค่าก้าวเราก็จะเป็น 2 ตามที่เราสั่งให้ก้าว=ก้าว + 1 จบรอบ โปรแกรมก็จะทำงานรอบสอง โดยก้าว = 2 ตามที่เราสั่งบวกมา แล้วก็เอาไปเทียบเงื่อนไข ก้าว <=10 เหมือนเดิม เป็นจริงก็ทำตามคำสั่ง แล้วบวกค่าไปตามคำสั่ง วนแบบนี้เรื่อยๆ จนขึ้นรอบที่ 11 ทีนี้ล่ะครับ ค่าก้าวเริ่มต้นของเรา = 11 เมื่อโปรแกรมเปรียบเทียบกับเงื่อนไข <=10 มันเป็นเท็จ (11 มันมากกว่า 10 เห็นๆ) เมื่อเป็นเท็จแบบนี้ โปรแกรมมันก็รู้ว่า อ้อ ไม่ใช่เงื่อนไขแล้ว มันก็จะหยุดการทำงานไปครับ |
|
ต่อไปเรามาเริ่มกับของจริงเลยดีกว่า ผู้เขียนขอย้อนยาวๆกลับไปบทที่ 1 เลยครับ ยังจำวงจรง่ายๆนี้กันได้รึเปล่า |
|
![]() |
|
เราจะใช้วงจรเดิม แต่ไม่ซ้ำซากครับ ครั้งนี้เราจะไม่ให้มันทำงานจำเจซ้ำเรื่อยไปตลอดชาติ เราจะกำหนดให้มันมีรอบการทำงานดีกว่า เขียนโปรแกรมกันเลย
อัพโหลดลงบอร์ดเลยครับ มันทำงานแบบไหน? กระพริบ 5 ครั้ง จากนั้นหยุด 2 วินาที แล้วกลับมากระพริบอีก 5 ครั้ง ใช่มั๊ยครับ ผู้เขียนไม่ใช่หมอดูแต่มั่นใจว่าทายถูกแน่นอน จะขออธิบายไล่ทีละบรรทัดเลยนะครับ บนสุด int i=0 ตรงนี้เรากำหนดตัวแปรครับ ชนิด int (จำนวนเต็ม) ให้ค่าเริ่มต้น = 0 จากนั้นในฟังก์ชั่น setup ก็ของเดิมๆบทที่ 1 มาถึงฟังก์ชั่น loop เราสั่งไว้ว่า สำหรับ i=0 ให้ไฟติดดับ แล้ว i เพิ่มขึ้นหนึ่งค่า (บวก 1 : ในภาษาซีไอ่ตัว ++ หมายความว่าให้บวกหนึ่งค่าครับ) บรรทัดบนสุดเราสั่งให้ i=0 ตัวคำสั่ง for มันก็จะทำงานรอบที่ 0 รอบที่ 1 รอบที่ 2 รอบที่ 3 รอบที่ 4 (ครบ 5 รอบตรงนี้นะครับ) พอรอบที่ 5 i ของเรามันเท่ากับ 5 ซึ่งไม่ตรงเงื่อนไขที่เรากำหนดให้มันต้องน้อยกว่า 5 (มันเท่ากับนี่ ไม่ได้น้อยกว่า) เงื่อนไขเป็นเท็จแบบนี้ จบครับ ออกมาจากคำสั่ง for มาเจอคำสั่ง delay 2 วิ มันก็หยุดรอ แล้วเริ่มรอบใหม่ตามวงเวียนชีวิตของ loop ทำซ้ำไปเรื่อยๆ |
|
ต่อไปลองเปลี่ยนเงื่อนไขจาก i<5 เป็น i<10 ดูครับ ใช่แล้ว มันซัดไป 10 รอบ กระพริบ 10 ครั้งกันเลยทีเดียว เปลี่ยนอีกนิด จากเพิ่มทีละหนึ่ง i++ เปลี่ยนเป็น i=i+5 ทีนี้จากกระพริบ 10 ครั้งเหลือแค่ 2 ครั้ง เพราะเราสั่งบวกตั้ง 5 ไงครับ มันก็ทำงานรอบที่ 0 i=0 โอเคกระพริบ ทำซ้ำรอบที่ 1 i เรากลายเป็น 0+5 = 5 แล้ว ยังโอเคกระพริบอีกรอบ พอมารอบที่ 2 i มันได้กลายเป็น 5+5 = 10 ไม่ได้น้อยกว่า 10 ซะแล้ว เป็นเท็จแบบนี้ก็ออกจากคำสั่ง for ไปตามสไตล์ พอจะได้คอนเซ็ปของ for กันบ้างมั๊ยครับ ตามเดิมนะครับย้ำกันให้บทความยาวอีกนิด ลองปรับเปลี่ยน แก้ไขไปเรื่อยๆ มันจะยิ่งเพิ่มความเข้าใจครับ และในบทนี้จะเห็นว่า ผู้เขียนไม่ได้เริ่มนับจาก 1 2 3 4 … แบบปกติ แต่นับจาก 0 1 2 3 4 … อันนี้เนี่ยเป็นการนับแบบโปรแกรมคอมพิวเตอร์นะครับ เราจะกำหนดให้มันนับจาก 1 2 3 … ก็ได้ แต่โดยปกติแล้วโปรแกรมมันจะเริ่มนับจาก 0 การเขียนโปรแกรมโดยทั่วไป(ที่ไม่มีกำหนดค่าเฉพาะ)เราจะเขียนให้เริ่มนับจาก 0 ไป แต่ก็ใช่ว่าเขียนให้เริ่มจาก 1 จะผิดนะครับ ใครจะเขียนให้นับ 5 รอบ แบบว่า 234 235 236 237 238 ก็ได้ตามสบายครับ |
|
[ดาวน์โหลด] [กลับหน้าหลักของคอร์ส] |