التفرّع: if-else و ternary و switch-case
اختر بين سلاسل if-else وتعبيرات ternary وعبارات switch لتنفيذ تفرّع واضح.
التفرّع: if-else و ternary و switch-case درس مجاني في C++ Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C++ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C++ Academy 4 دروس في المجموع.
تعليمة if
هذا هو الشرط الأساسي. يُنفَّذ الجسم عندما يكون الشرط صحيحًا. الأقواس المعقوفة اختيارية عند وجود تعليمة واحدة، لكنها موصى بها دائمًا.
int score = 85;
if (score >= 60) {
std::cout << "Pass\n";
}سلاسل if-else
اختبر البدائل باستخدام else if ثم else نهائية. يُنفَّذ أول فرع يكون شرطه صحيحًا.
if (score >= 90) std::cout << "A";
else if (score >= 80) std::cout << "B";
else if (score >= 70) std::cout << "C";
else std::cout << "F";الشروط المنطقية
يعمل أي تعبير يمكن تحويله إلى bool. تُقيَّم المؤشرات على أنها false عندما تكون null، وتُقيَّم الأعداد الصحيحة على أنها false عندما تساوي الصفر. كن صريحًا لزيادة الوضوح.
التهيئة داخل if (C++17)
يتيح لك C++17 التصريح بمتغير داخل if. ويكون نطاق المتغير محصورًا في جسم if-else.
if (auto it = map.find(key); it != map.end()) {
std::cout << it->second;
}المعامل الثلاثي
يعيد condition ? a : b إحدى قيمتين. وهو مناسب للاختيارات البسيطة، لكنه سيئ عند استخدام منطق متداخل.
int max = (a > b) ? a : b;
std::string msg = (n == 1) ? "item" : "items";المعاملات الثلاثية المتداخلة: تجنبها
يصعب قراءة المعاملات الثلاثية المتداخلة. استخدم if-else أو أعد هيكلة الشيفرة داخل دالة مساعدة بدلًا من ذلك.
// Hard to read
auto label = (n < 0) ? "neg" : (n == 0) ? "zero" : "pos";
// Clearer
std::string label;
if (n < 0) label = "neg";
else if (n == 0) label = "zero";
else label = "pos";تعليمة switch
قارن قيمة واحدة بعدة ثوابت. يحتاج كل فرع إلى break لتجنب الانتقال إلى الحالة التالية.
switch (day) {
case 1: std::cout << "Mon"; break;
case 2: std::cout << "Tue"; break;
default: std::cout << "?"; break;
}الانتقال المقصود بين الحالات
جمّع الحالات المتعددة التي تشترك في الشيفرة نفسها. أضاف C++17 الوسم [[fallthrough]] لإبلاغ المصرّف بذلك.
switch (c) {
case 'a': case 'e': case 'i': case 'o': case 'u':
std::cout << "vowel"; break;
default:
std::cout << "consonant";
}قيود switch
تعمل switch فقط مع أنواع الأعداد الصحيحة والتعدادات. بالنسبة إلى السلاسل النصية، استخدم if-else أو خريطة تجزئة.
المهيئ في switch (C++17)
على غرار if، يمكنك التصريح بمتغير داخل ترويسة switch.
switch (auto value = compute(); value) {
case 0: ...
default: ...
}النمط: خريطة البحث
بالنسبة إلى الفروع التي تستخدم سلاسل نصية كمفاتيح، قد تكون std::unordered_map أوضح من سلسلة if-else.
std::unordered_map<std::string, std::function<void()>> commands = {
{"start", []{ start(); }},
{"stop", []{ stop(); }}
};
if (auto it = commands.find(cmd); it != commands.end())
it->second();تحقق سريع
ماذا يحدث إذا افتقرت إحدى حالات case في switch إلى break وكانت الحالة التالية غير فارغة؟
مراجعة
استخدم if-else للتفرع العام، والمعامل الثلاثي للاختيارات القصيرة بين القيم، وswitch عند مقارنة قيمة واحدة بعدة ثوابت صحيحة. تنظّم تعليمات التهيئة في C++17 نطاق المتغيرات.
الأسئلة الشائعة
هل درس «التفرّع: if-else و ternary و switch-case» مجاني؟
نعم — نص درس «التفرّع: if-else و ternary و switch-case» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C++ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C++ Academy 4 دروس في المجموع.
ماذا ستتعلم في «التفرّع: if-else و ternary و switch-case»؟
اختر بين سلاسل if-else وتعبيرات ternary وعبارات switch لتنفيذ تفرّع واضح. تتمرن على C++ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C++ Academy؟
لا تُشترط خبرة سابقة. C++ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «التفرّع: if-else و ternary و switch-case»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C++ Academy هذا؟
نعم. كل درس في C++ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- التفرّع: if-else و ternary و switch-case
- أنماط الحلقات: for وwhile وdo-while
- حلقة for المعتمدة على النطاق مع الحاويات
- العودة المبكرة وbreak وcontinue وgoto