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

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

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

الدوال: نكتبها مرة ونستخدمها مرات

ICT Secondary 1 Term 1, Chapter 12, Lessons 12-4 to 12-5: pp. 182–189
الهدفأكتب دوالّ بمعاملات وقيم إرجاع، وأفرّق بين return وprint.
كلمات جديدة
الدالة (⁦function⁩) · كتلة شفرة لها اسم يمكن استخدامها مرات كثيرةالمعامل / الوسيط · الاسم في التعريف / القيمة المعطاة عند الاستدعاءقيمة الإرجاع · النتيجة التي تعيدها الدالة بـ ⁦return⁩المتغير المحلي (⁦local⁩) · متغير يوجد داخل دالته فقط
الشرح

الدالة كتلة شفرة لها اسم نكتبها مرة ونستخدمها مرات كثيرة. في ⁦def square(n):⁩ الاسم ⁦n⁩ هو المعامل، أي مكان محجوز. وعند الاستدعاء ⁦square(5)⁩ تكون القيمة ٥ هي الوسيط، ويحمل ⁦n⁩ القيمة ٥ أثناء تشغيل الدالة. وكلمة ⁦return⁩ تعيد نتيجة إلى المكان الذي استُدعيت منه الدالة، فتُستبدل ⁦square(5)⁩ بالعدد ٢٥ ويمكن استخدامها في عملية حسابية مثل ⁦square(3) + 1⁩ وهي ١٠. أما الدالة التي فيها ⁦print⁩ وليس فيها ⁦return⁩ فتعرض شيئًا على الشاشة فقط، وتعيد القيمة الخاصة ⁦None⁩. قارن ⁦r = show(4)⁩: تعرض الشاشة ١٦ لكن ⁦r⁩ تحمل ⁦None⁩. والمتغير الذي يُصنع داخل دالة، مثل ⁦tax⁩ داخل ⁦add_tax⁩، محلي: يوجد أثناء تشغيل الدالة فقط، واستخدامه خارجها يعطي خطأ. وقد تكون للدالة معاملات كثيرة مثل ⁦area(width, height)⁩ وتُطابَق الوسائط بالترتيب. وتجعل الدوال البرامج أقصر وتتيح اختبار قطعة صغيرة في كل مرة.

Python
1def square(n):
2    return n * n
3
4print(square(5))
5print(square(3) + 1)
Output
25
10
أمثلة محلولة
Python
1def show(n):
2    print(n * n)
3
4r = show(4)
5print(r)
Output
16
None
⁦print⁩ و⁦return⁩ مختلفتان. ⁦show(4)⁩ تطبع ١٦ لكنها تعيد ⁦None⁩، فتحمل ⁦r⁩ القيمة ⁦None⁩ ويعرض السطر الأخير ⁦None⁩.
Python
1def add_tax(price):
2    tax = price * 0.1
3    return price + tax
4
5print(add_tax(200))
Output
220.0
دالة فيها متغير محلي. ⁦add_tax(200)⁩ تصنع ⁦tax = 20.0⁩ وتعيد ⁦220.0⁩. ولا يمكن استخدام المتغير ⁦tax⁩ بعد الاستدعاء. وفي النتيجة فاصلة عشرية لأن ⁦200 * 0.1⁩ عدد عشري.
Python
1def area(width, height):
2    return width * height
3
4print(area(4, 3))
Output
12
معاملان. تُطابَق الوسائط بالترتيب: ⁦width⁩ تأخذ ٤ و⁦height⁩ تأخذ ٣، فتكون ⁦area(4, 3)⁩ هي ١٢.
نشاط الفصل

اكتب على الورق دالة ⁦double(n)⁩ تعيد ⁦n * 2⁩ ودالة ⁦greet(name)⁩ تعيد النص ⁦"Hello "⁩ متبوعًا بالاسم. اكتب قيمة ⁦double(7)⁩ وقيمة ⁦greet("Mina")⁩. أي دوالك تستطيع استخدامها داخل عملية حسابية، ولماذا؟

تدرّب
1
⁦def square(n): return n * n⁩. ما قيمة ⁦square(6)⁩؟
2
في ⁦def area(width, height)⁩، أي الأسماء معاملات؟ وفي ⁦area(4, 3)⁩، أي القيم وسائط؟
3
دالة فيها ⁦print(n * n)⁩ وليس فيها ⁦return⁩. ماذا تعيد؟
4
لماذا لا يمكن استخدام المتغير المحلي خارج دالته؟