تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس الخامس عشر - أوامر التحكّم - التكرار
#1
كاتب الموضوع : tibo


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

اليوم نتابع الحديث عن اوامر التحكم المهمة في البرمجة. و حديثنا اليوم سيكون عن التكرار Loops. فأنت تحتاج في بعض الأحيان أن تقوم بتكرار مجموعة من الأوامر المتتالية اكثر من مرة.

مقدّمة:
لنفترض أننا نرغب في طباعة الجملة "I am a muslim" أربع مرات. طبعاً ستقولون أنه يمكننا أن نكتب البرنامج التالي و سيقوم بالمطلوب:

فعلاً هذا صحيح، البرنامج يكتب الجملة 4 مرات، و لكن لاحظ معي البرنامج مرة أخرى، ستجد أننا قمنا بكتابة الأمر أربع مرات. و هذا قد يكون حلاً مناسباً لأن عدد مرات التكرار كان 4، و لكن لنتصور أننا نريد أن نطبع الجملة 100 مرة أو ربما 1000 مرة. أو ربما نرغب في تكرارها عدداً من المرات يعتمد على تحقيق شرط معين. بالطبع لابد لنا عندها أن نستخدم أدوات التحكم التي تقوم بتكرار الأوامر. و توفّر لك لغة جافا ثلاث طرق لتكرار الأوامر. سنتعرّف عليها فيما يلي :-)

for loop:

نستخدم هذا النوع من التكرار حين تكون عدد مرات التكرار محددة و معروفة. مثلاً. أي أنني أعرف مسبقاً عدد المرات التي سأقوم بتكرار الأوامر على عددها. في الحالة التي كانت في المقدّمة. نعرف أن عدد مرات التكرار كان 4.

يكتب كود الـ for loop على هذا الشكل:


كود :
for( initialization ; condition ; increment) {
Statement 1;
..
}
لاحظ أن كل ما هو أحمر، لابد من كتابته بنفس الشكل و الطريقة، و الآن لنفسّر الألغاز الثلاثة الموجودة في السطر الأول و التي تفصل بينها فواصل منقوطة (و ليست فواصل عادية):
initialization:
نضع في هذا الجزء متغير، و نعطيه القيمة المبدئية التي يبدأ منها التكرار. و سنرى بعد قليل كيف يفيدنا هذا. ويمكنك أن تنشئ متغيراً جديداً و تعطيه القيمة المبدئية
condition:
هنا نضع الشرط الذي نتوقّف عن العد عنده. إن تحقق الشرط في هذه الجملة، يعني أن التكرار سوف يتوقّف.
increment:
هنا نضع جملة الزيادة (أو النقصان) و نعني بذلك، الرقم الذي نزيد المتغير الذي عرّفناه في قسم initialization.

ثم تلاحظ أن جملة for لها قوسا مجموعة يحصران بينهما مجموعة الأوامر المراد تكرارها.

لنحاول تطبيق ذلك على مثال عملي:


كيف تعمل جملة for في المثال السابق؟
اتبع الخطوات حتى تعرف كيف تعمل جملة for:

أول ما يصل البرنامج لأمر for يقوم بادئ ذي بدء بتنفيذ الجملة التالية:


حيث يقوم بحجز مساحة للمتغير (i) و يعطيه القيمة (0).

يتحقق من الشرط الموجود في هذه الجملة:



إذا أرجع الشرط قيمة (true) أي أنه بلغة البشر كان صحيحاً فسينفّذ الخطوة رقم 3. أما إذا أرجع القيمة false، أي أن الجملة كانت خاطئة فسيقفز حتى الخطوة 5.

سينفذ الأوامر المحصورة بين قوسي المجموعة بالترتيب حتى يصل إلى القوس الذي يغلق جملة for، و في حالتنا سيقوم بتنفيذ أمر الطابعة. هكذا:


سيعود التنفيذ إلى سطر جملة for الأول مرة أخرى، و هذه المرة، سيقوم بتنفيذ الجزء الثالث من جملة for و هو:

حيث سيقوم بزيادة قيمة المتغير (i) -في هذه الحالة بواحد- أي أنه ستصبح قيمة (i) الجديدة هي (1) بعد أن كانت صفراً. ثم سيعود لتنفيذ الخطوة 2 مرة أخرى.

إذا وصلت إلى هذه الخطوة معنى ذلك أن الشرط في الخطوة 2 لم يتحقق، و أعاد لي القيمة false عندها، سنخرج من جملة for، ونقوم بالبدء في تنفيذ الأوامر التي تليها، و في حالتنا الأمر الذي يطبع كلمة Hala هكذا:



أرجو أن تكون الخطوات قد أوضحت جملة for بشكل تام :-)
نقطة توقّف..
من الممكن الاستغناء عن أقواس المجموعة في جملة for إذا كان الأمر المراد تكراره واحداً فقط، و لكن من الأفضل أن يتم التعوّد على وضع الأقواس، حتى يصبح برنامجك أوضح عند قراءته.
يمكنك تجربة أن تطبع المتغير (i) مع الجملة. و حاول بناءً على نفس المنهاج أن تطبع جدول الضرب.
المتغير (i) سيكون مجاله فقط في داخل الـ for ولن يمكن استخدامه خارجها، إلا مع إشهاره من جديد.
يمكن عمل جملة for داخل جملة for أخرى، و سيتم تنفيذ جملة for الداخلية كل مرة من البداية مع كل تنفيذ لجملة for الخارجية.
من الممكن أن ننقص قيمة المتغير i في جزء الـ Increment. ليتم العد تنازلياً إذا بدأنا من قيمة كبيرة للـ (i).


while loop:
في هذا النوع من التكرار في الجافا، يتم تكرار مجموعة الأوامر بناءً على تحقق شرط معيّن. وهذا هو الشكل العام لجملة while:

كود :
while( condition ) {
Statement 1;
Statement 2;
..
}
فتحقق الشرط الموجود في ما بين القوسين بعد كلمة while (يعني تكون قيمته المنطقية true) يعني أنه سيتم تنفيذ Statement 1 و Statement 2 و هكذا. لنفترض أننا نريد أن نكتب برنامجاً يقوم بعرض مجموع الأرقام المتتالية حتى رقم محدد، لننظر للبرنامج التالي:


لاحظ في المثال، في البداية قمنا باشهار ثلاثة متغيرات: المتغير (i) ووضعنا فيه القيمة صفر، و المتغير (max) ووضعنا فيه القيمة 4،و المتغير sum و أعطيناه القيمة صفر.

ثم بدأنا نكتب جملة while، ووضعنا في مكان الـ condition الجملة المنطقية (i<=max), في هذه الجملة، نقارن قيمة المتغير (i) بقيمة (max). فإذا كانت فعلاً أصغر منها أو تساويها فإن الجملة المنطقية ستكون صحيحة true و سيتم الدخول إلى جملة while و تنفيذ السطرين التاليين:



do ..while loop:
جملة do..while هي نفسها جملة while و لكن يتم تنفيذ الأوامر قبل التحقق من الشرط. بينما في جملة while يتم التحقق من الشرط، ثم التنفيذ. و هكذا فإن الأوامر في داخل do..while سوف يتم تنفيذهم على الأقل مرة واحدة.

تكتب جملة do..while هكذا:


كود :
do {
Statement 1;
Statement 2;
..
} while( condition )
يمكنك تطبيق الأمثلة في الجمل السابقة على هذه الجملة.

وهكذا نكون قد غطينا أوامر التكرار في لغة الجافا بأنواعها الثلاثة. أرجو أن يكون الدرس واضحاً :-)


تحياتي
Tibo
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الدرس السادس عشر - الطرق Methods RaggiTech 0 640 19-10-12, 12:42 PM
آخر رد: RaggiTech
  الدرس الرابع عشر - أوامر التحكّم - الجمل الشرطية RaggiTech 0 759 19-10-12, 12:38 PM
آخر رد: RaggiTech
  الدرس الثالث عشر - العمليات RaggiTech 0 501 19-10-12, 12:36 PM
آخر رد: RaggiTech
  الدرس الحادي عشر - إستدعاء حزمة الواجهة الرسومية والعمل عليها RaggiTech 0 806 19-10-12, 12:33 PM
آخر رد: RaggiTech
  الدرس العاشر - حزم الجافا (Java Packages) RaggiTech 0 608 19-10-12, 12:32 PM
آخر رد: RaggiTech
  الدرس التاسع - كيفية استخدام UndoManager بالبرامج RaggiTech 0 518 19-10-12, 12:26 PM
آخر رد: RaggiTech
  الدرس الثامن - تخزين البيانات الضخمة بقاعدة البيانات اوراكل بواسطة الجافا RaggiTech 0 742 19-10-12, 12:26 PM
آخر رد: RaggiTech
  الدرس السابع - التعليقات RaggiTech 0 517 19-10-12, 12:18 PM
آخر رد: RaggiTech
  الدرس السادس (في جافا) - البرمجة بالكائنات الشيئية RaggiTech 0 563 19-10-12, 12:14 PM
آخر رد: RaggiTech
  الدرس الخامس- البحث الثنائى فى المصفوفة Binary Search RaggiTech 0 1,261 19-10-12, 12:12 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم