سؤال 5: تدريب 5: اكتب المقطع البرمجي الذي يطبع النمط التالي: 5 4 3 2 1 4 3 2 1 3 2 1 2 1 1
الإجابة: س5: يتم ذلك باستخدام حلقتين متداخلتين: - حلقة خارجية تبدأ من 5 وتتناقص حتى 1. - داخلها حلقة داخلية تطبع الأعداد من قيمة الحلقة الخارجية تنازليًا حتى 1 في السطر نفسه (تفصل بينها مسافة). - بعد انتهاء الحلقة الداخلية يتم الانتقال إلى سطر جديد.
خطوات الحل:
- | البند | الوصف | |--------|--------| | **المعطيات** | النمط المطلوب طباعته: 5 4 3 2 1 4 3 2 1 3 2 1 2 1 1 | | **المطلوب** | كتابة المقطع البرمجي الذي يطبع هذا النمط باستخدام الحلقات المتداخلة (Nested Loops). |
- **المبدأ المستخدم:** استخدام **حلقتين متداخلتين (Nested Loops)**. - **الحلقة الخارجية (Outer Loop):** تتحكم في عدد الأسطر والقيمة الأولية لكل سطر. - **الحلقة الداخلية (Inner Loop):** تطبع الأعداد في السطر الواحد بشكل تنازلي.
- **الخطوة 1: تحليل النمط** 1. عدد الأسطر = 5 (من السطر الذي يبدأ بـ 5 إلى السطر الذي يبدأ بـ 1). 2. في كل سطر: - تبدأ القيمة الأولى من رقم معين (5، ثم 4، ثم 3، ...). - ثم تتناقص القيم حتى تصل إلى 1. - بعد طباعة السطر، ننتقل إلى سطر جديد.
- **الخطوة 2: تصميم الحلقات** 1. **الحلقة الخارجية:** - تبدأ من `i = 5` وتتناقص حتى `i = 1` (خطوة -1). - قيمة `i` تمثل الرقم الأول في كل سطر. 2. **الحلقة الداخلية:** - تبدأ من `j = i` وتتناقص حتى `j = 1` (خطوة -1). - تطبع قيمة `j` في السطر الحالي.
- **الخطوة 3: كتابة المقطع البرمجي (بلغة Python كمثال)** python for i in range(5, 0, -1): # الحلقة الخارجية من 5 إلى 1 for j in range(i, 0, -1): # الحلقة الداخلية من i إلى 1 print(j, end=' ') # طباعة الرقم مع مسافة print() # الانتقال إلى سطر جديد بعد انتهاء السطر الحالي > **ملاحظة:** > - `range(5, 0, -1)` يعني: ابدأ من 5، توقف قبل 0، بخطوة -1. > - `end=' '` في دالة `print()` تضمن أن الأرقام تطبع في السطر نفسه مفصولة بمسافة. > - `print()` بدون معطيات تستخدم للانتقال إلى سطر جديد.
- **الخطوة 4: شرح تنفيذ البرنامج** 1. عندما `i = 5`: - الحلقة الداخلية: `j` تأخذ القيم 5، 4، 3، 2، 1. - الناتج: `5 4 3 2 1` ثم سطر جديد. 2. عندما `i = 4`: - الحلقة الداخلية: `j` تأخذ القيم 4، 3، 2، 1. - الناتج: `4 3 2 1` ثم سطر جديد. 3. تستمر العملية حتى `i = 1`، حيث تطبع `1` فقط.
- **الإجابة النهائية:** المقطع البرمجي يستخدم حلقتين: خارجية لتحديد عدد الأسطر والقيمة الأولى في كل سطر، وداخلية لطباعة الأعداد تنازلياً في ذلك السطر. الكود المقدم يطبع النمط المطلوب بدقة، حيث يبدأ كل سطر برقم ويستمر في التناقص حتى الوصول إلى الرقم 1.