Module 4 – Control Flow

පාලන ප්‍රවාහය (If / Else)

1. Control Flow යනු කුමක්ද?

Control Flow යනු අපගේ වැඩසටහනේ කේතය ක්‍රියාත්මක වන අනුපිළිවෙලයි. සාමාන්‍යයෙන්, කේතය ඉහළ සිට පහළට, එකින් එක පේළිය ක්‍රියාත්මක වේ. නමුත් සමහර විට, යම් යම් කොන්දේසි මත පදනම්ව, අපට එම අනුපිළිවෙල වෙනස් කිරීමට අවශ්‍ය වේ. ඒ සඳහා අපි if, else if, else, සහ switch වැනි ප්‍රකාශන භාවිතා කරමු.


2. `if` ප්‍රකාශය

යම්කිසි කොන්දේසියක් සත්‍ය (true) නම් පමණක් කේත කොටසක් ක්‍රියාත්මක කරවීමට if ප්‍රකාශය භාවිතා කරයි. කොන්දේසිය අසත්‍ය (false) නම්, එම කේත කොටස මඟ හැර යයි.


3. `if...else` ප්‍රකාශය

කොන්දේසිය සත්‍ය නම් එක් කේත කොටසක් ද, අසත්‍ය නම් තවත් කේත කොටසක් ද ක්‍රියාත්මක කිරීමට if...else භාවිතා කරයි.


4. `if...else if...else` ප්‍රකාශය

කොන්දේසි කිහිපයක් එකින් එක පරීක්ෂා කිරීමට මෙම ක්‍රමය භාවිතා කරයි. C++ පළමු true කොන්දේසිය හමු වූ විට අදාළ කේතය ක්‍රියාත්මක කර, ඉතිරිය මඟ හරියි.


ප්‍රායෝගික උදාහරණ 10ක්

1. අංකයක් 10ට වඩා වැඩි දැයි පරීක්ෂා කිරීම (`if`)
#include <iostream>

int main() {
    int number = 20;
    if (number > 10) {
        std::cout << "The number is greater than 10.";
    }
    return 0;
}
ප්‍රතිඵලය:
The number is greater than 10.
2. ඡන්දය දීමට සුදුසුකම් පරීක්ෂාව (`if...else`)
#include <iostream>

int main() {
    int age = 17;
    if (age >= 18) {
        std::cout << "You are eligible to vote.";
    } else {
        std::cout << "You are not eligible to vote yet.";
    }
    return 0;
}
ප්‍රතිඵලය:
You are not eligible to vote yet.
3. ශ්‍රේණි ගණනය කිරීම (`if...else if...else`)

ලකුණු මත පදනම්ව ශිෂ්‍යයෙකුගේ ශ්‍රේණිය ලබා දෙමු.

#include <iostream>

int main() {
    int score = 85;
    if (score >= 75) {
        std::cout << "Grade: A";
    } else if (score >= 65) {
        std::cout << "Grade: B";
    } else if (score >= 55) {
        std::cout << "Grade: C";
    } else {
        std::cout << "Grade: F";
    }
    return 0;
}
ප්‍රතිඵලය:
Grade: A
4. ධන, ඍණ හෝ ශුන්‍ය දැයි සෙවීම
#include <iostream>

int main() {
    int num = -5;
    if (num > 0) {
        std::cout << "Positive number";
    } else if (num < 0) {
        std::cout << "Negative number";
    } else {
        std::cout << "Zero";
    }
    return 0;
}
ප්‍රතිඵලය:
Negative number
5. විශාලම අංකය සෙවීම
#include <iostream>

int main() {
    int a = 10, b = 20;
    if (a > b) {
        std::cout << "a is greater.";
    } else {
        std::cout << "b is greater or equal.";
    }
    return 0;
}
ප්‍රතිඵලය:
b is greater or equal.
6. Logical Operators සමඟ `if` statement
#include <iostream>

int main() {
    int age = 22;
    bool hasID = true;
    if (age >= 18 && hasID == true) {
        std::cout << "Access Granted.";
    } else {
        std::cout << "Access Denied.";
    }
    return 0;
}
ප්‍රතිඵලය:
Access Granted.
7. Nested `if` statement

එක් `if` ප්‍රකාශයක් තුළ තවත් `if` ප්‍රකාශයක් යෙදීම.

#include <iostream>

int main() {
    int num = 10;
    if (num > 0) {
        std::cout << "Number is positive." << std::endl;
        if (num % 2 == 0) {
            std::cout << "And it is also an even number.";
        }
    }
    return 0;
}
ප්‍රතිඵලය:
Number is positive.
And it is also an even number.
8. පරිශීලකයාගෙන් දත්ත ලබාගෙන පරීක්ෂා කිරීම
#include <iostream>

int main() {
    int number;
    std::cout << "Enter an integer: ";
    std::cin >> number;
    if (number > 100) {
        std::cout << "You entered a number greater than 100.";
    } else {
        std::cout << "You entered a number less than or equal to 100.";
    }
    return 0;
}
ප්‍රතිඵලය (උදාහරණයක්):
Enter an integer: 50
You entered a number less than or equal to 100.
9. Leap Year එකක් දැයි සෙවීම
#include <iostream>

int main() {
    int year = 2024;
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
        std::cout << year << " is a leap year.";
    } else {
        std::cout << year << " is not a leap year.";
    }
    return 0;
}
ප්‍රතිඵලය:
2024 is a leap year.
10. `switch` Statement

එකම variable එක විවිධ අගයන් සමඟ සංසන්දනය කිරීමට `if..else if` වෙනුවට `switch` භාවිතා කළ හැක.

#include <iostream>

int main() {
    int day = 4;
    switch (day) {
        case 6:
            std::cout << "Today is Saturday";
            break;
        case 7:
            std::cout << "Today is Sunday";
            break;
        default:
            std::cout << "Looking forward to the Weekend";
    }
    return 0;
}
ප්‍රතිඵලය:
Looking forward to the Weekend