โครงสร้างการท้างานแบบวนซ้า อาจารย์สมเกียรติ ช่อเหมือน สาขาวิชาวิศวกรรมซอฟต์แวร์ คณะวิทยาศาสตร์และเทคโนโลยี (tko@webmail.npru.ac.th)
เนื้อหาที่สนใจ • • • • • • • • •
โครงสร้างการท้างานแบบวนซ้า (Repetition structure) การก้าหนดให้วนซ้า (Loop) การวนซ้าตลอดไป การก้าหนดจ้านวนรอบในการท้างาน การก้าหนดเงื่อนไขในการท้างาน การควบคุมสถานะแบบซ้อนภายใน หยุดการท้างานด้วยค้าสั่ง break การท้าต่อรอบถัดไปด้วยค้าสั่ง continue ตัวอย่างการเขียนโปรแกรมวนซ้าด้วยค้าสั่ง for(), while(), do…while()
http://1.bp.blogspot.com/-tw1caa8lBus/Vphe8RV3rwI/AAAAAAAAAKM/wAhp-ds7iQM/s1600/8.png
โครงสร้างการท้างานแบบวนซ้้า (Repetition structure) • โครงสร้างการท้างานแบบวนซ้า ช่วยเพิ่มประสิทธิภาพในการประมวลผล ของคอมพิวเตอร์ ด้วยการท้างานซ้า (Loop) ตามเงื่อนไขที่ก้าหนด • รูปแบบการประมวลผลแบบอัตโนมัติ • ลักษณะการท้างานของโครงสร้างแบบวนซ้ามี 3 แบบ – For Loop – While Loop – Do…while
• การหยุดการท้างานตามเงื่อนไข หรือข้ามการท้างาน • เงื่อนไขทีใ่ ห้ออกจากลูป https://play.google.com/store/apps/details?id=org.isoron.uhabits http://www.c-sharpcorner.com/UploadFile/97fc7a/retrospection-start-stop-and-continue-methodology-in-agile/
การก้าหนดให้วนซ้้า (Loop) • การวนซ้าขึนอยู่กับเงื่อนไขและข้อตกลง ที่ช่วยตัดสินใจว่าวนท้างานซ้าหรือไม่ • ก้าหนดจุดเริ่มต้นหรือค่าเริ่มต้น • การวนซ้า ช่วยให้ท้างานซ้าตามรูปแบบที่ก้าหนดได้ – ใช้ตัวนับ การเพิ่มหรือลดตามรูปแบบทางคณิตศาสตร์ – ใช้การก้าหนดสถานะ ด้วยตัวแปรสถานะ และปรับเปลี่ยนค่าสถานะ – ใช้เวลาเป็นตัวก้าหนด เป็นต้น
• จุดสินสุด ขึนกับการตรวจสอบเงื่อนไขทังจริงและเท็จ – ท้าจนเสร็จ (end) หยุดการท้างาน(break) หรือ ท้าต่อรอบถัดไป (continue)
– ท้างานตลอดไป (Forever)
การวนซ้้าตลอดไป • รูปแบบการแสดงผล * เปรียบเหมือนการให้ท้างานตลอดเวลา ไม่มีหยุด
For loop
Do while loop
while loop
การก้าหนดจ้านวนรอบในการท้างาน - ตัวนับ ให้ท้างาน 15 ครัง - ค่าเริ่มต้น 0001 - โดยกดนับ 1 ครัง เพิ่มค่าทีละ 1 - เงื่อนไขจนกว่าจะครบ 15 ครัง
http://www.priceza.com/s/ราคา/เครื่องนับจ้านวน http://www.sitesbay.com/cprogramming/c-forloop
การก้าหนดเงื่อนไขในการท้างาน • ก้าหนดจุดตรวจตรา ท้าจนกว่าจะเสร็จ ไม่สามารถระบุจ้านวนรอบได้ • หาค่าผลบวกเลขตังแต่ 1-100 ที่เท่ากับหรือใกล้เคียงกับ 100
http://www.flaticon.com/
การควบคุมสถานะแบบซ้อนภายใน • • • •
การตรวจสอบเงื่อนไขภายใน เปลี่ยนแปลงค่าให้ไม่ตรงตามเงื่อนไขการวนซ้า รูปแบบการด้าเนินการก่อน แล้วจึงตัดสินใจในการวนซ้า (x>20) หยุด
หยุดการท้างานด้วย break #include <stdio.h> #include <conio.h> #include <stdlib.h> void main(){ int r ; for(;;){ r= rand() % 25; printf("random=%d\n",r); if(r==0){ printf("random Stop!"); break; } } getch(); }
การท้าต่อรอบถัดไปด้วย continue #include <stdio.h> #include <conio.h> #include <stdlib.h> void main(){ int r ; for(;;){ r= rand() % 25; printf("random=%d\n",r); if(r==0){ printf("random continue?"); getch(); continue; } } }
การแสดงสูตรคูณแม่ 2 ด้วย For Loop • รูปแบบ 2xR=O คือ ผลลัพธ์ในแต่ละรอบ ซึ่ง R เริ่มตังแต่ 1-12
https://pantip.com/topic/33198618
การวนรับค่าจ้านวนเต็มด้วย For Loop • รูปแบบการแสดงผลและรับค่าผ่านตัวแปร x[i] โดยวนซ้า 10 รอบ
การค้านวณหาผลบวก 1-1,000,000 ด้วย For Loop • รูปแบบการบวกและจัดเก็บที่ตัวแปร sum โดยวนซ้า 1,000,000 รอบ • 1+2+3
การค้านวณหาผลบวกของเลขคู่ตั้งแต่ 1-100 #include <stdio.h> #include <conio.h>
void main(){ int sum=0; for(int i=2;i<=100;i+=2){ sum+=i; } printf("summation Even number 1 to 100 =%d",sum); getch(); }
การค้านวณหาผลบวกของเลขคี่ตั้งแต่ 1-100 #include <stdio.h> #include <conio.h>
void main(){ int sum=0; for(int i=1;i<=100;i+=2){ sum+=i; } printf("summation Odd number 1 to 100 =%d",sum); getch(); }
การรับค่าตามที่ก้าหนดด้วย while เพื่อหาค่าเฉลี่ย • รูปแบบการรับค่าและจัดเก็บค่าผลบวกไว้ที่ตัวแปร sum แล้วหาค่าเฉลี่ย
การแสดงเครื่องหมาย + 1,000,000 ด้วย while • • • •
รูปแบบการแสดงเครื่องหมาย + แล้วตังเงื่อนไขในการหยุดท้างาน เงื่อนไขภายในด้วย if() เชื่อมตัวควบคุมด้วย && ใช้ตัวนับผ่านตัวแปร i
การซ้อนทับของการวนซ้้าแบบต้าแหน่ง (x,y) • รูปแบบการแสดงต้าแหน่งของข้อมูลแบบตาราง ผ่านตัวแปร (i,j)
การแสดงตารางสูตรคูณแม่ 2-12 โดยใช้ลูปซ้อนลูป
https://pantip.com/topic/33198618
การแสดงรายการผ่อนช้าระผ่านบัตรเครดิต
การแสดงล้าดับเลขอนุกรมหลายชั้น
การแสดงล้าดับเลขอนุกรมหลายชั้น
การแสดงล้าดับแบบมีค่าแตกต่างเป็นชุด
การแสดงผลบวกจากสมการคณิตศาสตร์ด้วยลูป
http://math.rwb.ac.th/supapon/theme_93.html
For, while, Do while • • • •
For(;;){ } While(true) { } do{ } While(true); break;
สรุป • • • •
การวนซ้าเป็นโครงสร้างที่จ้าเป็นในการประมวลผลข้อมูลแบบอัตโนมัติ ช่วยให้ท้างานตามรูปแบบที่ก้าหนดซ้าๆ ได้หลายรอบ โครงสร้างการวนซ้าของภาษาซีประกอบด้วย for, while และ do…while การวนซ้าสามารถท้างานได้ตลอดเวลา หรือก้าหนดจ้านวนรอบที่ชัดเจน ใช้การตรวจตราและเงื่อนไขเพื่อหยุดหรือท้าต่อไปได้ • การวนซ้าสามารถประยุกต์กับการท้างานที่มีการก้าหนดรูปแบบในการ ท้างาน ท้าให้คอมพิวเตอร์ประมวลผลได้แบบอัตโนมัติ