الحلقات في السي بلاس بلاس |C++ loop

 الحلقات في السي بلاس بلاس C++

نستخدم الحلقات Loops ) بهدف تكرار نفس الكود عدة مرات.
إذاً أي كود نريده أن يتنفذ عدة مرات, نقوم بكتابته داخل حلقة فتقوم هي بإعادة تنفيذ الكود قدر ما شئنا ضمن شروط معينة نقوم نحن بتحديدها.


 تنفيذ الأوامر و الحلقات في الذاكرة

الأوامر في العادة تتنفذ بتسلسل وراء بعضها, و لكن الحلقات تجعل سهم تنفيذ الأوامر يقف عندها فيقوم بتنفيذ الأوامر التي بداخلها عدة مرات, و بعد أن يخرج من الحلقة يعود و يكمل تنفيذ باقي الأوامر الموجودة بعدها كالتالي.

الحلقات في السي بلاس بلاس  |C++ loop

عندما تتنفذ الحلقة فإن الأوامر الموضوعة فيها تنفذ بشكل منفصل عن باقي الأوامر الموجودة في البرنامج, أي يمكنك إعتبار أن جميع أوامر الحلقة توضع في مكان خاص في الذاكرة, هذا المكان يسمى 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.

مثال

Main.cpp
                    #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.

مثال

Main.cpp
                    #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.

مثال

Main.cpp
                    #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
                  
_______