Professional Documents
Culture Documents
Loop
Loop
إذًا أي كود نريده أن يتنفذ عدة مرات ,نقوم بكتابته داخل حلقة فتقوم هي بإعادة تنفيذ الكود قدر ما شئنا ضمن شروط معينة نقوم نحن بتحديدها.
األوامر في العادة تتنفذ بتسلسل وراء بعضها ,و لكن الحلقات تجعل سهم تنفيذ األوامر يقف عندها فيقوم بتنفيذ األوامر التي بداخلها عدة مرات,
و بعد أن يخرج من الحلقة يعود و يكمل تنفيذ باقي األوامر الموجودة بعدها كالتالي.
عندما تتنفذ الحلقة فإن األوامر الموضوعة فيها تنفذ بشكل منفصل عن باقي األوامر الموجودة في البرنامج ,أي يمكنك إعتبار أن جميع أوامر
بعد أن تتنفذ جميع أوامر الحلقة في هذا الـ ,scopeيتم مسح الـ scopeكليًا من الذاكرة و هذه العملية تسمى .Destroy
C++أنواع الحلقات في
إسم الحلقة
دواعي اإلستخدام
تستخدم الحلقة forفي حال كان عدد المرات التي سيعاد فيها تنفيذ الكود معروفًا.
For Loop
يفضل إستخدام الحلقة whileفي حال كان عدد المرات التي سيعاد فيها تنفيذ الكود غير معروف While Loop
يفضل إستخدام الحلقة do whileفي حال كان عدد المرات التي سيعاد فيها تنفيذ الكود غير معروف و بنفس
Do While
الوقت يجب أن يتنفذ مرة واحدة على األقل.
Loop
forالحلقةC++
تعريف الحلقة for
forتعريف الحلقة
نستخدم الحلقة forإذا كنا نريد تنفيذ الكود عدة مرات محددة ,فمثًال إذا كنا نريد تنفيذ كود معين 10مرات ,نضعه بداخل حلقة تعيد
نفسها 10دورات.
طريقة إستخدامها
.هي أول خطوة تتنفذ في الحلقة و هي تتنفذ مرة واحدة فقط على عكس جميع العناصر الموجودة في الحلقة initialization:
;.في هذه الخطوة نقوم بتعريف متغير ( يسمى عداد ) و نضع بعده
.هي ثاني خطوة تتنفذ في الحلقة و هي تتنفذ في كل دورة condition:
;.في هذه الخطوة نقوم بوضع شرط يحدد متى تتوقف الحلقة ,في كل دورة يتم التأكد أوًال إذا تحقق هذا الشرط أم ال ,و نضع بعده
.هي الخطوة الثالثة ,و تعني تنفيذ جميع األوامر الموجودة في الحلقة و هي تتنفذ في كل دورة statements:
.بعد أن تتنفذ جميع األوامر سيصعد إلى الخطوة األخيرة التي تحدث في نهاية كل دورة و هي إما زيادة قيمة العداد أو إنقاصها
.هي الخطوة الرابعة و األخيرة ,و هي تتنفذ في كل دورة increment:أو decrement
;.هنا نحدد كيف تزداد أو تنقص قيمة العداد ,و ال نضع بعده
تذكر فقط أن جميع هذه الخطوات تتكرر في كل دورة ما عدا أول خطوة ,و السبب أننا ال نحتاج إلى تعريف عداد جديد في كل دورة ,بل
Main.cpp
>#include <iostream
)(int main
{
هنا قمنا forتتألف من 10دورات .في كل دورة تطبع قيمة العداد المستخدم فيها //
بإنشاء حلقة
{
}
;return 0
}
1
2
3
4
5
6
7
8
9
10
whileالحلقةC++
تعريف الحلقة while
whileتعريف الحلقة
نستخدم الحلقة whileإذا كنا نريد تنفيذ الكود عدة مرات ،و لكننا ال نعرف كم مرة بالتحديد.
هذه الحلقة تتوقف عن تكرار نفسها إذا لم يعد الشرط الموضوع فيها يتحقق.
هنا كأننا نقول" :طالما أن الشرط ال يزال يتحقق إستمر في تكرار الكود".
طريقة إستخدامها
;initialization
) while( condition
{
// statements
.هي أول خطوة تتنفذ في الحلقة و هي تتنفذ مرة واحدة فقط على عكس جميع العناصر الموجودة في الحلقة initialization:
.في هذه الخطوة نقوم بوضع شرط يحدد متى تتوقف الحلقة ,في كل دورة يتم التأكد أوًال إذا تحقق هذا الشرط أم ال
.هي الخطوة الرابعة و األخيرة ,و هي تتنفذ في كل دورة increment:أو decrement
تذكر فقط أن جميع هذه الخطوات تتكرر في كل دورة ما عدا أول خطوة ,و السبب أننا ال نحتاج إلى تعريف عداد جديد في كل دورة ,بل
Main.cpp
>#include <iostream
)(int main
{
;int i=1
تظل تنفذ األوامر الموضوعة فيها طالما أن قيمة العدد ال تزال أصغر أو تساوي //
هنا أنشأنا حلقة 10 while
) while( i<=10
{
;i++
}
;return 0
}
1
2
3
4
5
6
7
8
9
10
do whileالحلقة
تعريف الحلقة do while
do whileتعريف الحلقة
نستخدم الحلقة whileإذا كنا نريد تنفيذ الكود عدة مرات ،و لكننا ال نعرف كم مرة بالتحديد.
هذه الحلقة تتوقف عن تكرار نفسها إذا لم يعد الشرط الموضوع فيها يتحقق.
هنا كأننا نقول" :نّف ذ الكود و إن كان الشرط ال يزال يتحقق فقم بتنفيذه من جديد".
إذًا الفرق الوحيد بينها و بين الحلقة whileأنها تتنفذ مرة واحدة على األقل ألنها تتأكد من الشرط بعد تنفيذ األوامر و ليس قبلهم.
طريقة إستخدامها
;initialization
{do
// statements
; decrementأو increment
}
;) While( condition
.هي أول خطوة تتنفذ في الحلقة و هي تتنفذ مرة واحدة فقط على عكس جميع العناصر الموجودة في الحلقة initialization:
.هي الخطوة الثانية ,و تعني تنفيذ جميع األوامر الموجودة في الحلقة و هي تتنفذ في كل دورة statements:
.هي الخطوة الثالثة ,و هي تتنفذ في كل دورة increment:أو decrement
.في هذه الخطوة نقوم بوضع شرط يحدد متى تتوقف الحلقة ,في نهاية كل دورة يتم التأكد إذا تحقق الشرط أم ال
تذكر فقط أن جميع هذه الخطوات تتكرر في كل دورة ما عدا أول خطوة ,و السبب أننا ال نحتاج إلى تعريف عداد جديد في كل دورة ,بل
Main.cpp
>#include <iostream
)(int main
{
;int i=1
تظل تنفذ األوامر الموضوعة فيها طالما أن قيمة العدد ال تزال أصغر أو تساوي //
هنا أنشأنا حلقة 10 while
do
{
;i++
}
;return 0
}
1
2
3
4
5
6
7
8
9
10
جمل التحكم مع الحلقات
نستخدم جمل التحكم ( ) Control Statementsللتحكم في سير تنفيذ الحلقات و مع جملة الشرط .switch
breakجملة التحكمC++
تعريف الجملة break
breakتعريف الجملة
الجملة breakتستخدم في الحلقات و في الجملة .switch
بمجرد ان تنفذ الجملة breakفإنها توقف الـ scopeبأكمله و تخرج منه و تمسحه من الذاكرة ثم تنتقل للكود الذي يليه في البرنامج.
طريقة تعريفها
;break
Main.cpp
>#include <iostream
)(int main
{
هنا قمنا forتتألف من 10دورات .في كل دورة تطبع قيمة العداد المستخدم فيها //
بإنشاء حلقة
{
في كل دورة سيتم فحص قيمة العداد و بمجرد أن تصبح تساوي 6سيتم إيقاف //
الحلقة نهائيًا
{ ) if( i == 6
;break
}
}
;return 0
}
1
2
3
4
5
إذًا الجملة breakجعلت الحلقة تتوقف عندما أصبحت قيمة العداد iتساوي .6
هنا قمنا بتجربة الجملة breakمع الحلقة forفقط ,لكن المبدأ هو نفسه تمامًا مع الحلقات whileو .do while
continueجملة التحكم
تعريف الجملة continue
continueتعريف الجملة
نستخدم الجملة continueلتجاوز تنفيذ كود معين في الحلقة ,إذًا نستخدمها لتجاوز جزء من كود الـ .scope
و نستخدمها تحديدًا إليقاف الدورة الحالية و اإلنتقال إلى الدورة التالية في الحلقة ,ال تقلق ستفهم المقصود من المثال.
طريقة تعريفها
;continue
إستخدمنا الجملة continueلجعل الحلقة تتجاوز الدورة الثالثة في الحلقة .أي لن يتم تنفيذ أمر الطباعة عندما تصبح قيمة العداد iتساوي .3
المثال األول
Main.cpp
>#include <iostream
)(int main
{
هنا قمنا forتتألف من 10دورات .في كل دورة تطبع قيمة العداد المستخدم فيها //
بإنشاء حلقة
{
في كل دورة سيتم فحص قيمة العداد ,عندما تصبح تساوي 3سيتم اإلنتقال إلى //
الدورة التالية في الحلقة بدون تنفيذ أمر الطباعة الموضوع بعدها
{ )if (i == 3
;continue
}
}
;return 0
}
1
2
4
5
6
7
8
9
10
إذًا الجملة continueجعلت الحلقة تتجاوز الدورة الثالثة ,لذلك لم تطبع الرقم 3ألنها لم تنفذ أمر الطباعة في الدورة الثالثة.
في المثال التالي قمنا بتعريف حلقة تطبع جميع األرقام المفردة من 1إلى .10
إستخدمنا الجملة continueلجعل الحلقة تتجاوز كل دورة تكون فيها قيمة العداد iعبارة عن عدد زوجي.
المثال الثاني
Main.cpp
>#include <iostream
)(int main
{
هنا قمنا forتتألف من 10دورات .في كل دورة تطبع قيمة العداد المستخدم فيها //
بإنشاء حلقة
{
في كل دورة سيتم فحص قيمة العداد ,في حال كانت مزدوجة سيتم اإلنتقال إلى //
الدورة التالية في الحلقة بدون تنفيذ أمر الطباعة الموضوع بعدها
{ )if (i%2 == 0
;continue
}
}
;return 0
}
1
3
5
7
9
إذًا الجملة continueجعلت الحلقة تتجاوز كل دورة كانت فيها قيمة العداد عبارة عن عدد مزدوج.
هنا قمنا بتجربة الجملة continueمع الحلقة forفقط ,لكن المبدأ هو نفسه تمامًا مع الحلقات whileو .do while