☰ Year plan · Communication Technology (Arabic)

القوائم والدوال

Week 12 · Chapter 12 Programming (2): lists and functions in Python, with small programs that combine them · 3 lessons
3

برامج صغيرة تجمع القوائم والدوال

ICT Secondary 1 Term 1, Chapter 12, Lessons 12-4 to 12-5: pp. 182–189
الهدفأجمع القائمة والحلقة والدالة لمعالجة قيم كثيرة.
كلمات جديدة
المرور على القائمة · زيارة كل عنصر من القائمة بالدورالعدّاد · متغير يزيد ١ كلما حدث شيءدالة اختبار · دالة تعيد ⁦True⁩ أو ⁦False⁩المتوسط · المجموع مقسومًا على عدد العناصر
الشرح

تجمع البرامج الحقيقية هذه القطع. النمط هو: قائمة، ثم المرور عليها بحلقة ⁦for⁩، ثم استدعاء دالة على كل عنصر، ثم جمع النتائج. في البرنامج الأول تُطبَّق ⁦square⁩ على كل عدد من ⁦[1, 2, 3, 4]⁩ وتبني ⁦append⁩ قائمة جديدة ⁦[1, 4, 9, 16]⁩. وفي الثاني ⁦passed(mark)⁩ اختبار: تعيد ⁦True⁩ أو ⁦False⁩. وتستخدمه الحلقة داخل ⁦if⁩، ويزيد عدّاد ١ لكل درجة ناجحة، فللقائمة ⁦[45, 72, 50, 38, 90]⁩ يكون الجواب ٣ (٧٢ و٥٠ و٩٠). وفي الثالث تجمع ⁦average(values)⁩ الأعداد في حلقة ثم تقسم على ⁦len(values)⁩ وتعيد النتيجة، فـ ⁦average([4, 8, 6])⁩ تساوي ١٨ ÷ ٣ = ⁦6.0⁩، وهو عدد عشري لأن ⁦`/`⁩ مستخدمة. وحين لا يعطي البرنامج الجواب المتوقع فتتبعه يدويًا: اكتب المتغيرات في جدول وحدّثها سطرًا بعد سطر. وهذا يكشف أغلب الأخطاء أسرع من التخمين.

Python
1def square(n):
2    return n * n
3
4numbers = [1, 2, 3, 4]
5squares = []
6for x in numbers:
7    squares.append(square(x))
8print(squares)
Output
[1, 4, 9, 16]
أمثلة محلولة
xsquare(x)squares بعدها
11[1]
24[1, 4]
39[1, 4, 9]
416[1, 4, 9, 16]
تتبع البرنامج الأول، صف لكل دورة من الحلقة: ⁦x⁩ هو العنصر و⁦square(x)⁩ النتيجة المضافة إلى ⁦squares⁩.
Python
1def passed(mark):
2    return mark >= 50
3
4marks = [45, 72, 50, 38, 90]
5count = 0
6for m in marks:
7    if passed(m):
8        count = count + 1
9print(count)
Output
3
دالة اختبار وعدّاد. ⁦passed⁩ تعيد ⁦True⁩ حين تكون الدرجة ٥٠ فأكثر؛ ويزيد ⁦count⁩ للدرجات ٧٢ و٥٠ و٩٠ فقط. يطبع البرنامج ٣.
Python
1def average(values):
2    total = 0
3    for v in values:
4        total = total + v
5    return total / len(values)
6
7print(average([4, 8, 6]))
Output
6.0
دالة متوسط. تجمع الحلقة ٤ + ٨ + ٦ = ١٨ ثم ١٨ / ٣ = ⁦6.0⁩. تعيد الدالة القيمة وتعرضها ⁦print⁩.
نشاط الفصل

اكتب على الورق برنامجًا فيه دالة ⁦is_even(n)⁩ تعيد ⁦True⁩ حين ⁦n % 2 == 0⁩، وقائمة من ستة أعداد، وحلقة تعدّ كم منها زوجي. وتتبعه بالقائمة ⁦3, 8, 5, 6, 10, 7⁩ واكتب النتيجة المطبوعة.

تدرّب
1
ماذا يطبع البرنامج الأول إذا كانت القائمة ⁦[2, 3]⁩؟
2
ماذا تعيد ⁦average([10, 20])⁩؟
3
في برنامج ⁦passed⁩، كم درجة من ⁦[60, 49, 50]⁩ تنجح؟
4
لماذا نتتبع برنامجًا يدويًا؟