الحلقات في جافا
نستخدم الحلقات في جافا ( Loops ) بهدف تكرار نفس الكود عدة مرات.
إذاً أي كود نريده أن يتنفذ عدة مرات, نقوم بكتابته داخل حلقة فتقوم هي بإعادة تنفيذ الكود قدر ما شئنا ضمن شروط معينة نقوم نحن بتحديدها.
طريقة تنفيذ الأوامر و الحلقات في الذاكرة
الأوامر في العادة تتنفذ بتسلسل وراء بعضها, و لكن الحلقات تجعل سهم تنفيذ الأوامر يقف عندها فيقوم بتنفيذ الأوامر التي بداخلها عدة مرات, و بعد أن يخرج من الحلقة يعود و يكمل تنفيذ باقي الأوامر الموجودة بعدها كالتالي.
عندما تتنفذ الحلقة فإن الأوامر الموضوعة فيها تنفذ بشكل منفصل عن باقي الأوامر الموجودة في البرنامج, أي يمكنك إعتبار أن جميع أوامر الحلقة توضع في مكان خاص في الذاكرة, هذا المكان يسمى scope.
بعد أن تتنفذ جميع أوامر الحلقة في هذا الـ scope, يتم مسح الـ scope كلياً من الذاكرة و هذه العملية تسمى Destroy.
أنواع الحلقات في جافا
إسم الحلقة | دواعي الإستخدام |
---|---|
For Loop | تستخدم الحلقة for في حال كان عدد المرات التي سيعاد فيها تنفيذ الكود معروفاً.شرح الحلقة for في جافا |
While Loop | يفضل إستخدام الحلقة while في حال كان عدد المرات التي سيعاد فيها تنفيذ الكود غير معروف.شرح الحلقة while في جافا |
Do While Loop | يفضل إستخدام الحلقة do while في حال كان عدد المرات التي سيعاد فيها تنفيذ الكود غير معروف و بنفس الوقت يجب أن يتنفذ مرة واحدة على الأقل.شرح الحلقة do while في جافا |
جمل التحكم مع الحلقات في جافا
نستخدم جمل التحكم ( Control Statements ) للتحكم في سير تنفيذ الحلقات و مع جملة الشرط switch
.
جملة التحكم | تعريفها |
---|---|
Break Statement | تستخدم في الحلقات و في الجملة switch .بمجرد ان تنفذ الجملة break فإنها توقف الـ scope بأكمله و تخرج منه و تمسحه من الذاكرة ثم تنتقل للكود الذي يليه في البرنامج.شرح جملة التحكم break في جافا |
Continue Statement | تستخدم مع الحلقات فقط. نستخدمها لتجاوز تنفيذ كود معين في الحلقة, إذاً نستخدمها لتجاوز جزء من كود الـ scope. شرح جملة التحكم continue في جافا |
ملاحظة: سنشرح الجملة break
مع الجملة switch
في الدرس التالي.
الحلقة for
في جافا
نستخدم الحلقة for
إذا كنا نريد تنفيذ الكود عدة مرات محددة, فمثلاً إذا كنا نريد تنفيذ كود معين 10 مرات, نضعه بداخل حلقة تعيد نفسها 10 دورات.
طريقة إستخدام الحلقة for
في جافا
{
// statements
}
initialisation: هي أول خطوة تتنفذ في الحلقة و هي تتنفذ مرة واحدة فقط على عكس جميع العناصر الموجودة في الحلقة.
في هذه الخطوة نقوم بتعريف متغير ( يسمى عداد ) و نضع بعده;
.condition: هي ثاني خطوة تتنفذ في الحلقة و هي تتنفذ في كل دورة.
في هذه الخطوة نقوم بوضع شرط يحدد متى تتوقف الحلقة, في كل دورة يتم التأكد أولاً إذا تحقق هذا الشرط أم لا, و نضع بعده;
.
هنا طالما أن نتيجة الشرط تساويtrue
سيعيد تكرار الكود.statements: هي الخطوة الثالثة, و تعني تنفيذ جميع الأوامر الموجودة في الحلقة و هي تتنفذ في كل دورة.
بعد أن تتنفذ جميع الأوامر سيصعد إلى الخطوة الأخيرة التي تحدث في نهاية كل دورة و هي إما زيادة قيمة العداد أو إنقاصها.decrement أو increment: هي الخطوة الرابعة و الأخيرة, و هي تتنفذ في كل دورة.
هنا نحدد كيف تزداد أو تنقص قيمة العداد, و لا نضع بعده;
.
تذكر فقط أن جميع هذه الخطوات تتكرر في كل دورة ما عدا أول خطوة, و السبب أننا لا نحتاج إلى تعريف عداد جديد في كل دورة, بل نستعمل العداد القديم و الذي من خلاله نعرف في أي دورة أصبحنا.
الحلقة while
في جافا
نستخدم الحلقة while
إذا كنا نريد تنفيذ الكود عدة مرات, ولكننا لا نعرف كم مرة بالتحديد لأننا نريد إيقاف التنفيذ إذا تحقق شرط معين.
هذه الحلقة تتوقف عن تكرار نفسها إذا تحقق الشرط الذي وضعناه لها.
هنا كأننا نقول: " طالما أن الشرط لم يتحقق إستمر في تكرار الكود ".
طريقة إستخدام الحلقة while
في جافا
while( condition )
{
// statements
increment أو decrement;
}
initialisation: هي أول خطوة تتنفذ في الحلقة و هي تتنفذ مرة واحدة فقط على عكس جميع العناصر الموجودة في الحلقة.
في هذه الخطوة نقوم بتعريف متغير ( يسمى عداد ).condition: هي ثاني خطوة تتنفذ في الحلقة و هي تتنفذ في كل دورة.
في هذه الخطوة نقوم بوضع شرط يحدد متى تتوقف الحلقة, في كل دورة يتم التأكد أولاً إذا تحقق هذا الشرط أم لا.
هنا طالما أن نتيجة الشرط تساويtrue
سيعيد تكرار الكود.statements: هي الخطوة الثالثة, و تعني تنفيذ جميع الأوامر الموجودة في الحلقة و هي تتنفذ في كل دورة.
decrement أو increment: هي الخطوة الرابعة و الأخيرة, و هي تتنفذ في كل دورة.
هنا نحدد كيف تزداد أو تنقص قيمة العداد.
تذكر فقط أن جميع هذه الخطوات تتكرر في كل دورة ما عدا أول خطوة, و السبب أننا لا نحتاج إلى تعريف عداد جديد في كل دورة, بل نستعمل العداد القديم و الذي من خلاله نعرف في أي دورة أصبحنا.
الحلقة do while
في جافا
نستخدم الحلقة do while
إذا كنا نريد تنفيذ الكود عدة مرات, ولكننا لا نعرف كم مرة بالتحديد لأننا نريد إيقاف التنفيذ إذا تحقق شرط معين.
هذه الحلقة تتوقف عن تكرار نفسها إذا تحقق الشرط الذي وضعناه لها.
الفرق الوحيد بينها و بين الحلقة while
أنها تتنفذ مرة واحدة على الأقل لأنها تتأكد من الشرط بعد تنفيذ الأوامر و ليس قبلهم.
هنا كأننا نقول: " طالما أن الشرط لم يتحقق إستمر في تكرار الكود ".
طريقة إستخدام الحلقة do while
في جافا
do{
// statements
increment أو decrement;
}
While( condition );
initialisation: هي أول خطوة تتنفذ في الحلقة و هي تتنفذ مرة واحدة فقط على عكس جميع العناصر الموجودة في الحلقة.
في هذه الخطوة نقوم بتعريف متغير ( يسمى عداد ).statements: هي الخطوة الثانية, و تعني تنفيذ جميع الأوامر الموجودة في الحلقة و هي تتنفذ في كل دورة.
decrement أو increment: هي الخطوة الثالثة, و هي تتنفذ في كل دورة.
هنا نحدد كيف تزداد أو تنقص قيمة العداد.condition: هي الخطوة الرابعة و الأخيرة و هي تتنفذ في كل دورة.
في هذه الخطوة نقوم بوضع شرط يحدد متى تتوقف الحلقة, في نهاية كل دورة يتم التأكد إذا تحقق الشرط أم لا.
هنا طالما أن نتيجة الشرط تساويtrue
سيعيد تكرار الكود.
تذكر فقط أن جميع هذه الخطوات تتكرر في كل دورة ما عدا أول خطوة, و السبب أننا لا نحتاج إلى تعريف عداد جديد في كل دورة, بل نستعمل العداد القديم و الذي من خلاله نعرف في أي دورة أصبحنا.
جملة التحكم break
في جافا
الجملة break
تستخدم في الحلقات و في الجملة switch
.
بمجرد ان تنفذ الجملة break
فإنها توقف الـ scope بأكمله و تخرج منه و تمسحه من الذاكرة ثم تنتقل للكود الذي يليه في البرنامج.
طريقة تعريف الجملة التحكم break
في جافا
تتألف هذه الجملة من أمر واحد و يكتب على سطر منفرد.
break;
مثال حول جملة التحكم break
في جافا
في المثال التالي قمنا بتعريف حلقة كانت ستطبع جميع الأرقام من 1 إلى 10 لولا أننا إستخدمنا الجملة break
لجعل الحلقة تتوقف عندما تصبح قيمة العداد i
تساوي 6.
مثال
public class Main { public static void main(String[] args) { // تتألف من 10 دورات. في كل دورة تطبع قيمة العداد المستخدم فيها for هنا قمنا بإنشاء حلقة for( int i=1; i<=10; i++ ) { // في كل دورة سيتم فحص قيمة العداد و بمجرد أن تصبح تساوي 6 سيتم إيقاف الحلقة نهائياً if( i == 6 ) { break; } System.out.println( i ); } } }
•سنحصل على النتيجة التالية عند التشغيل.
1 2 3 4 5
•إذاً الجملة break
جعلت الحلقة تتوقف عندما أصبحت قيمة العداد i
تساوي 6.
ملاحظة هامه في جملة التحكم break
في جافا
هنا قمنا بتجربة الجملة break
مع الحلقة for
فقط, لكن المبدأ هو نفسه تماماً مع الحلقات while
و do while
.
الجملة continue في جافا
نستخدم الجملة continue
لتجاوز تنفيذ كود معين في الحلقة, إذاً نستخدمها لتجاوز جزء من كود الـ scope.
و نستخدمها تحديداً لإيقاف الدورة الحالية و الإنتقال إلى الدورة التالية في الحلقة, لا تقلق ستفهم المقصود من المثال.
طريقة تعريف الجملة continue في جافا
تتألف هذه الجملة من أمر واحد و يكتب على سطر منفرد.
continue;
أمثلة حول الجملة continue في جافا
في المثال التالي قمنا بتعريف حلقة تطبع جميع الأرقام من 1 إلى 10 ما عدا الرقم 3.
إستخدمنا الجملة continue
لجعل الحلقة تتجاوز الدورة الثالثة في الحلقة. أي لن يتم تنفيذ أمر الطباعة عندما تصبح قيمة العداد i
تساوي 3.
المثال الأول
public class Main { public static void main(String[] args) { // تتألف من 10 دورات. في كل دورة تطبع قيمة العداد المستخدم فيها for هنا قمنا بإنشاء حلقة for (int i=1; i<=10; i++) { // في كل دورة سيتم فحص قيمة العداد, عندما تصبح تساوي 3 سيتم الإنتقال إلى الدورة التالية في الحلقة بدون تنفيذ أمر الطباعة الموضوع بعدها if (i == 3) { continue; } System.out.println(i); } } }
•سنحصل على النتيجة التالية عند التشغيل.
1 2 4 5 6 7 8 9 10
•إذاً الجملة continue
جعلت الحلقة تتجاوز الدورة الثالثة, لذلك لم تطبع الرقم 3 لأنها لم تنفذ أمر الطباعة في الدورة الثالثة.
في المثال التالي قمنا بتعريف حلقة تطبع جميع الأرقام المفردة من 1 إلى 10.
إستخدمنا الجملة continue
لجعل الحلقة تتجاوز كل دورة تكون فيها قيمة العداد i
عبارة عن عدد مزدوج.
المثال الثاني
public class Main { public static void main(String[] args) { // تتألف من 10 دورات. في كل دورة تطبع قيمة العداد المستخدم فيها for هنا قمنا بإنشاء حلقة for (int i=1; i<=10; i++) { // في كل دورة سيتم فحص قيمة العداد, في حال كانت مزدوجة سيتم الإنتقال إلى الدورة التالية في الحلقة بدون تنفيذ أمر الطباعة الموضوع بعدها if (i%2 == 0) { continue; } System.out.println(i); } } }
•سنحصل على النتيجة التالية عند التشغيل.
1 3 5 7 9
•إذاً الجملة continue
جعلت الحلقة تتجاوز كل دورة كانت فيها قيمة العداد عبارة عن عدد مفرد.
ملاحظة
هنا قمنا بتجربة الجملة continue
مع الحلقة for
فقط, لكن المبدأ هو نفسه تماماً مع الحلقات while
و do while
.