19.คำสั่ง If else, If else if

          รูปแบบของคำสั่ง if – else เป็นดังนี้

คำสั่ง If else

คำสั่ง If else นั้นคล้ายกับคำสั่ง if คำสั่ง if else นั้นใช้จะใช้สำหรับการสร้างเงื่อนไขแบบหลายทางเลือก และมันจะต้องเริ่มต้นด้วยคำสั่ง if เสมอ และนอกจากนี้ยังมีคำสั่ง else clause เพื่อทำในเงื่อนไขที่นอกเหลือจากเงื่อนไขอื่นทั้งหมด มาดูตัวอย่าง
#include <iostream>

using namespace std;

int main()
{
    int n = -1;
    if (n < 0)
    {
        cout << "Negative number.";
    }
    else if (n > 0)
    {
        cout << "Positive number.";
    }
    else
    {
        cout << "Zero number";
    }
    return 0;
}
ในตัวอย่าง คำสั่ง if สามารถมีเงื่อนได้หลายอันโดยการใช้ else if สำหรับสร้างเงื่อนไขที่สองเป็นต้นไป และในเงื่อนไขสุดท้ายคือ else ซึ่งมันจะทำงานเมื่อไม่ตรงกับเงื่อนไขใดๆ ก่อนหน้า ในโค้ด เรามีตัวแปร n ซึ่งมีข้อมูลเป็นแบบ Integer โปรแกรมของเรานั้นจะตรวจสอบว่า n เป็นจำนวนเต็มบวก เต็มลบ หรือศูนย์
มากไปกว่านั้น เราสามารถมีได้หลายเงื่อนไขย่อยๆ โดยการใช้ตัวดำเนินการตรรกะสำหรับการเชื่อม Expression เข้าด้วยกัน
#include <iostream>

using namespace std;

int main()
{
    int a = 12;
    int b = 5;
    if (a > 10 && b % 2 == 0)
    {
        cout << "a is greater than 10 and b is even number.";
    }
    else
    {
        cout << "Other condition";
    }
    return 0;
}
ในตัวอย่างนั้นใช้หลายเงื่อนไขและผลลัพธ์ของโปรแกรมจะเป็น "Other condition" เพราะว่า a นั้นมากกว่า 10 แต่ b นั้นไม่เป็นจำนวนคู่ คุณสามารถเพิ่มเงื่อนไขได้อีกตามที่คุณต้องการ

ตัวอย่างการใช้งานคำสั่งเลือกเงื่อนไขในภาษา C++


หลังจากคุณได้รู้จักกับคำสั่งควบคุมแบบเลือกเงื่อนไขในแบบต่างๆ แล้ว เพื่อให้คุณเข้าใจมากขึ้น ต่อไปจะเป็นตัวอย่างของโปรแกรมคำนวณเกรดจากคะแนน โดยเราจะใช้คำสั่งทั้งหมดที่คุณเพิ่งได้เรียนรู้มา เช่น คำสั่ง if else-if และ else
#include <iostream>

using namespace std;

int main()
{
    int score = 0;
    string name;
    char grade;

    cout << "Enter you name: ";
    cin >> name;
    cout << "Enter your score (0 - 100): ";
    cin >> score;

    if (score >= 0 && score <= 100)
    {

        if (score >= 80)
        {
            grade = 'S';
        }
        else if (score >= 70)
        {
            grade = 'A';
        }
        else if (score >= 60)
        {
            grade = 'B';
        }
        else
        {
            grade = 'C';
        }

        cout << "Hello " << name << endl;
        cout << "You got grade " << grade << endl;

    }
    else
    {
        cout << name << ", you entered an invalid score." << endl;
        cout << "Please try again." << endl;
    }

    return 0;
}
ในตัวอย่าง เป็นโปรแกรมในการคำนวณเกรดที่ได้รับจากคะแนน โดยโปรแกรมจะถามชื่อและคะแนนของผู้ใช้และรับค่านั้นมาทางคีย์บอร์ด โปรแกรมของเราจะทำการคำนวณเกรดและแจ้งให้ทราบ ในส่วนแรกของโปรแกรมนั้นเป็นการรับชื่อและคะแนนมาเก็บไว้ในตัวแปร name และ score ตามลำดับ
if (score >= 0 && score <= 100)
{

    ...

}
else
{
    cout << name << ", you entered an invalid score." << endl;
    cout << "Please try again." << endl;
}
ในการทำงานของโปรแกรม เราได้ทำการตรวจสอบคะแนนด้วยคำสั่ง if ถ้าหากคะแนนนั้นอยู่ระหว่าง 0 ถึง 100 เราจะทำการคำนวณเกรด และถ้าหากไม่ใช้โปรแกรมจะทำงานในบล็อคของคำสั่ง else และบอกว่ากรอกคะแนนไม่ถูกต้อง
if (score >= 80)
{
    grade = 'S';
}
else if (score >= 70)
{
    grade = 'A';
}
else if (score >= 60)
{
    grade = 'B';
}
else
{
    grade = 'C';
}
การใช้งานคำสั่ง if นั้นสามารถซ้อนกันได้ ดังนั้นในคำสั่ง if ภายในจะทำงานก็ต่อเมื่อเงื่อนไขของ if บล็อคนอกเป็นจริง คือคะแนนที่กรอกเข้ามานั้นอยู่ระหว่าง 0 ถึง 100 เราได้สร้างเงื่อนไขแบบหลายทางเลือกสำหรับตรวจสอบเกรดด้วยคำสั่ง else if ซึ่งมีสามเงื่อนไข และในคำสั่ง else นั้นจะทำงานในกรณีที่โปรแกรมไม่ตรงกับทั้งสามเงื่อนไขก่อนหน้าเลย
Enter you name: Mateo
Enter your score (0 - 100): 85
Hello Mateo
You got grade S
นี่เป็นผลลัพธ์การทำงานของโปรแกรม จะเห็นว่าคะแนน 85 ที่กรอกเข้ามานั้นทำให้เงื่อนไข if ครั้งแรกเป็นจริง และทำงานภายในคำสั่ง If ภายในก็ตรงเป็นเงื่อนไขแรก ทำให้ได้เกรด S
Enter you name: Mateo
Enter your score (0 - 100): 105
Mateo, you entered an invalid score.
Please try again.
หลังจากนั้นเราได้รันโปรแกรมอีกครั้ง และกรอกคะแนนเป็น 105 ทำให้เงื่อนไขในคำสั่ง If ด้านนอกไม่เป็นจริง และโปรแกรมทำงานในบล็อคของคำสั่ง else

การใช้คำสั่ง if ... else ในการตรวจสอบเงื่อนไขการทำงานเบื้องต้น

ลอกมาจาก
วิธีการเปรียบเทียบนิพจน์ที่ให้ค่าเป็นจริงหรือเท็จแบบต่าง ๆ เช่น เปรียบเทียบว่าค่าสองค่ามีค่าเท่ากัน แตกต่างกัน น้อยกว่า มากกว่า เป็นต้น การใช้ตัวดำเนินการตรรกะเพื่อเปรียบเทียบเงื่อนไขแบบ and และ or




// if ... else



#include <iostream>

using namespace std;

void greeting(string lang) {
    if (lang == "th") {
        cout << "sawadee" << endl;
    } else if (lang == "cn") {
        cout << "ni hao" << endl;
    } else if (lang == "en") {
        cout << "hello" << endl;
    } else if (lang == "mm") {
        cout << "min gala ba" << endl;
    } else {
        cout << ":-)" << endl;
    }
    cout << "-------------" << endl;
}

int main2() {
    // ==, !=, >, <, >=, <=, && (and), || (or), ! (not)

    int age = 19;
    if (age == 18) {
        cout << "You're 18." << endl;
        cout << ":-)";
    } else {
        cout << "You're not 18." << endl;
    }
//    if (age == 18)
//        cout << "You're 18.";

    int n = 10;
    if (n != 10) {
        cout << "n is not equal to 10." << endl;
    }
    string day = "mon";
    if (day == "mon") {
    }
    if (day != "sun") {
    }
    int height = 110;
    if (age < 10 && height <= 100) {
    cout << "free ticket" << endl;
    } else {
    cout << "25 baht." << endl;
    }
    if ((age < 10 && height <= 100) || age >= 60) {
    cout << "free ticket";

    }
    return 0;
}
int main() {
greeting("th");
return 0;
}


          คำสั่ง if – else เชิงซ้อน คือ คำสั่ง if – else ที่มีคำสั่ง if – else ซ้อนอยู่ในส่วน else ประโยคเงื่อนไขในลักษณะนี้ อาจสร้างความสับสนแก่ผู้เขียนโปรแกรมได้ จึงต้องมีความระมัดระวัง
          รูปแบบของคำสั่ง if – else เชิงซ้อน เป็นดังนี้

Picture
 คำสั่ง if – else เชิงซ้อนเป็นรูปแบบการทำงานแบบหลายทางเลือก โดยจะมีคำสั่งเพียงเดียวเท่านั้นที่จะถูกเลือกให้ประมวลผล ขึ้นอยู่กับว่า เงื่อนไขทางเลือก ใดเป็นจริง และในกรณีที่ไม่มีเงื่อนไขทางเลือก ใดเป็นจริงเลย คำสั่งn จะถูกประมวลผล
          คำสั่ง1คำสั่ง2คำสั่ง3, …, คำสั่งn อาจเป็นคำสั่งอย่างง่ายหรือคำสั่งเชิงประกอบ
 Picture
ถ้า เงื่อนไขทางเลือก1 และ เงื่อนไขทางเลือก2 มีค่า จริง แล้วโปรแกรมจะประมวลผล คำสั่ง1 ก่อนที่จะประมวลผล คำสั่ง3
          ถ้า เงื่อนไขทางเลือก1 มีค่า จริง ขณะที่ เงื่อนไขทางเลือก2 มีค่าเท็จ แล้วโปรแกรมจะประมวลผล คำสั่ง2 ก่อนที่จะประมวลผล คำสั่ง3
          และถ้า เงื่อนไขทางเลือก1 มีค่า เท็จ แล้วโปรแกรมจะประมวลผล คำสั่ง3 เพียงคำสั่งเดียวเท่านั้น
          นั่นคือ ในคำสั่ง if – else ( หรือคำสั่ง if – else เชิงซ้อน ) else จะถูกจับคู่กับ if ก่อนหน้าที่อยู่ใกล้ที่สุดเสมอ ซึ่งในที่นี้คือ if ( เงื่อนไขทางเลือก2 )
          ดังนั้น ในกรณีที่ต้องการให้ คำสั่ง2 ถูกประมวลผล เงื่อนไขทางเลือก1 มีค่า เท็จ ก่อนที่จะประมวลผล คำสั่ง3 จะต้องเพิ่มเครื่องหมาย { และ } ตามรูปแบบด้านล่าง และในที่นี้ if ( เงื่อนไขทางเลือก2 ) จัดเป็นคำสั่ง if ที่ซ้อนอยู่ในคำสั่ง if – else ของ if ( เงื่อนไขทางเลือก1 )
Picture



คลิปสอนการใช้คำสั่ง if else ลอกมาจากhttps://www.youtube.com/watch?v=jK83lln_T1k

ลอกมาจากhttps://www.youtube.com/watch?v=MTjDwDHbcv0