الحلقات في السي بلاس بلاس C++
نستخدم الحلقات ( Loops ) بهدف تكرار نفس الكود عدة مرات.
إذاً أي كود نريده أن يتنفذ عدة مرات, نقوم بكتابته داخل حلقة فتقوم هي بإعادة تنفيذ الكود قدر ما شئنا ضمن شروط معينة نقوم نحن بتحديدها.
تنفيذ الأوامر و الحلقات في الذاكرة
الأوامر في العادة تتنفذ بتسلسل وراء بعضها, و لكن الحلقات تجعل سهم تنفيذ الأوامر يقف عندها فيقوم بتنفيذ الأوامر التي بداخلها عدة مرات, و بعد أن يخرج من الحلقة يعود و يكمل تنفيذ باقي الأوامر الموجودة بعدها كالتالي.
عندما تتنفذ الحلقة فإن الأوامر الموضوعة فيها تنفذ بشكل منفصل عن باقي الأوامر الموجودة في البرنامج, أي يمكنك إعتبار أن جميع أوامر الحلقة توضع في مكان خاص في الذاكرة, هذا المكان يسمى scope.
بعد أن تتنفذ جميع أوامر الحلقة في هذا الـ scope, يتم مسح الـ scope كلياً من الذاكرة و هذه العملية تسمى Destroy.
أنواع الحلقات في C++
إسم الحلقة | دواعي الإستخدام |
---|---|
For Loop | تستخدم الحلقة for في حال كان عدد المرات التي سيعاد فيها تنفيذ الكود معروفاً.تابع القراءة الحلقة for في السي بلاس بلاس |
While Loop | يفضل إستخدام الحلقة while في حال كان عدد المرات التي سيعاد فيها تنفيذ الكود غير معروف.تابع القراءة الحلقة while في السي بلاس بلاس» |
Do While Loop | يفضل إستخدام الحلقة do while في حال كان عدد المرات التي سيعاد فيها تنفيذ الكود غير معروف و بنفس الوقت يجب أن يتنفذ مرة واحدة على الأقل.تابع القراءة الحلقة do while في السي بلاس بلاس» |
جمل التحكم مع الحلقات في C++
نستخدم جمل التحكم ( Control Statements ) للتحكم في سير تنفيذ الحلقات و مع جملة الشرط switch
.
جملة التحكم | تعريفها |
---|---|
Break Statement | تستخدم في الحلقات و في الجملة switch .بمجرد ان تنفذ الجملة break فإنها توقف الـ scope بأكمله و تخرج منه و تمسحه من الذاكرة ثم تنتقل للكود الذي يليه في البرنامج.تابع القراءة الجملة break في ++C » |
Continue Statement | تستخدم مع الحلقات فقط. نستخدمها لتجاوز تنفيذ كود معين في الحلقة, إذاً نستخدمها لتجاوز جزء من كود الـ scope. تابع القراءة الجملة continue في ++C » |
الحلقة for
في السي بلاس بلاس C++
تعريف الحلقة for
نستخدم الحلقة for
إذا كنا نريد تنفيذ الكود عدة مرات محددة, فمثلاً إذا كنا نريد تنفيذ كود معين 10 مرات, نضعه بداخل حلقة تعيد نفسها 10 دورات.
إستخدام الحلقة for في C++
for( initialisation; condition; increment أو decrement ) { // statements }
initialisation: هي أول خطوة تتنفذ في الحلقة و هي تتنفذ مرة واحدة فقط على عكس جميع العناصر الموجودة في الحلقة.
في هذه الخطوة نقوم بتعريف متغير ( يسمى عداد ) و نضع بعده;
.condition: هي ثاني خطوة تتنفذ في الحلقة و هي تتنفذ في كل دورة.
في هذه الخطوة نقوم بوضع شرط يحدد متى تتوقف الحلقة, في كل دورة يتم التأكد أولاً إذا تحقق هذا الشرط أم لا, و نضع بعده;
.
هنا طالما أن نتيجة الشرط تساويtrue
سيعيد تكرار الكود.statements: هي الخطوة الثالثة, و تعني تنفيذ جميع الأوامر الموجودة في الحلقة و هي تتنفذ في كل دورة.
بعد أن تتنفذ جميع الأوامر سيصعد إلى الخطوة الأخيرة التي تحدث في نهاية كل دورة و هي إما زيادة قيمة العداد أو إنقاصها.decrement أو increment: هي الخطوة الرابعة و الأخيرة, و هي تتنفذ في كل دورة.
هنا نحدد كيف تزداد أو تنقص قيمة العداد, و لا نضع بعده;
.
تذكر فقط أن جميع هذه الخطوات تتكرر في كل دورة ما عدا أول خطوة, و السبب أننا لا نحتاج إلى تعريف عداد جديد في كل دورة, بل نستعمل العداد القديم و الذي من خلاله نعرف في أي دورة أصبحنا.
مثال حول الحلقة for
في سي بلاس بلاس
في المثال التالي قمنا بتعريف حلقة تطبع جميع الأرقام من 1 إلى 10.
مثال
#include <iostream> using namespace std; int main() { // تتألف من 10 دورات. في كل دورة تطبع قيمة العداد المستخدم فيها for هنا قمنا بإنشاء حلقة for( int i=1; i<=10; i++ ) { cout << i << endl; } return 0; }
•سنحصل على النتيجة التالية عند التشغيل.
1 2 3 4 5 6 7 8 9 10
الحلقة while
في السي بلاس بلاس C++
تعريف الحلقة while
في السي بلاس بلاس C++
نستخدم الحلقة while
إذا كنا نريد تنفيذ الكود عدة مرات, ولكننا لا نعرف كم مرة بالتحديد لأننا نريد إيقاف التنفيذ إذا تحقق شرط معين.
هذه الحلقة تتوقف عن تكرار نفسها إذا تحقق الشرط الذي وضعناه لها.
هنا كأننا نقول: " طالما أن الشرط لم يتحقق إستمر في تكرار الكود ".
إستخدام الحلقة while
في C++
initialisation; while( condition ) { // statements increment أو decrement; }
initialisation: هي أول خطوة تتنفذ في الحلقة و هي تتنفذ مرة واحدة فقط على عكس جميع العناصر الموجودة في الحلقة.
في هذه الخطوة نقوم بتعريف متغير ( يسمى عداد ).condition: هي ثاني خطوة تتنفذ في الحلقة و هي تتنفذ في كل دورة.
في هذه الخطوة نقوم بوضع شرط يحدد متى تتوقف الحلقة, في كل دورة يتم التأكد أولاً إذا تحقق هذا الشرط أم لا.
هنا طالما أن نتيجة الشرط تساويtrue
سيعيد تكرار الكود.statements: هي الخطوة الثالثة, و تعني تنفيذ جميع الأوامر الموجودة في الحلقة و هي تتنفذ في كل دورة.
decrement أو increment: هي الخطوة الرابعة و الأخيرة, و هي تتنفذ في كل دورة.
هنا نحدد كيف تزداد أو تنقص قيمة العداد.
تذكر فقط أن جميع هذه الخطوات تتكرر في كل دورة ما عدا أول خطوة, و السبب أننا لا نحتاج إلى تعريف عداد جديد في كل دورة, بل نستعمل العداد القديم و الذي من خلاله نعرف في أي دورة أصبحنا.
مثال حول الحلقة while
في السي بلاس بلاس
في المثال التالي قمنا بتعريف حلقة تطبع جميع الأرقام من 1 إلى 10.
مثال
#include <iostream> using namespace std; int main() { // هنا قمنا بتعريف المتغير الذي استخدمناه كعداد في الحلقة int i=1; // تظل تنفذ الأوامر الموضوعة فيها طالما أن قيمة العدد لا تزال أصغر أو تساوي 10 while هنا أنشأنا حلقة while( i<=10 ) { // في كل دورة سيتم طباعة قيمة العداد ثم إضافة 1 عليها cout << i << endl; i++; } return 0; }
•سنحصل على النتيجة التالية عند التشغيل.
1 2 3 4 5 6 7 8 9 10
الحلقة do while
في السي بلاس بلاس C++
تعريف الحلقة do while
في السي بلاس بلاس C++
نستخدم الحلقة do while
إذا كنا نريد تنفيذ الكود عدة مرات, ولكننا لا نعرف كم مرة بالتحديد لأننا نريد إيقاف التنفيذ إذا تحقق شرط معين.
هذه الحلقة تتوقف عن تكرار نفسها إذا تحقق الشرط الذي وضعناه لها.
الفرق الوحيد بينها و بين الحلقة while
أنها تتنفذ مرة واحدة على الأقل لأنها تتأكد من الشرط بعد تنفيذ الأوامر و ليس قبلهم.
هنا كأننا نقول: " طالما أن الشرط لم يتحقق إستمر في تكرار الكود ".
إستخدام الحلقة do while
في C++
initialisation; do{ // statements increment أو decrement; } While( condition );
initialisation: هي أول خطوة تتنفذ في الحلقة و هي تتنفذ مرة واحدة فقط على عكس جميع العناصر الموجودة في الحلقة.
في هذه الخطوة نقوم بتعريف متغير ( يسمى عداد ).statements: هي الخطوة الثانية, و تعني تنفيذ جميع الأوامر الموجودة في الحلقة و هي تتنفذ في كل دورة.
decrement أو increment: هي الخطوة الثالثة, و هي تتنفذ في كل دورة.
هنا نحدد كيف تزداد أو تنقص قيمة العداد.condition: هي الخطوة الرابعة و الأخيرة و هي تتنفذ في كل دورة.
في هذه الخطوة نقوم بوضع شرط يحدد متى تتوقف الحلقة, في نهاية كل دورة يتم التأكد إذا تحقق الشرط أم لا.
هنا طالما أن نتيجة الشرط تساويtrue
سيعيد تكرار الكود.
تذكر فقط أن جميع هذه الخطوات تتكرر في كل دورة ما عدا أول خطوة, و السبب أننا لا نحتاج إلى تعريف عداد جديد في كل دورة, بل نستعمل العداد القديم و الذي من خلاله نعرف في أي دورة أصبحنا.
مثال حول الحلقة do while
في السي بلاس بلاس
في المثال التالي قمنا بتعريف حلقة تطبع جميع الأرقام من 1 إلى 10.
مثال
#include <iostream> using namespace std; int main() { // هنا قمنا بتعريف المتغير الذي استخدمناه كعداد في الحلقة int i=1; // تظل تنفذ الأوامر الموضوعة فيها طالما أن قيمة العدد لا تزال أصغر أو تساوي 10 while هنا أنشأنا حلقة do { // في كل دورة سيتم طباعة قيمة العداد ثم إضافة 1 عليها cout << i << endl; i++; } while( i<=10 ); return 0; }
•سنحصل على النتيجة التالية عند التشغيل.
1 2 3 4 5 6 7 8 9 10