งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

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

งานนำเสนอที่คล้ายกัน


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

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

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

3 การไหลของโปรแกรมแบบ ต่าง ๆ โปรแกรมอย่างง่าย มีการไหลจากบน ลงล่าง โปรแกรมอย่างง่าย มีการไหลจากบน ลงล่าง STARTSTART ENDEND StatementStatement โปรแกรมที่มีคำสั่ง เดียว โปรแกรมที่มีหลาย คำสั่ง Statement 1 Statement 2 Statement n ENDEND STARTSTART Statement 3

4 การไหลของโปรแกรมแบบ ต่าง ๆ โปรแกรมแบบมีเงื่อนไข โปรแกรมแบบมีเงื่อนไข คำสั่ง if คำสั่ง if..else STARTSTART ENDEND StatementStatement conditioncondition true false StatementStatement STARTSTART ENDEND Statement f conditioncondition truefalse Statement t Statement f

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

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

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

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

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

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

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

12 ลับสมอง เขียนโฟลว์ชาร์ตและโปรแกรมภาษา C เพื่อคำนวณค่า sum โดยที่ sum นิยาม จากสูตร เขียนโฟลว์ชาร์ตและโปรแกรมภาษา C เพื่อคำนวณค่า sum โดยที่ sum นิยาม จากสูตร  โดยที่ค่า N รับมาจากผู้ใช้  เช่นถ้า N = 3, sum = = 14 ตัวอย่างผลลัพธ์ ตัวอย่างผลลัพธ์ Enter N: 3 The sum is 14 Enter N: 3 The sum is 14 #include 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); } #include 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); } ??? ???

13 ลูปแบบดักค่า ที่ผ่านมาเป็นตัวอย่างของลูปวนนับ (counter loop) ที่ผ่านมาเป็นตัวอย่างของลูปวนนับ (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 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 ตัวดัก

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

15 ลูปแบบ do...while ทำ stmt1...stmtN ตราบเท่าที่เงื่อนไข ยังเป็นจริง ทำ stmt1...stmtN ตราบเท่าที่เงื่อนไข ยังเป็นจริง stmt1...stmtN จะถูกทำงานอย่าง น้อยหนึ่งครั้ง stmt1...stmtN จะถูกทำงานอย่าง น้อยหนึ่งครั้ง ENDEND conditioncondition false STARTSTART StatementStatement StatementStatement true do { stmt1; stmt2; : stmtN; } while (condition); do { stmt1; stmt2; : stmtN; } while (condition);

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

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

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

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

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

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

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

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

24 คำสั่ง for : ผังการทำงาน STARTSTART ENDEND falseconditioncondition true Initialize counter Update counter StatementStatement StatementStatement

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

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

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

28 ลูปหลายชั้น โปรแกรมที่มีความซับซ้อนมากขึ้นอาจมี ความต้องการใช้ลูปหลายชั้น โปรแกรมที่มีความซับซ้อนมากขึ้นอาจมี ความต้องการใช้ลูปหลายชั้น  คล้ายกันกับคำสั่ง if ตัวอย่าง ตัวอย่าง #include ; 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); } #include ; 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

29 ตัวอย่าง : พิมพ์ดาวอีกครั้ง ! เพิ่มเติมจากโปรแกรมพิมพ์ดาวเดิม เพิ่มเติมจากโปรแกรมพิมพ์ดาวเดิม ตัวอย่าง ตัวอย่าง Enter N: 3 * ** *** Enter N: 3 * ** *** Enter N: 5 * ** *** **** ***** Enter N: 5 * ** *** **** ***** #include ; 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”); } #include ; 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”); }

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

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

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


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

งานนำเสนอที่คล้ายกัน


Ads by Google