أبنية (هياكل) التكرار Repetition Structures
مقدمة :
الغرض من هذه الأبنية هو التكرار لمرة واحدة أو لعدة مرات لعبارة statementمعطاه أو مجموعة ( بلوك) من العبارات . يوجد فى لغة السى فى الأساس ثلاثة أنواع من أبنية التكرار هى :
· for
· While
· Do – While
يستخدم بناء for أساسا فى التكرار "لعدد محدد من المرات" (أى تكرار محدد) باستخدام "متغير تحكم كعداد" .
يستخدم بناء while أساسا لتكرار مجموعة من التعليمات طالما أن "شرط" صواب true (أى تكرار مشروط) .
بناء Do – While مثل While يختلفان فقط فى "وقت تحليل أو اختبار الشرط" .
لنتناول كل تكرار على حدة :
الأمر for
تستخدم حلقة for عندما نحتاج للتحكم فى دورة تكرار, حيث يمكن "تهيئة عبارتها للبدء" initialize و "تزايد أو تناقص" متغير التحكم . يتم أولا "تقييم" اختبار الشرط فإذا كان صواب true يتم تنفيذ أوامر الحلقة . فى كل دورة تنفذ يتم تزايد أو تناقص قيمة المتغير .
شكل بناء أمر for :
For (initialization; condition; increment) statement;
Or
For (initialization; condition; increment)
{
...
command A1
command A2
...
}
حيث :
initialization: هو تعبير يستخدم لتهيئة متغير التحكم فى الحلقة للبدء .
condition: هو الشرط الذى يحدد استمرار تكرار الحلقة من عدمه , طالما أن هذا الشرط صواب فسوف تستمر الحلقة فى التنفيذ .
increment: هو تزايد فى القيمة مع كل دورة تكرار للحلقة .
مثال :
int count;
for (count = 0; count = 10; count ++) PORTB = count;
فى البناء السابق , يتم تهيئة المتغير count للبدء بتحميله (تخصيص) بالقيمة صفر , ويتم تنفيذ أوامر الحلقة . بعد تنفيذ جميع أوامر الحلقة يتم تزايد المتغير count بقيمة واحد , ومرة أخرى يتم تنفيذ أوامر الحلقة . يتم اكتمال (إنتهاء) التكرار عندما يصبح المتغير count بالقيمة 10 .
مثال آخر :
int v, d;
for (v = 0; v = d; v ++)
{
Command A
Command B
}
هذ المثال يعمل بالطريقة التالية :
1- تخصيص القيمة صفرللمتغير v .
2- تنفيذ الأوامر Command Aو Command B.
3- تزايد المتغير v بواحد .
4- بعد هذا التزايد يتم مقارنة القيمة الجديدة مع قيمة المتغير d ويتكررالتتابع بدءا من الخطوة رقم 2 .
5- ينتهى التكرار عندما يتحقق الشرط v = d .