4. คำสั่งลูป(Loop)หรือการทำงานซ้ำ

___________________

รับสอนเขียนJAVA , C# , VB.net

โทร 0853507540

___________________

4. คำสั่งลูป(Loop)หรือการทำงานซ้ำ

            คำสั่งควบคุมอีกประเภทที่ใช้งานบ่อยๆคือคำสั่งลูป หรือการให้โปรแกรมทำงานซ้ำวนๆกันจนกว่าจะถึงเงื่อนไขที่เราได้เขียนเอาไว้

ลูปแบบ while

            ลูป while จะทำงานโดยการตรวจสอบเงื่อนไข หากเงื่อนไขจะทำคำสั่งภายในลูป 1 รอบแล้วกลับมาตรวจสอบการทำงานของเงื่อนไขอีกครั้งหากเงื่อนไขยังเป็นจริงอยู่จะเข้าไปทำตามคำสั่งภายในเงื่อนไขอีกครั้งและทำซ้ำจนกว่าจะพบว่าเงื่อนไขเป็นเท็จก็จะออกไปทำงานนอกลูป

 

while(เงื่อนไข)

{

            คำสั่ง 1;

}

คำสั่ง 2;

 

 

รูป 4-1

 

 

ตัวอย่าง

 

รูป 4-2

 

โปรแกรมนี้เป็นโปรแกรมให้พิมพ์ตัวเลขระหว่าง 1 ถึง 100 ที่หาร3และ5ลงที่

บรรทัดที่ 6 :       ประกาศตัวแปร x  เป็นชนิด int

บรรทัดที่ 8 : กำหนดค่าเริ่มต้นให้กับตัวแปร x โดยให้มีค่าเป็น 1 หมายความว่าเมื่อลูปทำการตรวจสอบเงื่อนไข

      จะเริ่มตรวจสอบจาก 1 เป็นตัวแรก

บรรทัดที่ 10 : คำสั่งลูป while พร้อมกำหนดเงื่อนไข ในที่นี้เงื่อนไขคือ ให้ทำซ้ำเรื่อยๆจนกระทั้ง x มีค่าเท่ากับ

       100 จึงให้ออกจากลูปไปทำคำสั่งนอกลูปได้

บรรทัดที่ 12-16 : ภายในลูป while มีการตรวจสอบเงื่อนไขด้วย if ว่าหากหารด้วย 3 และ 5 แล้วเหลือเศษศูนย์

หรือ หารลงตัว ให้แสดงผลออกทางหน้าจอ

บรรทัดที่ 18 : เพิ่มค่า x ในการตรวจสอบ โดยเพิ่มทีละ 1 จนกว่าค่า i จะถึง 100  กล่าวคือรอบแรกลูปจะใช้ x ที่

        มีค่าเท่ากับ 1 เพราะ ค่าเริ่มต้นเท่ากับ 1 เมื่อเข้าสู่ลูปจนถึงช่วงเพิ่มค่า x จะเพิ่มเป็น 2 และเป็น 3

        4 5 …100

            จะเห็นได้ว่าความสำคัญที่ทำให้ลูป while ทำงานได้ จะต้องไม่ลืม 3 ขั้นตอนสำคัญ ได้แก่ กำหนดค่าเริ่มต้น กำหนดเงื่อนไข เพิ่มค่า/ลดค่า

 

ลูปแบบ do-while

            ลูป do-while แตกต่างจากลูป while ตรงที่จะมีการทำงานก่อนเข้าลูป 1 ครั้ง

 

do()

{

            คำสั่ง 1;

} while(เงื่อนไข);

คำสั่ง 2;

 

รูป4-3

 

 

ตัวอย่าง

 

รูป4-4

            โปรแกรมนี้ต้องการแสดงตัวเลข 1-10

บรรทัดที่ 6 : ประกาศตัวแปร count เป็นตัวแปรชนิด int ให้ค่าเริ่มเป็น 1

บรรทัดที่ 8 : คำสั่ง do มีคำสั่งภายในคือ คำสั่งแสดงผล หลังจากแสดงผลเสร็จให้ทำการเพิ่มค่าตัวแปร count

     อีก 1

บรรทัดที่ 11 : ทำการวนลูปหาก count มีค่าเท่ากับ 11 หรือมากกว่า ให้ออกจากลูป

ผลลัพธ์ที่ได้

 

รูป4-5

ลูป for

            เป็นคำสั่งสำหรับการวนลูปเช่นเดียวกัน แต่สำหรับลูป for นั้น จะเป็นการเอาค่าเริ่มต้น เงื่อนไขและการเพิ่มค่า/ลดค่ามาไว้ในบรรทัดเดียวกัน

 

 

 

for(ค่าเริ่มต้น;เงื่อนไข;เพิ่มค่า/ลดค่า)

{

            คำสั่ง 1;

}

คำสั่ง 2;

ลูป for จะคล้ายกับ if คือถ้ามีคำสั่งเดียวไม่ต้องมี

{ } ได้

 

รูป 4-6

 

 

 

ตัวอย่าง

 

รูป 4-7

โปรแกรมต้องการให้แสดงตัวอักษร x สิบตัว

บรรทัดที่ 6 : ใช้ลูป for(ค่าเริ่มต้น;เงื่อนไข;เพิ่มค่า/ลดค่า) โดยให้ค่าเริ่มต้นเป็น 1 และกำหนดเงื่อนไขให้พิมพ์ค่าออกตราบเท่าที่ i น้อยกว่าหรือเท่ากับ 10

บรรทัดที่ 8 : คำสั่งแสดงค่า

ได้ผลลัพธ์เป็นตัวอักษร x สิบตัว

 

รูป 4-8

 

 

 

 

 

 

 

 

ลูป Nested for

 

เป็นการใช้ลูป for ซ้อน ลูป for

 

for(ค่าเริ่มต้น;เงื่อนไข;เพิ่ม/ลดค่า)

{

for(ค่าเริ่มต้น;เงื่อนไข;เพิ่ม/ลดค่า)

{

for(ค่าเริ่มต้น;เงื่อนไข;เพิ่ม/ลดค่า)

{

                                    คำสั่ง 1;

}

}

}

 

 

รูป4-9

 

 

คำสั่ง 2;

 

ตัวอย่างการใช้ Nested for loop

 

รูป 4-10

ต้องการให้โปรแกรมแสดงรูปปีรามิดที่มีเงาอยู่ทางซ้ายออกทางหน้าต่าง console.

บรรทัดที่ 7 : เป็นการใช้คำสั่ง for ตัวแรกเพื่อวนลูปสร้างแถวแนวนอน โดยให้สร้างทั้งหมด 11 แถว

บรรทัดที่ 9 : ให้โปรแกรมแสดง เครื่องหมาย – แทนเงาของปีรามิดโดยกำหนดค่าเริ่มต้นที่แถวที่ 1 ให้มีเงื่อนไข

      ว่าต้องแสดงเครื่องหมาย – เป็นจำนวนทั้งหมด 10-i  ครั้งแรก i =1 จะแสดงเครื่องหมาย – 9 ครั้ง

บรรทัดที่ 14 : ให้โปรแกรมแสดง เครื่องหมาย x แทนตัวของปีรามิดโดยให้แสดง x ออกมาครั้งละ (i*2)+1 ครั้ง

      แรก i เป็น 1 จะแสดง x ออกมาหนึ่งครั้ง อย่าลืมเครื่องหมาย “” ใน ( )

ผลลัพธ์ของโปรแกรมเป็นดังนี้

 

รูป 4-11

ลูป while(true) และ for(;;)

            คือนอกจากคำสั่ง while และ for ที่ต้องกำหนดเงื่อนไขให้ลูปทำงานแล้วบางครั้งเราก็ต้องการการทำงานจำพวกที่ให้ผู้ใช้ป้อนข้อมูลได้เรื่อยๆ ไม่จำกัดจนกว่าผู้ป้อนข้อมูลจะพอ สามารถใช้ลูปอีกแบบได้คือ ลูป while(true) หรือ for(;;) สองอย่างนี้มีค่าเท่ากัน คือกำหนดให้ลูปเป็นจริงเสมอก็จะทำการวนลูปไปเรื่อยๆจนกว่าจะพอใจ หรือใช้คำสั่ง break; ในการการออกจากลูป

 

 

คำสั่ง break; และ continue;

 

 

คำสั่ง break; เป็นคำสั่งให้โปรแกรมออกจากลูป

              ทันทีที่เจอคำสั่งนี้ มักใช้กับ while(true)

 

 

 

while ( true )

{

   คำสั่ง;

   break ;

   คำสั่ง;

}

 

 

 

 

 

คำสั่ง continue; เป็นคำสั่งให้โปรแกรมวนกลับขึ้น

ไปตรวจสอบเงื่อนไขลูปใหม่โดยข้ามการ

ทำงานรอบนั้นไปเลย

 

while ( true )

{

   คำสั่ง;

   continue ;

   คำสั่ง;

}

 

การใช้คำสั่ง break; และ continue;

 

รูป 4-12

            โปรแกรมนี้จะแสดงให้เห็นรอบของจำนวนการทำงานของลูป for ที่ให้วนลูปตั้งแต่ 1 ถึง 10 แต่เมื่อ i มีค่าเท่ากับ 3 จะไม่แสดงผลของรอบที่  i = 3 ออกทางหน้าจอเพราะให้ข้าม 3 ด้วยคำสั่ง continue; และเมื่อ i=5 จะทำการ break; ออกจากลูปคือลูปจะไม่วนจนถึง 10 รอบตามที่ได้ตั้งเงื่อนไขไว้

ผลลัพธ์จึงเป็นดังนี้

 

รูป 4-13

 

สิ่งที่ต้องหลีกเลี่ยง infinite loop

            Infinite loop คือลูปไม่รู้จบ เกิดจากความผิดพลาดเวลาที่เรากำหนดเงื่อนไข ทำให้ลูปทำงานวนซ้ำออกจากลูปไม่ได้เครื่องก็จะเริ่มช้าเพราะรันโปรแกรมติดๆกัน

 

รูป 4-14

จากโปรแกรมนี้เมื่อกำหนดให้ค่า i เป็น 1 ยังกำหนดให้เงื่อนไขเป็น เมื่อ i = 1  จะพิมพ์ค่า i ออกมา แต่ i มีค่าเท่ากับ 1 อยู่แล้วมันก็จะพิมพ์ค่า i ออกมาไม่รู้จบ

 

รูป 4-15

เมื่อเกิดการรันโปรแกรมไม่รู้จบให้ทำการกดเครื่องหมายสีเหลี่ยมสีแดงที่มุมขวาบนของหน้าต่าง console เพื่อปิดการันโปรแกรมตามด้วยเครื่องกากบาทข้างๆ

แผนผังการเรียนเขียนโปรแกรม

 

___________________

รับสอนเขียนJAVA , C# , VB.net

โทร 0853507540

___________________

 

ใส่ความเห็น