วันอาทิตย์ที่ 4 กันยายน พ.ศ. 2559

Flow Control 3 - Conditional Statement ด้วย switch case

Conditional Statement

มาต่อกับ Conditional Statement ใน ActionScript 3.0 อีกคำสั่งหนึ่งนั่นก็คือ switch case ครับ


switch case

สำหรับ switch case นั้น จะมีลักษณะคล้ายๆ กับการใช้ if, else if, else if, else if, ..., else ครับ ลองมาดู Syntax กันก่อนนะครับ

switch (condition)
{
    case condition 1:
        statement1;
        break;
    case condition 2:
        statement2;
        break;
    case condition 3:
        statement3;
        break;
    default:
        statement4;
        break;
}

นี่ก็คือ Syntax มาตรฐานของคำสั่ง switch case ครับ ผมทำให้ Keyword เป็นตัวหนาและเอียงเพื่อให้ดูง่ายกัน Keyword ของคำสั่ง switch case ได้แก่ switch, case, default และ break ครับ โปรดสังเกตุด้วยว่าคำสั่ง switch case นั้นจะต้องมีปีกกา { } ครอบด้วยนะครับ และข้างหลัง case condition กับ default จะเป็นโคลอน (:) นะครับ ลองดูตัวอย่างกันครับ

ตัวอย่างที่ 1

// Day is in 1 - 7;
var day:int = 1;
            

switch (day)
{
    case 1:
        trace("Play games");
        break;
    case 2:
        trace("Go to work");
        break;
    case 3:
        trace("Visit customers");
        break;
    case 4:
        trace("Go to hospital");
        break;
    case 5:
        trace("Go to police station");
        break;
    case 6:
        trace("Go to pub");
        break;
    case 7:
        trace("Go travel");
        break;
    default:
        trace("Invalid day.");
        break;

}

Output
Play games 







Recap ตัวอย่างที่ 1
คงจะคุ้นๆ กันนะครับ สำหรับตัวอย่างที่ 1 นี้มันก็คือโปรแกรมเดียวกับตัวอย่างของ if, else if, else ในบทความเรื่อง Conditional Statement ด้วย if else นั่นเองครับ โดยที่เราเปลี่ยนวิธีเขียนจาก if else มาใช้ switch case แทนครับ จะเห็นได้ว่าไม่ว่าคุณจะเขียนโดยใช้คำสั่ง if else หรือ switch case หากคุณเข้าใจตัวคำสั่งและแนวคิดก็สามารถเขียนโปรแกรมให้ทำงานได้เหมือนๆ กันครับ



default

คำสั่ง default นั้นเราจะเขียนหรือไม่เขียนก็ได้ครับไม่ผิด Syntax แต่อย่างใด ขึ้นอยู่กับเราว่าต้องการยังไง หากเขียน default หมายความว่า ถ้าเกิด condition ไม่ตรงกับ case ใดๆ เลยก็จะเข้ามาทำในส่วนของ default ครับ แต่หากไม่เขียน default ไว้แล้ว condition ไม่ตรงกับ case ใดๆ โปรแกรมมันก็จะหลุดจากคำสั่ง switch case ออกมาเลยครับ

ตัวอย่างที่ 2

trace("Playing lucky number!");
var luckyNumber:int = 10;
            

switch (luckyNumber)
{
    case 1:
        trace("Got TV");
        break;
    case 2:
        trace("Got Play Station 3")
        break;

}

Output
Playing lucky number! 




Recap  ตัวอย่างที่ 2
ตัวอย่าง นี้แสดงให้ดูในกรณีที่เราไม่ได้เขียน default ไว้ในชุดคำสั่ง switch case ครับ จะเห็นว่าถ้า luckyNumber ไม่ใช่ 1 หรือ 2 ก็จะไม่มีข้อความอะไรออกมาอีกนอกจาก Playing lucky number! ที่เรา trace ไว้ตั้งแต่ต้นครับ


break 

คำสั่ง break ที่เราเห็นอยู่ในทุก case รวมถึงใน default (ถ้ามี) นั้นมีประโยชน์ของมันอยู่ครับ เพราะถ้าเราไม่เขียนคำสั่ง break ไว้ จะเกิดสิ่งที่เค้าเรียกว่า Fall Through ครับ นั่นก็คือโปรแกรมมันจะรันทะลุ case ลงมาครับ ต้องลองดูตัวอย่างถึงจะเข้าใจครับ

ตัวอย่างที่ 3

trace("Playing lucky number!");
var luckyNumber:int = 1;
            

switch (luckyNumber)
{
    case 1:
        trace("Got TV");
    case 2:
        trace("Got Play Station 3");
    case 3:
        trace("Got Final Fantasy XIII Game");
    default:
        trace("Got tissue");



Output
Playing lucky number!
Got TV
Got Play Station 3
Got Final Fantasy XII Game
Got tissue 



Recap ตัวอย่างที่ 3
ให้เราลองเปลี่ยนค่า luckyNumber เป็นค่าต่างๆ ดู เพื่อสังเกตุ Output ที่ได้ครับ แล้วจะเข้าใจว่า Fall Through มันคืออะไร

ผมลองเปลี่ยนค่า luckyNumber เป็น 3 ให้ดู ณ ที่นี้นะครับ ถ้าเปลี่ยนเป็น 3 จะได้

Output
Playing lucky number!
Got Final Fantasy XIII Game
Got tissue






สรุปของโปรแกรม ตัวอย่างที่ 3 นั้นตีความได้ว่าคนที่ได้รางวัลใหญ่ที่สุดหรือก็คือที่ 1 จะได้รางวัลทุกอย่าง ใครได้รางวัลที่ 2 ก็จะได้รางวัลของที่ 2 ลงมาทุกอย่างยกเว้นของที่ 1 ไล่แบบนี้ไปเรื่อยๆ ซึ่งหากไม่ได้รางวัลเลยก็จะได้กระดาษทิชชู่ปลอบใจ ทั้งนี้คนที่ได้รางวัลใดๆ ไปก็จะได้ทิชชู่ด้วยเช่นกัน

หวังว่าจะเข้าใจคำสั่ง switch case กันนะครับ

แถมท้ายว่า statement ที่อยู่ในแต่ละ case นั้นจะมีกี่บรรทัดก็ได้ครับ ไม่ได้จำเพาะเจาะจงว่าจะต้องมีเพียงบรรทัดเดียวครับ และส่วนตัวผมนั้นผมชอบที่จะเขียนปีกกาเพิ่มไปในแต่ละ case เพื่อให้กวาดสายตาอ่านได้สบายขึ้นครับ เช่น

var action_id:int = 1;
            

switch (action_id)
{
    case 1:
    {
        trace("Patrol");
        break;
    }
    case 2:
    {
        trace("Follow");
        break;
    }
    case 3:
    {
        trace("Attack!");
        trace("Flee!");
        break;
    }

}

อ้อ สุดท้ายของเรื่อง switch case นั้น อยากจะบอกว่า condition ในการ switch นั้นสามารถเป็น int, uint, Number หรือ String ก็ได้นะครับ ไม่ได้จำกัดอยู่แค่ int เท่านั้นครับผม

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

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

Set MongoDB in the windows path environment

  Let’s set MongoDB in the windows environment in just a few steps. Step 1: First download a suitable MongoDB version according to your mach...