ولكن متى يكون من الضروري وضع الحاصرات ؟
يكون من الضروري وضع الحاصرات اذا كانت الحلقة فور تحتوي على أكثر من جملة ولكن اذا كانت تحتوي على جملة واحدة فان الأمر متروك لك حيث يمكنك استخدامها أو تركها ولكن يستحسن استعمالها لتسهيل فهم البرنامج
for (int q = 0; q < 66; q++)
system.out.println("لن أفعل هذا مرة أخرى ");تعرض هذه الحلقة المكونة من جملة واحدة بدون حاصرات النص ــ لن أفعل هذا مرة أخرى ـ 66 مرة وهذا يذكرنا بعقاب المدرسين الأوائل للتلاميذ في المرحلة الابتدائية حيث يطلب المعلم من التلميذ أن يكرر هذه الجملة 66 مرة لعقابه على خطأ ارتكبه
طيب يا أستاذ اذا أردنا اعداد أكثر من متغير خلال جزء التمهيد فماذا نعمل ؟
اذا اردت إعداد أكثر من متغير في جزء التمهيد فعليك التفريق بينها بالفواصل ونلاحظ أن كل جزء من الحلقة فور يفصل عن الاجزاء الأخرى بفاصلة منقوطة
ولكن هل يمكن أن تكون أقسام حلقة التكرار فارغة ؟
نعم يمكن أن تكون أقسام حلقة التكرار فارغة وهذا عندما تكون القيمة الأولية للمتغير العداد قد تحددت في جزء سابق من البرنامج
وقفة هنا أستاذي الكريم حيث اتذكر الآن الخطأ المنطقي والذي يدعوني الى ذلك هو الفاصلة المنقوطة فحيث أن العديد من جمل الجافا تنتهي بفاصلة منقوطة اذا يمكن وضع فاصلة منقوطة عند نهاية الجملة فور فماذا يحدث ؟
كلامك صحيح فوضع الفاصلة المنقوطة عند نهاية جملة فور يضع الجملة التي بعدها خارج نطاق حلقة التكرار وبسبب ذلك لن يحدث شيء عند تنفيذ حلقة التكرار وعند ترجمة البرنامج لن تحدث أخطاء وفي نفس الوقت لن نحصل على النتائج المطلوبة
هل باقي حلقات التكرار تتكون من ثلاثة أجزاء ؟
while لا حلقة التكرار التي سوف نتناولها الآن لا تحتوي على أقسام وحلقة التكرار هذه هي
while حلقات التكرار
في هذه الحلقة لا يوجد عدة أجزاء ولكن يجب أن يكون هناك شرط محدد وعندما يصل البرنامج الى جملة حلقة التكرار للمرة الأولى يقوم باختبار الشرط المحدد فإذا كان غير صحيح فانه يتجاهل الجمل الموجودة داخل حلقة التكرارأما اذا كان الشرط صحيحا فإن البرنامج يقوم بتنفيذ جمل حلقة التكرار ثم يعاود البرنامج اختبار الشرط فإذا لم يتغير الشرط موضع الإختبار داخل حلقة التكرار فإن الحلقة تواصل التكرار الى ما لا نهاية وهكذا
do....while عملية بسيطة وماذا عن حلقة التكرار
do.......while حلقات التكرار
لكي ندرك الفرق بين الحلقتين اليك هذا المثال
لنفرض مثلا أن الآنسة أروى تريد الذهاب الى الكوافير فان أمامها طريقتان
الأولى أن تذهب الى الكوافير ثم تخبر والدتها
الثانية أن تستأذن أولا من والدنها قبل أن تذهب الى الكوافير
do...while الطريقة الأولى تشبه حلقة التكرار
بمعنى أنه سوف يتم تحقق الشرط لمرة واحدة قبل أن يختبر يعني أن الآنسة أروى سوف تذهب لمرة واحدة الى الكوافير سواء وافقت والدتها أم لم توافق ومن هنا يتضح لنا أنه في حلقة التكرار دو ....هويل يتم تنفيذ الشرط أولا قبل التحقق من صحة الشرط موضع الاختبار فعندما يصل البرنامج خلال عمله للمرة الأولى الى حلقة التكرار دو فانه ينفذ الجمل الموجودة بين الجملة دو والجملة هويل بشكل تلقائي ثم يجري بعد ذلك التحقق من صحة شرط الجملة هويل فاذا كان صحيحا فن البرنامج يعاود تكرار حلقة التكرار مرة أخرى أما اذا كان الشرط غير صحيح فان حلقة التكرار سوف تتوقف
ولكن يا أستاذي كيف يمكنني الخروج من حلقة التكرار ؟
للخروج من حلقة تكرار قلنا سابقا أن الشرط موضع الاختبار اذا كان غير صحيح فان هذا يوقف حلقة التكرار
طيب اذا أردت أن أوقف حلقة التكرار مباشرة والشرط المختبر صحيحا فماذا أفعل ؟
يمكنك إيقاف حلقة التكرار مباشرة حتى لو كان الشرط موضع الإختبار صحيحا باستعمال الجملة بريك
while (index <= 100)
index = index +3;
if (index ==40)
break;
system.out.println("the index is"+ index);
تواصل الحلقة التكرار الى أن تصبح قيمة المتغير اندكس أكبر من 100 ولكن اذا كانت قيمة المتغير مساوية 40 فإن حلقة التكرار سوف تتوقف مباشرة
هل توجد جملة خاصة أخرى ؟
نعم توجد حالة خاصة أخرى
while (index <= 100)
index = index +3;
if (index ==40)
continue;
system.out.println("the index is"+ index);
في حلقة التكرار هذه سوف يتم تنفيذ الجمل الا اذا صارت قيمة المتغير مساوية 40 وعندها تجعلالجملة كونتينيو حلقة التكرار تعيد تنفيذ الجملة هويل
هل يمكن وضع حلقات التكرار داخل بعضها البعض ؟
نعم يمكن وضع حلقات التكرار داخل بعضها البعض كما في المثال الآتي
while ( totalprise < 1000 ){
for( int prise=0; prise <100; prise++){
totalprise = totalprise + prise;
if ( totalprise > 2000 )
brak;
}
}
ما فعل الجملة بريك في هذه الحالة؟
فعل الجملة بريك في هذه الحالة هو ايقاف حلقة التكرار ـ فور ـ عندما تساوي قيمة المتغير 2000 أو أكثر
ولكن يا صديقي العزيز هناك حالات أرغب في ايقاف حلقتي التكرار معا فكيف الطريق الى ذلك ؟
في هذه الحالة يجب أن تمنح الحلقة الخارجية اسما هذا الاسم يكتب في السطر السابق حلقة التكرار متبوعا بنقطتين : ثم استخدم هذا الاسم بعد الجملة بريك أو كونتي