جملة تكرار (دوران) 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أو الإبتداء، يعطي المتغيرivariable 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أو الإبتداء، يعطي المتغيرivariable to 10. - الـ
conditionالشرط، يتحقق إذا كانت قيمة المتغيرiأكبر من أو تساوي 1. إذا كانت كذلك، فإن البرنامج يقوم بتنفيذ مجموعة الأوامر البرمجية داخل هذه الحلقة. - تتكون مجموعة الأوامر البرمجية في هذا البرنامج من أمر لطباعة قيمة المتغير
iإلى شاشة المخرجات متبوعًا بمساحة. - الـ
decrementيقوم بإنقاص قيمةiبمقدار 1. - ثم يتم تنفيذ الخطوات من 2 إلى 4 بشكل متكرر حتى تصبح قيمة الشرط
conditionخاطئة.
عندما تصبح قيمة الشرط condition خاطئة، تتوقف الحلقة عن الدوران وينتهي عملها.
تكون مخرجات هذا البرنامج كالتالي:
10 9 8 7 6 5 4 3 2 1