ลูป(loop)ในที่นี้มีความหมายว่า การวนซ้ำซึ่งการวนซ้ำในทางภาษาคอมพิวเตอร์ คือ การทำคำสั่งหรือชุดคำสั่งนั้นซ้ำกันหลายๆครั้ง
รูปแบบของลูป
ในการตรวจสอบว่าจะให้ลูปนั้นจบการทำงานเมื่อไรนั้น จะมีรูปแบบของการตรวจสอบเงือนไขอยู่ 2 แบบ
1.Pretest Loop ลูปประเภทนี้จะทำการตรวจสอบเงื่อนไขก่อนว่าเป็นจริง หรือเป็นเท็จถ้าเป็นจริงก็ให้เข้าไปทำคำสั่งหรือชุดคำส่งต่อไป และเมื่อทำคำสั่งหรือชุดคำสั่งเสร็จแล้วก็จะกลับมาทำการตรวจสอบเงื่อนไขอีกครั้ง แลดะจะทำเช่นนี้ไปเรื่อยๆจนกว่าเงื่อนไขจะเป็นเท็จ ก็จบการทำงานของลูป
2.post-Test loop ลูปประเภทนี้จะทำคำสั่งหรือชุดคำสั่งก่อน เมื่อเสร็จแล้วถึงจะมาตรวจสอบเงื่อนไขว่าเป็นจริงหรือเป็นเท็จ ถ้าเป็นจริงก็จะกลับไปทำคำสั่งหรือชุดคำสั่งเดิมอีกครั้งแลดะจะทำจนกว่าเงื่อนไขจะเป็นเท็จเช่นเดียวกัน
การกำหนดและปรับปรุง
ในการใช้ลูป จะมีการกระทำที่สำคัญอยู่ 2 อย่าง ที่จะขาดไม่ได้เลยซึ่งถ้าขาดไปจะทำให้ลูปนั้นไม่ทำงาน หรือลูปทำงานแบบไม่มีวันจบ
1.การกำหนดค่า ก่อนที่เริ่มใช้ลูปจะต้องมีการกำหนดค่าที่นะใช้เป็นตัวควบคุมลูปก่อนซึ่งตัวควบคุมนี้จะทำหน้าที่ในการตรวจอบว่าลูปนั้นได้ทำงานจนจบ
2.การปรับปรุง หลังจากที่ทำคำสั่งหรือชุดคำสั่งไปแล้วไม่มีการปับปรุงค่าของตัวควบคุมลูปก็จะทำให้ลูปนั้นกลายเป็นลูปไม่มีวันจบได้เพราะฉะนั้นจะต้องทำการปรับปรุงค่าของตัวควบคุมลูปทุกครั้งเพื่อจะได้นำค่าของตัวควบคุมไปตรวจสอบกับเงื่อนไขเพื่อจบการทำงานของลูป
รูปที่7-3 แสดงการกำหนดค่าและการปรับปรุง
ตารางที่ 7-1 ความแตกต่างระหว่าง Pretest Loop และ Post – Test Loop
ตารางที่ 7-1 ความแตกต่างระหว่าง Pretest Loop และ Post – Test Loop
Pretest Loop | Post-Test loop |
| การกระทำ การกำหนดค่า 1 จำนวนครั้งในการตรวจสอบ n+1 จำนวนครั้งในการทำคำสั่ง n จำนวนครั้งในการปรับปรุง n จำนวนครั้งที่น้อยที่สุดในการวน 0 | การกระทำ การกำหนดค่า 1 จำนวนครั้งในการตรวจสอบ n จำนวนครั้งในการทำคำสั่ง n จำนวนครั้งในการปรับปรุง n จำนวนครั้งที่น้อยที่สุดในการวน 1 |
n คือ จำนวนของการวนซ้ำ
คำสั่งวนลูปในภาษา C
คำสั่งลูปในภาษา C นั้นจะมีอยู่ 3 คำสั่ง คือ คำสั่ง While คำสั่ง for และคำสั่ง do…while ซึ่งสองคำสั่งแรกเป็นลูปแบบ Pretest loop ส่วนคำสั่งสุดท้ายจะเป็นแบบ Post-test loop
รูปที่ 7-4 แสดงคำสั่งวนลูปในภาษา C
While loop
คำสั่ง While จะใช้เงื่อนไขเป็นตัวควบคุมลูป ซึ่งลูป while นี้จะเป็นลูปแบบ pretest loop ซึ่งจะทำการตรวจสอบเงื่อนไขก่อนที่จะเข้าไปทำคำสั่งในลูป ผังการทำงานและชุดคำสั่งเบื้องต้นของ while ได้แสดงในรูปที่ 7-5]
รูปที่ 7-5 แสดงผังการทำงานและชุดคำสั่งเบื้องต้นของคำสั่ง while
ชุดคำสั่งเบื้องต้นที่แสดงในรูปที่ 7-5 ข จะเห็นได้ว่าในตัวลูปที่มีคำสั่งได้เพียงคำสั่งเดียวซึ่งถ้าต้องการให้มีหลายคำสั่ง ก็สามารถทำได้โดยเขียนชุดคำสั่งแบบ compound statement
ชุดคำสั่งเบื้องต้นที่แสดงในรูปที่ 7-5 ข จะเห็นได้ว่าในตัวลูปที่มีคำสั่งได้เพียงคำสั่งเดียวซึ่งถ้าต้องการให้มีหลายคำสั่ง ก็สามารถทำได้โดยเขียนชุดคำสั่งแบบ compound statement
โปรแกรมที่ 7-1 โปรแกรมแสดงตัวเลขที่เรียงจากตัวเลขที่รับเข้ามาจนถึงศูนย์
For loop
คำสั่ง For นั้นจะเป็นลูปแบบ pretest loop ที่ใช้นิพจน์ 3 นิพจน์ นิพจน์แรกเป็นการกำหนดค่า นิพจน์ที่ 2 เป็นเงื่อนไขในการตรวจสอบตัวควบคุมลูป และส่วนที่ 3 เป็นการปรับปรุงค่าของตัวควบคุมลูป
จะพบว่าในตัวของคำสั่ง for สามารถมีคำสั่งได้เพียงหนึ่งคำสั่งเท่านั้นจะต้องใช้ชุดคำสั่งแบบ compound statement และจะพบอีกว่าคำสั่ง for นั่นมีการทำงานเหมือน while แต่คำสั่ง for นั้นจะรวมการกระทำทั้งสามอย่างไว้ในบรรทัดเดียวกันเลย
การเปรียบเทียบการเขียนโปรแกรมโดยใช้คำสั่ง for และคำสั่ง while โดยโจทย์มีอยู่ว่าให้รับตัวเลขทางคีย์บอร์ด 20 ตัว แล้วนำตัวเลขทั้งหมาดมารวมกัน ซึ่งจากโปรแกรมข้างต้นด้านล่างจะเห็นได้ว่า คำสั่ง for จะช่วยให้ผู้ใช้เขียนโปรแกรมได้สั้นลง
I = 1; Sum = 0; While(I<=20) { scanf(“%d”,&a); Sum+=a; I++; }/*while*/ | Sum= 0; For (I = 1;I<=20;I++) { scanf(“%d”,&a); Sum +=a; } |
โปรแกรมที่ 7-2 โปรแกรมแสดงตัวเลขที่เรียงตัวเลขจากศูนย์ถึงตัวเลขที่รับเข้ามา
จากโปรแกรมที่ 7-2 ถ้าต้องการให้พิมพ์เฉพาะเลขคี่ก็สามารถทำได้ โดยการเปลี่ยนที่คำสั่ง for เป็นดังนี้
For(i=1;i<=limit;i+=2)
แต่ถ้าต้องการให้พิมพ์ตัวเลขเรียงจากตัวเลยที่ราบเข้ามาถอยหลังไปจนถึง 1 ก็สามารถทำได้ดังนี้
For (I = limit; I <= 1;I++)
ในโปรแกรมที่ 7-3 เป็นการใช้คำสั่ง for ซ้อนกัน ซึ่งการใช้คำสั่ง for ซ้อนกันจะช่วยให้ในการเขียนโปรแกรมบางอย่างได้ง่ายขึ้น
โปรแกรมที่ 7-3 การใช้คำสั่ง for ซ้อนกัน
Do…while loop
คำสั่ง do…while เป็นลูปแบบ Post-Test Loop ดังที่ได้กล่าวไปแล้วในข้างต้น ว่าลูปแบบนี้จะมีคำสั่งก่อนทีจะไปทำการตรวจสอบตัวควบคุมลูป ซึ่งผังการทำงานและชุดคำสั่งเบื้องต้นได้แสดงในรูปที่ 7-10
ซึ่งในตัวของคำสั่ง do….while นั้นจะมีคำสั่งได้เพียงคำสั่งเดียว ซึ่งถ้าต้องการเขียนเป็นชุดคำสั่งจะต้องเขียนชุดคำสั่งแบบ Compound Statement ดังแสดงในรูปที่ 7-10
รูปที่ 7-10 แสดงผังการทำงานและชุดคำสั่งเบื้องต้นของคำสั่ง do….while
จากรูปจะเห็นได้วาคำสั่ง do…while นั้นจะมีการทำคำสั่งในลูปอย่างน้อยหนึ่งครั้ง ถึงแม้จะตรวจสอบตัวควบคุมลูปแล้วเป็นเท็จก็ตาม คำสั่ง do…while นี้จะเหมาะสำหรับงานที่ต้องมีการทำคำสั่งอย่างน้อยหนึ่งครั้ง
ในโปรแกรมที่ 7-4 เป็นการใช้คำสั่ง do…while ในการรับค่าตัวเลขแล้ว เมื่อต้องการจะหยุดให้กดปุ่ม Ctrl + Z จากนั้นนำตัวเลขทั้งหมาดมารวมกัน
โปรแกรมที่ 7-4 โปรแกรมบวกตัวเลข โดยใช้คำสั่ง do…while
จากรูปจะเห็นได้วาคำสั่ง do…while นั้นจะมีการทำคำสั่งในลูปอย่างน้อยหนึ่งครั้ง ถึงแม้จะตรวจสอบตัวควบคุมลูปแล้วเป็นเท็จก็ตาม คำสั่ง do…while นี้จะเหมาะสำหรับงานที่ต้องมีการทำคำสั่งอย่างน้อยหนึ่งครั้ง
ในโปรแกรมที่ 7-4 เป็นการใช้คำสั่ง do…while ในการรับค่าตัวเลขแล้ว เมื่อต้องการจะหยุดให้กดปุ่ม Ctrl + Z จากนั้นนำตัวเลขทั้งหมาดมารวมกัน
โปรแกรมที่ 7-4 โปรแกรมบวกตัวเลข โดยใช้คำสั่ง do…while
คำสั่งอื่นๆที่ใช้ในลูป
ในการวนลูปนั้น บางครั้งการทำงานของลูปอาจจะทำให้ตัวควบคุมนั้น มี่มีค่าที่นำตรวจสอบเพื่อจบการทำงานได้ หรือเมื่อพบกรณีใดกรณีหนึ่งขึ้นมา ผู้ใช้ไม่ต้องการให้ทำคำสั่งต่อไปแลกะต้องการให้ข้ามคำสั่งนั้นไปเลย เพราะฉะนั้นภาษาC จึงมีคำสั่งที่ช่วยการทำงานในลักษณะนี้ขึ้น
Break
คำสั่งนี้จะพบแล้วในบทที่ 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-6 พิมพ์สามเหลี่ยมขวา
โปรแกรมที่ 7-7 โปรแกรมบวกทุกตัวเลขทุกหลัก
การทำงานของโปรแกรมนี้คือ รับตัวเลขเข้ามา แล้วทำการตรวจสอบโดยมีเงื่อนไขว่าถ้าตัวเลขไม่เท่ากับ 0 ให้ทำการบวกค่าในตัวแปร Count ขึ้น 1 จากนั้นให้ตัวแปร sum เท่ากับ sum + (number หารเอาเศษด้วย 10) ซึ่งบรรทัดเผลของการหารเอาเศษจะได้เลขหลักสุดท้ายออกมา บรรทัดต่อไปให้ number หารด้วย 10 ก็ตัดเลขตัวสุดท้ายที่บวกเป็นแล้วออกไปทำจนกว่า number จะเท่ากับ 02
โปรแกรมที่ 7-8 โปรแกรมบวกทุกตัวเลขทุกหลัก
ไม่มีความคิดเห็น:
แสดงความคิดเห็น