บทที่ 3 โครงสร้างควบคุม (หน้าที่ 35 – 69)
ตามข้อกำหนดมาตรฐานของสถาบัน ANSI (American National Standards Institute) กำหนดให้ภาษา C มีคำสั่งควบคุมการทำงานของโปรแกรม ซึ่งมีอยู่ 3 กลุ่มคำสั่งดังนี้
คำสั่งกลุ่มที่ 1 คำสั่งวนลูปหรือทำงานซ้ำ
คำสั่งวนลูป (Loop) เป็นคำสั่งที่สามารถควบคุมโปรแกรมให้ทำงานเป็นจำนวนรอบตามที่เรากำหนดไว้ หรือทำงานจนกว่าเงื่อนไขที่กำหนดไว้เป็นเท็จ จึงจะออกจากคำสั่งวนลูปได้
คำสั่งและความหมายของคำสั่ง |
ตัวอย่าง Source code |
ผลลัพธ์เมื่อแสดงบนจอภาพ |
3.1 for เป็นคำสั่งที่สั่งให้โปรแกรมมีการทำงานซ้ำๆ วน loop จนกว่าเงื่อนไขที่กำหนดไว้เป็นเท็จ |
for (number = 1; number <= 4 ; number++) printf(“%d ”, number ); |
1 2 3 4 |
3.2 while เป็นคำสั่งที่มีลักษณะการทำงานคล้ายกับคำสั่ง for แต่ต้องมีเงื่อนไขที่เป็นเท็จจึงจะออกจาก loop |
int n = 1; while ( n < 4 ) { n = n + 1 ; printf(“%d ”, n); } |
1 2 3 |
3.3 do while เป็นคำสั่งที่มีลักษณะการทำงานคล้ายกับคำสั่ง while แต่จะทดสอบเงื่อนไขหลังจากที่ได้ทำงาน ตามคำสั่งภายใน loop ไปแล้ว 1 รอบ |
int n = 1; do { n = n + 1 ; printf(“%d ”, n); } while ( n < 4 ); |
1 2 3 |
3.4 break เป็นคำสั่งที่สั่งให้ออกจากคำสั่ง for หรือ while หรือ do while หรือ คำสั่ง switch |
for (num = 1; num <= 10 ; num++) { printf(“%d ”, num ); if( num == 5) break; } |
1 2 3 4 5 |
3.5 continue เป็นคำสั่งที่สั่งให้กลับไปทำงานที่คำสั่งแรกของลูปคำสั่ง for หรือ while หรือ do while ทำให้มีการทำงานในรอบต่อไป |
for (num = 1; num <= 10 ; num++) { printf(“%d ”, num ); if( num == 5) { num = num+2; continue; } } |
1 2 3 4 5 8 9 10 |
คำสั่งกลุ่มที่ 2 คำสั่งทดสอบเงื่อนไขเพื่อการตัดสินใจ (decision statements)
คำสั่งทดสอบเงื่อนไขเพื่อการตัดสินใจ เป็นคำสั่งที่มีการทดสอบเงื่อนไขก่อนที่จะทำงานตามคำสั่ง
ที่กำหนดไว้ ซึ่งมีรายละเอียดแต่ละคำสั่งดังนี้
คำสั่งและความหมายของคำสั่ง |
ตัวอย่าง Source code |
ผลลัพธ์ |
3.6 if เป็นคำสั่งที่ใช้ทดสอบเงื่อนไข โดยมีการตัดสินใจแบบ 1 ทางเลือก ถ้าเงื่อนไขเป็นจริงให้ทำตามคำสั่งที่อยู่ภายใน if ถ้าเป็นเท็จให้ทำคำสั่งถัดไป |
if (num == 9) { printf(“Yes = |
input number = 9 : Yes = 9 |
3.7 if else คำสั่งที่ใช้ทดสอบเงื่อนไข โดยมีการตัดสินใจแบบ 2 ทางเลือก |
if (num == 9) { printf(“Yes = else { printf(“Not |
input number = 7 : Not 9 input number = 9 : Yes= 9 |
3.8 if else if หรือ หรือ nested if หรือ if เชิงซ้อนคือ คำสั่งที่ใช้ทดสอบเงื่อนไข โดยมีการตัดสินใจที่ซับซ้อนมากกว่า 2 ทางเลือกขึ้นไป |
if (num == 9) { printf(“Yes = else if (num == 8) { printf(“Yes = else { printf(“Not 9 and Not |
input number = 8 : Yes = 8 input number = 9 : Yes= 9 input number = 7 : Not 9 and Not 8 |
3.9 switch คำสั่งที่ใช้ทดสอบเงื่อนไขคล้ายๆกับคำสั่ง if else if และสำหรับตัดสินใจมากกว่า 2 ทางเลือกขึ้นไป แต่มีรูปแบบการใช้คำสั่งง่ายกว่าและสดวกในการแก้คำสั่งเมื่อมีข้อผิดพลาดเกิดขึ้น 3.9.1 case คือ คำสั่งที่ใช้ร่วมกับคำสั่ง switch เพื่อใช้ตรวจสอบเงื่อนไข 3.9.2 default คำสั่งที่ใช้ร่วมกับคำสั่ง switch ใช้ในกรณีที่นิพจน์หรือค่าคงที่ไม่ตรงกับเงื่อนไขใดๆ เลย |
printf(“Enter Grade :\n”); scanf(“%c”, &grade); switch ( grade ) { case ‘a’ : num = 4; break; case ‘b’ : num = 3; break; case ‘c’ : num = 2; break; case ‘d’ : num = 1; break; default : num = 0; } printf(“Number = %d \n\n”, num); |
Enter Grade : b Number = 3 Enter Grade : a Number = 4 Enter Grade : z Number = 0 |
คำสั่งกลุ่มที่ 3 คำสั่งที่สั่งไปทำงานตามจุดที่กำหนดไว้ (goto statements)
คำสั่ง goto และ label จะทำให้โปรแกรมข้ามคำสั่ง อื่นๆ เพื่อไปทำคำสั่งที่ต้องการ โดยอาจมีเงื่อนไขหรือไม่มีเงื่อนไขก็ได้
คำสั่งนี้จะไม่ใช้ในหลักสูตรการเขียนโปรแกรมคอมพิวเตอร์ และหลักการเขียนโปรแกรมด้วย C โดยทั่วไปแล้วไม่นิยมใช้คำสั่ง goto
เพราะเป็นคำสั่งที่ทำให้การเขียนโปรแกรมไม่เป็นระเบียบ และผิดโครงสร้างทางอัลกอริทึ่มอีกด้วย
คำสั่งนี้จะใช้ในกรณีพิเศษเท่านั้นเช่น การข้ามขั้นตอนการทำงานในบางกรณี การย้อนกลับไปจุดเริ่มต้นหรือจุดสิ้นสุดการทำงานของโปรแกรม เป็นต้น
แบบฝึกหัดบทที่ 3
1. คำสั่งที่ใช้ทดสอบเงื่อนไข โดยมีการตัดสินใจแบบ 2 ทางเลือก คือคำสั่งอะไร ……………………………….………
2. คำสั่งที่มีลักษณะการทำงานคล้ายกับคำสั่ง while แต่จะทดสอบเงื่อนไขหลังจากที่ได้ทำงาน
ตามคำสั่งภายใน loop ไปแล้ว 1 รอบ คือคำสั่งอะไร ……………………………….………
3. คำสั่งที่ใช้ร่วมกับคำสั่ง switch ใช้ในกรณีที่นิพจน์หรือค่าคงที่ไม่ตรงกับเงื่อนไขใดๆ เลย คือคำสั่งอะไร …………...