โดยทั่วไปแล้ว การทำงานของโปรแกรมคอมพิวเตอร์จะทำงานเรียงลำดับตั้งแต่สเตตเมนด์แรกถึงสเตตเมนด์สุดท้าย
แต่เราสามารถให้คอมพิวเตอร์ทำงานซ้ำๆที่สเตตเมนด์ชุดหนึ่งได้
โดยใช้คำสั่งควบคุมให้ทำงานซ้ำได้ บางครั้งจะเรียกว่าคำสั่งลูป ในภาษาซีคำสั่งให้ทำงานซ้ำอยู่3รูปแบบขึ้นอยู่กับการทำซ้ำคือ
1.คำสั่ง for 2.คำสั่ง while 3.คำสั่ง do..while การบวนการทำซ้ำด้วยคำสั่ง for การทำซ้ำแบบ for หรือลูป for จะเป็นโปรแกรมทำซ้ำจนกว่าตัวแปรจะครบตามที่ตั้งไว้ เริ่มแรกโปรแกรมจะกำหนดค่าเริ่มต้นให้กับตัวแปรเริ่มต้น(initialization)จากนั้นทำสเตตเมนด์โดยรูปแบบของคำสั่งเป็นดังนี้ For(initialization;condition;increment) <------------ ตัวนับที่มีการเปลี่ยนแปลงค่า <statement>; ในส่วนของcondition บางครั้งจะรัยกว่าตัวแปรควบคุมลูป (loop control variable)เริ่มต้นคำสั่งจะทำส่วนกำหนดค่าเริ่มต้น(initial value) จากนั้นจะตรวจสอบว่าเงื่อนไขเป็นจริงหรือไม่ ถ้าเงื่อนไขเป็นจริงจะทำตามสเตตเมนด์ที่จะทำซ้ำ แล้วกลับมาทำส่วน increment จากนั้นตรวจสอบเงื่อนไขใหม่โดยทำแบบนี้ไปจนกว่าเงื่อนไขนั้นจะเป็นเท็จ สเตตเมนด์ที่ทำซ้ำอาจเป็นสเตตเมนด์รวม(Compound Statement)ก็ได้แต่ต้องอยู่ในเงื่อนไขภายในเครื่องหมาย{กับ} ในส่วนของ increment จะเป็นคำสั่งที่ใช้เพิ่มค่าหรือลดค่าให้ตัวแปร โดยมักจะเขียนเป็นคำสั่งเดียวแต่ถ้าหากใช้หลายคำสั่งจะใช้เครื่องหมาย comma คั่นระหว่างคำสั่ง
for(i = 1 ;
i<s ;i++)
Statement
เริ่มแรกโปรแกรมจะใส่ค่าเริ่มต้น
1 ลงในตัวแปร i จากนั้นจะทดสอบเงื่อนไขว่าเงือนไขเป็นจริงหรือไม่
ถ้าจริงจะทำสเตตเมนด์ และจะเพิ่มค่า i ขึ้นหนึ่งค่า
ในการเพิ่มค่าให้กับตัวแปรควบคุมจะเพิ่มขึ้นเป็นลำดับ
โดยอาจเป็นตัว 1,2,3,.. หรือตัวอักษร ‘A’
, ‘B’ , ‘C’ ก็ได้ดังนั้นการประกาศประเภทของตัวแปรคุม
จะต้องให้สอดคล้องกับค่าของข้อมูลด้วย
ถ้าหากเขียนคำสั่ง
for ดังต่อไปนี้
For(counter = 1 ; counter <= 10 ; counter++)
printf(“%d”,counter)
โปรแกรมจะพิมพ์ค่า
counter ตั้งแต่ 1ถึง10
โดยเริ่มแรกจะใส่ค่าให้กับต้วแปร counter
ซึ่งเป็นตัวแปรเริ่มต้นก่อน จากนั้นจะตรวจสอบเงื่อนไจว่า counter น้อยกว่า 10 จริงหรือไม่ ถ้าจริงจะพิมพ์ค่าใน counter และเพิ่มค่า counter
ขึ้นอีกหนึ่งค่าจากนั้นจะตรวจสอบเงื่อนไขใหม่ ถ้าจริงจะพิมพ์ค่าใน
counter และเพิ่มค่า counter ขึ้นอีกหนึ่งค่า
ในการเขียนโปรแกรมซ้ำ
เราสามารถค่าให้กับตัวแปร
สำหรับเพิ่มต่าหรือลดค่าให้กับตัวควบคุมลูป
สามารถเพิ่มค่าขึ้นครั้งละหลายๆค่าตามที่ต้องการได้
ถ้าหากต้องการให้ให้สเตตเมนด์ที่จะทำงานซ้ำเป็นสเตตเมนด์รวม
จะต้องเขียนสเตตเมนด์ในเครื่องหมาย {และ}
ในการทดสอบเงื่อนไขของคำสั่ง
for สามารถทดสอบด้วยต้วแปรกับตัวแปรได้
การกำหนดค่าให้กับตัวแปรเริ่มต้นในคำสั่ง
for
สามารถกำหนดค่าให้กับตัวแปรหลายตัวได้ โดยใช้เครื่องหมาย , คั่นระหว่างตัวแปรแต่ละตัว
ข้อควรระวัง
1.ถ้าใส่เครื่องหมาย
; หลังวงเล็บของคำสั่ง for
โปรแกรมจะทำงานผิดพลาด และคอมไพล์จะไม่แจ้งข้อผิดพลาดออกมา
เพราะว่าคอมไพล์จะมองว่าเครื่องหมาย ;
เป็นการสิ้นสุดสเตตเมนด์
2.อย่าทำกาเปลี่ยนตัวแปรควบคุมภายในลูป
การใช้ลูปแบบ
for
นั้นสามารถให้โปรแกรมออกจากลูปตามเงื่อนไขที่กำหนดได้ โดยคำสั่ง break
ลูป while (while statement)
ประโยคคำสั่งลูปแบบ
while จะใช้ให้โปรแกรมทำงานซ้ำโดยตรวจสอบเงื่อนไขก่อน
ถ้าเงื่อนไขเป็นจริงจะทำซ้ำ และจะวนรอจนกว่าเงื่อนไขจะเท็จ
ลูปแบบนี้จะต่างจากลูปแบบ for
เพราะจำนวนครั้งที่ซ้ำจะไม่แน่นอนขึ้นกับเงื่อนไข รูปแบบของคำสั่งเป็นดังนี้
While (test condition)
Statement;
การใช้คำสั่งนี้จะเริ่มต้นด้วยคำว่า
while และตรวจสอบเงื่อนไข
จากนั้นจะตามด้วยสเตตเมนด์ที่จะทำงาน ในการตรวจสอบเงื่อนไขนั้นจะใช้ตัวดำเนินการดำเนินการเปรียบ
เทียบแบบบูลีน ตัวอย่าง ตัวอย่างการใช้งานเป็นดังคำสั่งต่อไปนี้
n=7
while (n >=0) <--------------------------- ถ้าผลลัพธ์เป็นจริง
{ \/
printf(“%d\n” ,n); \/
n = n-5; ทำกลุ่มคำสั่ง
printf(“Hi %d\n”,n)
}
ผลลัพธ์ที่ได้จาการทำคำสั่งจะเป็นนี้ดังนี้
7 <--------------------------- ทำงานพิมพ์ลูปแรก
Hi 2
2 <--------------------------- ทำงานพิมพ์ลูปที่สอง
Hi
-3
ในลูปแรก
n มีค่าเท่ากับ 7 ทำให้เงื่อนไขเป็นจริง
โปรแกรมจะทำงานในลูปซึ่งจะทำให้ n มีค่าเป็น 2
ต่อมาโปรแกรมตรวจสอบเงื่อนไขเพื่อทำให้ลูปที่สอง พบว่า
เงื่อนไขเป็นจริงเมื่อทำงานลูปที่สองทำให้ n มีค่าเป็น -3
เมื่อโปรแกรมตรวจสอบเงื่อนไขพบว่าเป็นเท็จจึงไม่ทำลูปที่สาม
การทำงานจึงจบแค่ลูปที่ 2
Note
ในการทำซ้ำโดยใช้ลูป while จะไม่มีตัวไปแปรสำหรับนับรอบ
ถ้าหากต้องการนับรอบจะต้องสร้างตัวแปรขึ้นมาเอง และกำหนดการเพิ่มค่าหรือลดค่าเอง
ถ้าหากคอมพิวเตอร์ทำชุดคำสั่งต่อไปนี้
โปรแกรมจะทำงานซ้ำจนกว่าตัวอักขระที่คีย์เข้าไปจะเป็นตัว “A”
char ch;
ch =
‘\o’;
while (ch !=’A’)
ch = getch();
จากชุดคำสั่งจะเห็นได้ว่าตัวแปร ch
ถูกประกาศให้เป็น char ซึ่งใช้เก็บตัวอักขระ
และให้ค่าเท่ากับ \o จากนั้นโปรแกรมจะตรวจสอบว่า ch ไม่เท่ากับ ‘A’ จริงหรือไม่
ถ้าจริงจะรับอักขระตัวเดียว(คำสั่ง getch())
และตรวจสอบเงื่อนไขอีก ถ้าหากมีการกด’A’เมื่อใดจะทำให้เงื่อไขของ
while เป็นเท็จ โปรแกรมจะออกจากการวนลูปทันที
ลูป do..while
คำสั่งลูปแบบนี้จะทำการตรวจสอบเงื่อนไขภายหลังการทำงานในลูป
โดยโปรแกรมจะทำลูปซ้ำไปเรื่อยๆ ถ้าเงื่อนไขเป็นจริงจะทำโปรแกรมซ้ำต่อไป จนกระทั่งเงื่อนไขที่เปรียบเทียบอยู่นั้นเป็นเท็จจึงหยุดทำ
เนื่องจากลูปแบบนี้จะตรวจสอบเงื่อนไขหลังจากทำลูป
จึงทำให้ประโยคในลูปถูกทำหนึ่งครั้งเสมอซึ่งต่างจากแบบอื่นๆ รูปแบบคำสั่งดังนี
Do
{
Statement
} while(condition); <--------------------------- ตรวจสอบเงื่อนไขทำคำสั่ง 1 ครั้งเสมอ
คำสั่งลูปแบบ
do..while
นิยมนำมาใช้ในการเขียนโปรแกรมแบบเมนูให้เลือกทำโปรแกรมย่อยต่างๆ
ข้อควรระวัง
การใช้ while กับ do..while
ถ้าเราลืมใส่คำสั่งที่ทำให้เงื่อนไขเป็นเท็จโปรแกรมจะทำงานไม่หยุดและในกรณีนี้เราต้องกดคีย์
<Ctrl+Break>เพื่อหยุดการทำงานคำสั่ง break และ continue
จากตัวอย่างการทำซ้ำแบ
for เราได้ทดลองใช้คำสั่ง break
มาบ้างแล้ว โดยคำสั่งนี้สามารถใช้งานร่วมกันกับ while ,for ,do...while หรือ switch ได้
สำหรับคำสั่งที่ทำงานตรงข้ามกับคำสั่ง break คือคำสั่ง continue
ซึ่งสามารถใช้ใน while ,for หรือ do..while ได้เช่นกัน เมื่อโปรแกรมทำงานมาถึงคำสั่ง continue
จะทำลูปต่อไปโดยไม่ทำสเตตเมนด์ที่ตามหลัง continue
|
วันอังคารที่ 16 สิงหาคม พ.ศ. 2559
โปรแกรมแบบวนรอบทำซ้ำ ภาษา C
สมัครสมาชิก:
ส่งความคิดเห็น (Atom)
Set MongoDB in the windows path environment
Let’s set MongoDB in the windows environment in just a few steps. Step 1: First download a suitable MongoDB version according to your mach...
-
ปกติแล้วเมื่อเราประกาศตัวแปร Type ที่เป็นตัวเลขมา เราก็มักจะมีการเปลี่ยนแปลงค่าของตัวแปรนั้นอยู่บ้าง โดยการคำนวณร่วมกับค่าเดิมที่ตัว...
-
เรียนรู้การใช้ภาษา Lua บทความนี้กล่าวถึง ภาษา Lua ซึ่งเป็นภาษาคอมพิวเตอร์ และเรียนรู้การเขียนโค้ดในภาษานี้ โดยอาศัยโค้ดตัวอย่าง ผู้อ่าน...
ไม่มีความคิดเห็น:
แสดงความคิดเห็น