mcse
مرحباا بك في منتدى mcse
تشكرك الادارة على هده الزيارة


انضم إلى المنتدى ، فالأمر سريع وسهل

mcse
مرحباا بك في منتدى mcse
تشكرك الادارة على هده الزيارة
mcse
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

(17) أوامر التحكّم - الجمل الشرطية

اذهب الى الأسفل

(17) أوامر التحكّم - الجمل الشرطية Empty (17) أوامر التحكّم - الجمل الشرطية

مُساهمة من طرف Ebisu الأربعاء يونيو 16, 2010 11:51 am

لسلام
عليكم
و رحمة الله و بركاته


درسنا اليوم من
الدروس
المهمّة جداً. ليس في الجافا فقط بل في البرمجة بشكل عام. فنحن سنتحدّث
اليوم
عن بعض الأساليب البرمجية باستخدام الجمل الشرطية، و كيفية تطبيقها في
الجافا.
و هذا الدرس مهم جدًا. لأنه يمهّد الأرض لك كمبرمج، و يفتح المجال
أمامنا في
كتابة الوظائف في الدروس القادمة إن شاء الله.


If
Statement:
لنتصوّر
أننا نكتب برنامجاً صغيراً جداً. يخزّن رقماً في
متغير، ثم يقارن هذا المتغير بالرقم عشرة، فإذا كان المتغير أصغر نعرض
على
الشاشة جملة معينة. و إذا كان أقل من عشرة، سنعرض على الشاشة جملة
أخرى.


لننظر للشكل التالي:

(17) أوامر التحكّم - الجمل الشرطية Decision

إن هذا الشكل يمثل حالة اتخاذ قرار. لو نظرت للشكل
المعيّن في وسط الصورة ستجد أن لدينا فيه سؤالاً له جواباً من اثنين
إما أن
يكون نعم (صح)، أو لا (خطأ). و في الشكل السابق، كان السؤال عن قيمة
رقم محدد (هل
قيمة الرقم أكبر من 10؟
) و هذا هو السؤال. فإذا كانت الإجابة
نعم فإننا
سنفعل شيئاً. و ننفذ ما في الدائرة الخضراء على اليمين، أما إذا كانت
الإجابة
لا، فسنقوم بفعل شيء آخر و تنفيذ ما في الدائرة الوردية على اليسار.

و لتطبيق ذلك في البرمجة، لننظر للشكل التالي:


(17) أوامر التحكّم - الجمل الشرطية If_struct


حيث نبدأ بالكلمة (if) و
بعدها نفتح قوسين دائريين نضع في داخلها شرطاً تكون قيمته إما true
أو false. بعدها نفتح قوس مجموعة نضع في
داخله ما
نريد تنفيذه في حال كانت الجملة الشرطية صحيحة (true).
و هذا ما نسميه (جملة إذا) أو (If
Statement
). و هي أول نوع من الجمل
الشرطية.

و الآن لنتأمّل معاً الكود التالي:

(17) أوامر التحكّم - الجمل الشرطية Test10_1

لقد قمنا باشهار المتغيّر number
و أعطيناه القيمة 5 كما في السطر 4.

و الآن لننظر إلى الكود من السطر 8 إلى 12:

(17) أوامر التحكّم - الجمل الشرطية If

إننا في هذه الأسطر نقوم بتطبيق جملة إذا. بحيث
نلاحظ في
السطر الثامن أننا وضعنا الجملة المنطقية (الرقم أكبر من 10).فإذا كانت
العبارة
صحيحة فسنقوم بتنفيذ الكود في الجزء المحصور بين قوسي المجموعة الذي
يلي الجملة
المنطقية مباشرة. أما إذا كانت العبارة خاطئة، فسنقوم بتنفيذ الجزء
الذي يلي
كلمة
else و المحصور أيضاً بين قوسي مجموعة.

<blockquote>



نقطة توقّف..


  • يمكن الاستغناء عن
    أقواس
    المجموعة في حالة كانت الجملة المراد تنفيذها جملة واحدة
    فقط. كما في
    المثال نفسه. و لكن إذا أردت تنفيذ مجموعة من الجمل، فيجب أن
    تحصرها
    بين قوسي مجموعة حتى تضمن أن يتم تنفيذها حسب ما تشاء.

  • يمكنك الاستغناء عن
    القسم
    else إذا أردت عمل شيء في
    حالة كان
    الجملة المنطقية صحيحة، و لا ترغب بعمل شيء إذا كانت الجملة
    المنطقية
    خاطئة.




</blockquote>

اكتب البرنامج و
قم
بتشغيله، و حاول تغيير الشرط حسب ما ترى. جرّب أن تضع شروطاً منطقية
أخرى.




Switch Statement
:
لنفرض أننا
نريد أن نكتب برنامجاً يقوم بعدة عمليات
مختلفة حسب قيمة متغير. و لنفترض أن لدينا متغيراً اسمه

grade نخزّن
فيه درجة
الطالب.
فإذا كانت الدرجة (A) نطبع كلمة (Excellent)
أما إذا كانت (B) نطبع كلمة (Very
Good)، أما إذا كانت (C) نطبع كلمة (Good)،
أما إذا كانت (D) نطبع كلمة
(Poor) و لو كانت أي شيء آخر نطبع كلمة (You
Failed).


طبعاً يمكننا القيام بذلك بسلسلة من جمل
if الشرطية هكذا:


(17) أوامر التحكّم - الجمل الشرطية TestGradeIf


<blockquote>



نقطة توقّف..

عند المقارنة بين المتغير grade
و الحرف 'A'

استخدمنا
بينهما علامتي يساوي لا علامة واحدة. فعلامة = الواحدة تعني
أننا نريد
أن نضع قيمة في هذا المتغير. و العلامتين (==) تعني أننا نقارن
ما بين
الموجود على طرفي العلامتين. و لنا حديث مفصّل عن الجمل
المنطقية و
أدواتها في ملحق منفصل ان شاء الله
.


</blockquote>

نسمي هذا النوع من If
الشرطية: nested If أي وجود
if داخل if و
هكذا.
و تقدّم لنا معظم لغات البرمجة و منها لغة الجافا
جملة
switch الشرطية. التي تسهّل كتابة البرنامج
إذا كنت
تعتمد فيه على عمل بعض الخطوات بحسب قيمة متغير محدد. والآن لنتعرّف
على الهيكل
العام لجملة switch، أثناء

حل البرنامج الذي تحدّثنا عنه في
المثال:




(17) أوامر التحكّم - الجمل الشرطية TestGradeSwitch



أول ذي بدء.
نلاحظ أننا
قمنا بتعريف متغير من نوع char اسمه grade.
ثم بدأنا جملة switch و التي تكتب هكذا:
switch ثم نفتح قوسين دائريين يتضمنان مفتاح. و
مفتاح جملة
switch هو المتغير الذي على اساس قيمته
سنعرّف
الحالات cases المختلفة. المفتاح في حالتنا
هو
grade وقد تم تعليمه بدائرة خضراء في الشكل
السابق.



ثم نفتح قوس
مجموعة. و
نلاحظ أن القومس محدد بالخط الأصفر. و لابد أن يتضمن هيكل switch
في داخله كل ما يتعلّق بهذه الجملة.


داخل جملة switch
سنقوم بتحديد القيم. و نكتبها هكذا case ثم
نضع
القيمة تليها نقطتان رأسيتان (Smile بعدها نفتح قوس مجموعة نضع في داخله
الجمل و
الأوامر التي نريد تنفيذها إذا كانت قيمة المفتاح تساوي القيمة التي
تلي
case.


و هكذا حتى
تنتهي كل
الحالات. و يمكن (اختيارياً) استخدام الحالة default
في حالة لم تتساوى قيمة المفتاح مع أي من القيم المذكورة.



إن جملة switch

تختلف في طريقة تسلسل الأوامر. فبمجرّد أن يتم
الدخول في أي
حالة من الحالات، يتم في الواقع تنفيذ جميع الحالات التي تليها. لننظر
للشكل
التالي:



(17) أوامر التحكّم - الجمل الشرطية Switch_struct



نلاحظ أنه لدينا
المفتاح
key و أننا قمنا بتحديد القيم value1
و value2 و.. هكذا.


و الآن لنتابع
السيناريو. لنفترض أن قيمة key كانت تساوي
فعلياً
value2. في الواقع سيتم تنفيذ statement2.
و من ثم statement3 و من ثم statement4.



أما إذا ساوت
قيمة
Key الـ value1
فسيتم
تنفيذ statement1. و من ثم نجد كلمة break
و هي تعني الخروج نهائياً من جملة switch
كاملة. و
هكذا لن يتم تنفيذ أي شيء آخر.


إذا ساوت قيمة
key الـ value3، فسيتم
تنفيذ
الجملة statement3 و من بعدها statement4.



و هكذا فإن
ترتيب
الاختيارات مهم للغاية اذ يعتمد تنفيذها على هذا الترتيب. و لهذا وضعنا
في
المثال السابقة كلمة break في نهاية كل
اختيار، حتى
نضمن عدم تنفيذ أي جملة أخرى في داخل اقواس switch.


<blockquote>



نقطة توقّف..


  • يمكن أن يكون مفتاح
    الـ
    switch من نوع
    int أو char و لا يمكن عمل
    switch على نوع من الـ
    aggregate data types التي يقوم
    المبرمج
    بتعريفها.

  • استخدام كلمة break
    بعد كل اختيار ليس اجبارياً و لا ضرورياً و يتحكّم في ذلك
    طبيعة
    الاوامر التي تريد تنفيذها و البرنامج الذي تريده.




</blockquote>

أرجو
أن
يكون الدرس واضحاً.
Ebisu
Ebisu
مبرمج جيد
مبرمج جيد

عدد المساهمات : 45
السٌّمعَة : 50
تاريخ التسجيل : 11/06/2010
العمر : 43

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

- مواضيع مماثلة

 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى