Chapter 4 ข้อความสั่ง เลือกทำ
ข้อความสั่งควบคุม ใช้สำหรับควบคุมการทำงานภายในโปรแกรม โดยอาจจะให้มีการเลือกทำเพียงบางคำสั่ง หรือ ให้ทำบางคำสั่งหลายครั้ง ข้อความสั่งควบคุมแบ่งออกเป็น 3 กลุ่ม - ข้อความสั่งให้เลือกทำ ได้แก่ if, if-else, switch - ข้อความสั่งให้ทำซ้ำ ได้แก่ while, while-do, for - คำสั่งควบคุมอื่นๆ ได้แก่ break, continue, exit()
if ข้อความสั่งให้เลือกทำ if (นิพจน์) ข้อความสั่ง; ถ้าผลลัพธ์เป็นจริง ให้ทำงานตามข้อความสั่งที่อยู่ภายในคำข้อความสั่ง if นิพจน์ ข้อความสั่ง True False if (นิพจน์) ข้อความสั่ง;
ข้อความสั่ง if if (นิพจน์) ข้อความสั่ง; if x == 5 x++; if x != 3 printf (“%f\n”, x);
if (gender == 1 && age >= 30); if (lecture >= average || lab >= 50) grade = ‘P’;
เปรียบเทียบค่า 2 ค่า Start y = 5 x = y * y - y x = 5 x = x + 1 Stop False True x = x + 1 Display x Stop
ตัวอย่าง แสดงการใช้คำสั่ง if เพื่อเปรียบเทียบค่า 2 ค่า Start y = 5 x != 50 x = x + 3 True False y = 5 x = y + y * y Display x Start Stop
Start Income >= 20000 and age <= 30 Stop Read Income, Age False True Display “Qualify” Stop
if (นิพจน์) {ข้อความสั่ง 1; ข้อความสั่ง 2; … ข้อความสั่ง n; } นิพจน์ False True ข้อความสั่ง 1.. n if (นิพจน์) {ข้อความสั่ง 1; ข้อความสั่ง 2; … ข้อความสั่ง n; }
if else สั่งให้ตรวจสอบผลลัพธ์จากนิพจน์ ข้อความสั่งA; else ข้อความสั่งB; นิพจน์ False True A B
if else if นิพจน์ ข้อความสั่ง1; else ข้อความสั่ง2; if (x > y) printf (“x is greater than y); else printf (“x is less than or equal to y”);
if else if (นิพจน์) { ข้อความสั่ง 1; ข้อความสั่ง 2; … ข้อความสั่ง n; } ข้อความสั่ง m; if else นิพจน์ False True ข้อความสั่ง 1..n ข้อความสั่ง (n+1)..m
if (นิพจน์) {ข้อความสั่ง 1; ข้อความสั่ง 2; … ข้อความสั่ง n; } else
if ซ้อน Nested if if ซ้อน หมายถึง การนำ if หรือ if else ไปใส่ไว้ภายในข้อความสั่ง if หรือ if else ซึ่งข้อความสั่งที่อยู่ภายในนี้ อาจเป็น if หรือ if-else ก็ได้ ข้อความสั่ง if หรือ if-else ที่ซ้อนอยู่ภายใน อาจจะอยู่หลัง if หรือหลัง else ก็ได้ และอาจซ้อนกันได้โดยไม่จำกัดจำนวน
if-else if (นิพจน์ 1) ข้อความสั่ง A; else if (นิพจน์ 2) ข้อความสั่ง B; …. else ข้อความสั่ง N; if-else อยู่ภายใน else false false นิพจน์ 1 นิพจน์ 2 true true A B C
main() { int invalid_operator = 0; char operator; float numberA, numberB, result; printf("Enter two numbers and an operator in the format\n"); printf(" numberA operator numberB\n"); scanf(“___________", ________, ________, ________); if (_______________) result = number1 * number2; else if (________________) result = number1 / number2; else if (________________) result = number1 + number2; result = number1 - number2; else _____________________; printf("______________\n", numberA, operator, numberB, result ); else printf("Invalid operator.\n"); }
if ซ้อน if-else อยู่ภายใน if if (นิพจน์ 1) if (นิพจน์ 2) ข้อความสั่ง A; else ข้อความสั่ง B; ข้อความสั่ง C; False นิพจน์ 1 True False นิพจน์ 2 True A B C
switch เป็นข้อความสั่งที่ให้เลือกทำข้อความสั่ง หรือกลุ่มข้อความสั่ง ใดๆ โดยพิจารณาจากค่าของนิพจน์ ถ้าค่าของนิพจน์มีค่าเท่ากับค่าใด ก็จะเริ่มทำงานตามข้อความสั่งที่อยู่หลัง case นั้น และกระทำคำข้อความสั่งอื่นๆที่ตามมาทั้งหมด
ข้อความสั่ง switch switch (นิพจน์) {case ค่าที่ 1 : ข้อความสั่ง; … case ค่าที่ n : ข้อความสั่ง; default : ข้อความสั่ง; } ผลลัพธ์ของนิพจน์ ต้องเป็น short int long char boolean