الحلقات التكرارية فى لغة سى بلس بلس
الدوائر ( الحلقات )التكرارية Looping
الدوائر التكرارية
- الدائرة التكرارية For
- الدائرة التكرارية while
- الدائرة التكرارية Do-while
- الدوائر التكرارية المتداخلة Nested Loops
- أمثلة تطبيقية
كثيرا ما نحتاج في البرامج إلى تكرار أمر موجه للكمبيوتر عددا من المرات، وتوفر لغة 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
ومن البرنامج السابق نجد أن الحلقة for بدأت بكلمة ( for ) متبوعة بقوسين بينهما ثلاثة عبارات تفصل بينها علامة الفاصلة المنقوطة.
العبارة الأولى تخزن القيمة الابتدائية في العداد.
والعبارة الثانية هي الشرط وهنا الشرط أن قيمة العداد أقل من أو تساوي 20.
أما العبارة الثالثة فهي تحدد الخطوة، وفي هذا البرنامج يزاد العداد بمقدار 1 كل مرة تنفذ فيها الحلقة.
والبرنامج السابق ينتج عنه طباعة الأرقام من 1 إلى 20.
ملاحظات:
1- العبارات الثلاثة المكونة لحلقة for يجب أن تفصل عن بعضها بالفاصلة المنقوطة، وهذا الخطأ من الأخطاء الشهيرة جدا في عالم البرمجة لذا وجب توخي الحذر.
2- في حالة تكرار أكثر من أمر يتم استبدال العبارة التي تلي بداية الحلقة for (في المثال السابق هي العبارة ( printf ( %d",counter); ) ببلوك يحتوي العبارات المراد تنفيذها.
الحلقة while ( while loop):
في هذه الحلقة التكرارية نحتاج إلى الشرط فقط وطالما كان هذا الشرط متحققا استمرت الحلقة في التكرار..
والصورة العامة للحلقة while موضحة بالشكل التالي
حيث ( condition ) هو الشرط اللازم لأداء التكرار، والعبارات بداخل أقواس البلوكات هي العبارات المراد تكرارها.
والمثال الموضح بالشكل التالي يوضح استخدام الحلقة while لطباعة الأعداد من 1 إلى 20
من المثال السابق يمكننا استخلاص النتاتج التالية عن الحلقة while:
1- تخصيص القيمة الابتدائية للعداد تتم خارج الحلقة while.
2- زيادة العداد تتم داخل الحلقة while
الحلقة التكرارية do-while:
تختلف هذه الحلقة عن الحلقتين السابقتين في مكان كتابة الشرط ، حيث يكتب الشرط هنا بعد العبارات المطلوب تكرارها.
والشكل التالي يوضح الصورة العامة للحلقة do-while
CODE
do
{
statement 1;
statement 2;
.
.
statement n;
}
while ( conditon
وأهم ملاحظة على الحلقة التكرارية do-while أنها تنفذ العبارات المطلوب تكرارها مرة واحدة على الأقل حتى ولو كان الشرط غير متحقق !!!
وتفسير ذلك أن التحقق من الشرط يتم بعد التنفيذ وليس قبله كما في الحلقتين السابقتين.
ويلاحظ أنه عند تنفيذ البرنامج قد يختلف عنوان الذاكرة المطبوع. ورمز الفورمات " %p " هو رمز خاص بالمؤشرات ويؤدي إلى طباعة عنوان الذاكرة بالنظام السداسي عشري.
قد يصادفك حينما تكتب برنامج في السي احتياجك إلى إعادة جزء أو عدة أجزاء من البرنامج مرات عديدة ،لذلك وجد التكرار وهو يقوم بإعادة أجزاء من البرنامج عدة مرات أو حتى يتحقق شرط معين تكون قد وضعته للبرنامج..
فيا ترى من الذي سيقوم بهذا التكرار؟؟؟
هنالك ثلاثة أنواع من التكرار تسمح لك بالتكرار هي:
1- تكرار for.
2- تكرار while.
3- تكرار do …while.
وسوف نقوم نحن بتعليمك الأنواع الثلاثة وعليك أنت باختيار التكرار المناسب لبرنامجك.
تكرارfor
وهو يسمح بتكرار جزء معين من البرنامج عدة مرات، والقاعدة الأساسية لهذا التكرار هي:
for(عبارة تمهيدية;عبارة الشرط;عبارة الزيادة )
الأوامر;
ثم دعنا نأخذ المثال الآتي وذلك حتى تكون عملية الفهم أسرع.
printf("This is my best site to learn Cn");
printf("Tell all your friends about this siten");
}
دعنا نتعرف معا بالتفصيل على هذه القاعدة :
1- في السطر الأول نكتب كلمة for ثم نفتح قوس ونكتب في أول خانة عبارة التمهيد وهي تنفذ مرة واحدة عند بداية التكرار كما في المثال السابق x=0
2- في الخانة الأخرى نكتب الشرط الذي سوف يمثل استمرار التكرار كما في المثال السابقبحيث يختبر هذا الشرط في كل مرة يقوم بالتكرار ، فإذا كان الشرط صحيحا فإن التكرار سيستمر أما إذا كان خاطئا فسيتوقف التكرار .
3- أما في الخانة الأخيرة نكتب عبارة الزيادة وهي تنفذ بعد كل تكرار كما في المثال السابقx++ وبذلك سوف تقوم بزيادة قيمة المتغير وسوف يقوم بزيادة قيمة المتغير بمقدار واحد.
ثم يأتي القوس { ومن بعده نكتب الأوامر التي نريد تنفيذها كما في المثال السابق، وهي سوف تتكرر مائة مرة ، طبعا نستطيع وضع اكثر من عبارة ، وأخيرا كل ما علينا هو أن نغلقها بالقوس }
ملاحظة: إذا كنا نريد تكرار الأمر مرة واحدة فقط ، فنحن بإمكاننا التخلي عن الأقواس، أما في حالة كتابة اكثر من أمر فيجب وضع الأقواس.
وهكذا نكون قد انتهينا من التكرار for بكل بساطة .
________________________________________
التكرار while
وهذا التكرار يقوم بتكرار غير محدد من المرات حتى يتحقق شرط معين ، والقاعدة الأساسية لهذا التكرار هي :
while(الشرط)