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

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

الأسبوع 12 · الوحدة ١٢ «البرمجة» (٢): القوائم والدوال في بايثون وبرامج صغيرة تجمع بينهما · 3 دروس
1

القوائم: قيم كثيرة تحت اسم واحد

ICT Secondary 1 Term 1, Chapter 12, Lessons 12-4 to 12-5: pp. 182–189
الهدفأخزّن قيمًا كثيرة في قائمة، وأقرؤها بالفهرس، وأغيّرها، وأمرّ عليها بحلقة.
كلمات جديدة
القائمة (⁦list⁩) · مجموعة مرتبة من القيم تحت اسم واحدالفهرس (⁦index⁩) · موضع العنصر؛ والعنصر الأول فهرسه ⁦0⁩الدالة ⁦append⁩ · إضافة عنصر في نهاية القائمةالمتغير المُجمِّع · متغير يجمع مجموعًا أو أفضل قيمة أثناء الحلقة
الشرح

تحمل القائمة عدة قيم مرتبة تحت اسم واحد، وتُكتب بين قوسين مربعين: ⁦scores = [12, 7, 9]⁩. ولكل عنصر فهرس هو موضعه، ويبدأ العدّ من ٠: ⁦scores[0]⁩ يساوي ١٢ و⁦scores[1]⁩ يساوي ٧ و⁦scores[2]⁩ يساوي ٩. والفهرس السالب يعدّ من النهاية، فـ ⁦scores[-1]⁩ يساوي ٩. و⁦len(scores)⁩ تعطي عدد العناصر، أي ٣. و⁦scores.append(15)⁩ تضيف عنصرًا في النهاية، و⁦scores[1] = 8⁩ تستبدل العنصر ذا الفهرس ١. وبعد هذين التغييرين تصبح القائمة ⁦[12, 8, 9, 15]⁩. و⁦remove(9)⁩ تحذف أول عنصر بهذه القيمة، و⁦pop()⁩ تزيل آخر عنصر وتعيده. ولزيارة كل عنصر نستخدم ⁦for x in scores⁩. ولجمع نتيجة نستخدم متغيرًا يُبنى تدريجيًا أثناء الحلقة: ⁦total = 0⁩ ثم ⁦total = total + x⁩ لكل ⁦x⁩ يعطي المجموع ٤٤؛ و⁦best = scores[0]⁩ ثم استبدال ⁦best⁩ كلما وُجد ⁦x⁩ أكبر يعطي الأكبر ١٥. وفي بايثون أدوات جاهزة هي ⁦sum(scores)⁩ و⁦max(scores)⁩ تعطي النتائج نفسها؛ وكتابة الحلقة يدويًا مرة تساعد على فهمها. ولا تسمِّ متغيراتك ⁦list⁩ أو ⁦sum⁩ أو ⁦max⁩ لأن الاسم يخفي الأداة.

الفهرس٠١٢٣
القيمة128915
أمثلة محلولة
Python
1scores = [12, 7, 9]
2print(scores[0])
3print(scores[-1])
4print(len(scores))
5scores.append(15)
6scores[1] = 8
7print(scores)
Output
12
9
3
[12, 8, 9, 15]
يطبع البرنامج الأول العنصر الأول والعنصر الأخير والطول والقائمة بعد تغييرين.
Python
1scores = [12, 8, 9, 15]
2best = scores[0]
3for x in scores:
4    if x > best:
5        best = x
6print(best)
7print(sum(scores), max(scores))
Output
15
44 15
حلقتا التجميع. يضيف ⁦total⁩ كل عنصر (١٢ + ٨ + ٩ + ١٥ = ٤٤). ويبدأ ⁦best⁩ بالعنصر الأول ويُستبدل كلما وُجد عنصر أكبر؛ ويبين السطر الأخير أن ⁦sum⁩ و⁦max⁩ تعطيان النتيجتين نفسيهما.
Python
1scores = [12, 8, 9, 15]
2scores.remove(9)
3last = scores.pop()
4print(last)
5print(scores)
Output
15
[12, 8]
تغيير القائمة: ⁦remove(9)⁩ تحذف القيمة ٩، و⁦pop()⁩ تُخرج العنصر الأخير (١٥) وتعيده، فتبقى ⁦[12, 8]⁩.
نشاط الفصل

على الورق اكتب قائمة من خمسة أعداد تختارها (مثل أعمار خمس شخصيات مخترعة). ارسمها صناديق بفهارس من ٠ إلى ٤، ثم اكتب نتيجة ⁦len⁩ والعنصر الأول والعنصر الأخير بالفهرس ⁦-1⁩ وحلقة تجمعها كلها.

تدرّب
1
⁦names = ["Mina", "Omar", "Hana"]⁩. ما قيمة ⁦names[2]⁩؟
2
ماذا تعطي ⁦len([4, 8, 6, 2])⁩؟
3
ماذا تفعل ⁦append⁩؟
4
لماذا لا ينبغي أن نسمي متغيرًا ⁦sum⁩؟