فلنفترض أننا أردنا كتابة جميع الأرقام الواقعة من ١-١٠ في برنامجنا ، هل هذا ممكن ؟ نعم ، ممكن حسناً ولو اردنا كتابة الأرقام من ١- ٢٠ ، هل هذا ممكن ؟ سوف نقول نعم ولكن لنفكر قليلاً بأرقام اكبر مثلاً من ١ – ١٠٠ سوف تجاوب وبسرعة إنه أمر مرهق أن اكتب كل الأعداد بداخل البرنامج ، حسناً مثال أخر لو وضعت شرط أردنا تكرار ظهور رسالة معينة مادام هذا الشرط صحيح ، هنا تظهر فائدة حلقات التكرار التي تقوم بتكرار الأمر البرمجي في حال وضعت له شرط أو كما في مثال الأرقام الذي ذكرناه أردنا طباعة مجموعة الأرقام .
أنواع الحلقات التكرارية : for loop – while – do..while))
أولا : الجملة for loop :-
نستخدمها عندما يكون لدي عدد معلوم للتكرار الذي أريده .
الصيغة العامة :-
for (item in collection) {
// body of loop
}
هنا أردنا طباعة الأعداد من ١-١٠ أي أن النطاق عندي معلوم فقط ١٠ ارقام اريد طباعتها مع مراعاة ان النقطتين بين العددين مهمين لأننا نريد الأعداد التي تقع في هذا النطاق
for ( i in 1..10)
{
println(i)
}
هنا نريد من المستخدم أن يدخل اسمه ومن ثم نريد طباعة هذا الاسم حرف حرف أي في كل سطر حرف
println("please enter your name :")
var name:String= readLine()!!
for(i in name)
{
println(i)
}
ونستطيع تطبيق ما تعلمناه في درس السلاسل النصية وهو استخدام الدوال الخاصة بها
println("please enter your name :")
var name:String= readLine()!!
for(i in name.reversed())
{
println(i)
}
nested for :- والمقصود هنا الحلقات المتداخلة :
مثلا لو أردنا طباعة جدول الضرب من ١-٥ جدول ١ وجدول ٢ وجدول ٣ وهكذا وصولاً لـ ٥ ، ولكننا لا نريد طباعة جدول الضرب كاملا من ١-١٠ سوف نكتفي من ١-٣ ،سوف نستخدم حلقتين متداخلتين كما في المثال .
قيمة المتغير i في الحلقة الأولى تعبر عن عدد جداول الضرب الذي نريدها فنحن نريد من جدول ١ إلى جدول ٥ ، ومن ثم قمنا بفتح الأقواس المربعة وكتبان بداخلها الحلقة الثانية وهي ما تعرف بالمتداخلة لأنها دخلت على الأولى ، قيمة المتغير x تعبر عن أننا نريد بدء الضرب من رقم ١ والتوقف عند ٣ لا نريد طباعة الجدول كامل .
for(i in 1..5){
for(x in 1..3) {
println("$i * $x = " +i*x)
}
println("--------------")
}
برنامج اختبار الرقم زوجي ام فردي :-
for( i in 1..3) {
println("please enter number :")
var num: Int = readLine()!!.toInt()
if (num % 2 == 0)
{ println("number is even")}
else
{ println("number is odd")}
}
ناتج التنفيذ :-
please enter number :
4
number is even
please enter number :
21
number is odd
please enter number :
10
number is even