السلام عليكم ورحمة الله وبركاته..
درسنا اليوم من الدروس المهمّة
جداً. ليس في الجافا فقط بل في البرمجة بشكل عام. فنحن سنتحدّث اليوم عن
بعض الأساليب البرمجية باستخدام الجمل الشرطية، و كيفية تطبيقها في
الجافا. و هذا الدرس مهم جدًا. لأنه يمهّد الأرض لك كمبرمج، و يفتح المجال
أمامنا في كتابة الوظائف في الدروس القادمة إن شاء الله.
لنتصوّر
أننا نكتب برنامجاً صغيراً جداً. يخزّن رقماً في متغير، ثم يقارن هذا
المتغير بالرقم عشرة، فإذا كان المتغير أصغر نعرض على الشاشة جملة معينة.
و إذا كان أقل من عشرة، سنعرض على الشاشة جملة أخرى. لننظر لل
شكل التالي:
إن
هذا الشكل يمثل حالة اتخاذ قرار. لو نظرت للشكل المعيّن في وسط الصورة
ستجد أن لدينا فيه سؤالاً له جواباً من اثنين إما أن يكون نعم (صح)، أو لا
(خطأ). و في الشكل السابق، كان السؤال عن قيمة رقم محدد (
هل قيمة الرقم أكبر من 10؟)
و هذا هو السؤال. فإذا كانت الإجابة نعم فإننا سنفعل شيئاً. و ننفذ ما في
الدائرة الخضراء على اليمين، أما إذا كانت الإجابة لا، فسنقوم بفعل شيء
آخر و تنفيذ ما في الدائرة الوردية على اليسار.
و لتطبيق ذلك في البرمجة، لننظر للشكل التالي:
حيث
نبدأ بالكلمة (if) و بعدها نفتح قوسين دائريين نضع في داخلها شرطاً تكون
قيمته إما true أو false. بعدها نفتح قوس مجموعة نضع في داخله ما نريد
تنفيذه في حال كانت الجملة الشرطية صحيحة (true). و هذا ما نسميه (
جملة إذا) أو (
If Statement). و هي أول نوع من الجمل الشرطية.
و الآن لنتأمّل معاً الكود التالي:
لقد قمنا باشهار المتغيّر number و أعطيناه القيمة 5 كما في السطر 4.
و الآن لننظر إلى الكود من السطر 8 إلى 12:
إننا
في هذه الأسطر نقوم بتطبيق جملة إذا. بحيث نلاحظ في السطر الثامن أننا
وضعنا الجملة المنطقية (الرقم أكبر من 10).فإذا كانت العبارة صحيحة فسنقوم
بتنفيذ الكود في الجزء المحصور بين قوسي المجموعة الذي يلي الجملة
المنطقية مباشرة. أما إذا كانت العبارة خاطئة، فسنقوم بتنفيذ الجزء الذي
يلي كلمة else و المحصور أيضاً بين قوسي مجموعة.
نقطة توقف.. |
- يمكن
الاستغناء عن أقواس المجموعة في حالة كانت الجملة المراد تنفيذها جملة واحدة فقط. كما في المثال نفسه. و لكن إذا أردت تنفيذ مجموعة من الجمل، فيجب أن تحصرها بين قوسي مجموعة حتى تضمن أن يتم تنفيذها حسب ما تشاء.
- يمكنك
الاستغناء عن القسم else إذا أردت عمل شيء في حالة كان الجملة المنطقية صحيحة، و لا ترغب بعمل شيء إذا كانت الجملة المنطقية خاطئة.
|
اكتب البرنامج و قم بتشغيله، و حاول تغيير الشرط حسب ما ترى. جرّب أن تضع شروطاً منطقية أخرى.
لنفرض أننا نريد أن نكتب برنامجاً يقوم بعدة عمليات مختلفة حسب قيمة متغير. و لنفترض أن لدينا متغيراً اسمه grade نخزّن فيه درجة
الطالب.
فإذا كانت الدرجة (A) نطبع كلمة (Excellent) أما إذا كانت (B) نطبع كلمة
(Very Good)، أما إذا كانت (C) نطبع كلمة (Good)، أما إذا كانت (D) نطبع
كلمة (Poor) و لو كانت أي شيء آخر نطبع كلمة (You Failed).
طبعاً يمكننا القيام بذلك بسلسلة من جمل if الشرطية هكذا:
نقطة توقف.. |
عند المقارنة بين المتغير grade و الحرف 'A' استخدمنا بينهما علامتي يساوي لا علامة واحدة. فعلامة = الواحدة تعني أننا نريد أن نضع قيمة في هذا المتغير. و العلامتين (==) تعني أننا نقارن ما بين الموجود على طرفي العلامتين. و لنا حديث مفصّل عن الجمل المنطقية و أدواتها في ملحق منفصل ان شاء الله. |
نسمي هذا النوع من If
الشرطية: nested If أي وجود if داخل if و هكذا. و تقدّم لنا معظم لغات
البرمجة و منها لغة الجافا جملة switch الشرطية. التي تسهّل كتابة
البرنامج إذا كنت تعتمد فيه على عمل بعض الخطوات بحسب قيمة متغير محدد.
والآن لنتعرّف على الهيكل العام لجملة switch، أثناء حل البرنامج الذي
تحدّثنا عنه في المثال:
أول
ذي بدء. نلاحظ أننا قمنا بتعريف متغير من نوع char اسمه grade. ثم بدأنا
جملة switch و التي تكتب هكذا: switch ثم نفتح قوسين دائريين يتضمنان
مفتاح. و مفتاح جملة switch هو المتغير الذي على اساس قيمته سنعرّف
الحالات cases المختلفة. المفتاح في حالتنا هو grade وقد تم تعليمه بدائرة
خضراء في الشكل السابق.
ثم نفتح قوس مجموعة. و نلاحظ أن القومس محدد بالخط الأصفر. و لابد أن يتضمن هيكل switch في داخله كل ما يتعلّق بهذه الجملة.
داخل جملة switch سنقوم بتحديد القيم. و نكتبها هكذا case ثم نضع القيمة تليها نقطتان رأسيتان (
بعدها نفتح قوس مجموعة نضع في داخله الجمل و الأوامر التي نريد تنفيذها إذا كانت قيمة المفتاح تساوي القيمة التي تلي case.
و هكذا حتى تنتهي كل الحالات. و يمكن (اختيارياً) استخدام الحالة default في حالة لم تتساوى قيمة المفتاح مع أي من القيم المذكورة.
إن
جملة switch تختلف في طريقة تسلسل الأوامر. فبمجرّد أن يتم الدخول في أي
حالة من الحالات، يتم في الواقع تنفيذ جميع الحالات التي تليها. لننظر
للشكل التالي:
نلاحظ أنه لدينا المفتاح key وأننا قمنا بتحديد القيم value1 و value2 و.. هكذا.
والآن
لنتابع السيناريو. لنفترض أن قيمة key كانت تساوي فعلياً value2. في
الواقع سيتم تنفيذ statement2. ومن ثم statement3 ومن ثم statement4.
أما
إذا ساوت قيمة Key الـ value1 فسيتم تنفيذ statement1. و من ثم نجد كلمة
break و هي تعني الخروج نهائياً من جملة switch كاملة. و هكذا لن يتم
تنفيذ أي شيء آخر.
إذا ساوت قيمة key الـ value3، فسيتم تنفيذ الجملة statement3 و من بعدها statement4.
و
هكذا فإن ترتيب الاختيارات مهم للغاية اذ يعتمد تنفيذها على هذا الترتيب.
و لهذا وضعنا في المثال السابقة كلمة break في نهاية كل اختيار، حتى نضمن
عدم تنفيذ أي جملة أخرى في داخل اقواس switch.
نقطة توقف.. |
- يمكن
أن يكون مفتاح الـ switch من نوع int أو char و لا يمكن عمل switch على نوع من الـ aggregate data types التي يقوم المبرمج بتعريفها.
- استخدام
كلمة break بعد كل اختيار ليس اجبارياً و لا ضرورياً و يتحكّم في ذلك طبيعة الاوامر التي تريد تنفيذها و البرنامج الذي تريده.
|
أرجو أن يكون الدرس واضحاً.
وفوق كل ذي علم عليم