Menu
CoddyTech

الحلقة المتداخلة

جزء من قسم الأساسيات في رحلة Kotlin على Coddy. الدرس 52 من 93.

يمكنك وضع حلقة داخل حلقة أخرى لإنشاء حلقة متداخلة. تُنفَّذ الحلقة الداخلية بالكامل في كل تكرار من الحلقة الخارجية.

val rows = 2
val cols = 3
for (i in 1..rows) {
    for (j in 1..cols) {
        println("i=$i, j=$j")
    }
}
// الناتج:
// i=1, j=1
// i=1, j=2
// i=1, j=3
// i=2, j=1
// i=2, j=2
// i=2, j=3

عندما تكون قيمة i هي 1، تتكرر الحلقة الداخلية cols مرات (تتراوح قيمة j من 1 إلى 3). ثم تصبح قيمة i هي 2، وتبدأ الحلقة الداخلية من جديد، وتتراوح قيمة j من 1 إلى 3 مرة أخرى. وهذا يعطينا 2 × 3 = 6 تكرارات إجمالًا. لا تتغير قيمتا rows وcols أبدًا: فهما تخبران الحلقتين فقط متى تتوقفان.

تُستخدم الحلقات المتداخلة عادةً لإنشاء الأنماط أو التعامل مع البُنى الشبيهة بالشبكات:

for (row in 1..3) {
    for (col in 1..row) {
        print("*")
    }
    println()
}
// الناتج:
// *
// **
// ***

هنا، يعتمد نطاق الحلقة الداخلية على متغير الحلقة الخارجية، ما يُنشئ نمطًا مثلثيًا. تعرض الدالة print() الناتج دون سطر جديد، بينما تنتقل println() إلى السطر التالي بعد كل صف.

challenge icon

التحدي

متوسط

اقرأ عددًا صحيحًا n من الإدخال. استخدم حلقات متداخلة لطباعة جدول الضرب للأعداد من 1 إلى n.

لكل صف i من 1 إلى n، اطبع النواتج i * 1، i * 2، ...، i * n مفصولة بمسافات، متبوعة بسطر جديد.

على سبيل المثال، إذا كان الإدخال 3، فيجب أن يكون الإخراج:

1 2 3
2 4 6
3 6 9

إذا كان الإدخال 4، فيجب أن يكون الإخراج:

1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16

استخدم print() مع مسافة لإخراج القيم في السطر نفسه، واستخدم println() للانتقال إلى الصف التالي.

استخدم عدّادًا جديدًا لكل حلقة (على سبيل المثال i للصفوف وj للأعمدة)، وقارن كليهما مع n. لا تغيّر n نفسه: فكل صف يحتاج إليه مجددًا.

جرّب بنفسك

fun main() {
    // اقرأ المدخلات
    val n = readLine()!!.toInt()
    
    // TODO: اكتب شيفرتك أدناه
    // استخدم حلقات متداخلة لطباعة جدول الضرب
    // استخدم print() مع مسافة بين القيم في السطر نفسه
    // استخدم println() للانتقال إلى الصف التالي
    
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: Playground لـ Kotlin