บทที่ 4 คำสั่งควบคุมการทำงานของโปรแกรม |
สำหรับบทนี้จะอธิบายถึงคำสั่งควบคุมการทำงานของโปรแกรม ซึ่งแบ่งกลุ่มตามลักษณะการทำงานตามข้อกำหนดมาตรฐานของสถาบัน ANSI (American National Standards Institute) กำหนดให้ภาษา C มีคำสั่งที่ใช้ควบคุมการทำงานของโปรแกรมดังนี้
1) คำสั่งวนลูปหรือทำงานซ้ำ ๆ เป็นลูป (loop statements) ได้แก่ คำสั่ง for, while, do while และมีคำสั่งออกจากลูปคือคำสั่ง break หรือทำงานในรอบต่อไป คือคำสั่ง continue
2) คำสั่งทดสอบเงื่อนไขในการตัดสินใจ (decision statements) ได้แก่ คำสั่ง if, if else, โครงสร้าง else if (หรือ nested if) และคำสั่ง switch
3) คำสั่งที่สั่งให้ไปทำงานตามจุดที่กำหนดให้ (goto statements) ได้แก่ คำสั่ง goto และ label ซึ่งแต่ละคำสั่งมีรายละเอียดดังต่อไปนี้
2) คำสั่งทดสอบเงื่อนไขในการตัดสินใจ (decision statements) ได้แก่ คำสั่ง if, if else, โครงสร้าง else if (หรือ nested if) และคำสั่ง switch
3) คำสั่งที่สั่งให้ไปทำงานตามจุดที่กำหนดให้ (goto statements) ได้แก่ คำสั่ง goto และ label ซึ่งแต่ละคำสั่งมีรายละเอียดดังต่อไปนี้
4.1 คำสั่งวนลูปหรือทำงานซ้ำ ๆ เป็นลูป (loop statements)
คำสั่งวนลูปเป็นคำสั่งที่สามารถควบคุมโปรแกรมให้ทำงานเป็นจำนวนรอบตามที่เรากำหนดไว้ หรือทำงานจนกว่าเงื่อนไขที่กำหนดไว้เป็นเท็จ จึงจะออกจากคำสั่งวนลูปได้
คำสั่งวนลูปเป็นคำสั่งที่สามารถควบคุมโปรแกรมให้ทำงานเป็นจำนวนรอบตามที่เรากำหนดไว้ หรือทำงานจนกว่าเงื่อนไขที่กำหนดไว้เป็นเท็จ จึงจะออกจากคำสั่งวนลูปได้
4.1.1 คำสั่ง for
for เป็นคำสั่งที่สั่งให้โปแกรมมีการทำงานซ้ำ ๆ วนลูปจนกว่าเงื่อนไขที่กำหนดไว้เป็นเท็จ จึงออกจากคำสั่ง for ไปทำคำสั่งถัดไป ควรใช้คำสั่ง for ในกรณีที่ทราบจำนวนรอบของการทำงาน
for เป็นคำสั่งที่สั่งให้โปแกรมมีการทำงานซ้ำ ๆ วนลูปจนกว่าเงื่อนไขที่กำหนดไว้เป็นเท็จ จึงออกจากคำสั่ง for ไปทำคำสั่งถัดไป ควรใช้คำสั่ง for ในกรณีที่ทราบจำนวนรอบของการทำงาน
รูปแบบการใช้คำสั่ง for
for (expression1; expression2; expression3)
statement;
หรือ
for (expression1; expression2; expression3)
{
statement(s);
}
โดยที่
expression1 คือ นิพจน์ที่ใช้กำหนดค่าเริ่มต้นให้กับตัวแปรที่จะใช้วนลูป
expression2 คือ นิพจน์ที่ใช้ทดสอบเงื่อนไข ซึ่งจะมีค่าจริงหรือเท็จอย่างใดอย่างหนึ่งเท่านั้น
expression3 คือ นิพจน์ที่ใช้เพิ่มหรือลดค่าตัวแปรที่จะใช้วนลูป
statement(s) คือ คำสั่งต่าง ๆ ถ้ามีมากกว่า 1 คำสั่ง จะต้องเขียนอยู่ภายในเครื่องหมาย {….}
ลักษณะการทำงานของคำสั่ง for สามารถเขียนเป็นแผนผังได้ดังนี้
รูปที่ 4.1 ผังงานแสดงลักษณะการทำงานของคำสั่ง for
ที่มา : สมชาย รัตนเลิศนุสรณ์, 2545 : 78.
ที่มา : สมชาย รัตนเลิศนุสรณ์, 2545 : 78.
โปรแกรมตัวอย่างที่ 4.1 แสดงการใช้คำสั่ง for เพื่อวนแสดงตัวเลข 1 ถึง 10 ออกแสดงที่จอภาพ
/* for1.c */ | ||||
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.1 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
จากโปรแกรมตัวอย่างที่ 4.1 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 คำสั่ง for (num = 1; num <=10; num++) จะเริ่มทำงานโดยการกำหนดค่าเริ่มต้นตัวแปร num เป็น 1 จากนั้นทดสอบเงื่อนไข num <= 10 จริงหรือเท็จ ถ้าเป็นจริงจะทำงานตามคำสั่งบรรทัดที่ 8 ถ้าเป็นเท็จออกจาก for ไปทำคำสั่งบรรทัดที่ 9
บรรทัดที่ 8 ฟังก์ชัน printf( ) เพื่อพิมพ์ค่าของตัวแปร num ในแต่ละรอบของการทำงาน และขึ้นบรรทัดใหม่ด้วย ออกแสดงที่จอภาพ
บรรทัดที่ 9 ฟังก์ชัน printf( ) แสดงข้อความให้กดคีย์ใด ๆ เพื่อกลับสู่โปรแกรม
บรรทัดที่ 10 หยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม
โปรแกรมตัวอย่างที่ 4.2 แสดงการใช้คำสั่ง for เพื่อวนคำนวณแม่สูตรคูณ แม่ต่าง ๆ ตามผู้ใช้เติม และแสดงผลที่จอภาพ
/* for2.c */ | ||||
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.2 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
จากโปรแกรมตัวอย่างที่ 4.2 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 ฟังก์ชัน printf( ) พิมพ์ข้อความ input number >>> ออกที่จอภาพ นั่นคือ ให้ผู้ใช้เติมตัวเลขจำนวนเต็ม เพื่อที่จะนำไปคำนวณแม่สูตรคูณ
บรรทัดที่ 8 ฟังก์ชัน scanf( ) รับค่าตัวเลขจากคีย์บอร์ด แล้วเก็บไว้ที่ตัวแปร k
บรรทัดที่ 9 คำสั่ง for (i = 1; i <= 12; i++) เป็นการกำหนดค่าเริ่มต้นตัวแปร i เป็น 1 จากนั้นทดสอบเงื่อนไข i <= 12 จริงหรือเท็จ ถ้าเป็นจริงจะทำคำสั่งบรรทัดที่ 10 ถ้าเป็นเท็จจะออกจาก for ไปทำคำสั่งบรรทัดที่ 11
บรรทัดที่ 10 ฟังก์ชัน printf( ) แสดงค่าตัวแปร k, i และ i * k นั่นคือ ค่าแม่สูตรคูณตัวเลขนั้น ๆ คูณกับค่า i ในแต่ละรอบ และค่าผลลัพธ์ที่ได้จากการเอาตัวเลขแม่สูตรคูณ คูณกับตัวเลขในแต่ละรอบออกมาเป็นสูตรคูณ
บรรทัดที่ 11 ฟังก์ชัน printf( ) พิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับสู่โปรแกรม
บรรทัดที่ 12 หยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม
โปรแกรมตัวอย่างที่ 4.3 แสดงการใช้คำสั่ง for เพื่อวนคำนวณค่าสะสมตัวเลข 1 ถึง 10 และแสดงผลออกจอภาพ
/* for3.c */ | ||||
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.3 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
จากโปรแกรมตัวอย่างที่ 4.3 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 คำสั่ง for (i = 1, sum = 0; i <= 10; i++) มีนิพจน์ที่กำหนดค่าเริ่มต้นให้กับตัวแปร 2 ค่า คือ i = 1 และ sum = 0 ส่วนนิพจน์เงื่อนไข คือ i <= 10 และนิพจน์สำหรับเพิ่มค่าตัวแปร i คือ i++ ในคำสั่ง for ถ้าตรวจสอบเงื่อนไข i <=10 แล้วเป็นจริงจะทำงานใน loop for คือ บรรทัดที่ 9 และ 10 แล้ววนไปเพิ่มค่าตัวแปร i และวนตรวจสอบเงื่อนไขอีกครั้งว่า i <= 10 จริงหรือเท็จ แต่ถ้าตรวจสอบเงื่อนไขแล้วได้ค่าเป็นเท็จ ก็จะข้ามคำสั่งใน loop for ไปทำคำสั่งบรรทัดที่ 12 ถึง 14
บรรทัดที่ 9 และ 10 เป็นคำสั่งให้คำนวณค่าสะสมตัวแปร sum ในแต่ละรอบการทำงาน และแสดงค่าตัวแปร i และตัวแปร sum ที่คำนวณได้ในแต่ละรอบ แสดงผลออกจอภาพ
บรรทัดที่ 12 ถึง 14 เป็นคำสั่งที่โปรแกรมจะทำงานภายหลังจากตรวจสอบเงื่อนไข loop for แล้วได้ค่าเป็นเท็จ นั่นคือ บรรทัดที่ 12 พิมพ์ค่าตัวแปร i และ ตัวแปร sum ค่าสุดท้าย ส่วนบรรทัดที่ 13 จะแสดงข้อความให้กดคีย์ใด ๆ เพื่อกลับสู่โปรแกรม และบรรทัดที่ 14 หยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม
โปรแกรมตัวอย่างที่ 4.4 แสดงการใช้คำสั่ง for เพื่อวนแสดงตัวเลขแต่ละแถว ซึ่งแสดงแถวละ 10 ตัว ออกแสดงที่จอภาพ
/* for4.c */ | ||||
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.4 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
จากโปรแกรมตัวอย่างที่ 4.4 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 คำสั่ง for (row=1; row<=5; row++) เพื่อควบคุมการทำงานของโปรแกรมให้มีการทำงานจำนวน 5 แถว และมีนิพจน์เงื่อนไข คือ row<=5 เป็นจริงหรือเท็จ ถ้านิพจน์เงื่อนไขมีค่าจริง จะทำงานใน loop for คือ บรรทัดที่ 9 ถึง 11 แล้ววนไปเพิ่มค่าตัวแปร row และวนตรวจสอบเงื่อนไขอีกครั้งว่า row<=5 จริงหรือเท็จ แต่ถ้าตรวจสอบเงื่อนไขแล้วได้ค่าเป็นเท็จ ก็จะข้ามคำสั่งใน loop for ไปทำคำสั่งบรรทัดที่ 14 และ 15
บรรทัดที่ 9 คำสั่ง for (col=1; col<=10; col++) เพื่อควบคุมการทำงานของโปรแกรมให้ทำงาน 10 คอลัมน์ ต่อ 1 แถว ซึ่งการทำงานใน loop for นี้ มีลักษณะการทำงานคล้ายกับ loop for ของบรรทัดที่ 7 ซึ่งถ้านิพจน์เป็นจริง จะไปทำงานคำสั่งบรรทัดที่ 10 นั่นคือ วนพิมพ์ค่าของตัวแปร row ไปเรื่อย ๆ จนครบ 10 ครั้ง และแต่ละครั้งจะเว้นช่องว่างห่างกัน 2 ช่องว่างสำหรับการแสดงค่าตัวแปร row แต่ถ้านิพจน์เป็นเท็จ จะไปทำคำสั่งบรรทัดที่ 11 นั่นคือ ขึ้นบรรทัดใหม่
บรรทัดที่ 13 และ 14 เป็นคำสั่งที่โปรแกรมจะทำงานภายหลังจากตรวจสอบเงื่อนไขของตัวแปร row ว่า row<=5 แล้วได้ค่าเป็นเท็จ คือ แสดงข้อความให้กดคีย์ใด ๆ เพื่อกลับเข้าสู่โปรแกรม และจะหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น กด enter ก็จะกลับสู่โปรแกรม
4.1.2 คำสั่ง while
while เป็นคำสั่งที่มีการทำงานซ้ำ ๆ เป็นลูป และมีลักษณะการทำงานของคำสั่งคล้ายกับคำสั่ง for แตกต่างกันตรงที่ การใช้ while ไม่ต้องทราบจำนวนรอบของการทำงานที่แน่นอน แต่ต้องมีเงื่อนไขที่เป็นเท็จจึงจะออกจากคำสั่ง while ได้
while เป็นคำสั่งที่มีการทำงานซ้ำ ๆ เป็นลูป และมีลักษณะการทำงานของคำสั่งคล้ายกับคำสั่ง for แตกต่างกันตรงที่ การใช้ while ไม่ต้องทราบจำนวนรอบของการทำงานที่แน่นอน แต่ต้องมีเงื่อนไขที่เป็นเท็จจึงจะออกจากคำสั่ง while ได้
รูปแบบการใช้คำสั่ง while
while (expression) statement;
หรือ
while (expression)
{
statement(s);
}
โดยที่
expression คือ นิพจน์ที่ใช้ทดสอบเงื่อนไข ถ้านิพจน์นี้ให้ผลลัพธ์เป็นจริงจะทำตามคำสั่งที่อยู่ภายในคำสั่ง while จนกว่าเงื่อนไขเป็นเท็จจึงออกจากคำสั่ง while ได้
ลักษณะการทำงานของคำสั่ง while สามารถเขียนเป็นแผนผังได้ดังนี้
รูปที่ 4.2 ผังงานแสดงลักษณะการทำงานของคำสั่ง while
ที่มา : สมชาย รัตนเลิศนุสรณ์, 2545 : 82.
ที่มา : สมชาย รัตนเลิศนุสรณ์, 2545 : 82.
โปรแกรมตัวอย่างที่ 4.5 แสดงการใช้คำสั่ง while เพื่อวนคำนวณค่าสะสมตัวเลข 1 ถึง 10 และหาค่าเฉลี่ย แล้วแสดงผลออกจอภาพ
/* while1.c */ | ||||
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.5 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
จากโปรแกรมตัวอย่างที่ 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 ถึงหยุดการทำงาน
/* while2.c */ | ||||
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.6 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
จากโปรแกรมตัวอย่างที่ 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 เพื่อวนการทำงานให้ผู้ใช้เติมตัวเลข เต็มบวก หรือ เต็มลบ หรือ ศูนย์ และมีการนับจำนวนตัวเลขแต่ละชนิดด้วย แล้วแสดงผลที่ได้ออกจอภาพ
/* while3.c */ | ||||
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.7 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
จากโปรแกรมตัวอย่างที่ 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.1.3 คำสั่ง do while
do while เป็นคำสั่งที่มีการทำงานซ้ำ ๆ วนลูป คล้ายกับคำสั่ง while มาก แตกตางกันตรงที่คำสั่ง do while จะทดสอบเงื่อนไขหลังจากที่ได้ทำงานตามคำสั่งภายในลูปไปแล้ว 1 รอบ จากนั้นจึงค่อยย้อนกลับมาทดสอบเงื่อนไขอีกครั้งหนึ่ง ถ้าเงื่อนไขเป็นจริงก็จะทำงานตามคำสั่งภายในลูป แต่ถ้าเงื่อนไขเป็นเท็จจะออกจากคำสั่ง do while ทันที
do while เป็นคำสั่งที่มีการทำงานซ้ำ ๆ วนลูป คล้ายกับคำสั่ง while มาก แตกตางกันตรงที่คำสั่ง do while จะทดสอบเงื่อนไขหลังจากที่ได้ทำงานตามคำสั่งภายในลูปไปแล้ว 1 รอบ จากนั้นจึงค่อยย้อนกลับมาทดสอบเงื่อนไขอีกครั้งหนึ่ง ถ้าเงื่อนไขเป็นจริงก็จะทำงานตามคำสั่งภายในลูป แต่ถ้าเงื่อนไขเป็นเท็จจะออกจากคำสั่ง do while ทันที
รูปแบบการใช้คำสั่ง do while
|
รูปที่ 4.3 ผังงานแสดงลักษณะการทำงานของคำสั่ง do while
ที่มา : สมชาย รัตนเลิศนุสรณ์, 2545 : 85.
ข้อควรระวังในการใช้คำสั่ง do while
ควรระวังเงื่อนไขของคำสั่ง do while ต้องพิจารณาให้ดีว่ามีทั้งกรณีที่เป็นจริงและเท็จอยู่หรือไม่ ถ้ามีอยู่ทั้ง 2 กรณี แสดงว่าใช้คำสั่งนี้ได้ถูกต้องตามไวยากรณ์ของคำสั่งนี้ ถ้ามีเฉพาะกรณีที่เงื่อนไขเป็นจริงเท่านั้นแสดงว่าเกิดลักษณะการทำงานวนลูป (looping) ไม่มีทางออกจากคำสั่งนี้ ในทำนองกลับกันถ้าเงื่อนไขเป็นเท็จอย่างเดียว จะทำคำสั่ง do while เพียงครั้งเดียว
โปรแกรมตัวอย่างที่ 4.8 แสดงการใช้คำสั่ง do while เพื่อวนลูปแสดง main memu ให้ผู้ใช้เลือกเมนู ไปเรื่อย ๆ จนกว่าเลือกเมนูที่ 5 ถึงจะออกจากโปรแกรม
/* dowhile1.c */ | ||||
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.8 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
จากโปรแกรมตัวอย่างที่ 4.8 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 คำสั่ง do จะควบคุมการทำงานของโปรแกรม ให้ทำตามคำสั่งที่อยู่ภายใน loop do คือคำสั่งภายในเครื่องหมาย { } บรรทัดที่ 8 ถึง 16 ซึ่งจะทำอย่างน้อย 1 รอบ หลังจากนั้นค่อยไปตรวจสอบเงื่อนไข while ในบรรทัดที่ 17 ถ้าเป็นจริงจะกลับมาทำคำสั่งใน loop อีกครั้ง แต่ถ้าเป็นเท็จก็จะออกจากโปรแกรม และสิ้นสุดการทำงาน
บรรทัดที่ 17 คำสั่ง while (choice!=‘5‘); จะตรวจสอบค่าที่รับเข้ามาจากคีย์บอร์ด ซึ่งจะเก็บไว้ในตัวแปร choice และค่าที่รับเข้ามาจะเป็นชนิดอักขระ ตรวจสอบว่าไม่เท่ากับ ตัวอักขระ 5 จริงหรือเท็จ (‘5‘ ความหมายเป็นตัวอักขระไม่ใช่ตัวเลข ซึ่งเวลาตรวจสอบเงื่อนไข ตัวดำเนินการทางคณิตศาสตร์ ข้อมูลที่จะตรวจสอบต้องเป็นชนิดเดียวกัน) มีเงื่อนไขที่จะเป็นเท็จอยู่กรณีเดียว คือ เติม 5 จะทำให้ ‘5‘ != 5 เป็นเท็จ ก็จะออกจาก loop และจบการทำงาน
โปรแกรมตัวอย่างที่ 4.9 แสดงการใช้คำสั่ง do while เพื่อวนลูป คำนวณค่าผลบวกตัวเลข 1 ถึง 100
/* dowhile2.c */ | ||||
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.9 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
จากโปรแกรมตัวอย่างที่ 4.9 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 คำสั่ง do จะควบคุมการทำงานของโปรแกรม ให้ทำตามคำสั่งที่อยู่ภายใน loop do คือคำสั่งภายในเครื่องหมาย { } บรรทัดที่ 9 ถึง 10 ซึ่งจะทำอย่างน้อย 1 รอบ หลังจากนั้นค่อยไปตรวจสอบเงื่อนไข while ในบรรทัดที่ 11 ถ้าเป็นจริงจะกลับมาทำคำสั่งใน loop อีกครั้ง แต่ถ้าเป็นเท็จก็จะออกจากโปรแกรม และสิ้นสุดการทำงาน
บรรทัดที่ 11 คำสั่ง while (i<=100); จะตรวจสอบว่าค่า i น้อยกว่าหรือเท่ากับ 100 เป็นจริงหรือเท็จ ถ้าเป็นจริงจะกลับไปทำงานตามคำสั่งใน loop do คือ บวกสะสมตัวเลข เก็บไว้ในตัวแปร sum แล้วเพิ่มค่า i ขึ้นทีละ 1 แต่ถ้าเป็นเท็จ คือ ค่า i เป็น 101 จะออกจาก loop do แล้วไปทำคำสั่งบรรทัดที่ 12 ถึง 14 นั่นคือ พิมพ์ค่าผลบวกสะสมตัวเลข 1 ถึง 100 แล้วพิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับเข้าสู่โปรแกรม และหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม
4.1.4 คำสั่ง break
break เป็นคำสั่งที่สั่งให้ออกจากคำสั่ง for หรือ while หรือ do while หรือคำสั่ง switch (คำสั่ง switch อธิบายไว้ในหัวข้อ 2.4)
break เป็นคำสั่งที่สั่งให้ออกจากคำสั่ง for หรือ while หรือ do while หรือคำสั่ง switch (คำสั่ง switch อธิบายไว้ในหัวข้อ 2.4)
รูปแบบการใช้คำสั่ง break
break;
/* break.c */ | ||||
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.10 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
จากโปรแกรมตัวอย่างที่ 4.10 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 คำสั่ง for (j = 1; j <=20; j++) ต้องการให้โปรแกรมวนทำงานพิมพ์ค่าของตัวแปร j ตั้งแต่ 1 ถึง โดยแต่ละค่าให้ห่างกัน 1 tab
บรรทัดที่ 9 คำสั่ง if (j == 10) break; จะตรวจสอบค่าตัวแปร j ว่าเท่ากับ 10 หรือไม่ ถ้าเท่ากับ 10 ให้หยุดการทำงาน (break) และออกจาก loop for ดังนั้นโปรแกรมนี้จะไม่ได้พิมพ์ตัวเลข 1 ถึง 20 เพราะพบคำสั่ง break แต่จะพิมพ์ตัวเลข 1 ถึง 10
บรรทัดที่ 11 และ 12 เป็นคำสั่งที่จะทำงานภายหลังจากตรวจสอบเงื่อนไข for ในบรรทัดที่ 7 แล้วได้ค่าเท็จ นั่นคือ พิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับสู่โปรแกรม และหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม
4.1.5 คำสั่ง continue
continue เป็นคำสั่งที่สั่งให้กลับไปทำงานที่คำสั่งแรกของลูปคำสั่ง for หรือ while หรือ do while ทำให้มีการทำงานในรอบต่อไป
continue เป็นคำสั่งที่สั่งให้กลับไปทำงานที่คำสั่งแรกของลูปคำสั่ง for หรือ while หรือ do while ทำให้มีการทำงานในรอบต่อไป
รูปแบบการใช้คำสั่ง continue
continue;
โปรแกรมตัวอย่างที่ 4.11 แสดงการใช้คำสั่ง continue ควบคู่กับคำสั่ง for
/* continue.c */ | ||||
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.11 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
จากโปรแกรมตัวอย่างที่ 4.11 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 คำสั่ง for (j=1; j<=20; j++) ต้องการให้โปรแกรมวนทำงานพิมพ์ค่าของตัวแปร j ตั้งแต่ 1 ถึง 20 โดยแต่ละค่าให้ห่างกัน 1 tab
บรรทัดที่ 9 คำสั่ง if (j==5) {j=j+10; continue;} จะตรวจสอบค่าตัวแปร j ว่าเท่ากับ 5 หรือไม่ ถ้าเท่ากับ 5 ให้เพิ่มค่า j ไป 10 แล้วกลับไปทำงาน (continue) คำสั่งบรรทัดที่ 7 คือ เพิ่มค่า j อีก 1 เป็น 16 ดังนั้นโปรแกรมนี้จะไม่ได้พิมพ์ตัวเลข 1 ถึง 20 ทุกตัว แต่จะข้ามตัวเลขช่วง 6 ถึง 15 ไป
บรรทัดที่ 11 และ 12 เป็นคำสั่งที่จะทำงานภายหลังจากตรวจสอบเงื่อนไข for ในบรรทัดที่ 7 แล้วได้ค่าเท็จ นั่นคือ พิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับสู่โปรแกรม และหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม
0 ความคิดเห็น:
แสดงความคิดเห็น