For Loop

فلنفترض أننا أردنا كتابة جميع الأرقام الواقعة من ١-١٠ في برنامجنا ، هل هذا ممكن ؟ نعم ، ممكن حسناً ولو اردنا كتابة الأرقام من ١- ٢٠ ، هل هذا ممكن ؟ سوف نقول نعم ولكن لنفكر قليلاً بأرقام اكبر مثلاً من ١ – ١٠٠ سوف تجاوب وبسرعة إنه أمر مرهق أن اكتب كل الأعداد بداخل البرنامج ، حسناً مثال أخر لو وضعت شرط  أردنا تكرار ظهور رسالة معينة مادام هذا الشرط صحيح ، هنا تظهر فائدة حلقات التكرار التي تقوم بتكرار الأمر البرمجي في حال وضعت له شرط أو كما في مثال الأرقام الذي ذكرناه أردنا طباعة مجموعة الأرقام .

أنواع الحلقات التكرارية :  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