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

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
คำสั่งควบคุมในโปรแกรม Interactive C
Advertisements

โปรแกรมทดสอบที่1 ทดสอบการแสดงผลข้อความ
Lecture 5: ทางเลือกแบบหลายทาง
สรุปคำสั่ง if(เงื่อนไข)
ครั้งที่ 4 “for statement”
คำสั่ง while และ คำสั่ง do..while
Control Statement if..else switch..case for while do-while.
Control Statement for while do-while.
Lecture no. 5 Control Statements
การควบคุมทิศทางการทำงาน
คำสั่ง while ควบคุมการทำงานวนซ้ำ กรณีระบบงานมีลักษณะตรวจสอบเงื่อนไขก่อน แล้วเข้าสู่ส่วนลำดับงานคำสั่งที่กำหนดไว้ การเขียนคำสั่ง while ต้องกำหนดนิพจน์แบบตรรกะเป็นเงื่อนไขมีค่าในหน่วยความจำเป็น.
Week 15 C Programming.
คำสั่งเพื่อการกำหนดเงื่อนไข
CE 112 บทที่ 5 การทำซ้ำในภาษา C
Lab 8: คำสั่ง Do-While อ.ณัฐพงศ์ พยัฆคิน.
Repetitive Statements (Looping)
อ.อรวรรณ เชาวลิต For คำสั่งวนซ้ำ อ.อรวรรณ เชาวลิต
โครงสร้างควบคุม 1. โครงสร้างควบคุมแบบวนทางเลือก
คำสั่งควบคุมการทำงาน
การควบคุมทิศทางการทำงานของโปรแกรม
WHILE..DO คำสั่งควบคุมให้ทำงานซ้ำ โดยที่ต้องตรวจสอบเงื่อนไขก่อนที่จะทำ
คำสั่ง Repeat...Until คำสั่งควบคุมให้ทำงานซ้ำ
ตัวอย่างคำสั่ง 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 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
หลักสูตรอบรมครู คอมพิวเตอร์ หลักสูตรอบรมครู คอมพิวเตอร์ หลักสูตรที่ ๑ ทักษะการโปรแกรม เบื้องต้น วันที่สาม.
คำสั่งวนซ้ำ นายมาโนชญ์ แสงศิริ ครูผู้ช่วย โรงเรียนพิจิตรพิทยาคม
คำสั่งควบคุม (Control Statements)
อัลกอริทึ่มทำงานวนซ้ำ
Computer Programming Asst. Prof. Dr. Choopan Rattanapoka
บทที่ 7 เงื่อนไขในภาษาซี
การเขียน แบบวนซ้ำ , วนลูป
CONDITION Computer Programming Asst. Prof. Dr. Choopan Rattanapoka.
คำสั่งวนซ้ำ.
Week 6 For loop, break and continue (Control Structure 3)
C-Programming บทที่ 8 การทำซ้ำ C Programming.
การเปรียบเทียบเงื่อนไข
การทำซ้ำ 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
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

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

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

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

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

หาผลรวมตัวเลข: โปรแกรม #include <stdio.h> #include <conio.h> void main() { int i, n, sum = 0, num; printf("How many values do you have: "); scanf(“%d”,&num); i = 1; while (i <= num) { printf("Enter a value: "); scanf(“%d”,&n); sum = sum + n; i = i + 1; } printf("The sum is %d.", sum);

ลับสมอง เขียนโฟลว์ชาร์ตและโปรแกรมภาษา 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

ตัวอย่าง: ลูปดักค่า #include <stdio.h>; #include <conio.h>; void main() { int n, sum = 0; printf("Enter a number, or -1 to quit: "); scanf (“%d“,n); while (n != -1) { sum = sum + n; } printf("The sum is %d.", sum);

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

ลูปแบบ do...while a = 5 a = 5 While (a<5) { a=a+1 print a } do

ลูปแบบดักค่าแบบ do...while #include <stdio.h>; #include <conio.h>; void main() { int n, sum = 0; do { printf("Enter a number, or -1 to quit: "); scanf(“%d”,&n); if (n != -1) sum = sum + n; } while (n != -1); printf("The sum is {0}.", sum); }

สรุป การเขียนโปรแกรมแบบวนซ้ำ ลูปวนนับ ลูปดักค่า โครงสร้างลูปแบบ 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 Initialize counter condition false true Statement Update counter END

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 แล้วลงตัว)