بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
التكرار (Loop)
قد يصادفك حينما تكتب برنامج في السي احتياجك إلى إعادة جزء أو عدة أجزاء
من البرنامج مرات عديدة ،لذلك وجد التكرار وهو يقوم بإعادة أجزاء من
البرنامج عدة مرات أو حتى يتحقق شرط معين تكون قد وضعته للبرنامج..
فيا ترى من الذي سيقوم بهذا التكرار؟؟؟
هنالك ثلاثة أنواع من التكرار تسمح لك بالتكرار هي:
1- for.
2- while.
3- do …while.
وسوف نقوم نحن بتعليمك الأنواع الثلاثة وعليك أنت باختيار التكرار المناسب لبرنامجك.
وهو يسمح بتكرار جزء معين من البرنامج عدة مرات، والقاعدة الأساسية لهذا التكرار هي:
كود:
for(عبارة تمهيدية;عبارة الشرط;عبارة الزيادة )
{
الأوامر;
}
ثم دعنا نأخذ المثال الآتي وذلك حتى تكون عملية الفهم أسرع.
كود:
for(x=0;x<100;x++)
{
printf("This is my best site to learn Cn");
printf("Tell all your friends about this siten");
}
دعنا نتعرف معا بالتفصيل على هذه القاعدة : |
1- في السطر الأول نكتب كلمة for ثم نفتح قوس ونكتب في أول خانة عبارة
التمهيد وهي تنفذ مرة واحدة عند بداية التكرار كما في المثال السابق
x=02- في الخانة الأخرى نكتب الشرط الذي سوف يمثل استمرار التكرار كما في المثال السابق
x<100 بحيث يختبر هذا الشرط في كل مرة يقوم بالتكرار ، فإذا كان الشرط صحيحا فإن التكرار سيستمر أما إذا كان خاطئا فسيتوقف التكرار .
3- أما في الخانة الأخيرة نكتب عبارة الزيادة وهي تنفذ بعد كل تكرار كما في المثال السابق
++x وبذلك سوف تقوم بزيادة قيمة المتغير وسوف يقوم بزيادة قيمة المتغير بمقدار واحد.
ثم يأتي القوس
} ومن بعده نكتب الأوامر
التي نريد تنفيذها كما في المثال السابق، وهي سوف تتكرر مائة مرة ، طبعا
نستطيع وضع اكثر من عبارة ، وأخيرا كل ما علينا هو أن نغلقها بالقوس
{ ملاحظة: إذا كنا نريد تكرار الأمر مرة واحدة فقط ، فنحن بإمكاننا التخلي عن
الأقواس { و } ، أما في حالة كتابة اكثر من أمر فيجب وضع الأقواس.
وهكذا نكون قد انتهينا من التكرار for بكل بساطة .
وهذا التكرار يقوم بتكرار غير محدد من المرات حتى يتحقق شرط معين ، والقاعدة الأساسية لهذا التكرار هي :
كود:
while(الشرط)
{
………….;
…………الأوامر;
}
دعنا نأخذ المثال التالي:
كود:
while(num<99)
{
printf("This is a correct numbern");
num++;
}
دعنا نتكلم بالتفصيل عن هذا التكرار:
1- عند كتابة الشرط فإن البرنامج سوف يقوم بتكرار الأوامر ما دام الشرط
صحيحا ، أما إذا كان الشرط خاطئا فإن التكرار سوف يتوقف ، ففي المثال
السابق نستطيع القول بأنه ما دام الرقم اقل من
99 فإن العبارة سوف تطبع .
2- بعد طباعة الجملة سوف ينتقل إلى العبارة الأخرى وهي
++num وبذلك سوف يزيد الرقم .
3- وهكذا سوف تتم تكرار العبارة إلى إن تصل إلى الرقم
99 ومن بعدها سوف يتوقف التكرار.
وهذا التكرار يعتبر شديد الشبه بابن عمه while ولكن كل الاختلاف في مكان
كتابة الشرط ، وهنالك ميزة لهذا التكرار ، فيا ترى ما هي هذه الميزة؟
هل اخبرك بها ..أم اتركك تكتشفها بنفسك؟؟؟؟
حسنا سوف اخبرك بها عند نهاية شرح هذا التكرار….......
القاعدة الأساسية لهذا التكرارهي:
كود:
do{
…………..;
………….;
الأوامر;
}while(الشرط)
دعنا نأخذ المثال التالي:
كود:
do{
printf("This is the three kind of loopn");
count++;
}while(count!=77)
والآن سوف نقوم بشرح هذا المثال:
1- حينما يبدأ هذا التكرار ، فهو سوف يمر بكلمة
do ثم سيدخل جسم التكرار ، وسيقوم بطباعة العبارة الموجودة .
2- بعد هذا سوف يمر بالعبارة
++count وهي سوف تخبره بزيادة العداد مرة واحدة.
3- و أخيرا سوف يخرج من التكرار وسيمر بالشرط
count!=77وسوف يقوم باختبار الشرط فإذا كان يساوي
77 فإنه سوف يوقف التكرار ، أما إذا كان لا يساوي
77 فإنه سوف يعيد التكرار ويعيد طباعة الجملة ، وهكذا سوف يستمر بطباعة الجملة إلى أن يكون الشرط خاطئا ومن بعدها سوف يخرج من التكرار.
وبعد أن انتهينا من شرح هذا التكرار فيا ترى هل اكتشفت الميزة التي تميزه عن باقي التكرارات الأخرى …..لم تكتشفها!!
حسنا سوف أخبرك بها…..إن ميزة هذا التكرار تتمثل في أنه يقوم بطباعة الأمر
مرة واحدة على الأقل حتى ولو كان الشرط خاطئا ….لان الشرط يمر به في نهاية
التكرار بعكس الأنواع الأخرى من التكرارات.
وهكذا انتهى درسنا عن التكرار …..أتمنى أن تكون قد استوعبته ، وتأكد بأن
اقصر الطرق لتعلم السي هو تطبيقها….لذلك هيا سارع إلى فتح برنامج السي،
وطبق بنفسك ما تعلمته من هذا الدرس……
وتمنياتي لك بالتوفيق!