กระบวนการหนึ่งที่สำคัญในการออกแบบอัลกอริทึม ก็คือความสามารถในการวนลูปของการทำงานของกลุ่มคำสั่งตามที่นักพัฒนาต้องการ ดังนั้นสำหรับตอนนี้ ก็จะนำเสนอการพัฒนาโปรแกรมเพื่อให้บางส่วนของคำสั่งสามารถมีการวนซ้ำได้หลาย ครั้ง สำหรับคำสั่งที่สามารถใช้ในการเขียนโปรแกรมแบบวนซ้ำในภาษา C ได้แก่ While, Do-while และ For
ตัวอย่างของการใช้คำสั่ง while, for และ do-while สามารถเขียนให้เห็นได้ดังตาราง
ซึ่งผลลัพทธ์ของโปรแกรมทั้ง 3 ข้างต้นจะให้ผลลัพท์ที่เหมือนกัน คือจะแสดงผลบนหน้าจอเป็น
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
คราวนี้เราลองมาดูโครงสร้างของการใช้งานแต่ละคำสั่งกัน
โครงสร้างการเขียนโปรแกรมแบบวนซ้ำโดยใช้คำสั่ง For
คำสัง for สามารถเขียนให้อยู่ในรูปแบบได้ดังนี้
for ( เริ่มต้น ; เงื่อนไข ; เปลี่ยนแปลง ) statement;
เมื่อเริ่มต้น เป็นการกำหนดค่าตัวแปรเริ่มต้นที่ต้องการ ส่วนเงื่อนไขหากค่าลอจิกมีค่าเป็นจริง ก็จะทำตามในโครงสร้างของการวนซ้ำคือ run คำสั่ง statement แต่ถ้าเป็นเท็จก็จะออกจากโครงสร้างการวนซ้ำ ส่วนเปลี่ยนแปลง จะทำการปรับค่าของตัวแปรที่ต้องการ ยกตัวอย่างเช่น
for ( count=0 ; count < 10 ; count++) { printf(“count = %d ”,count); }
ใน code ข้างต้น ตัวแปร count จะเริ่มต้นจากค่า 0 ซึ่งค่า 0 มีค่าน้อยกว่า 10 ก็จะทำคำสั่ง print ค่าของตัวแปร count จากนั้นค่า count ก็จะเพิ่มค่าเป็น 1 เงื่อนไข count < 10 ก็ยังคงเป็นจริง ก็จะทำการพิมพ์ ค่าของตัวแปร count วนซ้ำเช่นนี้ จนกระทั่ง count มีค่าเพิ่มขึ้นจนเป็น 10 เงื่อนไขก็จะเป็นเท็จ และจบโครงสร้างของการวนซ้ำ
การเปลี่ยนแปลงค่าของตัวแปร อาจจะมีการเปลี่ยนแปลงมากกว่า 1 ค่า ยกตัวอย่างเช่น
for ( count=0 ; count < 10 ; count += 2) // ตัวแปร count มีค่าเปลี่ยนแปลงเพิ่มขึ้นครั้งละ 2 { printf(“count = %d ”,count); } for ( count=10 ; count > 5 ; count -= 2) // ตัวแปร count มีค่าเปลี่ยนแปลงลดลงครั้งละ 2 { printf(“count = %d ”,count); }
นอกจากนี้เรายังสามารถใช้ตัวแปร เป็นการกำหนด ค่าเริ่มต้น เงื่อนไข และ เปลี่ยนแปลงได้ ยกตัวอย่างเช่น
start = 0; end = 20; step=3; for ( count=start ; count < end ; count += step) { printf(“count = %d ”,count); }
โครงสร้างการเขียนโปรแกรมแบบวนซ้ำโดยใช้คำสั่ง While
คำสั่ง While จะใช้เงื่อนไขเป็นตัวควบคุมลูป ซึ่งลูป while นี้จะเป็นลูปแบบ pretest loop ซึ่งจะทำการตรวจสอบเงื่อนไขก่อนที่จะเข้าไปทำคำสั่งในลูป ผังการทำงานและชุดคำสั่งเบื้องต้นของ while ได้แสดงในรูปที่ 7-5]
รูปที่ 7-5 แสดงผังการทำงานและชุดคำสั่งเบื้องต้นของคำสั่ง while
ชุดคำสั่งเบื้องต้นที่แสดงในรูปที่ 7-5 ข จะเห็นได้ว่าในตัวลูปที่มีคำสั่งได้เพียงคำสั่งเดียวซึ่งถ้าต้องการให้มี หลายคำสั่ง ก็สามารถทำได้โดยเขียนชุดคำสั่งแบบ compound statement
โปรแกรมที่ 7-1 โปรแกรมแสดงตัวเลขที่เรียงจากตัวเลขที่รับเข้ามาจนถึงศูนย์
โครงสร้างการเขียนโปรแกรมแบบวนซ้ำโดยใช้คำสั่ง do-while
รูปแบบของการเขียน code สำหรับโปรแกรมแบบวนซ้ำที่ใช้ do-while สามารถเขียนให้อยู่ในรูปทั่วไปได้ดังนี้
do statement while ( เงื่อนไข ); ตัวอย่างของโครงสร้าง do-while สามารถเขียนได้ดังนี้
sum = 0.0; scanf(“%f”, &x); do { sum += x; scanf(“%f”, &x); } while (x > 0.0);
โปรแกรมข้างต้นจะทำ การอ่านค่าจะ keyboard เมื่อ User พิมพ์ค่าที่มีค่ามากกว่าศูนย์ ก็จะทำการบวกค่าเหล่านี้ไปที่ตัวแปร sum จนกระทั่ง User พิมพ์ ตัวเลข 0 หรือค่าที่น้อยกว่า ศูนย์ ทำให้เงื่อนไขเป็นเท็จ และโปรแกรมจึงจะออกจากโครงสร้าง do-while
คราวนี้เราลองมาเขียน โปรแกรมที่ใช้โครงสร้าง do-while โดยโจทย์กำหนดให้ว่า ให้โปรแกรมสามารถรับค่าตัวเลขใดๆ (X) และ แสดงผลของตัวเลข ระหว่าง 0 ถึง X ที่สามารถหารด้วย 4 ลงตัว
#include void main() { int number, i; printf("enter the number "); scanf("%d", &number); i = 0; do { if((i % 4) == 0) printf("%d ", i); i++; } while(i <= number); }
คำสั่งอื่นๆที่ใช้ในลูป
ในการวนลูปนั้น บางครั้งการทำงานของลูปอาจจะทำให้ตัวควบคุมนั้น มี่มีค่าที่นำตรวจสอบเพื่อจบการทำงานได้ หรือเมื่อพบกรณีใดกรณีหนึ่งขึ้นมา ผู้ใช้ไม่ต้องการให้ทำคำสั่งต่อไปแลกะต้องการให้ข้ามคำสั่งนั้นไปเลย เพราะฉะนั้นภาษาC จึงมีคำสั่งที่ช่วยการทำงานในลักษณะนี้ขึ้น
คำสั่งนี้จะพบแล้วในบทที่ 6 ในคำสั่ง switch เป็นคำสั่งในการกระโดดออกจากชุดคำสิ่ง switch และมันก็สามารถนำมาใช้ในคำสั่งวนลูปได้เหมือนกัน เพื่อให้กระโดดออกจากลูปในกรณีต่างได้
CONTINUE
คำสั่งนี้จะไม่ได้กระโดดออกจากลูปเลย แต่จะกระโดดคำสั่งอื่นๆในลูปไปทำการตรวจสอบตามนิพจน์เลย ได้แสดงการทำงานของคำสั่ง Continue ในคำสั่งลูปทั้ง 3 คำสั่ง
โปรแกรมที่ 7-5 เป็นโปรแกรมที่แสดงการใช้คำสั่ง Continue ซึ่งเมื่อรับค่าเข้ามาจะใช้คำสั่ง continue เพื่อกระโดดข้ามคำสั่งที่เหลือไป แล้วจะกลับไปรับค่าตัวต่อไปเลย
ตัวอย่างโปรแกรมที่ 7-5 แสดงการใช้งานคำสั่ง Continue
โปรแกรมที่ 7-5 เป็นโปรแกรมที่แสดงการใช้คำสั่ง Continue ซึ่งเมื่อรับค่าเข้ามาจะใช้คำสั่ง continue เพื่อกระโดดข้ามคำสั่งที่เหลือไป แล้วจะกลับไปรับค่าตัวต่อไปเลย
ตัวอย่างโปรแกรมที่ 7-5 แสดงการใช้งานคำสั่ง Continue
ตัวอย่างการใช้คำสั่งวนลูป
โปรเกรมที่ 7-6เป็นโปรแกรมคำนวณหาเงินลงทุน ซึ่งค่าที่ต้องกำหนดให้คือ จำนวน เงินที่ลงทุน ดอกเบี้ย และจำนวนปีที่ต้องการ
โปรเกรมที่ 7-6เป็นโปรแกรมคำนวณหาเงินลงทุน ซึ่งค่าที่ต้องกำหนดให้คือ จำนวน เงินที่ลงทุน ดอกเบี้ย และจำนวนปีที่ต้องการ
โปรแกรมที่ 7-6 พิมพ์สามเหลี่ยมขวา
โปรแกรมที่ 7-7 โปรแกรมบวกทุกตัวเลขทุกหลัก
การทำงานของโปรแกรมนี้คือ รับตัวเลขเข้ามา แล้วทำการตรวจสอบโดยมีเงื่อนไขว่าถ้าตัวเลขไม่เท่ากับ 0 ให้ทำการบวกค่าในตัวแปร Count ขึ้น 1 จากนั้นให้ตัวแปร sum เท่ากับ sum + (number หารเอาเศษด้วย 10) ซึ่งบรรทัดเผลของการหารเอาเศษจะได้เลขหลักสุดท้ายออกมา บรรทัดต่อไปให้ number หารด้วย 10 ก็ตัดเลขตัวสุดท้ายที่บวกเป็นแล้วออกไปทำจนกว่า number จะเท่ากับ 02
โปรแกรมที่ 7-8 โปรแกรมบวกทุกตัวเลขทุกหลัก
ที่มา :
http://www.vcharkarn.com/lesson/view.php?id=9
http://itd.htc.ac.th/st_it50/it5012/P_1/C/B7.htm