حلقة متداخلة
جزء من قسم الأساسيات في رحلة GDScript على Coddy. الدرس 49 من 92.
الحلقة المتداخلة هي حلقة داخل حلقة أخرى. في كل تكرار من تكرارات الحلقة الخارجية، تنفذ الحلقة الداخلية جميع تكراراتها:
var rows := 3
var cols := 2
for i in range(rows):
print("Outer: ", i)
for j in range(cols):
print(" Inner: ", j)Outer: 0
Inner: 0
Inner: 1
Outer: 1
Inner: 0
Inner: 1
Outer: 2
Inner: 0
Inner: 1الكتلة الداخلية مزاحة بمقدار مستويين. تُنفَّذ rows × cols = 3 × 2 = 6 مرات إجمالًا. يبدأ j من جديد من 0 في كل مرة تعمل فيها الحلقة الخارجية، بينما تظل rows وcols كما هما، ولا تحددان سوى متى تتوقف الحلقات.
تحتاج الحلقتان إلى اسمَي متغير مختلفين. كتابة for i داخل for i أخرى خطأ يُبلَّغ عنه قبل تشغيل البرنامج.
تُفيد الحلقات المتداخلة في التعامل مع الصفوف والأعمدة. تنهي print() السطر دائمًا، لذا لطباعة صف من النجوم، أنشئه أولًا في سلسلة نصية واطبعه بعد انتهاء الحلقة الداخلية:
for row in range(2):
var line := ""
for col in range(3):
line += "*"
print(line)***
***تُنفَّذ الحلقة الخارجية مرة واحدة لكل صف، وتضيف الحلقة الداخلية نجمة واحدة لكل عمود. تؤدي break داخل الحلقة الداخلية إلى إيقاف الحلقة الداخلية فقط: وتواصل الحلقة الخارجية تنفيذ تكرارها التالي.
التحدي
سهليقرأ البرنامج عددين صحيحين: rows وcols.
استخدم حلقات متداخلة لطباعة مستطيل من النجوم (*) يتكون من rows أسطر، وفي كل سطر cols نجوم.
بالنسبة إلى المدخلين 3 و4، يكون الناتج:
****
****
****استخدم عدّادًا جديدًا لكل حلقة (مثلًا row للصفوف وcol للنجوم في الصف) وقارنه بـ rows أو cols. لا تغيّر rows وcols نفسيهما: يحتاج كل صف إلى cols من جديد.
جرّب بنفسك
extends Node
func _ready():
var rows := int(OS.read_string_from_stdin())
var cols := int(OS.read_string_from_stdin())
# الحلقة الخارجية: تكرار واحد لكل صف
# الحلقة الداخلية: أضف نجمة واحدة لكل عمود
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات، الجزء الأول
المعاملات الحسابيةالقسمة الصحيحةمعامل باقي القسمةاختصارات العمليات الحسابيةمراجعة - حسابات بسيطةمعاملات المقارنة7أساسيات الإدخال والإخراج
الإخراجالإخراج باستخدام المتغيراتتنسيق السلاسل النصيةالإدخالالتحويل بين الأنواعمراجعة - حتى 120مراجعة - صح أم خطأ10الدوال
تعريف دالةالمعاملاتالقيمة المعادةأنواع القيم المعادةمراجعة - دالة سيغمامراجعة - دالة التحققالقيم الافتراضية13التكرار على المصفوفات
التكرار على العناصرالتكرار باستخدام الفهارسالتكرار على السلاسل النصية الجزء 1التكرار على السلاسل النصية الجزء 216متعقّب المصروفات اليومية
نظرة عامة على المشروعإنهاء البرنامجتدرّب بنفسك: مترجم GDScript عبر الإنترنت