الحلقات المتداخلة
جزء من قسم 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تتحكم الحلقة الخارجية في الصفوف، بينما تتعامل الحلقة الداخلية مع كل عمود داخل ذلك الصف. بعد إكمال كل صف، نقوم بطباعة سطر جديد للانتقال إلى السطر التالي.
التحدي
سهلاقرأ رقمين من المدخلات: 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() لطباعة القيم مفصولة بمسافات، مع سطر جديد بعد كل صفيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الثاني
المعاملات المنطقية (AND, OR)المعاملات المنطقية - الجزء الثاني (NOT)مراجعة - المنطق البسيطالمنطق المتجهي - الجزء الأولالمنطق المتجهي - الجزء الثاني2المتغيرات وأنواع البيانات
نوع البيانات الرقمينوع البيانات الصحيحنوع البيانات الحرفينوع البيانات المنطقيالتحقق من أنواع البياناتقواعد التسميةالقيم المفقودة: NAملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة Forحلقة Whileجملة Breakجملة Next (Continue)مراجعة - المضروب (Factorial)توليد المتتاليات (seq, :)الحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةقسمة الأعداد الصحيحة وباقي القسمةمعاملات الإسنادملخص - عمليات رياضية بسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
طباعة المخرجاتاستخدام Cat للمخرجاتالمخرجات مع المتغيراتقراءة المدخلات باستخدام readline()أساسيات تحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ