قائمة المدونات الإلكترونية

الجمعة، 29 أبريل 2011

الدوائر ( الحلقات )التكرارية Looping

الدوائر التكرارية
- الدائرة التكرارية For
- الدائرة التكرارية while
- الدائرة التكرارية  Do-while
-  الدوائر التكرارية المتداخلة Nested Loops 
- أمثلة تطبيقية

19 التعليقات:

غير معرف يقول...

كثيرا ما نحتاج في البرامج إلى تكرار أمر موجه للكمبيوتر عددا من المرات، وتوفر لغة C عدة وسائل تمكن المبرمج من أداء هذا التكرار.
وعادة ما تسمى هذه الوسائل " الحلقات التكرارية "، ويوجد العديد من الحلقات التكرارية في لغة C سنتناول منها هنا
1- الحلقة for ( for loop ).
2- الحلقة while ( while loop ).
3- الحلقة do…. while ( do-while loop).
وفيما يلي سنتناول كل حلقة بالدراسة من حيث الشكل العام و أسلوب الاستخدام وأمثلة توضيحية.

الحلقة for ( for loop):
تستخدم الحلقة for لتكرار أمر معين ( أو مجموعة من الأوامر) عددا من المرات وتحتاج الحلقة إلي ثلاث عناصر أساسية ( انظر الشكل التالي)

CODE
for ( counter statement; condition; step)



و هذه العناصر هي:
1- العداد ( counter ) : وظيفة العداد هي تسجيل عدد مرات التكرار.
2- الشرط ( condition): والشرط الذي يحدد نهاية التكرار إذ يظل التكرار قائما حتى ينتفي الشرط.
3- الخطوة(step) : وهي القيمة التي تحدد عدد مرات التكرار.

والشكل التالي يوضح برنامجا قمنا فيه باستخدام الحلقة for :

CODE

#include
main()
{
int counter;
for ( counter=1;counter<=20;counter++)
printf(“%d”,counter);
}



ومن البرنامج السابق نجد أن الحلقة for بدأت بكلمة ( for ) متبوعة بقوسين بينهما ثلاثة عبارات تفصل بينها علامة الفاصلة المنقوطة.
العبارة الأولى تخزن القيمة الابتدائية في العداد.
والعبارة الثانية هي الشرط وهنا الشرط أن قيمة العداد أقل من أو تساوي 20.
أما العبارة الثالثة فهي تحدد الخطوة، وفي هذا البرنامج يزاد العداد بمقدار 1 كل مرة تنفذ فيها الحلقة.
والبرنامج السابق ينتج عنه طباعة الأرقام من 1 إلى 20.

ملاحظات:
1- العبارات الثلاثة المكونة لحلقة for يجب أن تفصل عن بعضها بالفاصلة المنقوطة، وهذا الخطأ من الأخطاء الشهيرة جدا في عالم البرمجة لذا وجب توخي الحذر.
2- في حالة تكرار أكثر من أمر يتم استبدال العبارة التي تلي بداية الحلقة for (في المثال السابق هي العبارة ( printf ( " %d",counter); ) ببلوك يحتوي العبارات المراد تنفيذها.


الحلقة while ( while loop):
في هذه الحلقة التكرارية نحتاج إلى الشرط فقط وطالما كان هذا الشرط متحققا استمرت الحلقة في التكرار..
والصورة العامة للحلقة while موضحة بالشكل التالي

CODE

while ( conditon )
{
statement 1;
statement 2;
.
.
statement n;
}




حيث ( condition ) هو الشرط اللازم لأداء التكرار، والعبارات بداخل أقواس البلوكات هي العبارات المراد تكرارها.
والمثال الموضح بالشكل التالي يوضح استخدام الحلقة while لطباعة الأعداد من 1 إلى 20

CODE

#include
main()
{
int counter=1;
while ( counter <=20 )
{
printf(“%d”,counter);
counter++;
}
}




من المثال السابق يمكننا استخلاص النتاتج التالية عن الحلقة while:
1- تخصيص القيمة الابتدائية للعداد تتم خارج الحلقة while.
2- زيادة العداد تتم داخل الحلقة while

الحلقة التكرارية do-while:
تختلف هذه الحلقة عن الحلقتين السابقتين في مكان كتابة الشرط ، حيث يكتب الشرط هنا بعد العبارات المطلوب تكرارها.
والشكل التالي يوضح الصورة العامة للحلقة do-while

CODE

do
{
statement 1;
statement 2;
.
.
statement n;
}
while ( conditon




وأهم ملاحظة على الحلقة التكرارية do-while أنها تنفذ العبارات المطلوب تكرارها مرة واحدة على الأقل حتى ولو كان الشرط غير متحقق !!!
وتفسير ذلك أن التحقق من الشرط يتم بعد التنفيذ وليس قبله كما في الحلقتين السابقتين.






ويلاحظ أنه عند تنفيذ البرنامج قد يختلف عنوان الذاكرة المطبوع. ورمز الفورمات " %p " هو رمز خاص بالمؤشرات ويؤدي إلى طباعة عنوان الذاكرة بالنظام السداسي عشري.


تعليق :
ابراهيم زكريا

غير معرف يقول...

التكرار (Loop)

قد يصادفك حينما تكتب برنامج في السي احتياجك إلى إعادة جزء أو عدة أجزاء من البرنامج مرات عديدة ،لذلك وجد التكرار وهو يقوم بإعادة أجزاء من البرنامج عدة مرات أو حتى يتحقق شرط معين تكون قد وضعته للبرنامج..
فيا ترى من الذي سيقوم بهذا التكرار؟؟؟
هنالك ثلاثة أنواع من التكرار تسمح لك بالتكرار هي:
1- تكرار for.
2- تكرار while.
3- تكرار do …while.

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

وهو يسمح بتكرار جزء معين من البرنامج عدة مرات، والقاعدة الأساسية لهذا التكرار هي:



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=0

2- في الخانة الأخرى نكتب الشرط الذي سوف يمثل استمرار التكرار كما في المثال السابق x<100 بحيث يختبر هذا الشرط في كل مرة يقوم بالتكرار ، فإذا كان الشرط صحيحا فإن التكرار سيستمر أما إذا كان خاطئا فسيتوقف التكرار .

3- أما في الخانة الأخيرة نكتب عبارة الزيادة وهي تنفذ بعد كل تكرار كما في المثال السابقx++ وبذلك سوف تقوم بزيادة قيمة المتغير وسوف يقوم بزيادة قيمة المتغير بمقدار واحد.

ثم يأتي القوس { ومن بعده نكتب الأوامر التي نريد تنفيذها كما في المثال السابق، وهي سوف تتكرر مائة مرة ، طبعا نستطيع وضع اكثر من عبارة ، وأخيرا كل ما علينا هو أن نغلقها بالقوس }

ملاحظة: إذا كنا نريد تكرار الأمر مرة واحدة فقط ، فنحن بإمكاننا التخلي عن الأقواس { و } ، أما في حالة كتابة اكثر من أمر فيجب وضع الأقواس.
وهكذا نكون قد انتهينا من التكرار for بكل بساطة .

________________________________________
التكرار while
وهذا التكرار يقوم بتكرار غير محدد من المرات حتى يتحقق شرط معين ، والقاعدة الأساسية لهذا التكرار هي :



while(الشرط)
{
………….;
…………الأوامر;
}



دعنا نأخذ المثال التالي:


while(num<99)
{
printf("This is a correct numbern");
num++;
}




دعنا نتكلم بالتفصيل عن هذا التكرار:

1- عند كتابة الشرط فإن البرنامج سوف يقوم بتكرار الأوامر ما دام الشرط صحيحا ، أما إذا كان الشرط خاطئا فإن التكرار سوف يتوقف ، ففي المثال السابق نستطيع القول بأنه ما دام الرقم اقل من 99 فإن العبارة سوف تطبع .

2- بعد طباعة الجملة سوف ينتقل إلى العبارة الأخرى وهي num++ وبذلك سوف يزيد الرقم .

3- وهكذا سوف تتم تكرار العبارة إلى إن تصل إلى الرقم 99 ومن بعدها سوف يتوقف التكرار.

وهكذا كان هذا هو تكرار while نأمل أن تكون قد استوعبته
تكرار do...while

وهذا التكرار يعتبر شديد الشبه بابن عمه 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 فإنه سوف يعيد التكرار ويعيد طباعة الجملة ، وهكذا سوف يستمر بطباعة الجملة إلى أن يكون الشرط خاطئا ومن بعدها سوف يخرج من التكرار


التوثيق :
66.147.242.89/~alobaidl/hamzaschool/showthread.php?p..

شيماء البيلى أحمد البيلى
الفرقة الرابعة
شعبة إعداد معلم الحاسب الالى

غير معرف يقول...

التكرار (Loop)

قد يصادفك حينما تكتب برنامج في السي احتياجك إلى إعادة جزء أو عدة أجزاء من البرنامج مرات عديدة ،لذلك وجد التكرار وهو يقوم بإعادة أجزاء من البرنامج عدة مرات أو حتى يتحقق شرط معين تكون قد وضعته للبرنامج..
فيا ترى من الذي سيقوم بهذا التكرار؟؟؟
هنالك ثلاثة أنواع من التكرار تسمح لك بالتكرار هي:
1- تكرار for.
2- تكرار while.
3- تكرار do …while.

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

وهو يسمح بتكرار جزء معين من البرنامج عدة مرات، والقاعدة الأساسية لهذا التكرار هي:



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=0

2- في الخانة الأخرى نكتب الشرط الذي سوف يمثل استمرار التكرار كما في المثال السابق x<100 بحيث يختبر هذا الشرط في كل مرة يقوم بالتكرار ، فإذا كان الشرط صحيحا فإن التكرار سيستمر أما إذا كان خاطئا فسيتوقف التكرار .

3- أما في الخانة الأخيرة نكتب عبارة الزيادة وهي تنفذ بعد كل تكرار كما في المثال السابقx++ وبذلك سوف تقوم بزيادة قيمة المتغير وسوف يقوم بزيادة قيمة المتغير بمقدار واحد.

ثم يأتي القوس { ومن بعده نكتب الأوامر التي نريد تنفيذها كما في المثال السابق، وهي سوف تتكرر مائة مرة ، طبعا نستطيع وضع اكثر من عبارة ، وأخيرا كل ما علينا هو أن نغلقها بالقوس }

ملاحظة: إذا كنا نريد تكرار الأمر مرة واحدة فقط ، فنحن بإمكاننا التخلي عن الأقواس { و } ، أما في حالة كتابة اكثر من أمر فيجب وضع الأقواس.
وهكذا نكون قد انتهينا من التكرار for بكل بساطة .

والآن هيا بنا ننطلق لتعلم الأنواع الأخرى من التكرار.

-------------------------------------------------------------------------------

التكرار while
وهذا التكرار يقوم بتكرار غير محدد من المرات حتى يتحقق شرط معين ، والقاعدة الأساسية لهذا التكرار هي :



while(الشرط)
{
………….;
…………الأوامر;
}




دعنا نأخذ المثال التالي:

while(num<99)
{
printf("This is a correct numbern");
num++;
}





دعنا نتكلم بالتفصيل عن هذا التكرار:

1- عند كتابة الشرط فإن البرنامج سوف يقوم بتكرار الأوامر ما دام الشرط صحيحا ، أما إذا كان الشرط خاطئا فإن التكرار سوف يتوقف ، ففي المثال السابق نستطيع القول بأنه ما دام الرقم اقل من 99 فإن العبارة سوف تطبع .

2- بعد طباعة الجملة سوف ينتقل إلى العبارة الأخرى وهي num++ وبذلك سوف يزيد الرقم .

3- وهكذا الرقم 99 ومن بعدها سوف يتوقف التكرار.
التوثيق:
http://pramgnet.ahlamontada.com/t497-topic
تعليق:
سالى الدالى

غير معرف يقول...

تكرار do...while

وهذا التكرار يعتبر شديد الشبه بابن عمه 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 فإنه سوف يعيد التكرار ويعيد طباعة الجملة ، وهكذا سوف يستمر بطباعة الجملة إلى أن يكون الشرط خاطئا ومن بعدها سوف يخرج من التكرار.
التوثيق:
http://pramgnet.ahlamontada.com/t497-topic
تعليق:سالى الدالى

غير معرف يقول...

التكرار (Loop)

قد يصادفك حينما تكتب برنامج في السي احتياجك إلى إعادة جزء أو عدة أجزاء من البرنامج مرات عديدة ،لذلك وجد التكرار وهو يقوم بإعادة أجزاء من البرنامج عدة مرات أو حتى يتحقق شرط معين تكون قد وضعته للبرنامج..
فيا ترى من الذي سيقوم بهذا التكرار؟؟؟
هنالك ثلاثة أنواع من التكرار تسمح لك بالتكرار هي:
1- تكرار for.
2- تكرار while.
3- تكرار do …while.

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

وهو يسمح بتكرار جزء معين من البرنامج عدة مرات، والقاعدة الأساسية لهذا التكرار هي:



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=0

2- في الخانة الأخرى نكتب الشرط الذي سوف يمثل استمرار التكرار كما في المثال السابق x<100 بحيث يختبر هذا الشرط في كل مرة يقوم بالتكرار ، فإذا كان الشرط صحيحا فإن التكرار سيستمر أما إذا كان خاطئا فسيتوقف التكرار .

3- أما في الخانة الأخيرة نكتب عبارة الزيادة وهي تنفذ بعد كل تكرار كما في المثال السابقx++ وبذلك سوف تقوم بزيادة قيمة المتغير وسوف يقوم بزيادة قيمة المتغير بمقدار واحد.

ثم يأتي القوس { ومن بعده نكتب الأوامر التي نريد تنفيذها كما في المثال السابق، وهي سوف تتكرر مائة مرة ، طبعا نستطيع وضع اكثر من عبارة ، وأخيرا كل ما علينا هو أن نغلقها بالقوس }

ملاحظة: إذا كنا نريد تكرار الأمر مرة واحدة فقط ، فنحن بإمكاننا التخلي عن الأقواس { و } ، أما في حالة كتابة اكثر من أمر فيجب وضع الأقواس
التكرار while
وهذا التكرار يقوم بتكرار غير محدد من المرات حتى يتحقق شرط معين ، والقاعدة الأساسية لهذا التكرار هي :



while(الشرط)
{
………….;
…………الأوامر;
}




دعنا نأخذ المثال التالي:

while(num<99)
{
printf("This is a correct numbern");
num++;
}





دعنا نتكلم بالتفصيل عن هذا التكرار:

1- عند كتابة الشرط فإن البرنامج سوف يقوم بتكرار الأوامر ما دام الشرط صحيحا ، أما إذا كان الشرط خاطئا فإن التكرار سوف يتوقف ، ففي المثال السابق نستطيع القول بأنه ما دام الرقم اقل من 99 فإن العبارة سوف تطبع .

2- بعد طباعة الجملة سوف ينتقل إلى العبارة الأخرى وهي num++ وبذلك سوف يزيد الرقم .

3- وهكذا سوف تتم تكرار العبارة إلى إن تصل إلى الرقم 99 ومن بعدها سوف يتوقف التكرار.
تكرار do...while

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

حياه اسماعيل يقول...

التكرار ( الدورات) التفريغ
* التكرار Loop
1- الدوارة for : تستخدم لتكرار تنفيذ عملية عدد محدد من المرات
الصورة العامة : For ( initial – value ; condition ; increment ) ; statement ;
حيث :
initial – value : هى القيمة الابتدائية
condition : هو شرط إنهاء التكرار
increment : هى قيمة الزيادة الدورية
مثال : برنامج يطبع الأرقام من صفر إلى 9
# include < stdio.h >
main ( )
{
int i ;
for ( i = 0 ; i < 10 ; i ++ )
printf ( “ \ n i = % d " , i ) ;
}
** تنفيذ أكثر من جملة مع For : لتنفيذ أكثر من جملة لعدد محدد من المرات يجب وضع القوس { فى بداية البلوك المراد تكراره ووضع القوس } فى نهاية البلوك .
** الدوارات المتداخلة باستخدام For
- الدوارات المتداخلة عبارة عن دوارة كبيرة تشتمل بداخلها على دوارة أو أكثر
- بمعنى أن مجموعة التعليمات بالـ loop الداخلى يتم تكرار تنفيذها طالما لم ينته العداد فإذا أنتهى ينتقل التنفيذ إلى الدوارة الخارجية ويتم تكرار التعليمات فى الـ Loop الخارجى حتى ينتهى .
مثال : طباعة جدول الضرب من أول 1 × 1 إلى 12 × 12
# include < stdio.h >
main ( )
{
int i , j ;
for ( i = 1 ; i < = 12 ; i ++ )
{
printf ( “ in ") ;
for ( j = i ; j < = 12 ; j ++ )
{
printf ( " i * j = % d " , i * j ) ;
}
}
}
** الدوارة اللانهائية باستخدام For : معناها تكرار تنفيذ الجملة بدون شرط ولا يتوقف التنفيذ حتى يضغط المستخدم CTRL + C وتأخذ الدوارة اللانهائية الصورة For ( ;; )

غير معرف يقول...

أولا التكرار Loop
1- الدوارة for : تستخدم لتكرار تنفيذ عملية عدد محدد من المرات
الصورة العامة : For ( initial – value ; condition ; increment ) ; statement ;
حيث :
initial – value : هى القيمة الابتدائية
condition : هو شرط إنهاء التكرار
increment : هى قيمة الزيادة الدورية
مثال : برنامج يطبع الأرقام من صفر إلى 9
# include < stdio.h >
main ( )
{
int i ;
for ( i = 0 ; i < 10 ; i ++ )
printf ( “ \ n i = % d " , i ) ;
}
* تنفيذ أكثر من جملة مع For : لتنفيذ أكثر من جملة لعدد محدد من المرات يجب وضع القوس { فى بداية البلوك المراد تكراره ووضع القوس } فى نهاية البلوك .
مثال : حساب متوسط قائمة من الأعداد
# include < stdio.h >
/ * calculate the average of n numbers * /
main ( )
{
int n , count ;
float x , average , sum = 0 ;
/ * initialize and read in a value for n * /
printf ( " how many numbers ? " ) ;
scanf ( " % d " , & n ) ;
/ * read in the numbers * /
for ( count = 1 ; count < = n ; count ++ )
{
printf ( “ x = “ ) ;
scanf ( “ % f " ; & x ) ;
sum + = x ;
}
/ * calculate the average and write out the answer * /
average = sum / n ;
printf ( " \ n the average is % f \n " , average ) ;
}
....
الدوارات المتداخلة باستخدام For
- الدوارات المتداخلة عبارة عن دوارة كبيرة تشتمل بداخلها على دوارة أو أكثر
- بمعنى أن مجموعة التعليمات بالـ loop الداخلى يتم تكرار تنفيذها طالما لم ينته العداد فإذا أنتهى ينتقل التنفيذ إلى الدوارة الخارجية ويتم تكرار التعليمات فى الـ Loop الخارجى حتى ينتهى .
مثال : طباعة جدول الضرب من أول 1 × 1 إلى 12 × 12
# include < stdio.h >
main ( )
{
int i , j ;
for ( i = 1 ; i < = 12 ; i ++ )
{
printf ( “ in ") ;
for ( j = i ; j < = 12 ; j ++ )
{
printf ( " i * j = % d " , i * j ) ;
}
}
}
....
توثيق:
http://www.absba.org/showthread.php?t=180163
....
محمد جمال الدين محمود

غير معرف يقول...

كثيرا ما نحتاج في البرامج إلى تكرار أمر موجه للكمبيوتر عددا من المرات،
وتوفر لغة C عدة وسائل تمكن المبرمج من أداء هذا التكرار.
وعادة ما تسمى هذه الوسائل " الحلقات التكرارية "، ويوجد العديد من الحلقات
التكرارية في لغة C سنتناول منها هنا
1- الحلقة for ( for loop ).
2- الحلقة while ( while loop ).
3- الحلقة do…. while ( do-while loop).
وفيما يلي سنتناول كل حلقة بالدراسة من حيث الشكل العام و أسلوب الاستخدام
وأمثلة توضيحية.

الحلقة for ( for loop):
تستخدم الحلقة for لتكرار أمر معين ( أو مجموعة من الأوامر) عددا من المرات
وتحتاج الحلقة إلي ثلاث عناصر أساسية ( انظر الشكل التالي)

CODE
for ( counter statement; condition; step)

و هذه العناصر هي:
1- العداد ( counter ) : وظيفة العداد هي تسجيل عدد مرات التكرار.
2- الشرط ( condition): والشرط الذي يحدد نهاية التكرار إذ يظل التكرار
قائما حتى ينتفي الشرط.
3- الخطوة(step) : وهي القيمة التي تحدد عدد مرات التكرار.

والشكل التالي يوضح برنامجا قمنا فيه باستخدام الحلقة for :

CODE

#include
main()
{
int counter;
for ( counter=1;counter<=20;counter++)
printf(“%d”,counter);
}
ومن البرنامج السابق نجد أن الحلقة for بدأت بكلمة ( for ) متبوعة بقوسين
بينهما ثلاثة عبارات تفصل بينها علامة الفاصلة المنقوطة.
العبارة الأولى تخزن القيمة الابتدائية في العداد.
والعبارة الثانية هي الشرط وهنا الشرط أن قيمة العداد أقل من أو تساوي 20.
أما العبارة الثالثة فهي تحدد الخطوة، وفي هذا البرنامج يزاد العداد بمقدار
1 كل مرة تنفذ فيها الحلقة.
والبرنامج السابق ينتج عنه طباعة الأرقام من 1 إلى 20.

ملاحظات:
1- العبارات الثلاثة المكونة لحلقة for يجب أن تفصل عن بعضها بالفاصلة
المنقوطة، وهذا الخطأ من الأخطاء الشهيرة جدا في عالم البرمجة لذا وجب توخي
الحذر.
2- في حالة تكرار أكثر من أمر يتم استبدال العبارة التي تلي بداية الحلقة
for (في المثال السابق هي العبارة ( printf ( " %d",counter); ) ببلوك
يحتوي العبارات المراد تنفيذها.

الحلقة while ( while loop):
في هذه الحلقة التكرارية نحتاج إلى الشرط فقط وطالما كان هذا الشرط متحققا
استمرت الحلقة في التكرار..
والصورة العامة للحلقة while موضحة بالشكل التالي

CODE

while ( conditon )
{
statement 1;
statement 2;
.
.
statement n;
}

حيث ( condition ) هو الشرط اللازم لأداء التكرار، والعبارات بداخل أقواس
البلوكات هي العبارات المراد تكرارها.
والمثال الموضح بالشكل التالي يوضح استخدام الحلقة while لطباعة الأعداد من
1 إلى 20

CODE

#include
main()
{
int counter=1;
while ( counter <=20 )
{
printf(“%d”,counter);
counter++;
}
}
من المثال السابق يمكننا استخلاص النتاتج التالية عن الحلقة while:
1- تخصيص القيمة الابتدائية للعداد تتم خارج الحلقة while.
2- زيادة العداد تتم داخل الحلقة while

الحلقة التكرارية do-while:
تختلف هذه الحلقة عن الحلقتين السابقتين في مكان كتابة الشرط ، حيث يكتب
الشرط هنا بعد العبارات المطلوب تكرارها.
والشكل التالي يوضح الصورة العامة للحلقة do-while

CODE

do
{
statement 1;
statement 2;
.
.
statement n;
}
while ( conditon

وأهم ملاحظة على الحلقة التكرارية do-while أنها تنفذ العبارات المطلوب
تكرارها مرة واحدة على الأقل حتى ولو كان الشرط غير متحقق !!!
وتفسير ذلك أن التحقق من الشرط يتم بعد التنفيذ وليس قبله كما في الحلقتين

تعليق:- إيمان نصر - الفرقة الرابعة

غير معرف يقول...

ويمكن اضافة الحديث عن الحلقات التكرارية المتداخلة والانهائية والفرق بين الحلقات المختلفة كالتالى :-

الدوارات المتداخلة باستخدام for :
الدوارات المتداخلة عبارة عن دوارة كبيرة تشتمل بداخلها على دوارة أو أكثر بمعنى أن مجموعة التعليمات الموجودة بالدوارة الداخلية يتكرر تنفيذها طالما لم ينته العداد فإذا انتهى ينتقل التنفيذ إلى الدوارة الخارجية و يتكرر تنفيذ تعليمات الدوارة الخارجية حتى ينتهي العداد المحدد لها. و تشبه فكرة الدورات المتداخلة فكرة عمل عقارب الساعة فتجد عقرب الثواني يدور 60 دورة فيدور عقرب الدقائق بمقدار دقيقة و هكذا.

الدوارة اللانهائية باستخدام for :
ومعناها تكرار تنفيذ الجملة بدون شرط و لا يتوقف التنفيذ حتى يضغط المستخدم Ctrl+c أو Ctrl+break و تأخذ الدوارة اللانهائية باستخدام for الصورة (;;)for

•الدوارة while:تستخدم الدوارة while لتكرار تنفيذ جملة أو مجموعة جمل عدد من المرات غير معلوم العدد و إنما يتوقف هذا العدد على شرط موجود بالدوارة و تأخذ الدوارة while الصورة التالية:
while(condition)
statement;
و معناها طالما أن الشرط (condition) صحيح نفذ الجملة (statement)
و هي تقوم بتكرار الجملة أو مجموعة الجمل التابعة لها طالما كان شرط التكرار صحيح و عندما يصبح شرط التكرار غير صحيح يتوقف تنفيذ الدوارة.

الفرق بين for و while
الدوارة for دوارة عددية حيث تعتمد على العداد و ينتهي التكرار فيها بانتهاء عدد مرات التكرار أما الدوارة while فدوارة شرطية أي تعتمد على الشرط الذي يلي الأمر while حيث تتكرر الجمل التي تليها طالما كان الشرط صحيحاً و تنتهي الدوارة بكسر هذا الشرط. و بالتالي الاستخدام الأمثل للدوارة for هو تكرار عملية أكثر من مرة بشرط أن يكون عدد مرات التكرار معلوم و الاستعمال الأمثل للدوارة while هو التكرار بناء على شرط معين.

الدوارة do...while
تستخدم الدوارة do...while لتكرار تنفيذ جملة أو مجموعة جمل أكثر من مرة بناء على شرط معين كما هو الحال مع الدوارة while و لكن الفرق بينهما أن الدوارة while تختبر الشرط أولاً فإذا كان صحيحاً تنفذ الجمل التالية لها و إلاّ فلا، أما الدوارة do ...whileفتنفذ الجمل التالية لها أولاً ثم تختبر الشرط. فإذا كان صحيحاً تعيد التنفيذ و إلاّ توقف التكرار.
و تأخذ الدوارة الصيغة:
do
{
statement1;
} while (condition);
و معناها do أي نفذ الجمل التالية وهي statment1 و ما يليها طالما كان الشرط (condition) صحيحاً.

تعليق :-إيمان نصر الفرقة الرابعة

غير معرف يقول...

•الدوارة for
تستخدم لتكرار تنفيذ عملية عدد محدد من المرات و تأخذ الصيغة العامة التالية:

For(initial- value; condition; increment)
statements;

حيث:
initial-value هي القيمة الابتدائية
condition هو شرط إنهاء التكرار
increment هي قيمة الزيادة الدورية
و معناها إبداء العد من القيمة الابتدائية (initial-value) طالما أن الشرط (condition) صحيح و مقدار الزيادة كل مرة هو increment.
تنفيذ أكثر من جملة مع for:
في جملة for السابقة كنا نطلب تكرار تنفيذ جملة واحدة عدد محدد من المرات لكن ما هو العمل إذا كان المطلوب تكرار تنفيذ أكثر من جملة لعدد محدد من المرات. بعبارة أخرى تكرار تنفيذ بلوك كامل داخل البرنامج أكثر من مرة هذا ما سنحاول الإجابة عليه فيما يلي:
لو أردنا تنفيذ أكثر من جملة لعدد محدد من المرات يجب وضع القوس} في بداية البلوك المراد تكراره و وضع القوس{ في نهاية البلوك.
لدوارات المتداخلة باستخدام for :
الدوارات المتداخلة عبارة عن دوارة كبيرة تشتمل بداخلها على دوارة أو أكثر بمعنى أن مجموعة التعليمات الموجودة بالدوارة الداخلية يتكرر تنفيذها طالما لم ينته العداد فإذا انتهى ينتقل التنفيذ إلى الدوارة الخارجية و يتكرر تنفيذ تعليمات الدوارة الخارجية حتى ينتهي العداد المحدد لها. و تشبه فكرة الدورات المتداخلة فكرة عمل عقارب الساعة فتجد عقرب الثواني يدور 60 دورة فيدور عقرب الدقائق بمقدار دقيقة و هكذا.
الدوارة اللانهائية باستخدام for :
ومعناها تكرار تنفيذ الجملة بدون شرط و لا يتوقف التنفيذ حتى يضغط المستخدم Ctrl+c أو Ctrl+break و تأخذ الدوارة اللانهائية باستخدام for الصورة (;;)for
تعليق :-
هبة احمد السعيد امين

غير معرف يقول...

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

while(condition)
statement;
و معناها طالما أن الشرط (condition) صحيح نفذ الجملة (statement)
و هي تقوم بتكرار الجملة أو مجموعة الجمل التابعة لها طالما كان شرط التكرار صحيح و عندما يصبح شرط التكرار غير صحيح يتوقف تنفيذ الدوارة.

الفرق بين for و while
الدوارة for دوارة عددية حيث تعتمد على العداد و ينتهي التكرار فيها بانتهاء عدد مرات التكرار أما الدوارة while فدوارة شرطية أي تعتمد على الشرط الذي يلي الأمر while حيث تتكرر الجمل التي تليها طالما كان الشرط صحيحاً و تنتهي الدوارة بكسر هذا الشرط. و بالتالي الاستخدام الأمثل للدوارة for هو تكرار عملية أكثر من مرة بشرط أن يكون عدد مرات التكرار معلوم و الاستعمال الأمثل للدوارة while هو التكرار بناء على شرط معين.

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

do
{
statement1;
} while (condition);
و معناها do أي نفذ الجمل التالية وهي statment1 و ما يليها طالما كان الشرط (condition) صحيحاً.
تعليق:-
هبة احمد السعيد امين

SanyOreta يقول...

طب ممكن تشرح انت ؟

غير معرف يقول...

الحلقات الدوارة في لغة السي++ مشابه عملها كما في لغة السي ارجو الرد ارجوكم...

غير معرف يقول...

مرحبا اريد اسئلة وشرح عن الحلقات الدوارة في لغة السي++ باستخدام مكتبة الرياضيات ....ارجو المساعدة انا طالب مرحلة اولى في قسم علوم الحاسبات والامتحانات قادمة ....ارجو الرد

غير معرف يقول...

طالب من فلسطين

حلقات التكرار هي مهمة في صنع برامج محكمة وقوية مثل برمجة الكثير من البرامج مثل الالعاب وبرمجة مواقع الانترنت مثل الفيسبوك او جوجل وغيرها ولا يخلو برنامج من هذه العملية (عملية التكرار) وهي موجودة في جميع لغات البرمجة عدا عن بعض الغات البسيطة والبدائية مثل html وغيرها من لغات الصغيره والمحدوده , وعملية التكرار هذه لها عدة اكواد برمجية يتشابهون نوعا ما ويؤدون نفس العملية الا ان الامر لا يخلو من بعض الفروق البسيطة بينها

حلقات التكرار تمر عليك كثيرا دون ان تدري مثلا عندما تدخل الفيسبوك وتود تسجيل الدخول وتكتب الاميل او الباسوورد بشكل خاطئ ما الذي يحدث؟ يقول لك الفيسبوك عبر رسالة انك ادخلت الاميل او الباسوورد بشكل خاطئ ويعيدك الى كتابت الاميل والباسوورد من جديد واذا اخطئة مره اخرى يعيدك مره اخرى يبقى يعيدك كل ما اخطئة ويظهر لك راسلة تنص على ان المدخلات خاطئة ولا يتحقق الدخول الا بكتابة المدخلات بشكل صحيح 100% .

حلقات التكرار هي ثلاثة :
1-الحلقة for
2-الحلقة do while
3-الحلقة while

تذكر هذا الرقم جيدا لانك سوف تعود اليه بعد قليل
100000000000000000000000000000000
الحلقة for تاخد الشكل التالي


for(x=10;x<20;x++)
{
x++
cout<<x;
//اطبع قيمة اكس على الشاشة
}

بمعنى

for(اولا x=0 ابدء العد من الصفر ; ثانيا x<20 بشرط اذا كان الرقم 20 اكبر من اكس ; ثالثا x++ زد قيمة اكس بقدار واحد فقط كل مره)

الان سوف ينفذ البرنامج ويدخل البرنامج الي الحلقة for ثم يدخل الى القوسين اي هذا السطر for(x=0;x<20;x++)
{
}

ياخذ قيمة اكس وهي صفر وهي القيمة البدائية للعداد اي يبدء العد هكذا 0-1-2-3-4 ... 10 ... ويكمل الان البرنامج علم انه سوف يبدء العد من الصفر وما فوق , ثم يدخل العملية التالية وهي x<20 وهذا الشرط بمعنى ان الحلقة سوف تبقى تعيد نفسها ما دام اكس اقل من عشرين ثم يدخل العملية الثالثة وهي x++ اي زد اكس بمقدار 1 كل دوره يعني عشرين دوره يصبح اكس يساوي 20

اذهب الي الرقم وانظر الي شكل الكود البرمجي 100000000000000000000000000000000
الان يصل البرنامج الي القوس المنبعج {
وهو قوس البداية الاوامر التي انت تريدها ان تنفذ ثم يدخل الي الاوامر اول امر هو x++ يعني زد قيمة اكس بمقدار واحد طبعا بامكاننا ان نامر ان يزداد اكس بمقدار 2 او 3 او 4 او10 ... الي ما لا نهاية هكذا x+2 او x+3 او x+4 او x+100 او x+50000 , ثم بعد الزيادة ينتقل الي الجملة التي تليه اذهب الي الكود وانظر الي cout<<x; اي اطبع قيمة اكس على الشاشة وسوف يطبع في اول دوره الرقم واحد 1 لان اكس زاد 1 فقط ثم يصل البرنامج الي قوس النهاية } ولاكن مهلا هل تحقق ما نريد ؟ لا! لانه ما زال اكس اقل من 20 واكس الان يحمل الرقم واحد فقط ثم يعود البرنامج من قوس النهاية الى الحلقة بداية الحلقة for ويقرء الشرط ثم يدخل الي الاوامر ويزداد اكس واحد ويصبح قيمتة 2 ثم ينتهي البرنامج ثم يعود الى الحلقة for ويرى انه ما زال اكس اقل من عشرين ثم يدخل الي الاوامر ويزيد اكس مره اخرى بمقدار 1 ثم يصبح اكس قيمتة 3 وهكذا الي ان يصل الي 20 ويتوقف البرنامج .

2-الحلقة do while

هذا مبناها
----------------------------------
do
{
نفذ كذا وكذا لو تحقق الشرط
}
while(الشرط);
----------------------------------
الفرق بين الحلقة FOR و DO WHILE I هو فقط بداية العداد يعني انك تحدد من اين يبدء البرنامج من العد يبدء من 1 او 2 او 10 او -20 او اي رقم اخر انت تحدده

3- الحلقة WHILE

Iهذا مبناها:

while(الشرط)
{
نفذ كذا وكذا لو تحقق الشرط
}

والفرق بين while و do while

ان while لا يدخل الي بيت الاوامر الا اذا تحقق الشرط اما do while يدخل الاوامر ثم يذهب الي الشرط اي بعكس while والتي تقرء الشرط اولا.

ارجو ان اكون قد اوصلت لكم ما اتمناه وشكرا لكم.

غير معرف يقول...

طالب من فلسطين

للتصحيح فقط عند التحكم بمقدار زيادة المتغير في كل مره تتكرر الحلقة x++ يعني زد قيمة اكس واجد كل مره اما لو اردنا ان نزيد اكس اكثر من واحد مثلا 4 من الخطى ان تكتب x+4 بل x+=4 وهكذ تزداد اكس اربعة ارقام في كل دوره. اما ان نستغني عن ال = هكذا x+4 فيبقى x قيمته هي 4 ولا تتغير. لا تنسي +=

غير معرف يقول...

شكرا كتير

غير معرف يقول...

اكتب برنامج يطبع الاعداد الفردية المحصورة بين 14و24 بدون استخدام جملة if ارجو المساعدة ف الحل برمجة بلغة c++

غير معرف يقول...

باستخدام for ارجو ان يكون الحل

إرسال تعليق