☰ خطة العام · تكنولوجيا المعلومات والاتصالات (بالعربية)

الخوارزميات وبايثون (١)

الأسبوع 11 · الوحدة ١٢ «البرمجة» (١): الخوارزميات والمخططات الانسيابية، أساسيات بايثون: المتغيرات والحساب والإدخال والحلقات والتفرع · 3 دروس
3

بايثون: الاختيار والتكرار

ICT Secondary 1 Term 1, Chapter 12, Lessons 12-1 to 12-3: pp. 167–181
الهدفأكتب وأتتبع برامج بايثون تختار بـ if وتكرر بـ for وwhile.
كلمات جديدة
الشرط (⁦condition⁩) · اختبار قيمته ⁦True⁩ أو ⁦False⁩ مثل ⁦mark >= 70⁩المسافة البادئة (⁦indentation⁩) · المسافات في بداية السطر التي تبين أي الأسطر تنتمي إلى كتلةحلقة ⁦for⁩ · تكرر لكل قيمة من قيم عدّادحلقة ⁦while⁩ · تكرر ما دام الشرط ⁦True⁩
الشرح

الشرط قيمته ⁦True⁩ أو ⁦False⁩. وتقارن بايثون بـ ⁦==⁩ (يساوي) و⁦!=⁩ (لا يساوي) و⁦< > <= >=⁩، وتربط الشروط بـ ⁦and⁩ و⁦or⁩ و⁦not⁩. لاحظ أن ⁦==⁩ تقارن بينما ⁦=⁩ الواحدة تخزّن. وجملة ⁦if⁩ تنفذ كتلتها فقط حين يكون الشرط ⁦True⁩؛ و⁦elif⁩ تعطي شرطًا آخر للتجربة؛ و⁦else⁩ تنفذ إذا لم يتحقق أي شرط. وتُبيَّن الكتلة بالمسافة البادئة: الأسطر التابعة لـ ⁦if⁩ تُزاح أربع مسافات بعد النقطتين. في البرنامج الأول ⁦mark = 72⁩ لا يحقق ⁦mark >= 90⁩ ويحقق ⁦mark >= 70⁩ فيطبع ⁦B⁩. وحلقة ⁦for⁩ تكرر لكل قيمة من قيم عدّاد: ⁦range(1, 5)⁩ تعطي ١ و٢ و٣ و٤ (القيمة الأخيرة ٥ غير داخلة). وفي البرنامج الثاني تُجمع هذه الأعداد الأربعة في ⁦total⁩ فيطبع ١٠. وحلقة ⁦while⁩ تكرر ما دام شرطها ⁦True⁩؛ ويجب أن يتغير شيء في داخلها وإلا لا تتوقف أبدًا. والبرنامج الثالث يعدّ تنازليًا من ٣ ثم يطبع ⁦Go⁩. وأخيرًا تربط ⁦and⁩ شرطين: ⁦age >= 13 and age < 18⁩ تكون ⁦True⁩ فقط إذا تحقق الجزءان، فمع ⁦age = 15⁩ تطبع ⁦True⁩.

Python
1mark = 72
2if mark >= 90:
3    print("A")
4elif mark >= 70:
5    print("B")
6else:
7    print("C")
Output
B
أمثلة محلولة
Python
1total = 0
2for i in range(1, 5):
3    total = total + i
4print(total)
Output
10
حلقة ⁦for⁩ مع مجموع متراكم. التتبع: ⁦i = 1⁩ يعطي ⁦total⁩ ١؛ و⁦i = 2⁩ يعطي ٣؛ و⁦i = 3⁩ يعطي ٦؛ و⁦i = 4⁩ يعطي ١٠. وتتوقف الحلقة قبل ٥.
Python
1n = 3
2while n > 0:
3    print(n)
4    n = n - 1
5print("Go")
Output
3
2
1
Go
حلقة ⁦while⁩ تعدّ تنازليًا. تطبع كل دورة ⁦n⁩ ثم تنقصه ١؛ وحين يصير ⁦n⁩ صفرًا يصبح الشرط ⁦n > 0⁩ خاطئًا وتنتهي الحلقة وينفَّذ السطر الأخير.
Python
1age = 15
2print(age >= 13 and age < 18)
Output
True
ربط الشروط: ⁦age >= 13 and age < 18⁩ تسأل هل التلميذ مراهق دون الثامنة عشرة. الجزءان ⁦True⁩ للعمر ١٥.
نشاط الفصل

على الورق تتبع هذا البرنامج في جدول فيه عمودا ⁦i⁩ و⁦total⁩ ثم اكتب ما يطبعه: ⁦total = 0⁩ ثم ⁦for i in range(1, 5):⁩ ثم ⁦total = total + i * 3⁩ ثم ⁦print(total)⁩. ثم غيّر البرنامج ليعدّ تنازليًا من ٥ بحلقة ⁦while⁩.

تدرّب
1
إذا كانت ⁦mark = 85⁩، ماذا يُطبع في: ⁦if mark >= 90⁩ اطبع ⁦A⁩، ⁦elif mark >= 70⁩ اطبع ⁦B⁩، ⁦else⁩ اطبع ⁦C⁩؟
2
ما الأعداد التي تعطيها ⁦range(1, 4)⁩؟
3
ما الفرق بين ⁦=⁩ و⁦==⁩؟
4
لماذا يجب أن تغيّر حلقة ⁦while⁩ شيئًا في داخل كتلتها؟