Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

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

جزء من قسم Fundamentals في رحلة R على Coddy — الدرس 44 من 78.

يمكنك وضع حلقة داخل حلقة أخرى لإنشاء حلقة متداخلة. تعمل الحلقة الداخلية بالكامل مع كل تكرار للحلقة الخارجية، مما يجعل هذا مفيداً عند العمل مع التوليفات أو الأنماط الشبيهة بالشبكة.

for (i in 1:3) {
  for (j in 1:2) {
    cat("i =", i, ", j =", j, "\n")
  }
}

المخرجات:

i = 1 , j = 1 
i = 1 , j = 2 
i = 2 , j = 1 
i = 2 , j = 2 
i = 3 , j = 1 
i = 3 , j = 2

لكل قيمة لـ i، تنتقل الحلقة الداخلية عبر جميع قيم j. عندما تكون i هي 1، تنتقل j من 1 إلى 2. ثم تصبح i هي 2، وتبدأ j من جديد من 1 إلى 2 مرة أخرى.

مثال عملي هو إنشاء نمط ضرب بسيط:

for (row in 1:3) {
  for (col in 1:3) {
    cat(row * col, " ")
  }
  cat("\n")
}

المخرجات:

1  2  3  
2  4  6  
3  6  9

تتحكم الحلقة الخارجية في الصفوف، بينما تتعامل الحلقة الداخلية مع كل عمود داخل ذلك الصف. بعد إكمال كل صف، نقوم بطباعة سطر جديد للانتقال إلى السطر التالي.

challenge icon

التحدي

سهل

اقرأ رقمين من المدخلات: rows و cols.

استخدم الحلقات المتداخلة (nested loops) لطباعة مستطيل من الأرقام حيث تحتوي كل خلية على مجموع رقم الصف ورقم العمود الخاص بها. يتم ترقيم الصفوف من 1 إلى rows، ويتم ترقيم الأعمدة من 1 إلى cols.

اطبع كل صف في سطر مستقل، مع الفصل بين القيم بمسافة واحدة. استخدم cat() للإخراج، مع إضافة سطر جديد بعد كل صف.

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

2 3 4 5 
3 4 5 6 
4 5 6 7

في الصف الأول (الصف 1)، القيم هي 1+1=2، 1+2=3، 1+3=4، 1+4=5. وفي الصف الثاني (الصف 2)، القيم هي 2+1=3، 2+2=4، 2+3=5، 2+4=6، وهكذا.

ورقة مرجعية

الحلقة المتداخلة هي حلقة توضع داخل حلقة أخرى. تنفذ الحلقة الداخلية بالكامل لكل تكرار من الحلقة الخارجية.

for (i in 1:3) {
  for (j in 1:2) {
    cat("i =", i, ", j =", j, "\n")
  }
}

لكل قيمة من i، تدور الحلقة الداخلية عبر جميع قيم j.

مثال لإنشاء نمط ضرب:

for (row in 1:3) {
  for (col in 1:3) {
    cat(row * col, " ")
  }
  cat("\n")
}

تتحكم الحلقة الخارجية في الصفوف، بينما تتعامل الحلقة الداخلية مع كل عمود داخل ذلك الصف. استخدم cat("\n") لطباعة سطر جديد بعد إكمال كل صف.

جرّب بنفسك

# قراءة المدخلات
con <- file("stdin", "r")
rows <- as.integer(suppressWarnings(readLines(con, n = 1)))
cols <- as.integer(suppressWarnings(readLines(con, n = 1)))
close(con)

# TODO: اكتب الكود الخاص بك أدناه
# استخدم الحلقات المتداخلة لطباعة مستطيل حيث تحتوي كل خلية على الصف + العمود
# استخدم cat() لطباعة القيم مفصولة بمسافات، مع سطر جديد بعد كل صف
quiz iconاختبر نفسك

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

جميع دروس Fundamentals