อัลกอริทึ่มทำงานวนซ้ำ

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โปรแกรมทดสอบที่1 ทดสอบการแสดงผลข้อความ
Advertisements

อัลกอริทึ่มทำงานวนซ้ำ
Lecture 5: ทางเลือกแบบหลายทาง
สรุปคำสั่ง if(เงื่อนไข)
คำสั่ง while และ คำสั่ง do..while
Control Statement if..else switch..case for while do-while.
Control Statement for while do-while.
การควบคุมทิศทางการทำงาน
คำสั่ง while ควบคุมการทำงานวนซ้ำ กรณีระบบงานมีลักษณะตรวจสอบเงื่อนไขก่อน แล้วเข้าสู่ส่วนลำดับงานคำสั่งที่กำหนดไว้ การเขียนคำสั่ง while ต้องกำหนดนิพจน์แบบตรรกะเป็นเงื่อนไขมีค่าในหน่วยความจำเป็น.
ผังงานโปรแกรม (Program Flowchart)
Week 15 C Programming.
คำสั่งเพื่อการกำหนดเงื่อนไข
CE 112 บทที่ 5 การทำซ้ำในภาษา C
Lab 8: คำสั่ง Do-While อ.ณัฐพงศ์ พยัฆคิน.
Repetitive Statements (Looping)
อ.อรวรรณ เชาวลิต For คำสั่งวนซ้ำ อ.อรวรรณ เชาวลิต
โครงสร้างควบคุม 1. โครงสร้างควบคุมแบบวนทางเลือก
คำสั่งควบคุมการทำงาน
การควบคุมทิศทางการทำงานของโปรแกรม
WHILE..DO คำสั่งควบคุมให้ทำงานซ้ำ โดยที่ต้องตรวจสอบเงื่อนไขก่อนที่จะทำ
ตัวอย่างคำสั่ง FOR.
Looping การวนรอบ บทที่ 4.
Repetitive Or Iterative
คำสั่งควบคุม (Control Statement)
หน่วยที่ 4: คำสั่งควบคุมโปรแกรม (Control Flow Command)
ตัวอย่างโปรแกรมคำนวณหาพื้นที่สี่เหลี่ยม
คำสั่งควบคุมการทำงาน
Flow Control.
การเขียนโปรแกรมภาษาซี
Chapter 5 คำสั่งควบคุมการทำซ้ำ
Chapter 4 คำสั่งควบคุมทิศทาง
Chapter 7 Iteration Statement
ครูรัตติยา บุญเกิด.
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
คำสั่ง while และ do…while
คำสั่ง for ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
หมวดวิชาคอมพิวเตอร์ โรงเรียนพะเยาพิทยาคม โดย อ.วัชระ การสมพจน์
คำสั่งควบคุมการทำงานของ ActionScripts
Week 3 Flow Control in PHP
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
2.3.1 รหัสเทียม (Pseudo code)
คำสั่งควบคุมขั้นตอน Flow control statements
หลักการเขียนโปรแกรม ( )
หลักการเขียนโปรแกรม ( )
CHAPTER 4 Control Statements
การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
หลักสูตรอบรมครู คอมพิวเตอร์ หลักสูตรอบรมครู คอมพิวเตอร์ หลักสูตรที่ ๑ ทักษะการโปรแกรม เบื้องต้น วันที่สาม.
คำสั่งวนซ้ำ นายมาโนชญ์ แสงศิริ ครูผู้ช่วย โรงเรียนพิจิตรพิทยาคม
อ. วชิระ หล่อประดิษฐ์. ตัว ดำเนินกา ร ศัพท์เฉพาะตัวอย่ าง ผลลัพธ์ ให้ a=3; b=2; Greater thana > b;True
Computer Programming Asst. Prof. Dr. Choopan Rattanapoka
บทที่ 7 เงื่อนไขในภาษาซี
การเขียน แบบวนซ้ำ , วนลูป
CONDITION Computer Programming Asst. Prof. Dr. Choopan Rattanapoka.
คำสั่งวนซ้ำ.
C-Programming บทที่ 8 การทำซ้ำ C Programming.
Flowchart การเขียนผังงาน.
การเปรียบเทียบเงื่อนไข
การเขียนโปรแกรมบนเว็บ (Web Programming) บทที่ 2: ทบทวนการเขียน ภาษา Java ใช้ร่วมกับ Html และการรับข้อมูลจาก Form.
การทำซ้ำ Pisit Nakjai.
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
Computer Programming การเขียนโปรแกรม คอมพิวเตอร์ สัปดาห์ที่ 6 คำสั่งควบคุมการทำงานแบบ เงื่อนไขและคำสั่งควบคุมการ ทำงานแบบวนซ้ำ.
Week 5 While and Do-While loop (Control Structure 2)
รูปแบบของการใช้คำสั่ง for for( ตัวแปร = ค่าเริ่มต้น ; นิพจน์ตรรกะ ; ค่าเพิ่มหรือค่าลด ) { statement(s); } ตัวอย่าง กรณีกำหนดการวนซ้ำเป็นค่าคงที่ For(n=1;n
ผังงานโปรแกรม (Program Flowchart)
Nested loop.
การวนซ้ำโดยใช้โครงสร้าง for
ใบสำเนางานนำเสนอ:

อัลกอริทึ่มทำงานวนซ้ำ หลักการเขียนโปรแกรมคอมพิวเตอร์

เนื้อหา ทบทวนการไหลของโปรแกรม โปรแกรมที่ทำงานแบบวนซ้ำ ลูปแบบ while ลูปแบบ do..while ลูปแบบ For

การไหลของโปรแกรมแบบต่าง ๆ โปรแกรมอย่างง่าย มีการไหลจากบนลงล่าง Statement1 Statement2 Statementn END START Statement3 START END Statement โปรแกรมที่มีคำสั่งเดียว โปรแกรมที่มีหลายคำสั่ง

การไหลของโปรแกรมแบบต่าง ๆ โปรแกรมแบบมีเงื่อนไข START END Statement condition true false START END Statementf condition true false Statementt คำสั่ง if คำสั่ง if..else

การวนซ้ำ กิจกรรมหลายอย่างมีลักษณะการทำงานแบบซ้ำไปมา ตัวอย่างในชีวิตประจำวัน ก้าวไปข้างหน้า 10 ก้าว ขยี้ผ้าจนกว่าจะสะอาด เรียนวิชาคอมพิวเตอร์จนกว่าจะผ่าน ตัวอย่างในการเขียนโปรแกรม วนรับตัวเลขมา 10 ตัวเพื่อหาค่าเฉลี่ย

โปรแกรมแบบวนซ้ำดียังไง? เพื่อหลีกเลี่ยงการเขียนโค้ดแบบเดียวกันซ้ำหลายรอบ ได้โปรแกรมที่สั้นและกระชับขึ้น โปรแกรมจะมีความยืดหยุ่นมากกว่า เช่นรับข้อมูลได้หลากหลายขนาด โดยไม่ต้องแก้โปรแกรม ลองนึกถึงโปรแกรมที่หาผลรวมของตัวเลข 3 ตัว

ตัวอย่าง: หาผลรวมของตัวเลข 3 ตัว เกิดโจทย์เปลี่ยนเป็นหาผลรวมของเลข 100 ตัว? หรือกี่ตัวก็ได้จนกว่าผู้ใช้จะป้อนเลขลบ Start Set sum=0 Print “Enter a value” Input n Compute Sum=sum+n stop 1st number 2nd number 3rd number

หาผลรวมตัวเลข: โฟลว์ชาร์ต START sum = 0, i = 1 i  num false true n sum = sum + n i = i + 1 sum END

ลูปแบบ while ทำ statement ตราบเท่าที่ condition เป็นจริง ทำ stmt1,…,stmtN ตราบเท่าที่ condition เป็นจริง START while (condition) statement; condition false true Statement while (condition) { stmt1; stmt2; : stmtN; } END

หาผลรวมตัวเลข: โปรแกรม EX1. ให้เขียนโปรแกรมหาผลรวมตัวเลขโดยใช้ลูป while และให้รับค่าจำนวนลูป (num) จากผู้ใช้

หาผลรวมตัวเลข: โฟลว์ชาร์ต START เงื่อนไขที่เปรียบเทียบระหว่างตัวนับรอบ กับ ค่าควบคุม loop sum = 0, i = 1 ค่าควบคุม loop num i  num false true n ตัวนับรอบ ซึ่งจะเดินเข้าหา ค่าควบคุม loop เสมอ sum = sum + n i = i + 1 sum END

ลับสมอง เขียนโฟลว์ชาร์ตและโปรแกรมภาษา C เพื่อคำนวณค่า sum โดยที่ sum นิยามจากสูตร โดยที่ค่า N รับมาจากผู้ใช้ เช่นถ้า N = 3, sum = 1+4+9 = 14 ตัวอย่างผลลัพธ์ #include <stdio.h> #include <conio.h> void main() { int sum = 0, i = 1, N; printf("Enter N: "); scanf(“%d”,&N); while ( i <= N ) { sum = sum + i*i; i = i+1; } printf("The sum is %d.",sum); ??? ??? Enter N: 3 The sum is 14

ลูปแบบดักค่า ที่ผ่านมาเป็นตัวอย่างของลูปวนนับ (counter loop) จำนวนครั้งที่วนซ้ำขึ้นอยู่กับค่าที่กำหนดไว้แล้ว ทำอย่างไรหากเราไม่ทราบจำนวนล่วงหน้า ใช้ลูปแบบดักค่า (sentinel loop) นิยามค่าที่ใช้ดัก เพื่อให้โปรแกรมหลุดออกจากลูป ตัวอย่าง ตัวดัก Enter a number, or -1 to quit: 3 Enter a number, or -1 to quit: 10 Enter a number, or -1 to quit: 15 Enter a number, or -1 to quit: -1 The sum is 28

หาผลรวมตัวเลข: โฟลว์ชาร์ต START เงื่อนไขที่เปรียบเทียบค่าที่รับเข้ามา กับค่าที่ใช้ดัก (ในตัวอย่างนี้คือ -1) เพื่อให้ออกจาก loop sum = 0 ค่าที่ใช้ในการหา output และใช้สำหรับควบคุม loop num num <> -1 false true sum = sum + num num sum END

ลูปแบบ do...while ทำ stmt1...stmtN ตราบเท่าที่เงื่อนไขยังเป็นจริง START do { stmt1; stmt2; : stmtN; } while (condition); true Statement Statement condition false END

หาผลรวมตัวเลข: โฟลว์ชาร์ต START sum = 0, i = 1 ค่าควบคุม loop num n ตัวนับรอบ ซึ่งจะเดินเข้าหา ค่าควบคุม loop เสมอ sum = sum + n true i = i + 1 true i  num เงื่อนไขที่เปรียบเทียบระหว่างตัวนับรอบ กับ ค่าควบคุม loop false sum END

ลูปแบบ do...while เปรียบเทียบการทำงานของส่วนของโปรแกรมทั้งสองแบบ โปรแกรมที่ 1 โปรแกรมที่ 2 a = 5 do { a=a+1 print a } While (a<5) a = 5 While (a<5) { a=a+1 print a }

สรุป การเขียนโปรแกรมแบบวนซ้ำ ลูปวนนับ ลูปดักค่า โครงสร้างลูปแบบ while โครงสร้างลูปแบบ do..while

แบบฝึกหัด 6.1 จงเขียนผังงานแสดงเลขคู่ที่อยู่ภายใน 1-100 ออกทางจอภาพโดยใช้โครงสร้างการวนซ้ำแบบ while…structure จงเขียนผังงานหาผลรวม และหาค่าเฉลี่ยของข้อมูลตัวเลขทศนิยมชุดหนึ่ง จำนวน 100 ตัว โดยใช้โครงสร้างการวนซ้ำแบบ while…structure จากโจทย์ข้อ 2 ให้เขียนด้วยโครงสร้างแบบ do/while…structure จากโจทย์ข้อ 1 แก้ไขโปรแกรมให้สามารถแสดงเลขคู่ได้ไม่จำกัดรอบ จนกว่าผู้ใช้จะกรอกตัวเลข -1

แบบฝึกหัด 6.1 1....... 2...... 3. ตรวจสอบว่า a <= 10 ใช่หรือไม่ - ใช่ - ทำ คำสั่งนี้... - วนกลับไปทำข้อ 3 - ไม่ใช่ ทำข้อ 4... 4. ... 1....... 2...... 3. ทำ คำสั่งนี้... 4. ตรวจสอบว่า a <= 10 ใช่หรือไม่ - ใช่ วนกลับไปทำข้อ 3 ... - ไม่ใช่ ทำข้อ 5 5. .....

จงเขียนผังงานหาผลรวม และหาค่าเฉลี่ยของข้อมูลตัวเลขทศนิยมชุดหนึ่ง จำนวน 100 ตัว START 1. กำหนดให้ i = 1, sum = 0 2. ตรวจสอบ i <= 100 ใช่หรือไม่ - ใช่ - รับค่าตัวเลขเก็บใน n - sum = sum+n - i = i+1 - วนกลับไปทำข้อ 2 - ไม่ใช่ ทำข้อ 3 3. avg = sum/100 4. แสดงค่า sum 5. แสดงค่า avg Let sum = 0 and i = 1 false i  100 true n Increment sum by n Increment i by 1 avg = sum / 100 sum, avg END

การวนซ้ำโดยใช้โครงสร้าง for

คำสั่ง for สะดวกสำหรับการนับรอบของลูป การดำเนินการที่เกี่ยวข้อง ทำ init_stmt หนึ่งครั้ง ตรวจสอบ condition; ถ้าเป็นจริงให้ทำงานใน loop body ทำ update_stmt, แล้วทำงานในขั้นตอนที่ 2 for (init_stmt; condition; update_stmt) statement; for (init_stmt; condition; update_stmt){ statement1; statement2; : statementN; }

คำสั่ง for: ผังการทำงาน START END false condition true Initialize counter Update counter Statement

for vs. while คำสั่ง: พิมพ์เลข 1,2,...,10 ออกหน้าจอ for loop #include <stdio.h> #include <conio.h> void main() { int i; i = 1; while (i <= 10) { printf(“%d”,i); i++; } while loop #include <stdio.h> #include <conio.h> void main() { int i; for (i = 1; i <= 10; i++) { printf(“%d”,i); } for loop

ทดสอบ: พิมพ์ดาว เขียนโปรแกรมเพื่อพิมพ์ดาวจำนวน N ดวง เมื่อ N กำหนดโดยผู้ใช้ ตัวอย่าง #include <stdio.h>; #include <conio.h>; void main() { int i,N; printf("Enter N: "); scanf(“%d“,N); for (i = 1; i <= N; i++) { printf("*"); } printf(“\n”); Enter N: 3 *** Enter N: 8 ******** ? ? ? ???

ตัวอย่าง แสดงค่า 0,2,4,...,20 แสดงค่า 1,3,5,...,19 แสดงค่า 15,12,9,...,0 for (i = 0; i <= 20; i += 2) printf(“%d”,i); for (i = 1; i <= 19; i += 2) printf(“%d”,i); ? ? ? for (i = 15; i >= 0; i -= 3) printf(“%d”,i); ? ? ?

ลูปหลายชั้น โปรแกรมที่มีความซับซ้อนมากขึ้นอาจมีความต้องการใช้ลูปหลายชั้น คล้ายกันกับคำสั่ง if ตัวอย่าง #include <stdio.h>; #include <conio.h>; void main() { int sum = 0, i, j, N; printf("Enter N: "); scanf(“%d“,N); for (i = 1; i <= N; i++) { for (j = 1; j <= i; j++) { sum = sum + j; } printf("Sum is %d", sum); Outer Loop Inner Loop

ตัวอย่าง: พิมพ์ดาวอีกครั้ง! เพิ่มเติมจากโปรแกรมพิมพ์ดาวเดิม ตัวอย่าง Enter N: 3 * ** *** #include <stdio.h>; #include <conio.h>; void main() { int i, j, N; printf(“Enter N:”); scanf(“%d”,&N); for (i = 1; i <= N; i++) { for (j = 1; j <= i; j++) { printf("*"); } printf(“\n”); Enter N: 5 * ** *** **** *****

แบบฝึกหัด 6.2 จงเขียนโปรแกรมเพื่อรับตัวเลขอินพุท N จากผู้ใช้และแสดงตัวเลขทั้งหมดที่เป็นตัวประกอบของ N (นำไปหาร N แล้วลงตัว)

แบบฝึกหัด 6.3 จงเขียนโปรแกรมเพื่อรับตัวเลขอินพุท N จากผู้ใช้และแสดงตัวเลขทั้งหมดที่เป็นตัวประกอบของ N (นำไปหาร N แล้วลงตัว)

หาค่าเฉลี่ยของเลข 100 จำนวนที่รับเข้ามาโดยใช้ loop แบบ for Increment sum by n END START Let sum = 0 and i = 1 n sum, avg avg = sum / 100 For i=1 to 100 step 1