การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while บทที่ 5 การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
โครงสร้างควบคุม (Control Structure) การควบคุมโปรแกรมให้ทำงานได้ตามต้องการ เราจำเป็นต้องมีความเข้าใจเกี่ยวกับโครงสร้างควบคุมของการเขียนภาษาโปรแกรม ประกอบด้วย ลำดับการทำงาน (Sequence) ทางเลือก,ตัดสินใจ (Decision) การวนซ้ำ (Iteration)
การเขียนโปรแกรมแบบ วนซ้ำ คำสั่ง for คำสั่ง while คำสั่ง do..while
ลูป while จะทำการตรวจสอบเงื่อนไขก่อน หากพบว่าเงื่อนไขเป็นจริงจะเข้าไปทำงานภายใน เครื่องหมาย { และ } หากพบว่าเงื่อนไขเป็นเท็จจะไม่เข้าไปทำ Statement(คำสั่ง) ภายในลูป
เปลี่ยนแปลงค่าตัวแปร คำสั่ง while start กำหนดค่าเริ่มต้น เงื่อนไข เท็จ เปลี่ยนแปลงค่าตัวแปร จริง คำสั่งต่าง ๆ คำสั่งถัดไป End
โจทย์ : ให้แสดงข้อมูล 1,2,3,.. ,100 (คำสั่ง while) start int num=1 num<=100 เท็จ num++ จริง Print num End
คำสั่งในลูป ; //สามารถมีได้มากกว่า 1 คำสั่ง คำสั่งเปลี่ยนแปลงค่า; } คำสั่ง while รูปแบบ while(เงื่อนไข) { คำสั่งในลูป ; //สามารถมีได้มากกว่า 1 คำสั่ง คำสั่งเปลี่ยนแปลงค่า; }
ตัวอย่าง ให้แสดงข้อมูล 20,15,10,5,0 int x=20; while(x>0) { printf(“%d”,x); x=x-5; } printf(“End Program”); 20 15 10 5 End Program
ระหว่างเลข 1 – 100 ให้แสดงเฉพาะเลขคู่ แบบฝึกหัด ให้แสดงข้อมูล 1-100 ระหว่างเลข 1 – 100 ให้แสดงเฉพาะเลขคู่ เขียนโปรแกรมให้รับค่าข้อมูลตัวเลขแล้วแสดงค่าตัวเลขนั้น ทางหน้าจอแต่ถ้าระบุตัวเลขเป็น 999 จึงหยุด
1. ให้รับค่าข้อมูลคะแนน ทางแป้นพิมพ์ทีละคน จากนั้นแสดงผลคะแนนดังกล่าว โจทย์ 1. ให้รับค่าข้อมูลคะแนน ทางแป้นพิมพ์ทีละคน จากนั้นแสดงผลคะแนนดังกล่าว 2. สอบถามผู้ใช้ว่าต้องการทำงานต่อ หรือไม่(Y/N) ถ้า Y ให้รับค่าข้อมูลคนต่อไป ถ้า N ให้ออกจากโปรแกรม
โจทย์ ให้รับค่าข้อมูล ชื่อ และคะแนนสอบทางแป้นพิมพ์ทีละคน ถ้าคะแนน 50 ขึ้นไปคือสอบผ่าน ถ้าน้อยกว่า 50 คือสอบไม่ผ่าน จากนั้นสอบถามผู้ใช้ว่า ต้องการทำงานต่อหรือไม่(Y/N) ถ้า Y ให้รับค่าข้อมูลคนต่อไป ถ้า N ให้ออกจากโปรแกรม กรุณาระบบชื่อ : som กรุณาระบุคะแนน : 77 ผลสอบของ som คือ : Pass ต้องการทำงานต่อหรือไม่ [y/n] : y กรุณาระบบชื่อ : yai กรุณาระบุคะแนน : 30 ผลสอบของ yai คือ : Fail ต้องการทำงานต่อหรือไม่ [y/n] : n End Progam
โจทย์สำหรับนักศึกษา ข้อ 3) จงเขียนโปรแกรมคำนวณผลบวก ลบ คูณ และหาร จากตัวเลข 2 ตัวที่รับเข้าไปจากผู้ใช้แล้วนำตัวเลข 2 ตัวนี้ไปคำนวณผลตามที่ผู้ใช้ต้องการโดยให้ผู้ใช้เลือกจากหัวข้อดังนี้ 1. Plus (บวก) 2. Subtract (ลบ) 3. Multiply (คูณ) 4. Divide (หาร) 5. End Program (ออกโปรแกรม)
แนะนำคำสั่ง break และ continue
โดยจะวางนิพจน์ทดสอบค่า(เงื่อนไข)ไว้ตอนท้ายของ Loop การใช้ do…. while การใช้ do..while นั้น จะใช้เมื่อเราต้องการเข้าสู่การทำงานของลูป (Loop) อย่างน้อย 1 ครั้ง โดยจะวางนิพจน์ทดสอบค่า(เงื่อนไข)ไว้ตอนท้ายของ Loop
กำหนดค่าตัวแปรเริ่มต้น ตัวแปรเปลี่ยนแปลงค่า คำสั่ง do…while start กำหนดค่าตัวแปรเริ่มต้น คำสั่งต่าง ๆภายในลูป ตัวแปรเปลี่ยนแปลงค่า จริง เท็จ เงื่อนไข End
โจทย์ : ให้แสดงข้อมูล 1,2,3,.. ,100 (คำสั่ง do…while) start int num=1 Print num num++ num<=100 จริง เท็จ End
คำสั่ง do…while รูปแบบ ตัวแปรกำหนดค่าเริ่มต้น do{ คำสั่งในลูป; //สามารถมีได้มากกว่า 1 คำสั่ง คำสั่งเปลี่ยนแปลงค่า; } while(เงื่อนไข);
เปรียบเทียบ
โจทย์ แสดงข้อมูล 1-100 2. เขียนโปรแกรมให้รับค่าข้อมูลตัวเลขแล้วแสดงค่าตัวเลขนั้น ทางหน้าจอแต่ถ้าระบุตัวเลขเป็น 999 จึงหยุด
โจทย์ จงเขียนโปรแกรมสามารถรับค่าตัวเลขได้เรื่อย ๆไม่จำกัดจำนวนรอบ เมื่อ User ต้องการจบการทำงาน ให้ป้อนเลข 0 จากนั้น แสดงผลรวม (sum) ตัวเลขทั้งหมดที่ป้อนเข้าไป และข้อความ “Bye..Bye..End of Program”
ตัวอย่าง โปรแกรม
โจทย์ เขียนโปรแกรมให้สามารถระบุจำนวน ที่ต้องการ input คะแนน จากนั้นนำคะแนนที่ input ไปตัดเกรด 0-49 F 50-59 D 60-69 C 70-79 B 80-100 A เมื่อครบจำนวน ให้แสดงข้อมูล คะแนนและผลเกรดที่ได้
โจทย์สำหรับนักศึกษา ข้อ 4) ให้รับข้อมูลราคา สินค้า(รับทศนิยมได้) และจำนวนสินค้าที่ซื้อของรายการนั้น โดยสามารถรับราคา และจำนวน ไม่จำกัดจำนวนรอบ จนกระทั้ง ผู้ใช้ ป้อนข้อมูลเป็น 000 จึงสรุป ผลรวมของยอดเงิน ที่ต้องจ่าย
ให้นำโจทย์ที่ให้เขียนโปรแกรม นำไปเขียน เป็น Flow Chart การบ้านเพิ่มเติม ให้นำโจทย์ที่ให้เขียนโปรแกรม นำไปเขียน เป็น Flow Chart
โจทย์ : ให้แสดงข้อมูล 1,2,3,.. ,100 (คำสั่ง do…while) start int num=1 Print num num++ num<=100 จริง เท็จ End
โจทย์ : ให้แสดงข้อมูล 1,2,3,.. ,100 (คำสั่ง while) start int num=1 num<=100 เท็จ num++ จริง Print num End