Week 5 While and Do-While loop (Control Structure 2)

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
อัลกอริทึ่มทำงานวนซ้ำ
Advertisements

ครั้งที่ 4 “for statement”
คำสั่ง while และ คำสั่ง do..while
การเขียนโปรแกรม แบบมีโครงสร้าง (ต่อ)
Control Statement if..else switch..case for while do-while.
Control Statement for while do-while.
บทที่ ๖ หลักการแก้ปัญหาด้วยคอมพิวเตอร์
บทที่ 3 ตอนที่ 1 คำสั่งเงื่อนไขและการตัดสินใจ(p
Control structure part II
Lecture no. 5 Control Statements
การควบคุมทิศทางการทำงาน
LAB # 3 Computer Programming 1
คำสั่ง while ควบคุมการทำงานวนซ้ำ กรณีระบบงานมีลักษณะตรวจสอบเงื่อนไขก่อน แล้วเข้าสู่ส่วนลำดับงานคำสั่งที่กำหนดไว้ การเขียนคำสั่ง while ต้องกำหนดนิพจน์แบบตรรกะเป็นเงื่อนไขมีค่าในหน่วยความจำเป็น.
ผังงานโปรแกรม (Program Flowchart)
บทที่ 5 การทำงานแบบวนซ้ำ
CE 112 บทที่ 5 การทำซ้ำในภาษา C
Lab 8: คำสั่ง Do-While อ.ณัฐพงศ์ พยัฆคิน.
เนื้อหา ประเภทของโปรแกรมภาษา ขั้นตอนการพัฒนาโปรแกรม
อ.อรวรรณ เชาวลิต For คำสั่งวนซ้ำ อ.อรวรรณ เชาวลิต
Repetitive Instruction
บทที่ 1. พื้นฐานความรู้ทั่วไป
Arrays.
การควบคุมทิศทางการทำงานของโปรแกรม
WHILE..DO คำสั่งควบคุมให้ทำงานซ้ำ โดยที่ต้องตรวจสอบเงื่อนไขก่อนที่จะทำ
คำสั่ง Repeat...Until คำสั่งควบคุมให้ทำงานซ้ำ
Looping การวนรอบ บทที่ 4.
Repetitive Or Iterative
คำสั่งควบคุมเงื่อนไข และการทำงานเป็นรอบ
หน่วยที่ 4: คำสั่งควบคุมโปรแกรม (Control Flow Command)
คำสั่งควบคุมการทำงาน
Chapter 7 Iteration Statement
ครูรัตติยา บุญเกิด.
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ฟังก์ชัน ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ศูนย์คอมพิวเตอร์
การทำซ้ำด้วยคำสั่ง while
คำสั่ง while และ do…while
การทำซ้ำด้วย คำสั่ง for ง การเขียนได นามิกเว็บเพจ ศูนย์คอมพิวเตอร์ โรงเรียนปลวกแดง พิทยาคม.
การเขียนผังงาน จุดประสงค์ 1.อธิบายความของผังงานได้
คำสั่งควบคุมการทำงานของ ActionScripts
Week 3 Flow Control in PHP
โดย อ. นัฐพงศ์ ส่งเนียม Do Loop Until โดย อ. นัฐพงศ์ ส่งเนียม
Week 6 การทำซ้ำโดย for loop
Week 5 การทำซ้ำโดย while loop และ do while loop
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
Week 6 การทำซ้ำโดย for loop
Chapter 5 การทำซ้ำโดย while loop และ do while loop
Week 5 การทำซ้ำโดย while loop และ do while loop
หลักการเขียนโปรแกรม ( )
CHAPTER 4 Control Statements
การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
คำสั่งวนซ้ำ นายมาโนชญ์ แสงศิริ ครูผู้ช่วย โรงเรียนพิจิตรพิทยาคม
คำสั่งทำซ้ำ for คำสั่ง for เป็นคำสั่งทำซ้ำในลักษณะ Definite loop คือทราบจำนวนรอบที่แน่นอนในการทำงาน ซึ่งจะใช้ตัวแปร 1 ตัวในการนับจำนวนรอบว่าครบตามกำหนดหรือไม่
อัลกอริทึ่มทำงานวนซ้ำ
Week 11 Basic Programs 2.
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
Chapter 6 Repetition Structure[2] ผู้สอน อ. ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยี คอมพิวเตอร์เคลื่อนที่ ng.
หลักการเขียนโปรแกรม ( )
Computer Programming Asst. Prof. Dr. Choopan Rattanapoka
การเขียน แบบวนซ้ำ , วนลูป
1 Functions กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.
Week 6 For loop, break and continue (Control Structure 3)
C-Programming บทที่ 8 การทำซ้ำ C Programming.
การทำงานแบบวนซ้ำ (Iteration).
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
Computer Programming การเขียนโปรแกรม คอมพิวเตอร์ สัปดาห์ที่ 6 คำสั่งควบคุมการทำงานแบบ เงื่อนไขและคำสั่งควบคุมการ ทำงานแบบวนซ้ำ.
Computer Program คือ ขั้นตอนการทำงาน ของคอมพิวเตอร์
ผังงานโปรแกรม (Program Flowchart)
PHP: [5] คำสั่งควบคุม (Control statement)
บทที่ 7 การเขียนโปรแกรม แบบวนรอบทำซ้ำ (Loop) Part1
บทที่ 7 การเขียนโปรแกรม แบบวนรอบทำซ้ำ (Loop) Part2
ใบสำเนางานนำเสนอ:

Week 5 While and Do-While loop (Control Structure 2)

Outline การทำซ้ำ (Iteration) while statement do-while statement

Iteration การทำซ้ำ (Iteration) หรือการประมวลผลซ้ำ หลายครั้งในการเขียนโปรแกรม ที่เราต้องการทำงานตามคำสั่ง (statement) หรือ กลุ่มคำสั่ง (compound statement) ซำ้ๆมากกว่าหนึ่งครั้ง การประมวลผลซ้ำจะช่วยให้เราสามารถทำซ้ำๆได้อย่างต้องการ โดยที่ไม่จำเป็นต้องเขียน คำสั่งหรือกลุ่มคำสั่งที่ต้องการซ้ำไปมาในโปรแกรม อาจเรียกอีกอย่างว่า การวนลูป (Loop) ในการทำซ้ำลักษณะนี้จะอาศัยเงื่อนไข (condition) เป็นตัวกำหนด True - โปรแกรมจะวนทำคำสั่ง หรือชุดคำสั่งที่อยู่ภายในลูปซ้ำอีก False - โปรแกรมจะออกจากลูป แล้วทำงานคำสั่งถัดไป (next-statement)

Components of Iteration ส่วนประกอบของการทำซ้ำ มี 3 อย่าง ได้แก่ การกำหนดค่าเริ่มต้น (Initialization) กำหนดค่าตั้งต้นให้กับตัวแปร ซึ่งจะใช้เป็นเงื่อนไขในการทำงาน เช่น x = 0, y = 100, … การทดสอบเงื่อนไข (Condition Testing) ทดสอบเงื่อนไขในการทำซ้ำ ว่ายังเป็นจริงหรือไม่ จะมีการวนเข้าไปทำซ้ำในคำสั่งหรือกลุ่มคำสั่งที่กำหนด ตราบใดที่เงื่อนไขยังเป็น true จะจบการทำซ้ำ เมื่อผลการทดสอบเงื่อนไขเป็น false เช่น x < 10, x > -5, x <= 99, … การปรับปรุงค่า (Increment / Decrement) การเพิ่มค่า (increment) หรือลดค่า (decrement) ตัวแปรซึ่งใช้เป็นเงื่อนไขในการทำงาน เช่น x=x+1, x+=10, x++, x--, ++x, --x, x*=2, …

Type of Iterations ประเภทของคำสั่งในการทำซ้ำ ในวิชานี้จะสนใจเพียง 4 รูปแบบ ได้แก่ while statement do-while statement for statement break and continue statements

while statement เริ่มต้นด้วยการตรวจสอบเงื่อนไข (condition) while (condition) { statement1; statement2; ... statementN; } next-statement; เริ่มต้นด้วยการตรวจสอบเงื่อนไข (condition) หากเงื่อนไขเป็น true โปรแกรมจะเข้าลูปไปทำคำสั่ง หรือกลุ่มคำสั่งที่กำหนดไว้ เมื่อทำงานในลูปเสร็จสิ้น โปรแกรมจะวนกลับไปตรวจสอบเงื่อนไขอีก ดังนั้นโปรแกรมจะวนทำงานในลูป ตราบเท่าที่เงื่อนไขยังเป็น true เมื่อเงื่อนไขเป็น false โปรแกรมจะออกจาก ลูป แล้วจึงทำ next-statement Cond Statement 1 Statement 2 Entry True False Exit

อีกรูปแบบของ Flowchart while statement while (condition) { statement1; statement2; ... statementN; } next-statement; อีกรูปแบบของ Flowchart Cond Statement 1 Statement 2 Entry True False Exit Cond Statement 1 Statement 2 Entry True False Exit

Example: while statement Example 5.1: แสดงเลข 1 ถึง N หรือสามารถลดรูปลงได้เป็น จะเกิดอะไรขึ้น? ถ้าหาก... เปลี่ยนจาก i++ เป็น ++i Initialization: i=1; Testing: i<=n; Update: i+=1;

Example: while statement Example 5.2: แสดงสูตรคูณแม่ N ต้องแก้ไขอย่างไร หากต้องการให้แสดง ผลลัพธ์เพียงบรรทัดละ 5 ตัว? ใช้ modulo ช่วยในการทดสอบเกี่ยวกับการหารลงตัว (divisable by …) โดยหากเศษมีค่า “ไม่เท่ากับ 0” แสดงว่าหารไม่ลงตัว ซึ่งจะทำให้ (i%COL) มีค่าความจริงเป็น True เนื่องจากมีค่า “ไม่เท่ากับ 0” ทำให้โปรแกรมพิมพ์ช่องว่า “ “ และไม่ต้องขึ้นบรรทัดใหม่ แต่หากหารลงตัวจะมีเศษเท่า 0 ก็จะทำให้ (i%COL) มีค่าความจริงเป็น false ซึ่งจะทำให้มีการขึ้นบรรทัดใหม่ (newline) Initialization: i=1; Testing: i<13; Update: i++;

Example: while statement Example 5.3: หาค่าผลบวกกำลังสอง ของเลขคี่ระหว่าง 0 ถึง N มาก => น้อย!!! น้อย => มาก!!! Initialization: cin>>n; Testing: n>0; Update: n--; Initialization: i=1; Testing: i<=n; Update: i++;

Example: while statement Example 5.4: หาค่าผลรวมของจำนวนที่อยู่ระหว่าง M ถึง N ซึ่งหารด้วย X ลงตัว น้อย => มาก!!! Initialization: i=m; Testing: i<=n; Update: i++;

do-while statement do { statement1; statement2; ... statementN; } while (condition); next-statement; เริ่มต้นด้วยการเข้าลูปไปทำคำสั่ง หรือกลุ่มคำสั่งที่กำหนดไว้ก่อน เมื่อทำงานในลูปเสร็จสิ้น โปรแกรมจึงจะตรวจสอบเงื่อนไขการทำซ้ำ หากเงื่อนไขเป็น true โปรแกรมจะวนกลับเข้าลูปไปทำอีก และจะวนทำตราบใดที่เงื่อนไขยังเป็น true เมื่อเงื่อนไขเป็น false โปรแกรมจึงจะออกจากลูป แล้วทำ next-statement โปรแกรมจะทำในลูปอย่างน้อย 1 ครั้งเสมอ expr Statement 1 Statement 2 Entry True False Exit

Example: do-while statement Example 5.1: แสดงเลข 1 ถึง N while do-while Initialization: i=1; Testing: i<=n; Update: i+=1; การทำงานต่างกันหรือไม่ หากป้อนค่า n=0 ???

Example: do-while statement Example 5.2: แสดงสูตรคูณแม่ N while do-while Initialization: i=1; Testing: i<13; Update: i++;

Example: do-while statement Example 5.3: หาค่าผลบวกกำลังสอง ของเลขคี่ระหว่าง 0 ถึง N while do-while Initialization: cin >> n; Testing: n > 0; Update: n--; การทำงานต่างกันหรือไม่ หากป้อนค่า n=0

What could go wrong? ปัญหาที่พบบ่อยครั้งจากการทำซ้ำ แนวทางการแก้ไข โปรแกรมวนทำซ้ำโดยไม่ออกจากลูป (infinity loop) x=1, while (x<10), x-- โปรแกรมไม่เข้าไปทำงานในลูปเลย x=1, while (x>10) แนวทางการแก้ไข ตรวจสอบเงื่อนไข (condition) การทำซ้ำว่าเป็น true หรือ false เสมอหรือไม่ ตรวจสอบตัวแปรที่จะใช้ทดสอบ ว่ามีการปรับปรุงค่าหรือไม่ ตรวจสอบว่าตัวแปรสามารถจะมีค่าที่จะทำให้เงื่อนไขเป็นได้ทั้ง true และ false หรือไม่

Summary การทำซ้ำ (iteration) หรือการวนลูป จะช่วยให้เราทำงานคำสั่งหรือกลุ่มคำสั่งที่ต้องการได้หลายครั้ง โดยไม่จำเป็นต้องเขียนคำสั่งซ้ำไปมา ต้องมีการตรวจสอบเงื่อนไข (condition) ก่อนการทำงานในแต่ละรอบการวนลูป โปรแกรมจะเข้าไปทำงานในลูป เมื่อผลการทดสอบเงื่อนไขเป็น true เท่านั้น โปรแกรมจะจบการทำงานในลูป เมื่อผลการทดสอบเงื่อนไขเป็น false ส่วนประกอบในการทำซ้ำ ได้แก่ การกำหนดค่าเริ่มต้น (initialization) ให้กับตัวแปรที่จะใช้ทดสอบ การทดสอบเงื่อนไข (condition testing) กับตัวแปร การเพิ่มค่าหรือลดค่า (increment/decrement) ตัวแปรที่ใช้ทดสอบ

Summary สามารถใช้ while และ do-while ทดแทนกันได้ มักใช้ในกรณีที่ไม่สามารถระบุจำนวนรอบในการทำงานล่วงหน้าได้ เช่น continue (y/n)?, จำนวนข้อมูลที่หาร x ได้ลงตัว, … do-while loop จะมีการทำงานภายในลูปอย่างน้อย 1 รอบการทำงาน ในกรณีที่ทราบล่วงหน้าว่าถึงจำนวนรอบการทำงานที่แน่นอน มักจะนิยมใช้ for ซึ่งจะกล่าวถึงในหัวข้อถัดไป เมื่อพบปัญหาในการทำซ้ำ ให้พิจารณาและตรวจสอบที่การกำหนดค่าเริ่มต้น การทดสอบเงื่อนไข และการปรับปรุงค่าตัวแปร การวนทำซ้ำโดยไม่ออกจากลูป การไม่เข้าไปทำในลูป

Lab Lab 5.1 - หาค่าผลรวม (summation) ของจำนวนที่อยู่ระหว่าง M และ N ซึ่งหารด้วย X ลงตัว กำหนดให้ใช้ do-while ในการวนลูป แสดงผลจำนวนที่หารด้วย X ลงตัว จากมากไปหาน้อย Lab 5.2 - จาก lab 5.1 ให้ นศ. เพิ่มความสามารถให้โปรแกรมสามารถหาค่าเฉลี่ย (average) ของจำนวนทั้งหมดที่หารด้วย X ลงตัวด้วย สร้างตัวแปรใช้นับจำนวน (counter) ข้อมูลที่หารด้วย X ลงตัว สร้างตัวแปรที่ใช้เก็บค่าเฉลี่ย (average) และแสดงผลทางหน้าจอ

Lab Lab 5.3 - หาค่าของ n! (n factorial) โดยกำหนดให้ เมื่อ n < 0:

Lab Lab 5.4 - จาก lab 5.3 จงแก้ไขให้โปรแกรมสอบถามผู้ใช้ก่อนจบโปรแกรมว่า ต้องการทำงานต่อ (continue) หรือไม่ (y/n) y - ต้องการทำงานต่อ ให้โปรแกรมวนรับค่า n เพื่อคำนวณ n! อีกรอบ n หรือคำตอบอื่นๆ - ไม่ต้องการทำงานต่อ ให้จบการทำงาน