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

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

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

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


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

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

2 เนื้อหา  ทบทวนการไหลของโปรแกรม  โปรแกรมที่ทำงานแบบวนซ้ำ  ลูปแบบ while  ลูปแบบ do..while  ลูปแบบ 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 ตัว

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 ตัว ?  หรือกี่ตัวก็ได้จนกว่าผู้ใช้ จะป้อนเลขลบ

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

12 หาผลรวมตัวเลข : โปรแกรม #include 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); } #include 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); }

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

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 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 ตัวดัก

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

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

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)

18 ลูปแบบดักค่าแบบ do...while #include ; 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); } #include ; 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); }

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

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

22 จงเขียนผังงานหาผลรวม และหาค่าเฉลี่ยของ ข้อมูลตัวเลขทศนิยมชุดหนึ่ง จำนวน 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

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

24 คำสั่ง 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; }

25 คำสั่ง for : ผังการทำงานSTARTSTART ENDEND false conditioncondition true Initialize counter Update counter StatementStatementStatementStatement

26 #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 ออก หน้าจอ

27 ทดสอบ : พิมพ์ดาว  เขียนโปรแกรมเพื่อพิมพ์ดาวจำนวน 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”); } ??? ???

28 ตัวอย่าง  แสดงค่า 0,2,4,...,20  แสดงค่า 1,3,5,...,19  แสดงค่า 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); ??? ???

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

30 ตัวอย่าง : พิมพ์ดาวอีกครั้ง !  เพิ่มเติมจากโปรแกรมพิมพ์ดาวเดิม  ตัวอย่าง 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”); }

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

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


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

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


Ads by Google