جملة تكرار (دوران) For
جملةة التكرار/ الدوران For هي جملة تتحكم في السماح لك بتنفيذ مجموعة تعليمات برمجية بشكل متكرر لعدد محدد من المرات. يكون البناء العام لجملة الدوران For كالتالي:
for (initialization; condition; increment) { // code to execute }
الـ initialization
هي جملة يتم تنفيذها قبل بداية حلقة ال for وهنا نعطي قيمة بدائية للمتغير. جملة الشرط condition
يتم التحقق منها قبل كل دورة من جملة الدوران. إذا كان الشرط condition
يعطي قيمة صحيحة، فسيتم تنفيذ مجموعة الأوامر داخل حلقة الدوران for. ويتم تنفيذ الزيادة increment
في قيمة المتغير بعد كل دورة من جملة الدوران for.
هنا مثال على حلقة الدوران for:
#include <iostream> using namespace std; int main() { for (int c = 0; c < 10; c++) { cout << c << endl; } return 0; }
تعمل حلقة الدوران for كالتالي:
- الـ
initialization
أو الإبتداء، يعطي المتغيرc
قيمة بدائية تساوي 0. - الـ
condition
الشرط، يتحقق إذا كانت قيمة المتغيرc
أقل من 10. إذا كانت كذلك، فإن البرنامج يقوم بتنفيذ مجموعة الأوامر البرمجية داخل هذه الحلقة. - تتكون مجموعة الأوامر البرمجية في هذا البرنامج من أمر لطباعة قيمة المتغير
c
إلى شاشة المخرجات، وهو ما سيقوم به هذا البرنامج في حال صحة الشرط condition. - الـ
increment
الزيادة تقوم بزيادة قيمة المتغيرc
بمقدار 1. - ثم يتم تنفيذ الخطوات من 2 إلى 4 بشكل متكرر حتى تصبح قيمة الشرط
condition
خاطئة.
عندما تصبح قيمة الشرط condition
خاطئة، تتوقف الحلقة عن الدوران وينتهي عملها.
تكون مخرجات هذا البرنامج كالتالي:
0 1 2 3 4 5 6 7 8 9
هنا مثال إضافيّ يطلب من المستخدم إدخال 10 علامات ثم يقوم بطباعة المعدّل لهذه العلامات إلى شاشة المخرجات:
#include <iostream> using namespace std; int main() { int m = 0, sum = 0; for (int i = 1; i <= 10; i++) { cout << "Enter your marks:"; cin >> m; sum = sum + m; } cout << "the avg = " << ((double)sum / 10) << endl; return 0; }
تعمل حلقة الدوران for كالتالي:
- الـ
initialization
أو الإبتداء، يعطي المتغيرi
قيمة بدائية بمقدار 1. - الـ
condition
الشرط، يتحقق إذا كانت قيمة المتغيرi
أقل أو يساوي 10. إذا كان كذلك، فإن البرنامج يقوم بتنفيذ مجموعة الأوامر البرمجية داخل هذه الحلقة. - مجموعة الأوامر البرمجية داخل هذه الحلقة تطالب المستخدم بإدخال علاماته وتخزن القيمة في المتغير
m
ثم يتم إضافة هذه العلامات المخزنة في المتغيرm
إلى المجموعsum
. - الـ
increment
الزيادة تقوم بزيادة قيمة المتغيرi
بمقدار 1. - ثم يتم تنفيذ الخطوات من 2 إلى 4 بشكل متكرر حتى تصبح قيمة الشرط
condition
خاطئة.
عندما تصبح قيمة الشرط condition
خاطئة، تتوقف الحلقة عن الدوران وينتهي عملها.
عند إنتهاء عمل حلقة الدوران، يقوم البرنامج بطباعة معدّل العلامات إلى شاشة المخرجات. تم حساب قيمة المعدّل بقسمة مجموع العلامات على عددها.
إستخدمنا نوع البيانات (double)
في التعبير الحسابي ((double)sum / 10)
للتأكيد أن قيمة النتيجة لعملية القسمة ستكون رقمًا عشريًّا. هذه نقطة مُهمّة لأن قيمة المجموع sum
هي عبارة عن عدد صحيح، وقسمة عددين صحيحين ستنتج عددًا صحيحًا في لغة C++. في حال عدم إستخدام نوع البيانات (double)
، سيقوم البرنامج بطباعة قيمة صحيحة لنتائج القسمة، وهذه لن تكون نتيجة دقيقة.
هنا مثال على المخرجات لهذا البرنامج:
Enter your marks: 10 Enter your marks: 20 Enter your marks: 30 Enter your marks: 40 Enter your marks: 50 Enter your marks: 60 Enter your marks: 70 Enter your marks: 80 Enter your marks: 90 Enter your marks: 100 the avg = 55.000000
هذا البرنامج يقوم بطباعة الأ{قام من 10 إلى 50، مفصولة بمسافة بين كل عدد والذي يليه إلى شاشة المخرجات:
#include <iostream> using namespace std; int main() { for (size_t i = 10; i <= 50; i++) { cout << i << " "; } return 0; }
تعمل حلقة الدوران for كالتالي:
- الـ
initialization
أو الإبتداء، يعطي المتغيرi
variable to 10. - الـ
condition
الشرط، يتحقق إذا كانت قيمة المتغيرi
أقل من أو تساوي 50. إذا كانت كذلك، فإن البرنامج يقوم بتنفيذ مجموعة الأوامر البرمجية داخل هذه الحلقة. - تتكون مجموعة الأوامر البرمجية في هذا البرنامج من أمر لطباعة قيمة المتغير
i
إلى شاشة المخرجات متبوعًا بمساحة. - الـ
increment
الزيادة تقوم بزيادة قيمة المتغيرi
بمقدار 1. - ثم يتم تنفيذ الخطوات من 2 إلى 4 بشكل متكرر حتى تصبح قيمة الشرط
condition
خاطئة.
عندما تصبح قيمة الشرط condition
خاطئة، تتوقف الحلقة عن الدوران وينتهي عملها.
هكذا ستكون مخرجات هذه البرنامج:
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
لماذا تم إستخدام size_t كعدّاد لحلقة الدوران؟
الـ size_t
هو نوع بيانات تم إستخدامه كعدّداد للبرنامج لأن هذا النوع يتم إرجاع قيمته من خلال المشغّل sizeof
. وهذه يؤكد أن عدّاد حلقة الدوران يمكن إستخدامه مع أي نوع من البيانات، وهذه يشمل المصفوفات arrays وال objects.
يقوم هذا البرنامج بطباعة الأرقام من 10 إلى 1 تنازليًّا مفصولة بمسافة بين كل رقم والآخر على شاشة المخرجات:
#include <iostream> using namespace std; int main() { for (size_t i = 10; i >= 1; i--) { cout << i << " "; } return 0; }
تعمل حلقة الدوران for كالتالي:
- الـ
initialization
أو الإبتداء، يعطي المتغيرi
variable to 10. - الـ
condition
الشرط، يتحقق إذا كانت قيمة المتغيرi
أكبر من أو تساوي 1. إذا كانت كذلك، فإن البرنامج يقوم بتنفيذ مجموعة الأوامر البرمجية داخل هذه الحلقة. - تتكون مجموعة الأوامر البرمجية في هذا البرنامج من أمر لطباعة قيمة المتغير
i
إلى شاشة المخرجات متبوعًا بمساحة. - الـ
decrement
يقوم بإنقاص قيمةi
بمقدار 1. - ثم يتم تنفيذ الخطوات من 2 إلى 4 بشكل متكرر حتى تصبح قيمة الشرط
condition
خاطئة.
عندما تصبح قيمة الشرط condition
خاطئة، تتوقف الحلقة عن الدوران وينتهي عملها.
تكون مخرجات هذا البرنامج كالتالي:
10 9 8 7 6 5 4 3 2 1