حلقة البرنامج PROGRAM LOOP

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

حلقة البرنامج PROGRAM LOOP

مُساهمة من طرف Admin في السبت مارس 05, 2016 11:56 am

حلقة البرنامج PROGRAM LOOP
غالبا ما يكون من الضروري تكرار عملية معينة في البرنامج لبضع مرات .
مجموعة الأوامر التى يتم تكرارها تسمى حلقة برنامج .
كم عدد المرات التي سيتم تنفيذها ، أى كم من الوقت سيبقى البرنامج في الحلقة ، يعتمد ذلك على ظروف (شروط) مغادرة الحلقة.

حلقة While

شكل حلقة While كما يلى :



الحلقة سهلة للغاية ولا تحتاج إلا لتقييم التعبير الشرطى ((expression حيث :
• يتم تنفيذ الأوامر commands بشكل متكرر (أى يظل البرنامج في حلقة) حتى يصبح التعبير expression الذى يمثل شرط تكرار الحلقة فى الحالة false .
• إذا كان التعبير expression فى الحالة false عند مدخل الحلقة عندئذ لا يتم تنفيذ الحلقة ويتقدم هذا البرنامج إنطلاقا من نهاية حلقة while .

مثال :



فى هذا المثال يتم تنفيذ الحلقة 10 مرات :
• المتغير الذى يتحكم فى تكرار وانتهاء الحلقة هو i والى يجب الإعلان عنه وتخصيص قيمة ابتدائية له قبل ظهور الحلقة فى البرنامج بالتعبير i = 0 ; .
• بمجرد أن يجد البرنامج while يتنبه لوجود قوسين بينهما شرط يحتوى على متغير الحلقة
(i < 10) ويجب عليه أن يقيمه (يختبر صحته) فإن وجده صحيحا (متحقق) true يقوم بتنفيذ التعبير أو جسم الحلقة {…} والذى يحتوى ضمن ما يحتويه على فعل بمتغير الحلقة والذى على أساسه سوف يتحدد تكرار الحلقة مر أخرى أو الخروج منها ، وهذا الفعل هنا هو زيادة المتغير بواحد i++ , أى فى نهاية الحلقة يصبح متغير الحلقة i = 1 وهذه القيمة تحقق شرط تكرار الحلقة i < 10 فتتكرر الحلقة .
• بعد تنفيذ عشر حلقات ( من i = 0 إلى i = 9 ) تصبح قيمة متغير الحلقة i = 10 وهى تجعل شرط الحلقة i < 10 غير صواب (غير متحقق) false فيدرك البرنامج أن عليه الخروج من الحلقة والمتابعة من بعد نهاية الحلقة .

حالة خاصة وهامة :
يوجد نوع خاص من حلقات while هى الحلقة اللانهاية أى الغير منتهية endless loop.
يتم تشكيل هذه الحلقة بعدم وضع متغير فى التعبير الشرطى الموجود بين القوسين (…) أى يكون الشرط غير متغير وعلى أن يكون صواب true كشرط لتكرار الحلقة .
مثال:



في هذه المثال : يكون التنفيذ بسيط لأن نتيجة ما داخل القوسين دائما متحقق true (1=1) ، الأمر الذي يعنى أن البرنامج سوف يظل فى نفس الحلقة .

حلقة Do-while
شكل حلقة Do-while كما يلى :



فى هذه الحالة يتم تنفيذ العملية operation مرة واحدة على الأقل بغض النظر عما إذا كان الشرط صحيح (متحقق) true أو غير صحيح (غير متحقق ) false لأن تعبير الشرط check_condition يتم التحقق منه فى نهاية الحلقة.
إذا لم تكن النتيجة بصفر أى الشرط متحقق true تتكرر هذه الخطوات .

مثال :
المثال التالى يوضح برنامج يظل فى حلقة do-while حتى يصل متغير الحلقة إلى القيمة 1E06 (مليون تكرار ).



فى هذا البرنامج :
• الإعلان عن متغير الحلقة a وتخصيص قيمة ابتدائية له قبل الدخول فى الحلقة بالتعبير a = 0 .
• بمجرد أن يجد البرنامج do ينتبه ويقوم مباشرة بتنفيذ الأوامر التالية لها ويكون ضمن هذه الأوامر فعل على متغير الحلقة والذى يحدد تكرار الحلقة أو الخروج منها وهو هنا عبارة عن إضافة واحد للمتغير a = a + 1 ليصبح a = 1 .
• حتى يجد البرنامج while عندئذ يتنبه إلى وجود عبارة شرط بين القوسين (…) وعليه أن يقوم بتقييمها وهى a <= 1E06 وتنص على " a أقل من أو تساوى <= مليون 1E06 (واحد فى عشرة أس ستة 1*10^6) فأن كان الشرط صحيح أو صواب (متحقق) true يقوم بتكرار الحلقة وإن وجد أن الشرط عير صحيح أو غير صواب (غير متحقق) false يخرج من الحلقة متقدما إلى ما بعد نهايتها .

حلقة for :
إذا كان لديك عبارة statement أو عبارات وتحتاج إلى تكرارها عدد محدد من المرات فإن حلقة for هى الوسيلة السهلة لتنفيذ ذلك .
شكل حلقة for كما يلى :



تسلسل تنفيذ هذا البرنامج يشبه حلقة while ، إلا أنه في هذه الحالة عملية تحديد القيمة الأولية (التهيئة) (initialization) يتم تنفيذها عند الإعلان .
العبارة initial_expression تحدد أو تعين القيمة الابتدائية لمتغير الحلقة والتى يتم فيما بعد مقارنتها بالعبارة condition_expression قبل الدخول فى الحلقة.
العمليات Operations داخل حلقة يتم تنفيذها بشكل متكرر وبعد كل تكرار تتغير قيمة التعبير .
يستمر التكرار حتى تصبح العبارة condition_expression غير متحققة false .

مثال :




الكود:

 
for (k=0 ; k<5 ; k++)
   operation
   …………


هنا :
• متغير الحلقة هو k والذى يجب إعلانه قبل الدخول فى الحلقة .
• بمجرد أن يجد البرنامج كلمة for ينتبه فيجد القوسين (…;…;…) بينهما ثلاثة تعبيرات يفصلها الفاصلة ; وأن أول تعبير داخل القوسين هو k = 0 وهو يمثل القيمة الابتدائية للمتغير k والتى على أساسها يتم تقييم الشرط الموجود فى التعبير الثانى فيقوم بتخصيص تلك القيمة له أى يجعل
k = 0 .
• يتقدم البرنامج التعبير الثانى الموجود داخل القوسين وهو يمثل شرط تكرار الحلقة k<5 آخذا فى الاعتبار التعبير الذى يليه والذى سوف ينفذ بعد كل تكرار(تزايد المتغير بواحد) .
يقيم البرنامج هذا التعبير الشرطى فأن تحقق الشرط يتم تنفيذ العمليات المنصوص عليها داخل الحلقة ثم تتكرر الحلقة من جديد حتى يصبح هذا الشرط غير متحقق فلا يتم تنفيذ العمليات السابقة بل يتقدم البرنامج إلى ما بعد حلقة for .
• فى نهاية كل حلقة تكرار يقوم البرنامج تلقائيا بزيادة متغير الحلقة بواحد بناء على التعبير الثالث الموجود داخل القوسين والذى يمثل التغير الذى سوف يحدث لمتغير الحلقة بعد كل حلقة وهو هنا تزايد المتغير بواحد k++ .
• فى هذا المثال : فى الحلقة الأولى يكون المتغير k=0 والشرط k<5 متحقق (صواب true ) فيتم الدخول فى هذه الحلقة وتنفيذ ما جاء بها من أوامر وفى نهايتها يزداد متغير الحلقة بواحد فيصبح k=1 .
فى الحلقة الثانية k=1 والشرط k<5 متحقق فيتم الدخول فيها وتنفيذها ثم زيادة المتغير بواحد .
فى الحلقة الثالثة k=2 والشرط k<5 متحقق فيتم الدخول فيها وتنفيذها ثم زيادة المتغير بواحد .
فى الحلقة الرابعة k=3 والشرط k<5 متحقق فيتم الدخول فيها وتنفيذها ثم زيادة المتغير بواحد .
فى الحلقة الخامسة k=4 والشرط k<5 متحقق فيتم الدخول فيها وتنفيذها ثم زيادة المتغير بواحد.
عند بداية الدخول فى الحلقة السادسة يجد البرنامج أن k=5 والشرط k<5 غير متحقق فيخرج البرنامج من الحلقة متقدما إلى ما بعدها .هنا تم تكرار العملية operation خمس مرات .

حالة خاصة وهامة :
يوجد نوع خاص من حلقات for هى الحلقة اللانهاية أى الغير منتهية endless loop.
يتم تشكيل هذه الحلقة بعدم وضع بارامترات بين القوسين (;Wink بالشكل التالى for( ; ; ){} وهى تعمل عمل while(1){} . .
.

Admin
Admin

عدد المساهمات : 1003
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

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

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة

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

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