Chapter 6 Repetition Structure[2] ผู้สอน อ. ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยี คอมพิวเตอร์เคลื่อนที่ ng
Overvie w Repetition structure Sentinel-controlled repetition while loop do...while loop / repeat...until Counter-controlled repetition (this week) for loop (this week) nested loop (this week) 2
Objectiv e เพื่อให้นิสิตรู้จักโครงสร้างของ Flowchart แบบ Repetition structure เพื่อให้นิสิตเข้าใจการนำ Repetition structure ไปใช้งานในรูปแบบต่างๆ เพื่อให้นิสิตสามารถใช้ Repetition structure ในการอธิบายกระบวนการ แก้ปัญหาได้ 3
Repetition Structure [ ทวน ] ลักษณะของลูปอาจแบ่งได้เป็น 2 ประเภท หลัก Sentinel-controlled repetition ลูปที่โปรแกรมไม่รู้จำนวนรอบที่แน่นอน ทำซ้ำตราบใดที่เงื่อนไขบางอย่างยังคง เป็นจริงหรือเท็จ while loop และ do...while loop / repeat...until Counter-controlled repetition ลูปที่กำหนดจำนวนครั้งของการทำซ้ำเป็น จำนวนรอบที่แน่นอน ( อาจอยู่ในรูปของ ค่าคงที่หรือตัวแปร ) for loop 4
yes condition(coun ter) for loop เป็นลูปชนิด Counter-controlled repetition 5 instructi ons no increase/decr ease counter counter initial...
for loop [cont.] ใช้กับลูปที่รู้ว่าต้องทำงานกี่รอบ รับค่าข้อมูล 20 ตัว หาคะแนนเฉลี่ยของนิสิต ( ถ้ารู้จำนวนคน ) หาผลบวกของตัวเลข 1 ถึง n โปรแกรมจะรู้ว่าต้องทำงานกี่รอบโดยอาศัย การ “ นับ ” เขียนแทนได้ด้วย while loop + “ การนับ ” เงื่อนไขในการตรวจสอบ – ยัง “ นับ ” ไม่ครบ ใช่ไหม 6
for loop [cont.] มี 3 องค์ประกอบ ( คำสั่ง ) สำหรับ for loop counter initial - กำหนดค่าเริ่มต้นของ ตัวนับก่อนเข้าลูป condition(counter) – จุดสิ้นสุดของลูป, เงื่อนไขที่ตรวจสอบตัวนับว่านับถึงจุดสิ้นสุด หรือยัง increase/decrease counter – คำสั่งใน การเพิ่ม / ลดค่าตัวนับ ( บางครั้งไม่ได้นับเพิ่ม / ลด ทีละ 1 เสมอไป ) การเพิ่ม / ลด จะเกิดขึ้นเมื่อทำงานคำสั่งใน ลูปเสร็จสิ้น 7
start J = 1 J <= 5 write J J = J+1 stop yes no 8 for loop [cont.] for j = 1 to 5 write j end for for j = 1 to 5 write j end for for ( j=1 ; j<=5 ; j++ ) { write j } end for for ( j=1 ; j<=5 ; j++ ) { write j } end for
Ex. 6_4 เขียน flowchart ของโปรแกรมเพื่อหา ผลบวกของตัวเลขตั้งแต่ 1 ถึง 10 ลองปรับส่วน counter initial ลองปรับส่วน condition (counter) ลองปรับส่วน increase/decrease counter 9
Ex. 6_5 Factorial เป็นฟังก์ชันทางคณิตศาสตร์ที่มี นิยามดังนี้ factorial(0) = 1 factorial(1) = 1 factorial(2) = 2*1 factorial(3) = 3*2*1 factorial(n) = n * (n-1) * (n-2) *... * 2 * 1 จงเขียนโปรแกรมที่รับเลขจำนวนเต็มบวก จากคีย์บอร์ด แล้วหาค่า factorial ของ ตัวเลขนั้น และแสดงผลลัพธ์ที่ได้ออกทาง หน้าจอ 10
Ex. 6_6 จงเขียนโปรแกรมเพื่อทดสอบว่าตัวเลขที่ผู้ใช้ ใส่เข้ามาว่าเป็นจำนวนเฉพาะหรือไม่ 11
nested loop เช่นเดียวกับ nested if ในลูปสามารถมีลูป ซ้อนกันได้ 12 for outer = 1 to 2 for inner = 1 to 3 write outer, inner end for (inner) end for (outer) for outer = 1 to 2 for inner = 1 to 3 write outer, inner end for (inner) end for (outer) outerinner outerinner
13 start outer = 1 outer<=2 write outer,inner inner = inner+1 stop yes no inner = 1 outer<=2 outer = outer+1 yes no outer loop inner loop
Refere nce Maureen Sprankle - Problem Solving and Programming Concepts (9th Edition), Prentice Hall. 14