الفصل السادس : الحلقات التكرارية كثيرا ما نحتاج في البرامج إلى تكرار أمر موجه للكمبيوتر عددا من المرات،
وتوفر لغة C عدة وسائل تمكن المبرمج من أداء هذا التكرار.
وعادة ما تسمى هذه الوسائل " الحلقات التكرارية "، ويوجد العديد من الحلقات
التكرارية في لغة C سنتناول منها هنا
1- الحلقة for ( for loop ).
2- الحلقة while ( while loop ).
3- الحلقة do…. while ( do-while loop).
وفيما يلي سنتناول كل حلقة بالدراسة من حيث الشكل العام و أسلوب الاستخدام
وأمثلة توضيحية.
الحلقة for ( for loop):
تستخدم الحلقة for لتكرار أمر معين ( أو مجموعة من الأوامر) عددا من المرات
وتحتاج الحلقة إلي ثلاث عناصر أساسية ( انظر الشكل التالي)
CODE |
for ( counter statement; condition; step) |
و هذه العناصر هي:
1- العداد ( counter ) : وظيفة العداد هي تسجيل عدد مرات التكرار.
2- الشرط ( condition): والشرط الذي يحدد نهاية التكرار إذ يظل التكرار
قائما حتى ينتفي الشرط.
3- الخطوة(step) : وهي القيمة التي تحدد عدد مرات التكرار.
والشكل التالي يوضح برنامجا قمنا فيه باستخدام الحلقة for :
CODE |
#include main() { int counter; for ( counter=1;counter<=20;counter++) printf(“%d”,counter); } |
ومن البرنامج السابق نجد أن الحلقة for بدأت بكلمة ( for ) متبوعة بقوسين
بينهما ثلاثة عبارات تفصل بينها علامة الفاصلة المنقوطة.
العبارة الأولى تخزن القيمة الابتدائية في العداد.
والعبارة الثانية هي الشرط وهنا الشرط أن قيمة العداد أقل من أو تساوي 20.
أما العبارة الثالثة فهي تحدد الخطوة، وفي هذا البرنامج يزاد العداد بمقدار
1 كل مرة تنفذ فيها الحلقة.
والبرنامج السابق ينتج عنه طباعة الأرقام من 1 إلى 20.
ملاحظات:
1- العبارات الثلاثة المكونة لحلقة for يجب أن تفصل عن بعضها بالفاصلة
المنقوطة، وهذا الخطأ من الأخطاء الشهيرة جدا في عالم البرمجة لذا وجب توخي
الحذر.
2- في حالة تكرار أكثر من أمر يتم استبدال العبارة التي تلي بداية الحلقة
for (في المثال السابق هي العبارة ( printf ( " %d",counter); ) ببلوك
يحتوي العبارات المراد تنفيذها.
الحلقة while ( while loop):
في هذه الحلقة التكرارية نحتاج إلى الشرط فقط وطالما كان هذا الشرط متحققا
استمرت الحلقة في التكرار..
والصورة العامة للحلقة while موضحة بالشكل التالي
CODE |
while ( conditon ) { statement 1; statement 2; . . statement n; } |
حيث ( condition ) هو الشرط اللازم لأداء التكرار، والعبارات بداخل أقواس
البلوكات هي العبارات المراد تكرارها.
والمثال الموضح بالشكل التالي يوضح استخدام الحلقة while لطباعة الأعداد من
1 إلى 20
CODE |
#include main() { int counter=1; while ( counter <=20 ) { printf(“%d”,counter); counter++; } } |
من المثال السابق يمكننا استخلاص النتاتج التالية عن الحلقة while:
1- تخصيص القيمة الابتدائية للعداد تتم خارج الحلقة while.
2- زيادة العداد تتم داخل الحلقة while
الحلقة التكرارية do-while:
تختلف هذه الحلقة عن الحلقتين السابقتين في مكان كتابة الشرط ، حيث يكتب
الشرط هنا بعد العبارات المطلوب تكرارها.
والشكل التالي يوضح الصورة العامة للحلقة do-while
CODE |
do { statement 1; statement 2; . . statement n; } while ( conditon |
وأهم ملاحظة على الحلقة التكرارية do-while أنها تنفذ العبارات المطلوب
تكرارها مرة واحدة على الأقل حتى ولو كان الشرط غير متحقق !!!
وتفسير ذلك أن التحقق من الشرط يتم بعد التنفيذ وليس قبله كما في الحلقتين
السابقتين.
ويلاحظ أنه عند تنفيذ البرنامج قد يختلف عنوان الذاكرة المطبوع. ورمز
الفورمات " %p " هو رمز خاص بالمؤشرات ويؤدي إلى طباعة عنوان الذاكرة بالنظام
السداسي عشري.