Chapter 6 Repetition Structure[1] ผู้สอน อ. ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยี คอมพิวเตอร์เคลื่อนที่ ng
Overvie w Repetition structure Sentinel-controlled repetition while loop do...while loop / repeat...until Counter-controlled repetition (next week) for loop (next week) nested loop (next week) 2
Objectiv e เพื่อให้นิสิตรู้จักโครงสร้างของ Flowchart แบบ Repetition structure เพื่อให้นิสิตเข้าใจการนำ Repetition structure ไปใช้งานในรูปแบบต่างๆ เพื่อให้นิสิตสามารถใช้ Repetition structure ในการอธิบายกระบวนการ แก้ปัญหาได้ 3
start J = 1 J <= 5 write J J = J+1 stop yes no “ โครงสร้างนี้จะทำงานอย่าง เดียวกันซ้ำไปเรื่อยๆ ในขณะ ที่ยังเป็นไปตามเงื่อนไข ( เงื่อนไขเป็นจริง )” 4 Repetition Structure
Repetition Structure [cont.] การทำงานบางคำสั่งซ้ำๆ กันโดย เปลี่ยนแปลงเฉพาะส่วนของข้อมูลที่ต้อง ใช้ การคำนวณยอดขายรวมประจำวัน การตรวจสอบเพื่อค้นหาข้อมูลที่ตรง กับที่ต้องการ การคำนวณหาค่าเฉลี่ยของคะแนน สอบนิสิต การพิมพ์ใบเสร็จรับเงิน ฯลฯ 5
Repetition Structure [cont.] ลักษณะของลูปอาจแบ่งได้เป็น 2 ประเภท หลัก Sentinel-controlled repetition ลูปที่โปรแกรมไม่รู้จำนวนรอบที่แน่นอน ทำซ้ำตราบใดที่เงื่อนไขบางอย่างยังคง เป็นจริงหรือเท็จ while loop และ do...while loop / repeat...until Counter-controlled repetition ลูปที่กำหนดจำนวนครั้งของการทำซ้ำเป็น จำนวนรอบที่แน่นอน ( อาจอยู่ในรูปของค่าคงที่หรือตัวแปร ) for loop 6
Repetition Structure [cont.] ไม่ว่าจะลูปแบบใด มักจะพบคำสั่งลักษณะ พิเศษที่ใช้บ่อยในลูปอยู่ 2 รูปแบบเสมอ incrementing or counting accumulating or sum 7
Repetition Structure [cont.] incrementing or counting มักใช้ในการ “ นับ ” เช่น นับจำนวนข้อมูลที่ ผู้ใช้กรอก, นับจำนวนคน, นับจำนวนรอบ ของลูป (for loop) เช่น counter = counter + 1 บางโปรแกรม + อาจเปลี่ยนเป็นเครื่องหมาย อื่นได้ บางโปรแกรมค่าคงที่อาจเปลี่ยนเป็นอย่าง อื่นได้ ต้องมีการกำหนดค่าเริ่มต้น (initial) ให้กับ ตัวแปรที่ทำการนับก่อนเสมอ เช่น เริ่มนับ จาก 0 ( count = 0 ) 8
Repetition Structure [cont.] accumulating or sum มักใช้ในการหาผลรวมของข้อมูล เช่น การ หายอดขายรวมประจำวัน, การหาค่าเฉลี่ย ของคะแนน เป็นต้น เช่น sum = sum + variable บางโปรแกรม + อาจเปลี่ยนเป็นเครื่องหมาย อื่นได้ บางโปรแกรมตัวแปรอาจมีเพิ่มเติมได้ ต้องมีการกำหนดค่าเริ่มต้น (initial) ให้กับ ตัวแปรที่เก็บผลรวมก่อนเสมอ โดยปกติจะมี ค่าเป็น 0 ( sum = 0 ) 9
while loop เป็นลูปชนิด Sentinel-controlled repetition 10 while is true instructions... end while while is true instructions... end while instructions yes no condition...
while loop [cont.] เขียน flowchart ของโปรแกรมเพื่อหาผลรวม ของคะแนนเก็บของนิสิต โดยกำหนดให้ผู้ใช้ กรอกข้อมูลไปเรื่อยๆ โปรแกรมจะหยุดรับข้อมูลเมื่อผู้ใช้ป้อนคะแนน เป็นค่า -1 โปรแกรมจะแสดงผลรวมของคะแนนเก็บ ทั้งหมดและจบการทำงาน 11
while loop [cont.] 12 start sum = 0 read score score != 0 sum = sum + score read score write sum end no ye s
do...while loop / repeat...until เป็น Sentinel-controlled repetition เช่นเดียวกัน 13 do instructions... while is true do instructions... while is true instructions yes no condition...
do...while loop / repeat...until [cont.] คล้าย while loop แต่การทดสอบเงื่อนไข เกิดขึ้นด้านท้ายลูป คำสั่งวนซ้ำจะถูกทำงานก่อน 1 รอบเสมอแล้วจึง ค่อยตรวจสอบเงื่อนไขการวนซ้ำ while loop ถ้าการตรวจสอบเงื่อนไขในครั้ง แรกเป็นเท็จ จะไม่มีการทำงานภายในลูป สามารถใช้แทนกันได้ ขึ้นอยู่กับความถนัด do...while ( ซี ) – ทำงานตราบใดที่เงื่อนไขเป็น จริง repeat...until ( ปาสคาล ) - ทำงานจนกระทั่ง เงื่อนไขเป็นเท็จ 14
do...while loop / repeat...until [cont.] เขียน flowchart ของโปรแกรมเพื่อหาผลรวม ของคะแนนเก็บของนิสิต โดยกำหนดให้ผู้ใช้ กรอกข้อมูลไปเรื่อยๆ โปรแกรมจะหยุดรับข้อมูลเมื่อผู้ใช้ป้อนคะแนน เป็นค่า -1 โปรแกรมจะแสดงผลรวมของคะแนนเก็บ ทั้งหมดและจบการทำงาน เขียนโดยใช้ do...while loop 15
while loop [cont.] 16 start sum = 0 score != 0 sum = sum + score read score write sum end no ye s
Ex. 6_1 เขียน flowchart ของโปรแกรมเพื่อหา ค่าเฉลี่ยของอุณหภูมิใน 1 วัน โดย กำหนดให้ผู้ใช้กรอกข้อมูลไปเรื่อยๆ โปรแกรมจะหยุดรับข้อมูลเมื่อผู้ใช้ป้อน อุณหภูมิเป็น 0 โปรแกรมจะแสดงค่าเฉลี่ยของอุณหภูมิ ทั้งหมดและจบการทำงาน 17
Ex. 6_2 เขียน flowchart ของโปรแกรมเพื่อหา ค่าคะแนนสอบกลางภาคที่มากที่สุดของ นิสิต กำหนดให้ผู้ใช้กรอกข้อมูลคะแนนไป เรื่อยๆ โปรแกรมจะหยุดรับข้อมูลเมื่อผู้ใช้ป้อน คะแนนเป็น -1 โปรแกรมจะแสดงค่าคะแนนสอบกลาง ภาคที่มากที่สุดและจบการทำงาน 18
Ex. 6_3 เขียนโปรแกรมเพื่อวน loop รับค่าตัวเลข จำนวนเต็มจากผู้ใช้ไปเรื่อยๆ ในระหว่างที่ใส่ตัวเลข ให้โปรแกรมคอยนับ ด้วยว่า ตัวเลขที่ผู้ใช้ใส่เข้ามาเป็นเลขจำนวน เต็มบวกกี่ตัว, เลขจำนวนเต็มลบกี่ตัว โปรแกรมจะหยุดรับค่าเมื่อผู้ใช้ใส่ค่าตัวเลข 0 โปรแกรมจะแสดงผลให้ผู้ใช้ได้ทราบว่า ผู้ใช้ กรอกตัวเลขจำนวนเต็มบวกทั้งหมดกี่ตัว, จำนวนเต็มลบทั้งหมดกี่ตัว 19
Refere nce Maureen Sprankle - Problem Solving and Programming Concepts (9th Edition), Prentice Hall. 20