الشروط 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;
}اختبر فهمك