Menu
CoddyTech

حلقة متداخلة

جزء من قسم الأساسيات في رحلة 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 داخل الحلقة الداخلية إلى إيقاف الحلقة الداخلية فقط: وتواصل الحلقة الخارجية تنفيذ تكرارها التالي.

challenge icon

التحدي

سهل

يقرأ البرنامج عددين صحيحين: 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())
	# الحلقة الخارجية: تكرار واحد لكل صف
	# الحلقة الداخلية: أضف نجمة واحدة لكل عمود
quiz iconاختبر نفسك

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

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

تدرّب بنفسك: مترجم GDScript عبر الإنترنت