مفهوم الحلقات التكرارية في جافا
الحلقة التكرارية ( Loops ) في لغة جافا, نقوم بإستخدام الحلقات التكرارية في البرمجة بشكل عام لتُسهِّل علينا عدم كتابة نفس الكود عدة مرات.
تُستخدَم أوامر التكرار لتكرار أمر معين أو لطباعة جملة من البيانات مرة واحدة. على سبيل المثال إذا اردنا طباعة جملة Nusur Tech مئة مرة فهل يعقل أن نكتب مئة سطر لطباعة هذه الجملة مئة مرة؟ بالتأكيد هذا الأمر شاق و متعب جداً, لهذا الأمر عندما نريد طباعة كمية من البيانات أو المعلومات. و يحتاج أن نظهرها في عدة اسطر في هذه الحالة. إختصاراً للوقت و الجهد سنقوم بإستخدام اوامر التكرار.
في حال أردنا إستخدام الكود لمرات عديدة نقوم بوضعه بداخل حلقة تكرارية و هي سوف تقوم بدورها في إعادة تكراره على حسب طلبنا و شروط الكود. الأوامر عادتاً تتنفذ بشكل تسلسلي وراء بعضها, و لكن الحلقات التكرارية تجعل سهم تنفيذ الأوامر يتوقف عندها. فيقوم بتنفيذ الأوامر التي بداخل هذه الحلقات عدة مرات, و بعد أن يخرج من الحلقة التكرارية يعود و يكمل تنفيذ باقي الأوامر الموجودة
أنواع الحلقات التكرارية في جافا
- حلقة for.
- حلقة while.
- حلقة do while.
كل حلقة من هذه نقوم بإستخدامها في عمل معين في البرنامج.
حلقة For Loop في لغة جافا
حلقة for, نستخدم الأمر for loop لتكرار مجموعة من البيانات أو مجموعة من الأسطر مرة واحدة, سيختصر لدينا الأمر for جهد ووقت.
الشكل العام لحلقة for في جافا
for(initialization; Boolean_expression; inc)
معنى initialization هو بداية العداد يعني من اي رقم سيبدأ التكرار.
و معنى Boolean_expression هذا شرط متى سينتهي التكرار أو العداد. مثلاً بالأولى بدأنا من 0 و بعدها نضع له الشرط ينتهي بـ 10.
و معنى inc هو امر زيادة العداد يعني نريد العداد في كل دورة يزداد بواحد أو إثنان و هذا ايضاً امر إختياري.
مثال 1
package javaapplication22; public class JavaApplication22 { public static void main(String[] args) { int i; for(i=0;i<10;i++) System.out.println("Nusur Tech"); } }
عرًفنا العداد بمتغير i ثم بدأنا العداد بكلمة for و بعدها i=0 يعني أن العداد يبدأ من الصفر ثم اغلقناه بسيمي كولن;. ثم قمنا يوضع الشرط i<10 أنه يكرر هذا الشيئ 10 مرات ثم اغلقناه;. و بعدها i++ يعني مقدار الزيادة 1 في كل دورة. ثم وضعنا أنه يطبع كلمة Nusur Tech في هذا المثال و عند تشغيل البرنامج سوف يطبعها عشر مرات.
مثال 2
اذا نريد ان يكرر البرنامج اكثر من جملة للطباعة, سنأخذة نفس المثال السابق و نزيد له
package javaapplication22; public class JavaApplication22 { public static void main(String[] args) { int i; for(i=0;i<10;i++) { System.out.println("MUHAMMAD"); System.out.println("BADRIA"); } } }
بنفس شرح المثال الأول فقط اضفنا الأوامر التي يتم طباعتها ضمن قوسين {} ليعتبر مثل البلوك. فإذا لم نضغ اقواس البلوك سوف يطبع فقط اول جملة اسفل دالة التكرار و يطبع الجملة الثانية مرة واحدة فقط بالنهاية.
مثال 3
اكتب حلقة تكرار تطبع جميع الأرقام من 1 حتى 15 مستخدماً الحلقة for.
package javaapplication22; public class JavaApplication22 { public static void main(String[] args) { for( int i=1; i<15; i++) { System.out.println( i ); } } }
لقد أنشأنا حلقة تكرار يبدأ العداد بها من الرقم 1 و ينتهي عند الرقم 15 و في كل دورة يزيد 1 إلى أن ينتهي. للمزيد من المعلومات حول استخدام حلقة for يمكنكم الدخول لموقع هرمش من الرابط الآتي ليتم تحويلكم لدورة الحلقة for في جافا.
حلقة while Loop في لغة جافا
حلقة while في جافا تعتبر أمر من أوامر التكرار وهو أمر مبسط و جميل جداً.
الشكل العام لحلقة while في جافا
while (condition) { // }
نكتب while ثم نكتب الشرط ضمن القوسين و الشرط هو شرط التوقف يعني تستمر الحلقة في الدوران حتى يتحقق الشرط. وضمن القوسين المعكوفات نضع الأمر الذي نريد تكراره. ودائماً ما نستخدم while loop java في أوامر كثيرة مثل قراءة مصفوفة أو عند البحث في أمر معين أو البحث في قاعدة بيانات و هذه الحلقة يفضلها المبرمجين اكثر من حلقة for.
مثال 4
اكتب برنامج يقوم يطبع كلمة Nusur Tech عشر مرات بإستخدام حلقة التكرار while.
package javaapplication22; public class JavaApplication22 { public static void main(String[] args) { int count=0; while(count<10) { System.out.println("Nusur Tech"); count++; } } }
انشأنا متغير count لبداية العداد انه يبدأ من الـ 0 ووضعنا الشرط طالما المتغير count اقل من 10 نفذ لي امر الطباعة. و أمر الطباعة هو كلمة Nusur Tech و في كل دورة زد عليها 1 إلى أن يتحقق الشرط.
مثال 5
اكتب برنامج يطبع الأرقام من 1 حتى 5 عبر حلقة while loop في لغة جافا.
package javaapplication22; public class JavaApplication22 { public static void main(String[] args) { int i=1; while(i<=5) { System.out.println( i ); i++; } } }
كتبنا متغير i لبداية بدء العداد وهو 1 و ضمن الحلقة وضعنا الشرط طالما i أقل من 5 إطبع i و زد 1 على العملية إلى ان يصل للرقم 5 و تتوقف الحلقة.
ماهو معنى Factorial في جافا؟
الـ Factorial يعني يساوي المضروب و هو عملية رياضية تقوم بضرب العدد بالأعداد الذي أقل منه حتى نصل إلى 1. مثلاً نريد إيجاد مضروب الرقم 6 نقوم بضربه في نفسه و بالأعداد الذي أقل منه يعني نضربه بنفسه. ثم في 5 ثم في 4 ثم في 3 ثم في 2 ثم في 1 و بالتالي نحصل على نتيجة للمثال وهي 720 و العملية تكون.
6=6*5*4*3*2*1=720
مثال 6
قم بإيجاد مضروب الرقم 5 في حلقة while مستخدماًُ Factorial في جافا.
package javaapplication22; public class JavaApplication22 { public static void main(String[] args) { int fac=5; int count=1; while(fac>1) { count=count*fac; fac--; } System.out.println("Factorial=" + " " + count); } }
المتغير الأول عرفنا الفاكتوريال fac=5 و المتغير الثاني تعريف العداد يبدأ من 1 و ادخلنا شرط الحلقة إستمر بالدوران طالما fac أكبر من 1. و اضرب المتغير count في المتغير fac ثم قم بالإنتقال للعدد الذي قبله -- أي إنقاص الفاكتوريال في كل دورة. إلى أن يصل إلى 1 و تخزين النتيجة في count, و أمر الطباعة يطبع النتيجة بعد كلمة Factorial=.
حلقة do while في لغة جافا
سنتناول أمراً من اوامر التكرار المستخدمة و هو do while و هو شبيه بالأمر while و شبيه بأمر for. قبل قليل تحدثنا عن while و كانت مهمته هي القيام بالفحص ثم التنفيذ و مهمة do while عكسها تماماً يقوم بالتنفيذ ثم الفحص.
الشكل العام لحلقة do while في جافا
do{ //the code we want }while(stop condition)
قد يتسائل الكثير منكم حائراً أيهما أستخدم while أو do while و قلنا سابقاً أن while اكثر استخداماً و محببة لدى المبرمجين و do while إستخدامها أقل. ونحن ذكرنا do while ضمن هذه الدورة من باب الشمولية فقط كي لا يكون أي نقص في الدورة و لكن لا نقول أن do while لا نستخدمها. هناك حالات يجب استخدام do while مثل حالات تتطلب تنفيذ ثم الفحص و في حالة الفحص ثم تنفيذ نستخدم while. و قد تحتاج في حالات من حالات البرمجة أو تمر بعض الحالات و تريد البدء بالتنفيذ قبل الفحص. نسبة الخطأ في while هي 0% أما في do while هي على الأقل 1% لأنها لا تفحص قبل التنفيذ ربما بعد التنفيذ يحدث خطأ قبل التنفيذ.
مثال 7
package javaapplication22; public class JavaApplication22 { public static void main(String[] args) { int count=10; do { System.out.println("Nusur Tech"); count--; }while(count>0); } }
قمنا بتعريف متغير عددي count=10 قيمته 10 بعد ذلك دخلنا بحلقة التكرار do while ما بين القوسين. سيقوم الـ do while بطباعة الجملة Nusur Tech و إنقاص المتغير 10 مرات. لأننا وضعنا الشرط بأن يستمر طالما المتغير اكبر من 0 و سيقوم بالدوران 10 مرات و كل مرة يطبع الجملة "Nusur Tech". و سيقوم بإنقاص المتغير إلى أن تصبح قيمته 0 و يتحقق الشرط و يخرج من اللوب.
مثال 8
package javaapplication22; public class JavaApplication22 { public static void main(String[] args) { int i=1; do { System.out.println( i ); i++; }while(i<=5); } }
انشأنا متغير i=1 لبدأ العداد من هذا الرقم. و ادخلناه ضمن حلقة do while و الطباعة تكون الأرقام من رقم 1 حتى 5. بكل دورة يزيد 1 في حال كان المتغير i اصغر أو يساوي 5 و يتحقق الشرط و يتوقف.