วันอังคารที่ 16 สิงหาคม พ.ศ. 2559

โปรแกรมแบบวนรอบทำซ้ำ ภาษา C


โดยทั่วไปแล้ว การทำงานของโปรแกรมคอมพิวเตอร์จะทำงานเรียงลำดับตั้งแต่สเตตเมนด์แรกถึงสเตตเมนด์สุดท้าย แต่เราสามารถให้คอมพิวเตอร์ทำงานซ้ำๆที่สเตตเมนด์ชุดหนึ่งได้ โดยใช้คำสั่งควบคุมให้ทำงานซ้ำได้ บางครั้งจะเรียกว่าคำสั่งลูป ในภาษาซีคำสั่งให้ทำงานซ้ำอยู่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 
Comments
You do not have permission to add comments.

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

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...