โดยปกติที่ผ่านมานั้น เราเคยเขียนโปรแกรม และแต่ละคำสั่งทำงานเพียงครั้งเดียวเท่านั้น
ในบทนี้ จะกล่าวถึงการเขียนคำสั่ง เพื่อให้ทำงานคำสั่งอื่นๆ หลายๆรอบ ตามแต่ผู้เขียนโปรแกรมจะกำหนด
ในบทนี้ จะกล่าวถึงการเขียนคำสั่ง เพื่อให้ทำงานคำสั่งอื่นๆ หลายๆรอบ ตามแต่ผู้เขียนโปรแกรมจะกำหนด
คำสั่งวนซ้ำ มีอยู่ 3 รูปแบบ ในบทนี้ จะขอพูดถึงการเขียนคำสั่ง while ส่วนอื่นๆ จะพูดในบทถัดๆไป
while มีรูปแบบการเขียนดังนี้
ผังแสดงการทำงานของ While loop
เงื่อนไขการวนซ้ำ หมายถึง นิพจน์ที่สามารถประเมินค่าได้ เขียนอยู่ในเครื่องหมาย () ให้ค่าเป็นจริงหรือเท็จ
เมื่อเริ่มต้นประมวลผล คำสั่ง while เงื่อนไขการวนซ้ำ จะถูกตรวจสอบค่า หากมีค่าเป็นจริง คำสั่งภายใต้คำสั่ง while จะถูกประมวลผล 1 รอบ แล้ววนกลับไปตรวจสอบ เงื่อนไขการวนซ้ำอีก จนกระทั่งเงื่อนไขการวนซ้ำ มีค่าเป็นเท็จ คำสั่ง while จึงสิ้นสุดลง และไปทำคำสั่งถัดไป
หากการตรวจสอบเงื่อนไขการวนซ้ำในครั้งแรก และมีค่าเป็นเท็จ คำสั่งภายใต้คำสั่ง while จะไม่ได้รับการประมวลผลเลย
คำสั่งภายใต้คำสั่ง while อาจเป็นคำสั่งง่าย ๆ หรือ คำสั่งเชิงประกอบ หากมีมากกว่า 1 คำสั่ง ต้องเขียนคำสั่งภายใต้เครื่องหมาย {}
Ex. จงเขียนโปรแกรมเพื่อพิมพ์เลข 1 - 10 ออกมาทางหน้าจอ โดยให้ขึ้นบรรทัดใหม่ทุกครั้งด้วย
Algorithm ( Show 1-10 Number)
ให้ตัวแปร i เป็นจำนวนเต็ม มีค่าเป็น 1
วนรอบ ตรวจสอบเงื่อนไข เมื่อ i น้อยกว่าหรือเท่ากับ 10 จริง { ให้แสดงค่า i
จากนั้นเพิ่มค่า i+1 }
ให้ตัวแปร i เป็นจำนวนเต็ม มีค่าเป็น 1
วนรอบ ตรวจสอบเงื่อนไข เมื่อ i น้อยกว่าหรือเท่ากับ 10 จริง { ให้แสดงค่า i
จากนั้นเพิ่มค่า i+1 }
Flowchart ( Show 1-10 Number)
Pseudo Code ( Show 1-10 Number)
START
PROCESS int i=1
while(i<=10){
START
PROCESS int i=1
while(i<=10){
PRINT i
i++}
END
END
Source Code ( Show 1-10 Number)
ข้อควรระวังของการเขียน while คือ จะต้องกำหนดค่าให้กับตัวแปรเริ่มต้นก่อนเสมอ และ จะต้องเพิ่มค่าให้กับตัวแปรนั้นทุกๆครั้ง มิเช่นนั้นแล้ว อาจจะเกิดปัญหาการทำงานไม่รู้จบได้ เช่น หากข้อนี้ ไม่มีบรรทัด i++; แล้ว การทำงานจะเกิดเป็น loop ไม่รู้จบ เพราะว่า condition i <= 10 จะได้ว่า 1 <= 10 เสมอ ซึ่ง เป็นสัจนิรันดร์
โค๊ด 032loopwhile
จงเขียนโปรแกรมโดยใช้ while เพื่อแสดงผลสูตรคูณแม่ 12 ออกมาทางจอภาพ โดยให้ขึ้นบรรทัดทุกครั้ง และให้แสดงถึง 12 * 12
โดยรูปแบบการแสดงผลเป็นดังนี้
โดยรูปแบบการแสดงผลเป็นดังนี้
โดย x คือตัวเอ๊กซ์ เล็ก และให้เว้นวรรคด้วย
จงแก้โค้ดต่อไปนี้
Refer: link