การวนรอบซ้ำด้วยคำสั่ง while
while เป็นคำสั่งที่มีการทำงานซ้ำ ๆ เป็นลูป และมีลักษณะการทำงานของคำสั่งคล้ายกับคำสั่ง for แตกต่างกันตรงที่ การใช้ while ไม่ต้องทราบจำนวนรอบของการทำงานที่แน่นอน แต่ต้องมีเงื่อนไขที่เป็นเท็จจึงจะออกจากคำสั่ง while ได้
รูปแบบการใช้คำสั่ง while
รูปแบบการใช้คำสั่ง while
while (expression) statement;
หรือ
while (expression)
{
statement(s);
}
โดยที่
expression คือ นิพจน์ที่ใช้ทดสอบเงื่อนไข ถ้านิพจน์นี้ให้ผลลัพธ์เป็นจริงจะทำตามคำสั่งที่อยู่ภายในคำสั่ง while จนกว่าเงื่อนไขเป็นเท็จจึงออกจากคำสั่ง while ได้
ลักษณะการทำงานของคำสั่ง while สามารถเขียนเป็นแผนผังได้ดังนี้
หรือ
while (expression)
{
statement(s);
}
โดยที่
expression คือ นิพจน์ที่ใช้ทดสอบเงื่อนไข ถ้านิพจน์นี้ให้ผลลัพธ์เป็นจริงจะทำตามคำสั่งที่อยู่ภายในคำสั่ง while จนกว่าเงื่อนไขเป็นเท็จจึงออกจากคำสั่ง while ได้
ลักษณะการทำงานของคำสั่ง while สามารถเขียนเป็นแผนผังได้ดังนี้
รูปที่ 4.2 ผังงานแสดงลักษณะการทำงานของคำสั่ง while
ที่มา : สมชาย รัตนเลิศนุสรณ์, 2545 : 82.
ที่มา : สมชาย รัตนเลิศนุสรณ์, 2545 : 82.
โปรแกรมตัวอย่างที่ 4.5 แสดงการใช้คำสั่ง while เพื่อวนคำนวณค่าสะสมตัวเลข 1 ถึง 10 และหาค่าเฉลี่ย แล้วแสดงผลออกจอภาพ
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.5 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 8 คำสั่ง while (n < 11) เพื่อควบคุมการทำงานของโปรแกรมให้ทำงานซ้ำ ๆ กัน โดยการทำงานของคำสั่ง while จะตรวจสอบเงื่อนไข n < 11 เป็นจริงหรือเท็จ ถ้าเป็นจริงจะทำงานตามคำสั่งที่อยู่ภายใน loop while คือ บรรทัดที่ 10 และ 11 จากนั้นจะกลับมาตรวจสอบเงื่อนไขใหม่ ทำอย่างนี้ซ้ำ ๆ จนกว่าตรวจสอบเงื่อนไข n < 11 เป็นเท็จ จึงจะออกจาก loop while แล้วไปทำคำสั่งบรรทัดที่ 13 ถึง คำสั่งบรรทัดที่ 18
บรรทัดที่ 10 และ 11 เป็นคำสั่งที่โปรแกรมจะทำงานภายหลังจากตรวจสอบเงื่อนไข while แล้วเป็นจริง นั่นคือ คำนวณค่าสะสมของตัวแปร sum และ เพิ่มค่า n ทีละ 1 ตามลำดับ
บรรทัดที่ 13 ถึง 18 เป็นคำสั่งที่โปรแกรมจะทำงานภายหลังจากตรวจสอบเงื่อนไข while แล้วเป็นเท็จ คือ ลดค่าตัวแปร n ลง 1 แล้วคำนวณค่าเฉลี่ยเก็บไว้ที่ตัวแปร avg และพิมพ์ค่าตัวแปร n, sum และ avg แสดงที่จอภาพ พร้อมกับพิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับสู่โปรแกรม สุดท้ายจะหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม
จากโปรแกรมตัวอย่างที่ 4.5 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 8 คำสั่ง while (n < 11) เพื่อควบคุมการทำงานของโปรแกรมให้ทำงานซ้ำ ๆ กัน โดยการทำงานของคำสั่ง while จะตรวจสอบเงื่อนไข n < 11 เป็นจริงหรือเท็จ ถ้าเป็นจริงจะทำงานตามคำสั่งที่อยู่ภายใน loop while คือ บรรทัดที่ 10 และ 11 จากนั้นจะกลับมาตรวจสอบเงื่อนไขใหม่ ทำอย่างนี้ซ้ำ ๆ จนกว่าตรวจสอบเงื่อนไข n < 11 เป็นเท็จ จึงจะออกจาก loop while แล้วไปทำคำสั่งบรรทัดที่ 13 ถึง คำสั่งบรรทัดที่ 18
บรรทัดที่ 10 และ 11 เป็นคำสั่งที่โปรแกรมจะทำงานภายหลังจากตรวจสอบเงื่อนไข while แล้วเป็นจริง นั่นคือ คำนวณค่าสะสมของตัวแปร sum และ เพิ่มค่า n ทีละ 1 ตามลำดับ
บรรทัดที่ 13 ถึง 18 เป็นคำสั่งที่โปรแกรมจะทำงานภายหลังจากตรวจสอบเงื่อนไข while แล้วเป็นเท็จ คือ ลดค่าตัวแปร n ลง 1 แล้วคำนวณค่าเฉลี่ยเก็บไว้ที่ตัวแปร avg และพิมพ์ค่าตัวแปร n, sum และ avg แสดงที่จอภาพ พร้อมกับพิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับสู่โปรแกรม สุดท้ายจะหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม
โปรแกรมตัวอย่างที่ 4.6 แสดงการใช้คำสั่ง while เพื่อวนทำงานให้ผู้ใช้เติมตัวอักษร และ แสดงผลออกจอภาพไปเรื่อย ๆ จนกว่าจะกด enter ถึงหยุดการทำงาน
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.6 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 5 ประกาศตัวแปรชนิดตัวอักขระ ชื่อ ch และให้เก็บค่า ‘A’ เพื่อไว้ตรวจสอบเงื่อนไขเริ่มแรก
บรรทัดที่ 6 คำสั่ง while (ch != ‘ \r ’) คือ การตรวจสอบเงื่อนไข ค่าของตัวแปร ch ไม่เท่ากับ ‘ \r ‘ หรือไม่ (‘ \r ‘ คือรหัสของการกดแป้น enter) ซึ่งถ้าเงื่อนไขเป็นจริง จะทำคำสั่งภายใน loop while คือ บรรทัดที่ 8 ถึง 12 แต่ถ้าเงื่อนไขเป็นเท็จก็จะออกจาก loop while ซึ่งในกรณีนี้เงื่อนไขจะเป็นเท็จได้คือผู้ใช้จะต้องกดแป้น enter เพราะ ‘ \r ‘ ไม่เท่ากับ ‘ \r ‘ จะเป็นเท็จ
บรรทัดที่ 8 ถึง 12 เป็นคำสั่งที่โปรแกรมจะทำงานภายหลังจากตรวจสอบเงื่อนไข while แล้วเป็นจริง คือ ลบจอภาพ แล้วให้เติมตัวอักขระตัวใด ๆ ไปเก็บไว้ในตัวแปร ch เพื่อเอาไว้ตรวจสอบเงื่อนไข และนำค่าตัวอักขระที่ผู้ใช้เติมแสดงออกจอภาพ สุดท้ายหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม
จากโปรแกรมตัวอย่างที่ 4.6 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 5 ประกาศตัวแปรชนิดตัวอักขระ ชื่อ ch และให้เก็บค่า ‘A’ เพื่อไว้ตรวจสอบเงื่อนไขเริ่มแรก
บรรทัดที่ 6 คำสั่ง while (ch != ‘ \r ’) คือ การตรวจสอบเงื่อนไข ค่าของตัวแปร ch ไม่เท่ากับ ‘ \r ‘ หรือไม่ (‘ \r ‘ คือรหัสของการกดแป้น enter) ซึ่งถ้าเงื่อนไขเป็นจริง จะทำคำสั่งภายใน loop while คือ บรรทัดที่ 8 ถึง 12 แต่ถ้าเงื่อนไขเป็นเท็จก็จะออกจาก loop while ซึ่งในกรณีนี้เงื่อนไขจะเป็นเท็จได้คือผู้ใช้จะต้องกดแป้น enter เพราะ ‘ \r ‘ ไม่เท่ากับ ‘ \r ‘ จะเป็นเท็จ
บรรทัดที่ 8 ถึง 12 เป็นคำสั่งที่โปรแกรมจะทำงานภายหลังจากตรวจสอบเงื่อนไข while แล้วเป็นจริง คือ ลบจอภาพ แล้วให้เติมตัวอักขระตัวใด ๆ ไปเก็บไว้ในตัวแปร ch เพื่อเอาไว้ตรวจสอบเงื่อนไข และนำค่าตัวอักขระที่ผู้ใช้เติมแสดงออกจอภาพ สุดท้ายหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม
โปรแกรมตัวอย่างที่ 4.7 แสดงการใช้คำสั่ง while เพื่อวนการทำงานให้ผู้ใช้เติมตัวเลข เต็มบวก หรือ เต็มลบ หรือ ศูนย์ และมีการนับจำนวนตัวเลขแต่ละชนิดด้วย แล้วแสดงผลที่ได้ออกจอภาพ
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.7 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 8 คำสั่ง while (c<=10) เพื่อควบคุมการทำงานของโปรแกรมให้ทำงานซ้ำ ๆ กัน โดยการทำงานของคำสั่ง while จะตรวจสอบเงื่อนไข c<=10 เป็นจริงหรือเท็จ ถ้าเป็นจริงจะทำงานตามคำสั่งที่อยู่ภายใน loop while คือคำสั่งบรรทัดที่ 10 ถึง 18 แต่ถ้าเงื่อนไขเป็นเท็จจะออกจาก loop while ไปทำคำสั่งบรรทัดที่ 20 ถึง 23
บรรทัดที่ 10 ถึง 11 ให้ผู้ใช้เติมตัวเลขใด ๆ จะเป็นตัวเลขลบ บวก หรือศูนย์ แล้วเก็บไว้ที่ตัวแปร in_key
บรรทัดที่ 12 ถึง 18 คำสั่ง if (in_key< 0.0) จะตรวจสอบตัวเลขที่รับเข้ามาจากคีย์บอร์ดว่ามีค่าน้อยกว่าศูนย์หรือไม่ ถ้าใช่จะเพิ่มค่า n ขึ้นทีละ 1 แต่ถ้าไม่ใช่จะไปตรวจสอบเงื่อนไข if (in_key == 0.0) คือตรวจสอบว่าตัวเลขที่รับเข้ามาจากคีย์บอร์ดว่ามีค่าเท่ากับศูนย์หรือไม่ ถ้าใช่จะเพิ่มค่า z ขึ้นทีละ 1 แต่ถ้าไม่ใช่ทั้ง 2 กรณี แสดงว่า ตัวเลขที่รับเข้ามาจากคีย์บอร์ดมีค่ามากกว่าศูนย์ ก็จะเพิ่มค่า p ขึ้นทีละ 1 หลังจากนั้นค่อยเพิ่มค่าตัวแปร c ขึ้น 1 แล้วกลับไปตรวจสอบเงื่อนไขใน loop while อีกครั้ง ซึ่งจะวนทำงานแบบนี้ไปเรื่อย ๆ
บรรทัดที่ 20 ถึง 23 เป็นคำสั่งที่โปรแกรมจะทำงานภายหลังจากตรวจสอบเงื่อนไข while แล้วเป็นเท็จ คือ แสดงจำนวนของตัวเลขที่เป็นค่าบวก ค่าลบ และ เท่ากับศูนย์ ที่บวกสะสมไว้แล้วนั้น แสดงออกจอภาพ และหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม
จากโปรแกรมตัวอย่างที่ 4.7 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 8 คำสั่ง while (c<=10) เพื่อควบคุมการทำงานของโปรแกรมให้ทำงานซ้ำ ๆ กัน โดยการทำงานของคำสั่ง while จะตรวจสอบเงื่อนไข c<=10 เป็นจริงหรือเท็จ ถ้าเป็นจริงจะทำงานตามคำสั่งที่อยู่ภายใน loop while คือคำสั่งบรรทัดที่ 10 ถึง 18 แต่ถ้าเงื่อนไขเป็นเท็จจะออกจาก loop while ไปทำคำสั่งบรรทัดที่ 20 ถึง 23
บรรทัดที่ 10 ถึง 11 ให้ผู้ใช้เติมตัวเลขใด ๆ จะเป็นตัวเลขลบ บวก หรือศูนย์ แล้วเก็บไว้ที่ตัวแปร in_key
บรรทัดที่ 12 ถึง 18 คำสั่ง if (in_key< 0.0) จะตรวจสอบตัวเลขที่รับเข้ามาจากคีย์บอร์ดว่ามีค่าน้อยกว่าศูนย์หรือไม่ ถ้าใช่จะเพิ่มค่า n ขึ้นทีละ 1 แต่ถ้าไม่ใช่จะไปตรวจสอบเงื่อนไข if (in_key == 0.0) คือตรวจสอบว่าตัวเลขที่รับเข้ามาจากคีย์บอร์ดว่ามีค่าเท่ากับศูนย์หรือไม่ ถ้าใช่จะเพิ่มค่า z ขึ้นทีละ 1 แต่ถ้าไม่ใช่ทั้ง 2 กรณี แสดงว่า ตัวเลขที่รับเข้ามาจากคีย์บอร์ดมีค่ามากกว่าศูนย์ ก็จะเพิ่มค่า p ขึ้นทีละ 1 หลังจากนั้นค่อยเพิ่มค่าตัวแปร c ขึ้น 1 แล้วกลับไปตรวจสอบเงื่อนไขใน loop while อีกครั้ง ซึ่งจะวนทำงานแบบนี้ไปเรื่อย ๆ
บรรทัดที่ 20 ถึง 23 เป็นคำสั่งที่โปรแกรมจะทำงานภายหลังจากตรวจสอบเงื่อนไข while แล้วเป็นเท็จ คือ แสดงจำนวนของตัวเลขที่เป็นค่าบวก ค่าลบ และ เท่ากับศูนย์ ที่บวกสะสมไว้แล้วนั้น แสดงออกจอภาพ และหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม