วันจันทร์ที่ 19 กันยายน พ.ศ. 2554

การเขียนโปรแกรมแบบเงื่อนไข

1.if else if
เงือนไข else จากตัวอย่างการใช้คำสั่ง if ถ้าเกิดนิพจน์มีค่าเป็นเท็จ (false) ขึ้นมา เราสามารถใช้ else เข้ามาทำงานร่วมกับ if ได้ โดยที่บอกว่าจะให้ทำอะไรต่อไปถ้านิพจน์นั้นมีค่าเป็นเท็จ การใช้งานดังนี้

รูปแบบ else
if ( นิพจน์ ) {

         // โค้ดที่ใช้ในการประมวลผล
         // ในกรณีนิพจน์เท่ากับ true

} else {

         // โค้ดที่ใช้ในการประมวลผล
         // ในกรณีนิพจน์เท่ากับ false

}

ตัวอย่างการใช้งาน else

โค๊ด:
<?
$url = "http://www.swry.ac.th";
if ($url == "http://www.datatan.net") {

echo "เว็บไซต์ DATATAN.NET - Web Making ศูนย์กลางข้อมูลเพื่อคนทำเว็บ";

} else {

echo "เว็บไซต์อะไรไม่รู้ไม่รู้จัก";

}
?>
จากตัวอย่างการใช้งาน else จะสังเกตได้ว่านิพจน์มีค่าเป็นเท็จเพราะ $url มีค่าเท่ากับ "http://www.swry.ac.th" จึงทำให้นิพจน์เป็นเท็จ ดังนั้นโปรแกรมจึงไปทำการประมวลผลโด้ดที่อยู่หลัง else ก็จะแสดงข้อความ "เว็บไซต์อะไรไม่รู้ไม่รู้จัก"


เงือนไข elseif
ใช้ในกรณีที่นิพจน์มีมากกว่า 1 นิพจน์ขึ้นไป เราจะใช้ elseif เข้ามาตรวจสอบนิพจน์นั้นๆ ดูรูปแบบการใช้งานข้างล่าง

รูปแบบ elseif
if ( นิพจน์ 1 ) {

        //โค้ดที่ใช้ในการประมวลผล
        //หลังตรวจนิพจน์ 1 แล้ว มีค่าเท่ากับ true

} elseif ( นิพจน์ 2 ) {

        //โค้ดที่ใช้ในการประมวลผล
        //หลังตรวจนิพจน์ 2 แล้ว มีค่าเท่ากับ true

} else {

        //โค้ดที่ใช้ในการประมวลผล ในกรณีนิพจน์ทั้งหมดมีค่าเท่ากับ false

}

ตัวอย่างการใช้งาน elseif

โค๊ด:
<?
$url = "http://www.swry.ac.th";
if ($url == "http://www.datatan.net") {

echo "เว็บไซต์ DATATAN.NET - Web Making ศูนย์กลางข้อมูลเพื่อคนทำเว็บ";

} elseif ($url == "http://www.swry.ac.th") {

echo "เว็บไซต์ โรงเรียนเฉลิมพระเกียรติสมเด็จพระศรีนครินทร์ ระยอง";

} else {

echo "เว็บไซต์อะไรไม่รู้ไม่รู้จัก";

}
?>
2.switch case
การทำงานของ switch ในภาษา C นั้นตัว case นั้นต้องเป็นค่า constant หรือค่าคงที่ครับ ดังนั้นการเขียนจะไม่สามารถเขียนได้สั้นอย่างโค๊ดด้านบนครับ ซึ่งถ้าใช้ switch case นั้นจะเป็นประมาณนี้ครับ
main(){
    int num;
    scanf("%d", &num);
   
    switch(num){
       case 110:
       case 109:
       case 108:
       ....   //ยาวไปเรื่อยๆครับ
       case 101:
       {
          printf("Upper");
       }
       break;

       case 100:
       case 99:
       case 98:
       ...   //ยาวไปเรื่อยๆครับ
       case 51:
       {
          printf("High");
       }
       break;

       default:{
          printf("Low");
       }
       break;
    }
}

ประมาณนี้ล่ะครับ แต่จะมีปัญหาเรื่องตัว default เนื่องจาก default นั้นจะ handle ในทุกกรณีที่ไม่ตรงกับค่าใดๆใน case ก่อนหนัาทั้งหมด ดังนั้นจะมีปัญหาเรื่อง ถ้าค่าในส่วนของ Upper นั้นไม่ครอบคลุมทั้งหมดก็จะมาเข้า default ทั้งหมดครับ
ซึ่งถ้า condition ของโปรแกรมเป็นดังตัวอย่างที่คุณให้มานั้นใช้ if else นั้นเหมาะสมที่สุดแล้วครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น