القائمة الرئيسية

الصفحات

تعلم الجافا - جمل التكرار Looping Statements - الجزء الأول

تعلم الجافا - جمل التكرار Looping Statements - الجزء الأول

تعلم الجافا - جمل التكرار Looping Statements - الجزء الأول

جملة التكرار do - while

سنتعرف اليوم على حلقة التكرار do - while والتي تستخدم لنفس الهدف أي تكرار تنفيذ التعليمات البرمجية المحددة. ولكن قبل هذا يجب علينا الإشارة إلى مبدأ عمل هذه الحلقة والذي يختلف بصورة جذرية عن حلقة التكرار while بحيث تعمل حلقة do - while على تنفيذ التعليمات البرمجية بغض النظر عن حالة الشرط وبعد الانتهاء من تنفيذ التعليمات تعمل حلقة do - while على التحقق من صحة الشرط. فإذا وجدته صحيحا True, عندها يتم تكرار تنفيذ نفس التعليمات.. وفي كل مرة تكرر فيها التعليمات يتم التحقق من صحة الشرط فطالما انه صحيح تستمر عملية التكرار حتى تصبح قيمة الشرط غير صحيحة False عندها نخرج من حلقة التكرار.

الصيغة العامة لحلقة do - while

do
{
statment(s);
}while(Condition_Expression);

تبدأ صيغة التكرار do - while بالكلمة المحجوزة do ثم قوس البداية الذي يعني بداية كلمة التكرار بما تحتويه من تعليمات برمجية. بعد قوس البداية يمكننا إدراج وصياغة التعليمات البرمجية statement المطلوب تكرارها ويجب إن تنهي كل تعلمين بالفاصلة المنقوطة. وبعد آخر تعليمة برمجية علينا وضع أقواس نهاية كتلة التكرار.

نتبع بعدها قوس النهاية بتعليمة العودة والتكرار والتي تتكون من الكلمة المحجوزة while متبوعة بالشرط المنطقي Condition_Expression ويجب إن ننهي حلقة التكرار بالفاصلة المنقوطة دلالة على الانتهاء حلقة التكرار. ولمعرفة آلية عمل الحلقة, لندرس المثال التالي

Class do_while
{
public static void main(String[] args)
{
int A=1;
//------------------------
do
{
System.Out.Println("Arabic SEO");
} while( A < 10 );//end do_while
//-----------------
}//end main
}//end class

لاحظ في المثال أعلاه إننا صرحنا عن التغير A بقيمة مبدئية 1 داخل كتلة التكرار صغنا تعليمة طباعة النص Arabic SEO بعد ذلك حددنا شرط إعادة التنفيذ والتكرار بان تكون قيمة المتغير A اقل من عشرة. تنفيذ البرنامج والوصول إلى حلقة التكرار, سيعمل البرنامج على تنفيذ تعليمة الطباعة دون ان ينظر إلى حالة الشرط, ثم سينتقل إلى تعليمة while ليتحقق من صحة الشرط لتجده صحيحا مما يعني العودة إلى بداية حلقة التكرار وإعادة تنفيذ تعليمة الطباعة وهكذا ستستمر عملية التكرار إلى ما لا نهاية طالما إن الشرط صحيح.

نستنتج من هذا المثال إن حلقة التكرار do - while ستعمل على تنفيذ التعليمات البرمجية مرة واحدة كحد أدنى وبغض النظر عن حالة الشرط ثم يأتي دور تعليمة التحقق من الشرط while والتي من شانها إعادة تنفيذ التعليمات طالما الشرط صحيح. وفي حال عدم تحقق الشرط لن نعود إلى بداية حلقة التكرار بل سيتابع البرنامج تدفقه إلى التعليمة التي تلي حلقة do - while عندها سنواجه نفس المشكلة التي واجهتنا مع حلقة التكرار while وهي عدم الربط بين التعليمات البرمجية والشرط المنطقي مما سيؤدي إلى دخول البرنامج بحلقة تكرار لا منتهية, لذلك يجب علينا صياغة تعليمة برمجية داخل كتلة التكرار لتعمل على تغير قيمة المتغير محور شرط التكرار المنطقي, كما في الصيغة التالية:

Class do_while
{
public static void main( String[] args)
{
int A=1;
//----------------
do
{
++A;//زيادة المتغير محور الشرط
System.Out.Println("Arabic SEO");
}while(A<10);//end do_while
//-----------------------
}//end main
}//end class

ستعمل تعليمة على زيادة المتغير A بواحد على تغيير قيمة المتغير في كل مرة تنفذ فيها حلقة التكرار وبذلك يستمر الشرط صحيحا حتى تصل قيمة المتغير A إلى 10 عندها لن يتحقق الشرط وعندها نخرج من حلقة التكرار إلى ما يليها من تعليمات برمجية.

مثال: برنامج لطباعة الأعداد الزوجية فقط من 0 إلى عشرين.
الحل:

Class do_while
{
public static void main( String[] args)
{
intA=0;
//----------------------------
do
{
System.Out.Println(A);
A+=2;//العدد الزوجي التالي
} while ( A< = 20 );//end do_while
//---------------------------
}//end main
}//end class

ولاحظ إننا استخدمنا تعليمة A+=2 التي تعمل على زيادة 2 إلى قيمة المتغير A بعد تعليمة الطباعة ولو إننا استخدمناها قبل تعليمة الطباعة عندها لن نحصل على القيمة صفر كأول عدد زوجي.

مثال: برنامج لإيجاد مضروب العدد 8.
الحل:

Class do_while
{
public static void main( String[] args)
{
int N=8;
long Factorial=1;
//-----------------
do
{
Factorial*=N;//multiply
--N;
} while ( N > 0 );
//----------------
System.Out.Println(Factorial);
}//end main
}//end class

صرحنا عن المتغير Factorial من الهيئة Long بقيمة مبدئية واحد لتستخدمه من اجل تخزين قيمة المضروب. داخل حلقة التكرار do - while كانت أول تعليمة هي إجراء عملية الضرب بين المتغير Factorial والمتغير N الذي يحمل القيمة 8 . ثم تعليمة إنقاص المتغير N بواحد وذلك حتى نحصل على القيمة المتسلسلة التي تسبق العدد 8 على خط الأعداد. وجددنا شرط التكرار عند وصول قيمة المتغير N إلى القيمة صفر, ليتوقف عندها تكرار الحلقة.

في النهاية يمكننا تلخيص أوجه الاختلاف والتشابه بين حلقة التكرار do - while وحلقة التكرار while على النحو الآتي:

  • تشترط كلتا الحلقتين وجود علاقة تغير بين الشرط المنطقي وإحدى التعليمات البرمجية التي بداخلها وذلك حتى لا ندخل بحلقة تكرار لا منتهية.
  • حلقة do - while تتحقق من الشرط بعد تنفيذ العمليات البرمجية بينما حلقة التكرار while تتحقق من الشرط من البداية وقبل تنفيذ أي تعليمة.
  • الحد الأدنى لتكرار تنفيذ تعليمات حلقة do - while هو مرة واحدة بغض النظر عن حالة الشرط بينما يكون الحد الأدنى لتكرار تنفيذ حلقة while هو الصفر.

تعليقات

تعليق واحد
إرسال تعليق

إرسال تعليق

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