3.4 ขอความสั่งใหเลือกทํา 3.4.1 ขอความสั่ง if ขอความสั่ง if เปนขอความสั่งที่ใหตรวจสอบผลลัพธจากนิพจน ถาผลลัพธเปน จริงใหทํางานตามขอความสั่งที่อยูภายในขอความสั่ง if ขอความสั่ง if รูปแบบที่ 1 if (นิพจน) ขอความสั่ง 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 รูปแบบที่ 2
X=6
if (นิพจน) { ขอความสั่ง 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; else ขอความสั่ง B;
ใชสําหรับกรณีที่ขอความสัง่ ภายในขอความสั่ง if ที่จะถูกกระทําการมีเพียงขอความสั่ง เดียว ถานิพจนเปนจริง จะกระทําการขอความสั่ง 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 หรือ if-else ก็ได ขอความสั่ง if หรือ if-else ที่ซอนอยูภ ายใน อาจจะอยูหลัง if หรือหลัง else ก็ได และอาจซอนกันไดโดยไมจํากัดจํานวนขอความสั่ง ขอความสั่ง if ซอน if( นิพจน 1 ) ขอความสั่ง A; else if(นิพจน 2) ขอความสั่ง B; else if .. … else ขอความสั่ง N; ถานิพจน 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