الحلقات المتداخلة
جزء من قسم الأساسيات في رحلة Swift على Coddy. الدرس 49 من 86.
إن الحلقة المتداخلة هي ببساطة حلقة داخل حلقة أخرى. تكمل الحلقة الداخلية جميع تكراراتها لكل تكرار واحد للحلقة الخارجية.
for row in 1...3 {
for col in 1...2 {
print("Row \(row), Col \(col)")
}
}
// المخرجات:
// Row 1, Col 1
// Row 1, Col 2
// Row 2, Col 1
// Row 2, Col 2
// Row 3, Col 1
// Row 3, Col 2لكل قيمة من قيم row، تعمل الحلقة الداخلية بالكامل عبر جميع قيم col. لذا، مع 3 تكرارات خارجية وتكرارين داخليين، يتم تشغيل الكود الموجود بالداخل 6 مرات إجمالاً (3 × 2).
تُستخدم الحلقات المتداخلة بشكل شائع للتعامل مع الهياكل التي تشبه الشبكة أو لإنشاء الأنماط.
إليك مثال يطبع مستطيلاً بسيطاً من النجوم:
for row in 1...2 {
for col in 1...4 {
print("*", terminator: "")
}
print("") // الانتقال إلى السطر التالي
}
// المخرجات:
// ****
// ****يمنع terminator: "" الـ print من إضافة سطر جديد، لذا تظهر النجوم في نفس الصف. بعد انتهاء الحلقة الداخلية، ينتقل print("") إلى السطر التالي.
التحدي
سهلاقرأ عددين صحيحين من المدخلات: rows و cols. استخدم الحلقات المتداخلة لطباعة شبكة من الأرقام حيث تعرض كل خلية حاصل ضرب رقم الصف في رقم العمود.
ستتلقى المدخلات التالية:
- السطر الأول: عدد الصفوف (على سبيل المثال،
"3") - السطر الثاني: عدد الأعمدة (على سبيل المثال،
"4")
المتطلبات:
- استخدم حلقة خارجية للصفوف (من 1 إلى
rows) - استخدم حلقة داخلية للأعمدة (من 1 إلى
cols) - اطبع حاصل ضرب أرقام الصف والعمود الحاليين
- افصل بين القيم في نفس الصف بمسافة
- يجب أن يكون كل صف في سطر مستقل
تلميح: استخدم terminator: " " لإبقاء القيم في نفس السطر، ثم استخدم print("") بعد الحلقة الداخلية للانتقال إلى السطر التالي.
على سبيل المثال، إذا كان rows هو 3 و cols هو 4، يجب أن تكون المخرجات:
1 2 3 4
2 4 6 8
3 6 9 12 جرّب بنفسك
let rows = Int(readLine()!)!
let cols = Int(readLine()!)!
// مهام: اكتب الكود الخاص بك أدناه
// استخدم الحلقات المتداخلة لطباعة شبكة الضرب
// الحلقة الخارجية: التكرار عبر الصفوف (من 1 إلى rows)
// الحلقة الداخلية: التكرار عبر الأعمدة (من 1 إلى cols)
// اطبع ناتج ضرب الصف * العمود
// استخدم print(..., terminator: " ") لإبقاء القيم في نفس السطر
// استخدم print("") بعد الحلقة الداخلية للانتقال إلى السطر التالييتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةالإسناد المركبمراجعة - عمليات رياضية بسيطةمعاملات المقارنة7أساسيات الإدخال والإخراج
دالة الطباعةتضمين النصوصإدخال ReadLineتحويل الأنواعمراجعة - حتى 120مراجعة - True أو False10الدوال
تعريف دالةالمعاملات والوسائطقيم الإرجاعتسميات الوسائطمراجعة - دالة Sigmaمراجعة - دالة Validationالقيم الافتراضية2المتغيرات
Let مقابل Varتوصيف الأنواع (Type Annotations)الأرقامStringBooleanقواعد التسميةمراجعة - تهيئة المتغيرات5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعامل الثلاثي (Ternary Operator)8حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على المدخلات3القيم الاختيارية (Optionals)
ما هي القيم الاختياريةفك القيم باستخدام If Letاستخدام Guard Letمعامل دمج Nilمراجعة - فك القيم بأمان9حلقات التكرار
حلقة For-Inحلقة Whileحلقة Repeat-WhileBreakContinueمراجعة - المضروب (Factorial)النطاقات في حلقات التكرارالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)تدرّب بنفسك: Playground لـ Swift