ควารู้เบื้องต้นเกียวกับคอมพิวเตอร์และการเขียนโปรแกรม 4

บทที่ 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 = 9”); }

input number = 9 :

Yes = 9

3.7 if else คำสั่งที่ใช้ทดสอบเงื่อนไข โดยมีการตัดสินใจแบบ 2 ทางเลือก

if (num == 9) { printf(“Yes = 9”); }

else { printf(“Not 9”); }

input number = 7 : Not 9

input number = 9 : Yes= 9

3.8 if else if หรือ หรือ nested if หรือ if เชิงซ้อนคือ คำสั่งที่ใช้ทดสอบเงื่อนไข โดยมีการตัดสินใจที่ซับซ้อนมากกว่า 2 ทางเลือกขึ้นไป

if (num == 9) { printf(“Yes = 9”); }

else if (num == 8) { printf(“Yes = 8”); }

else { printf(“Not 9 and Not 8”); }

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 ใช้ในกรณีที่นิพจน์หรือค่าคงที่ไม่ตรงกับเงื่อนไขใดๆ เลย คือคำสั่งอะไร …………...

Leave a Reply