Kodax

الشروط if/else — أساسيات C++

الشروط: if و else و switch

if و else if و else

int score = 75;
if (score >= 90) {
    cout << "ممتاز";
} else if (score >= 60) {
    cout << "ناجح";
} else {
    cout << "راسب";
}

- الشرط بين قوسين دائماً.

- الأقواس المعقوفة {} تحدد الكتلة. بدونها يتبع الشرط سطراً واحداً فقط، وهذا مصدر أخطاء شهير؛ استخدمها دائماً.

- تُفحص الشروط بالترتيب، ويُنفَّذ أول شرط صحيح فقط.

المقارنة والمنطق

== != < > <= >=، و && (و)، || (أو)، ! (ليس).

int age = 20, day = 5;
bool hasLicense = true;
if (age >= 18 && hasLicense) { cout << "يمكنك القيادة"; }
if (day == 5 || day == 6) { cout << "عطلة نهاية الأسبوع"; }

&& و || "تقصّران": إذا كان الطرف الأول من && خاطئاً لا يُفحص الثاني. مفيد لتجنب الأخطاء: if (count != 0 && total / count > 50).

⚠️ = مقابل ==

int x = 0;
if (x = 5) { cout << "يُنفَّذ دائماً"; }   // خطأ منطقي: يُسند 5 لـ x والشرط دائماً صحيح!

C++ تسمح بهذا (بعكس Python)؛ المترجم يعطي تحذيراً فقط. انتبه لها دائماً.

العامل الثلاثي

string status = (age >= 18) ? "بالغ" : "قاصر";

switch

لاختيار مسار حسب قيمة عدد صحيح أو حرف:

int choice = 2;
switch (choice) {
    case 1:
        cout << "إضافة";
        break;
    case 2:
        cout << "حذف";
        break;
    default:
        cout << "خيار غير معروف";
}

- break ضرورية: بدونها يكمل التنفيذ إلى الحالة التالية (fall-through).

- لا يعمل switch مع النصوص (string) أو المدى (case > 50 غير ممكن).

- default تُنفَّذ إذا لم تطابق أي حالة.

تمرين

اكتب برنامج آلة حاسبة: يقرأ رقمين وعاملاً (char: + - * /)، ويستخدم switch، ويرفض القسمة على صفر برسالة واضحة.

#include <iostream>
#include <string>
using namespace std;

int main() {
    // if بسيطة
    int age = 20;
    if (age >= 18) {
        cout << "أنت بالغ" << endl;
    }
    
    // if-else
    int score = 75;
    if (score >= 60) {
        cout << "ناجح ✅" << endl;
    } else {
        cout << "راسب ❌" << endl;
    }
    
    // if-else if-else
    if (score >= 90) {
        cout << "ممتاز" << endl;
    } else if (score >= 80) {
        cout << "جيد جداً" << endl;
    } else if (score >= 70) {
        cout << "جيد" << endl;
    } else if (score >= 60) {
        cout << "مقبول" << endl;
    } else {
        cout << "راسب" << endl;
    }
    
    // العوامل المنطقية
    bool hasLicense = true;
    if (age >= 18 && hasLicense) {
        cout << "يمكنك القيادة 🚗" << endl;
    }
    
    // Ternary operator
    string status = (age >= 18) ? "بالغ" : "قاصر";
    cout << status << endl;
    
    // switch
    int day = 3;
    switch (day) {
        case 1:
            cout << "السبت" << endl;
            break;
        case 2:
            cout << "الأحد" << endl;
            break;
        case 3:
            cout << "الإثنين" << endl;
            break;
        default:
            cout << "يوم غير معروف" << endl;
    }
    
    // switch مع char
    char grade = 'A';
    switch (grade) {
        case 'A':
            cout << "ممتاز!" << endl;
            break;
        case 'B':
            cout << "جيد جداً" << endl;
            break;
        case 'C':
            cout << "جيد" << endl;
            break;
        default:
            cout << "تحتاج تحسين" << endl;
    }
    
    return 0;
}
اختبر فهمك