คำสั่งเลือกเงื่อนไข

ในเรียนนี้ คุณจะได้เรียนรู้เกี่ยวกับคำสั่งเงื่อนไขในภาษา C#

คำสั่งเงื่อนไข (selection statement) เป็นคำสั่งที่ให้คุณสามารถควบคุมโปรแกรมให้ทำงานตามต้องการ ตามเงื่อนไขที่กำหนดให้

คำสั่ง If

คำสั่ง if เป็นคำสั่งเลือกพื้นฐานในการเขียนโปรแกรมในทุกๆ ภาษา มันถูกใช้เพื่อควบคุมโปรแกรมเพื่อให้คำงานในบล็อกของ if ถ้าตรงกับเงื่อนไขที่กำหนดไว้ โดยคำสั่ง if มีรูปแบบการใช้งานดังนี้

if (expression) {
    // statements
}

expression คือเงื่อนไขที่คุณจะต้องกำหนดเพื่อที่จะให้โปรแกรมทำงาน ถ้า expression เป็น true โปรแกรมจะทำงานในบล็อกคำสั่งของ If ที่ล้อมรอบด้วย { และ } ถ้า expression เป็น false มันจะถูกเพิกเฉยและไปทำงานบรรทัดต่อไปหลังบล็อคของ If

string name = "Mateo";
if (name == "Mateo") {
    Console.WriteLine("Welcome, Mateo!");
}

จากตัวอย่างด้านบน เราได้ใช้คำสั่ง if เพื่อตรวจสอบชื่อในตัวแปร name ว่าถ้ามันเท่ากับ "Mateo" จะทำให้ expression เป็น true และจะแสดงคำว่า "Welcome, Mateo!" ออกทางหน้าจอคอมพิวเตอร์ของคุณ คุณสามารถลองใช้กับชื่ออื่นๆ ได้

Note: การเปรียบเทียบสตริงในภาษา C# นั้นเป็นแบบ case-sensitive นั่นหมายความว่า "Mateo" และ "mateo" นั้นเป็นคนละค่ากัน

คำสั่ง If-else if

คุณสามารถใช้คำสั่ง else if สำหรับเงื่อนไขที่สองและใช้คำสั่ง else สำหรับเงื่อนไขในกรณีที่ไม่ตรงกับเงื่อนไขใดๆ ก่อนหน้าเลย

มาดูตัวอย่างกับโปรแกรมตรวจสอบเกรดโดยการใช้คำสั่ง if-else

using System;

class SelectionStatement
{
    static void Main(string[] args)
    {
        int score;

        Console.Write("Enter your score: ");
        int.TryParse(Console.ReadLine(), out score);

        if(score >= 80) {
            Console.WriteLine("Your grade is A");
        }
        else if(score >= 70) {
            Console.WriteLine("Your grade is B");
        }
        else if (score >= 60)
        {
            Console.WriteLine("Your grade is C");
        }
        else if (score >= 50)
        {
            Console.WriteLine("Your grade is D");
        }
        else {
            Console.WriteLine("You fall");
        }
    }
}

ในตัวอย่าง เป็นตัวแปรสำหรับการตรวจสอบเกรดโดยการใส่คำแนนลองไปในตัวแปร score และโปรแกรจะนำไปคำนวณเกรดที่ได้ คือถ้าคะแนนตั้งแต่ 80 ขึ้นไปจะได้เกรด A, 70 จะได้เกรด b, 60 เกรดจะได้ C ไปเรื่อยๆ และในคำสั่ง else ไม่ตรงกับเงื่อนไขใดๆ ก่อนหน้าเลย และคุณจะสอบตก

และนี่เป็นผลลัพธ์เมื่อเราได้ลองใส่ค่าคะแนนต่างๆ ลงบนโปรแกรม

Enter your score: 82
Your grade is A
Enter your score: 70
Your grade is B
Enter your score: 49
You fall

มาดูตัวอย่างเพิ่มเติม กับโปรแกรมแปลงอุณหภูมิโดยการใช้คำสั่ง if else

using System;

class SelectionStatement
{
    static void Main(string[] args)
    {
        int mode;
        float temperature;

        Console.Write("1: convert F to C\n2: convert C to F\n");
        Console.Write("Enter 1 or 2: ");
        int.TryParse(Console.ReadLine(), out mode);

        Console.Write("Enter temperature to be converted: ");
        float.TryParse(Console.ReadLine(), out temperature);

        if (mode == 1) {
            float c = (temperature - 32) * (5.0f / 9.0f);
            Console.WriteLine("Converted {0} Fahrenheit degree to {1} Celsius degree", temperature, c);
        } 
        else if (mode == 2) {
            float f = temperature * 1.8f + 32;
            Console.WriteLine("Converted {0} Celsius degree to {1} Fahrenheit degree", temperature, f);
        } 
        else {
            Console.WriteLine("You've entered wrong mode.");
        }
    }
}

ในตัวอย่างข้างบนเป็นโปรแกรมสำหรับแปลงอุณภูมิจากองศาเซลเซียสเป็นองศาฟาเรนไฮต์ และในทางกลับกัน มันมีสองตัวแปรในโปรแกรม ตัวแปร mode เพื่อบ่งบอกว่าคุณต้องการแปลงไปเป็นแบบไหน ยกตัวอย่างเช่น: ถ้าคุณใส่ค่า 1 มันหมายความว่าแปลงจาก องศาฟาเรนไฮต์ ไปเป็น องศาเซลเซียส ใส่ 2 เป็นการแปลงจาก องศาเซลเซียส ไปเป็นองศาฟาเรนไฮต์ และถ้าเป็นค่าอื่นโปรแกรมจะไม่ทำงาน ตัวแปร temperature เป็นค่านำเข้าของอุณหภูมิที่ต้องการแปลง

คำสั่ง Switch case

คำสั่งการเลือกอีกแบบหนึ่งคือคำสั่ง switch case ซึ่งมันทำงานคล้ายกับคำสั่ง if แต่มันใช้สำหรับเปรียบเทียบกับค่าคงที่เท่านั้น ซึ่งมีรูปแบบการใช้งานดังนี้:

switch(inputValue) {
    case constant1:
        // statement for case 1
        break;
    case constant2:
        // statement for case 1
        break;
    default:
        //statement for default case
        break;
}

โดย inputValue เป็นค่าที่ต้องการนำไปเปรียบเทียบกับค่าคงที่ในแต่ละกรณี (case) ในบล็อกของ switch ที่เรียงลำดับกัน เมื่อเงื่อนไขตรงกับ case ใดๆ โปรแกรมจะทำงานข้างของคำสั่ง case จนกว่ามันจะพบคำสั่ง break เพื่อที่จะออกจากบล็อกของ switch

ข้างล่างนี้เป็นตัวอย่างการใช้งาน switch-case

using System;

class SwitchCase
{
    static void Main(string[] args)
    {
        int n = 1;
        switch(n) {
            case 1:
                Console.WriteLine("Case 1");
                break;
            case 2:
                Console.WriteLine("Case 2");
                break;
            default:
                Console.WriteLine("Default case");
                break;
        }
    }
}

ในตัวอย่าง เราได้ส่งตัวแปร n เป็นอากิวเมนต์สำหรับ switch และมันมีประเภทข้อมูลเป็นแบบ Integer สังเกตุกว่าเงื่อนใน case ต่างๆ ก็ต้องเป็น Integer ด้วยเช่นกัน

ในบทนี้ คุณได้เรียนรู้เกี่ยวกับการควบคุมโปรแกรมโดยใช้คำสั่งเลือกจากเงื่อนไขในภาษา C#