الدرس الثالث عشر: موظف البيروقراطي أم موزع المهام السريع؟
تخيل أن برنامجك هو حارس أمن في منشأة فائقة التطور. يصل شخص ما. هل تبدأ في طرح سلسلة طويلة ومتعرجة من الأسئلة عليه؟ “هل أنت موظف؟ لا؟ حسنًا، هل أنت زائر؟ نعم؟ هل لديك موعد؟” أم يمكنك ببساطة مسح بطاقة هويته ضوئيًا ومعرفة الطابق الذي ينتمي إليه على الفور؟ في البرمجة، نواجه هذا الاختيار الدقيق كل يوم. معظم المطورين يتعلمون المسار الطويل والمتعرج فقط. اليوم، ستتعلم استخدام “ماسح الهوية” – جملة switch الأنيقة والنظيفة والفائقة السرعة، ومتى يظل ابن عمها البيروقراطي، جملة if المتداخلة، هو الأداة المناسبة للمهمة.
ماذا ستتقن في هذا الدرس؟
بناء الشروط المعقدة باستخدام الجمل الشرطية المتداخلة (Nested If).
فهم متى تصبح الجمل المتداخلة غير عملية وصعبة القراءة.
إتقان استخدام جملة switch كبديل أنيق ومنظم.
فهم الدور الحاسم للكلمات المفتاحية case, break, و default.
التمييز بوضوح بين الحالات التي تستدعي استخدام if-else وتلك التي تستدعي switch.
الفصل الأول: مسار البيروقراطي (الجمل الشرطية المتداخلة)
1
عندما يحتاج كل قرار إلى قرار آخر
في بعض الأحيان، لا يكفي شرط واحد. تحتاج إلى التحقق من شيء ما، وإذا كان صحيحًا، فأنت بحاجة إلى التحقق من شيء آخر. هذا هو جوهر الجمل الشرطية المتداخلة (Nested If Statements). إنها مثل موظف دقيق يتبع سلسلة من الإجراءات خطوة بخطوة.
لنفترض أننا نصمم نظام دخول: يجب أن يكون المستخدم مسجلاً، وإذا كان كذلك، يجب أن يكون عمره فوق 18 عامًا.
الجمل الشرطية المتداخلة (Nested If)
هي جملة if أو if-else موجودة بالكامل داخل كتلة (block) جملة if أو else أخرى. إنها تسمح لك بإنشاء منطق متفرع ومعقد.
شاهد كيف يبني “البيروقراطي” منطقه:
اضغط على "تشغيل" لعرض النتيجة هنا.
رسائل النظام ستظهر هنا.
جاهز
السطر 1, العمود 1
خطر هرم الهلاك (Pyramid of Doom)
الجمل المتداخلة قوية، ولكن إذا زاد عمقها (if داخل if داخل if…)، فإن الكود يصبح صعب القراءة والصيانة بشكل كبير، ويشبه هرمًا مائلاً على جانبه. هذا هو الوقت الذي نبحث فيه عن بديل أفضل.
الفصل الثاني: مكتب موزع المهام (التعرف على Switch)
2
اختيار وجهة واحدة من قائمة
الآن، تخيل سيناريو مختلفًا. لديك متغير واحد، وتريد تنفيذ إجراءات مختلفة بناءً على قيمته المحددة. على سبيل المثال، لديك رقم يمثل يومًا في الأسبوع (1-7)، وتريد طباعة اسم اليوم. يمكنك استخدام سبع جمل if-else if… أو يمكنك الذهاب إلى “مكتب موزع المهام” السريع والمنظم: جملة switch.
جملة switch لا تطرح سلسلة من الأسئلة. إنها تأخذ قيمة واحدة (مثل بطاقة الهوية) وتقارنها بقائمة من الحالات (Cases) المحتملة، ثم تقفز مباشرة إلى الحالة المطابقة.
اضغط على "تشغيل" لعرض النتيجة هنا.
رسائل النظام ستظهر هنا.
جاهز
السطر 1, العمود 1
لاحظ كيف أن هذا الكود أنظف وأسهل في القراءة من سلسلة طويلة من جمل if-else if.
الفصل الثالث: قواعد عمل الموزع (تشريح Switch)
3
فهم Case و Break و Default
لكي تعمل جملة switch بشكل صحيح، يجب أن نفهم قواعدها الثلاث الأساسية:
case (الحالة): كل case هو وجهة محتملة. أنت تضع قيمة ثابتة بعدها (مثل case 1: أو case “Admin”:). switch يقارن متغيره بقيم الـ case هذه.
break (إيقاف): هذه هي أهم كلمة مفتاحية هنا. تخيل أنك دخلت مبنى متعدد الأقسام. break تقول: “لقد وصلت إلى القسم الصحيح، مهمتك هنا انتهت، يمكنك الآن مغادرة المبنى”. بدون break، سيستمر الكود في “السقوط” (Fall-through) وتنفيذ كل الأكواد في الحالات التالية، وهو خطأ شائع ومدمر.
default (الافتراضي): هذا هو قسم “لم أجد وجهتك”. إذا لم تتطابق قيمة المتغير مع أي case، فسيتم تنفيذ الكود الموجود في قسم default. إنه بمثابة جملة else النهائية.
شاهد ماذا يحدث عند إزالة break:
اضغط على "تشغيل" لعرض النتيجة هنا.
رسائل النظام ستظهر هنا.
جاهز
السطر 1, العمود 1
الفصل الرابع: اختيار الأداة المناسبة
4
متى تستخدم البيروقراطي ومتى تستخدم الموزع؟
لقد رأيت الآن قوتي if-else و switch. القرار النهائي يعتمد على طبيعة المشكلة:
استخدم مسار البيروقراطي (if-else if-else):
عندما تحتاج إلى التحقق من نطاقات (e.g., score > 90).
عندما تعتمد الشروط على متغيرات متعددة.
عندما تكون الشروط معقدة وتتضمن معاملات منطقية ( && , || ).
استخدم مكتب الموزع (switch):
عندما تقارن متغيرًا واحدًا بقائمة من القيم الثابتة والمحددة.
عندما يكون لديك الكثير من الخيارات (أكثر من 3 أو 4) مما يجعل if-else if طويلة ومزدحمة.
عندما تكون سهولة القراءة هي الأولوية القصوى لاختيار مسار واحد من بين عدة مسارات.
لماذا تعتبر كلمة break ضرورية داخل جملة switch؟
التفسير:
بدون break، سيستمر تنفيذ الكود من الحالة المطابقة إلى جميع الحالات التي تليها (fall-through)، مما يؤدي إلى سلوك غير متوقع ونتائج خاطئة في معظم الحالات.
خلاصة رحلة اليوم
لقد تجاوزت اليوم مجرد كتابة الشروط البسيطة. تعلمت كيف تبني مسارات منطقية معقدة باستخدام الجمل المتداخلة، مثل بيروقراطي دقيق. والأهم من ذلك، لقد اكتشفت switch، موزع المهام الفعال الذي ينظم الكود ويجعله نظيفًا عندما تتعامل مع قائمة من الخيارات المحددة. لقد فهمت أن القوة الحقيقية للمبرمج لا تكمن في معرفة أداة واحدة، بل في معرفة الأداة المناسبة للمهمة المناسبة.
السيطرة على التكرار
لقد أتقنت الآن التحكم في مسار برنامجك بناءً على الشروط. ولكن ماذا لو أردت تنفيذ نفس الأمر 100 مرة؟ أو الاستمرار في سؤال المستخدم عن مدخلات حتى يكتب كلمة “خروج”؟ في الدرس القادم، سندخل عالم الحلقات التكرارية (Loops)، الأداة التي تمنح برامجك القدرة على أداء المهام المتكررة بكفاءة وقوة.