الفرق بين while و do while و for في البرمجة

كتابة: صالح صبري | آخر تحديث: 24 يناير 2021 | تدقيق: صالح صبري
الفرق بين while و do while و for في البرمجة

توجد ثلاث جمل للتكرار هي while و do while و for، كلها جمل تقوم بوظيفة التكرار لكن ما الفرق بين while و do while و for؟

ما هي while و do while و for؟

عند كتابة أي برنامج بأي لغة برمجة قد نحتاج إلى تكرار بعض الجمل على أساس شرط من الشروط؛ لذلك توجد ثلاث تركيبات لعمل جمل التكرار في البرمجة بشكل عام في كل لغات البرمجة وهي while و do while و ال for.


اقرأ أيضًا: أفضل أنظمة إدارة المحتوى (CMS) لعام 2020


جملة التكرار while:

هي جملة تكرار تقوم باختبار شرط في بداية الأمر فإذا كان ذلك الشرط صحيحًا ،يقوم بتنفيذ ما داخل الأقواس، بعد ذلك يتوقف التكرار عندما يتحول الشرط إلى خطأ، هذا يعني:

  • التفكير في شرط مناسب داخل ال while.
  • أيضا وضع شرط للتوقف.
  • كذلك تضمين جملة إما للزيادة أو النقصان.

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

صيغة while:

while(الشرط){

 A الجملة المراد تكرارها

}


اقرأ أيضًا: ربح المال من البرمجة 6 طرق لربح المال للمبرمجين


مثال: اكتب برنامجًا بلغة السي بلاس بلاس يطبع من 50 إلى 1 تنازليًا باستخدام جملة التكرار وايل، مع صورة المخرجات للبرنامج.

#include <iostream>
using namespace std;
int main() {
   
    int x=50;
    while(x>0){
        cout<<x<<” , “;
        x–;
        }
       
}

أمثلة على while و do while و for
تمارين على loops

جملة التكرار do while:

هذه الجملة يتم فيها عمل الشرط للجمل بعد ذكرها، هذا يعني تنفيذ الكود قبل اختبار الشرط.

الصيغة التركيبية لها:

do{

  a الجملة المراد تكرارها

}while(الشرط);

مثال: كتابة برنامج سي بلاس بلاس يطبع من 30 إلى 1 تنازليًا باستخدام جملة دو وايل، مع صورة المخرجات للبرنامج.

#include <iostream>
using namespace std;
int main(){
   
    int x=30;
    do{
        cout<<x<<” , “;
        x–;
       
    }while(x>0);
       
}

جملة التكرار for:

في هذه الجملة يتم تهيئة المتغير وعمل شرط والاختيار ما بين الزيادة والنقصان.

صيغة جملة for:

for (الزيادة أو النقصان ; الشرط ; التهيئة للمتغير)

{

  A الجملة المراد تكرارها

}

مثال: طباعة الأرقام من 1 إلى 10 باستخدام جملة التكرار for:

#include <iostream>
using namespace std;
int main(){
   
    for (int x = 1 ; x<=20 ; x++){
        cout<<x<<” , “;
    }
    return 0;   
}


ما هو الفرق بين for و while و do while؟

  • في جملة do while و while ، يجب أن تقوم بتعريف المتغيّر وإعطائه قيمة ابتدائية، قبل الشروع في كتابة الجملة.
  • كما أنه في جمل while و do while، يتوجب عمل جملة الزيادة أو النقصان داخل الحاصرتين.
  • لكن فقط في جملتي  for و while عند تشغيل البرنامج يتم أولًا فحص الشرط قبل الدخول إلى عملية تنفيذ الجمل داخل اللوب، بعكس do while التي تنفذ مرة واحدة على الأقل، بعد ذلك يتم فحص الشرط.
  • أيضا يجب وضع فاصلة منقوطة ; بعد الشرط لجملة do while.
  • الفرق الجوهري بين for وبقية جمل التكرار هي أن بداية انطلاقة for معروفة مسبقًا من تهيئة المتغير، أما في while و do while فقد تكون غير معروفة بعد.

ملاحظة: يمكن أيضًا وضع معامل الزيادة أو النقصان والتهيئة في داخل الحاصرتين بدلًا من وضعها أمام for على سبيل المثال:

برنامج للطباعة من 5 إلى 1 باستخدام الـ for:

#include <iostream>
using namespace std;
int main(){
   
    int x = 5;
    for ( ; x>=1 ;){
        cout<<x<<” , “;
        x–;
    }
    return 0;   
}

كما نلاحظ أننا أبقينا على الفواصل المنقوطة أمام for.


تمارين على for و while و do while

من المهم أن تقوم بمحاولة حل المسألة قبل الاطلاع على الحل حتى تتمرن على التفكير المنطقي للبرمجة.

تمارين محلولة:

طباعة الشكل التالي باستخدام for:

الفرق بين while و do while
تمرين على for loop

الشيفرة المصدرية//

ما هو while و do while و for
الفرق بين while و do while و for

 

#include <iostream>
using namespace std;
int main(){
   
    for (int x=1; x<=5;++x){
        for (int y=1;y<=x ;++y){
            cout<<“* “;
        }
        cout<<“\n”;
    }
    return 0;   
}

كذلك طباعة نفس الشكل لكن باستخدام for مع while

#include <iostream>
using namespace std;
int main () {
    int x= 1;
    for( int y = 1 ; y<=5 ; y++)
{
    x = 1 ;
    while( x<=y ) {
    cout <<“* ” ;
    x++;
    }
    cout<<“\n” ;
    }

return 0;
}

التمرين الثاني:

طباعة الشكل التالي:

3 4 5 6
4 5 6
5 6
6

الشيفرة المصدرية:

 

#include <iostream>
using namespace std;
int main() {
    for (int i=1;i<=4;i++ ){
        for (int j=2+i;j<=6;j++)
        cout<<j<<” “;
            cout<<endl;
    }

   return 0;  
}

بطريقة أخرى:

#include <iostream>
using namespace std;
int main() {
    int i,j,y=0;
    for (i=3 ;i<=6 ;i++ ){
        for (j=3+y; j<=6 ;j++)
        cout<<j<<” “;

        y++;
        cout<<endl;
    }
   return 0;


اقرأ أيضًا: أفضل تطبيقات للغة c++


تحتاج إلى التمرن على هذه الجمل وحل أكبر قدر ممكن منها لكي تفهمها بشكل جيد وتتقنها.

29 مشاهدة