الحلقات المتداخلة
جزء من قسم الأساسيات في رحلة Ruby على Coddy. الدرس 46 من 88.
يمكنك وضع حلقة داخل حلقة أخرى لإنشاء حلقة متداخلة. تُنفَّذ الحلقة الداخلية بالكامل في كل تكرار للحلقة الخارجية، مما يجعل هذا النمط مفيدًا للعمل مع الشبكات أو الجداول أو التوليفات.
rows = 2
cols = 3
for i in 1..rows
for j in 1..cols
puts "i=#{i}, j=#{j}"
end
endيُخرج هذا ستة أسطر. لكل قيمة من i، تمرّ الحلقة الداخلية عبر جميع قيم j.
أولًا، تكون قيمة i هي 1 بينما تتدرج قيمة j من 1 إلى 2 ثم 3. ثم تصبح قيمة i هي 2 وتتدرج قيمة j مرة أخرى من 1 إلى 2 ثم 3. لا تتغير قيمتا rows وcols أبدًا: فهما تخبران الحلقات فقط متى تتوقف.
من الأمثلة العملية إنشاء نمط ضرب بسيط:
for row in 1..3
for col in 1..3
print "#{row * col} "
end
puts ""
endيطبع هذا شبكة من المنتجات بحجم 3x3. تُبقي print القيم على السطر نفسه، وتنقل puts "" إلى سطر جديد بعد اكتمال كل صف. ويمكنك أيضًا المزج بين أنواع مختلفة من الحلقات، مثل حلقة times داخل حلقة for.
التحدي
سهلاقرأ عددين صحيحين من الإدخال:
rows- عدد الصفوفcols- عدد الأعمدة
استخدم حلقات متداخلة لطباعة مستطيل مكوّن من علامات النجمة (*) بالأبعاد المحددة. يجب أن يحتوي كل صف على cols من علامات النجمة تفصل بينها مسافات، وأن يكون كل صف في سطر مستقل.
استخدم print لطباعة علامات النجمة داخل الصف، وputs للانتقال إلى السطر التالي بعد كل صف.
على سبيل المثال، إذا كان الإدخال 3 و4، فيجب أن يكون الناتج:
* * * *
* * * *
* * * *إذا كان الإدخال 2 و5، فيجب أن يكون الناتج:
* * * * *
* * * * *لا توجد مسافة بعد آخر * في الصف.
استخدم عدّادًا جديدًا لكل حلقة (على سبيل المثال، row للصفوف وcol لعلامات النجمة في الصف) وقارنه بـ rows أو cols. لا تغيّر rows وcols نفسيهما: يحتاج كل صف إلى cols من جديد.
جرّب بنفسك
# اقرأ المدخلات
rows = gets.to_i
cols = gets.to_i
# TODO: اكتب الكود الخاص بك أدناه
# استخدم حلقات متداخلة لطباعة مستطيل من النجوم
# استخدم print لطباعة النجوم في الصف وputs للانتقال إلى السطر التالييتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعاملات المنطقية - الجزء الرابع7حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على مدخلات المستخدم2المتغيرات وأنواع البيانات
الأرقام والمتغيراتنوع البيانات Stringنوع البيانات Booleanنوع البيانات Symbolالتحقق من أنواع البياناتقواعد التسميةملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة For مع النطاقاتحلقة WhileBreakNextمراجعة - المضروب (Factorial)حلقة Timesحلقة Untilالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةاختصارات العمليات الحسابيةمراجعة - العمليات الرياضية البسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
الإخراج باستخدام putsالإخراج باستخدام print و pالإخراج باستخدام المتغيراتالإدخال باستخدام getsدالة Chompتحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأتدرّب بنفسك: مترجم Ruby عبر الإنترنت