3.4 if ข้อความสั่ง if เป็นข้อความสั่งที่ให้ตรวจสอบผลลัพธ์ จากนิพจน์ ถ้าผลลัพธ์เป็นจริงให้ทำางานตามข้อความสั่งทีอ ่ ยู่ ภายในข้อความสั่ง if 3.4.1
if if (
1 ) A;
ใช้สำาหรับกรณีที่ข้อความสั่งภายในข้อความสั่ง if มีเพียง ข้อความสั่งเดียว ถ้านิพจน์ให้ผลลัพธ์เป็นจริง จะกระทำาการ ข้อความสั่ง A แต่ถ้านิพจน์เป็นเท็จ จะไม่กระทำาการข้อความสั่ง A แต่จะจบการทำางานในข้อความสั่ง if แล้วไปกระทำาการข้อความสั่ง ที่อยู่ถด ั ไป 3.1 if 2 #include<stdio.h> #include main() { int x,y,z ; y=1; z=5; x=y*z; if(x = = 5)
// เปรียบเทียบ x มีค่าเท่ากับ 5
หรือไม่
}
x++; // ถ้า x มีค่าเท่ากับ 5 เพิ่มค่า x ขึ้นอีก 1 printf(“x = %d” , x); getch( if ( ); )
{
ผลการกระทำาการ
if
2
1; 2; … n;
ใช้สำาหรับกรณีที่ข้อความสั่งภายในข้อความสั่ง if มีมากกว่า 1 ข้อความสั่ง ข้อความสั่งเหล่านั้นจะต้องอยู่ภายในเครื่องหมายปีกกา { } ถ้านิพจน์ให้ผลลัพธ์เป็นจริง จะกระทำาการข้อความสั่ง 1 ถึง ข้อความสั่ง n แต่ถ้านิพจน์เป็นเท็จจะไม่กระทำาการข้อความสั่ง 1 ถึง ข้อความสั่ง n 3.2
if
#include<stdio.h> #include main() { int x,y ; scanf(“%d%d” , &x,&y); if(x>y) { x=x-y; printf(“x is greater than y”); } getch( ); }
รับค่าจำานวนเต็ม 2 ค่า นำามาเก็บไว้ใน x และ y เปรียบเทียบค่า x และ y ถ้าค่าที่เก็บใน x มากกว่าค่าทีเ่ ก็บใน y จะนำาผลลัพธ์ของ x-y ไปเก็บไว้ใน x และแสดงข้อความ x is greater than y แต่ถ้าค่าที่เก็บใน x น้อยกว่าหรือเท่ากับค่าทีเ่ ก็บใน y จะไม่กระทำาการข้อความสั่ง x=x-y; และฟังก์ชั่น printf(“x is greater than y”);
3.4.2
if –else
ข้อความสั่ง if –else เป็นข้อความสั่งที่ให้ตรวจสอบ ผลลัพธ์จากนิพจน์ ถ้านิพจน์เป็นจริงให้ทำางานตาม ข้อความสั่งทีอ ่ ยู่ภายในข้อความสั่ง if แต่ไม่กระทำาการ ข้อความสั่งทีอ ่ ยู่ภายใน else หากผลลัพธ์เป็นเท็จ จะไม่ กระทำาการข้อความสั่งที่อยู่ภายในข้อความสั่ง if แต่จะ กระทำาการข้อความสั่งที่อยู่ภายใน else if-else if (
)
A; ใช้สำาหรับกรณีที่ข้อความสั่งภายในข้อความสั่ง if ทีจ ่ ะถูก else กระทำาการมีเพียงข้อความสั่งเดียว ถ้านิพจน์เป็นจริง จะกระทำา การข้อความสั่ง A แต่ถ้านิพจน์เป็นเท็จ จะกระทำาการข้อความสั่ง B ข้อความสั่ง A หรือ ข้อความสั่ง B เพียงข้อความสั่งเดียวเท่านั้นที่จะ ถูกกระทำา เมื่อนิพจน์เป็นจริง หรือเท็จ 3.3 if – else #include<stdio.h> #include main() { int x,y ; scanf(“%d%d” , &x,&y); if(x>y) printf(“x is greater than y”); else printf(“x is less than or equal to y”); getch( ); }
รับค่าจำานวนเต็ม 2 ค่า นำามาเก็บไว้ใน x และ y เปรียบเทียบค่า x และ y ถ้าค่าที่เก็บใน x มากกว่าค่าทีเ่ ก็บใน y จะแสดงข้อความ x is greater than y
แต่ถ้าที่เก็บใน x น้อยกว่าหรือเท่ากับค่าที่เก็บใน y จะแสดงข้อความ x is less than or equal to y
3.4.3
if ข้อความสั่ง if ซ้อน หมายถึง การนำาข้อความสั่ง if หรือ if –else ไปใส่ไว้ภายในข้อความสั่ง if หรือ if-else ซึ่ง ข้อความสั่งทีอ ่ ยู่ภายในนี้ อาจเป็นข้อความสั่ง if หรือ ifelse ก็ได้ ข้อความสั่ง if หรือ if-else ที่ซ้อนอยู่ภายใน อาจ จะอยู่หลัง if หรือหลัง else ก็ได้ และอาจซ้อนกันได้โดยไม่ จำากัดจำานวนข้อความสั่ง if if(
1) A;
else if(
2) B;
else if .. … else
ถ้านิพจน์ 1 ให้ผลลัพธ์เป็นจริง จะทำางานตามข้อความสั่ง A แต่ถ้านิพจน์ 1 ให้ผลลัพธ์เป็นเท็จ จะตรวจสอบผลลัพธ์ของ นิพจน์ 2 ถ้านิพจน์ 2 ให้ผลลัพธ์เป็นจริง จะทำางานตามข้อความสั่ง B แต่ถ้านิพจน์ 2 ให้ผลลัพธ์เป็นเท็จ ให้ไปตรวจสอบผลลัพธ์ ของนิพจน์ถัดไป จนกระทั่งสุดท้าย หากไม่มีนิพจน์ใดเป็น จริงเลย จึงจะไปทำางานตามข้อความสั่ง N
3.4
if
#include<stdio.h> #include main() { float score; char grade; scanf(“%f” , &score); if(score>100) printf(“Score must be less than or equal to 100”); else if(score>=80) grade=’G’; else if (score>=50) grade=’P’; else grade=’F’; printf(“\n Grade = %c”, grade); getch( ); }
//1 //2 //3 //4 //5 //6 //7 //8 //9 //10 //11 //12 //13 //14 //15 //16 //17
บรรทัดที่ 7 รับค่าคะแนนจากแป้นพิมพ์ บรรทัดที่ 8 ถ้า score มีคา่ มากกว่า 100 ให้แสดงข้อความ Score must be less than or equal to 100 บรรทัดที่ 10 ถ้า score มีค่าตั้งแต่ 80 ขึ้นไป ไปทำาตาม ข้อความสั่งในบรรทัดที่ 11 มิฉะนั้นไปที่บรรทัดที่ 12 บรรทัดที่ 11 ให้เก็บ G ไว้ใน grade แล้วไปที่ข้อความสั่งใน บรรทัดที่ 16 บรรทัดที่ 12 ตรวจสอบผลลัพธ์ของนิพจน์ score >=50 ถ้า score มีค่าตั้งแต่ 50 ขึ้นไป ให้กระทำาการข้อความสั่งในบรรทัดที่ 13 แต่ถ้า score มีคา่ น้อยกว่า 50 ให้กระทำาการบรรทัดที่ 14 บรรทัดที่ 13 ให้เก็บ P ไว้ใน grade แล้วไปที่ข้อความสั่งใน บรรทัดที่ 16 บรรทัดที่ 15 ให้เก็บ F ไว้ใน grade บรรทัดที่ 16 ให้แสดงข้อความ Grade= และแสดงค่าของ grade