☰ Year plan · Communication Technology (Arabic)

الدوال

Week 8 · Unit 1, Lesson 4 Functions with Parameters in Python · 3 lessons
2

المعاملات والقيم الممرَّرة: مدخلات الدالة

ICT Prep 3 Term 1, Unit 1, Lesson 4: pp. 44–52
الهدفأميّز المعامل من القيمة الممرَّرة وأقرأ دالة لها معاملان.
كلمات جديدة
المعامل (⁦parameter⁩) · الاسم المكتوب بين قوسي التعريفالقيمة الممرَّرة (⁦argument⁩) · القيمة التي نعطيها في الاستدعاء⁦TypeError⁩ · تظهر حين يكون عدد القيم في الاستدعاء خاطئًاالترتيب · تُطابَق القيم مع المعاملات من اليسار إلى اليمين
الشرح

كلمتان يسهل الخلط بينهما. المعامل اسم في التعريف مثل ⁦a⁩ و⁦b⁩ في ⁦def add_numbers(a, b)⁩. والقيمة الممرَّرة هي القيمة في الاستدعاء مثل ⁦3⁩ و⁦5⁩ في ⁦add_numbers(3, 5)⁩. وتملأ القيم الممرَّرة المعاملات من اليسار إلى اليمين: تصبح ⁦a⁩ تساوي ⁦3⁩ و⁦b⁩ تساوي ⁦5⁩ فيعرض البرنامج ⁦8⁩ وليس ٣٥. والترتيب مهم: ⁦subtract(10, 4)⁩ تعطي ⁦6⁩ أما ⁦subtract(4, 10)⁩ فتعطي ⁦-6⁩. ويجب أن يتطابق العدد أيضًا. فـ ⁦add_numbers(3)⁩ تعطي قيمة واحدة لمعاملين، وتتوقف بايثون بخطأ ⁦TypeError⁩. المعاملات مثل صناديق فارغة في التعريف، والاستدعاء هو الذي يقرر ما يوضع فيها كل مرة.

الاستدعاءa تأخذb تأخذيعرض
add_numbers(3, 5)358
add_numbers(10, 20)102030
add_numbers(3)3لا شيءTypeError
أمثلة محلولة
Python
1def add_numbers(a, b):
2    result = a + b
3    print(result)
4
5add_numbers(3, 5)
6add_numbers(10, 20)
Output
8
30
تُعرَّف الدالة ⁦add_numbers⁩ مرة واحدة وتُستدعى مرتين بقيم مختلفة. وكل استدعاء يملأ ⁦a⁩ و⁦b⁩ من جديد.
Python
1def subtract(a, b):
2    print(a - b)
3
4subtract(10, 4)
5subtract(4, 10)
Output
6
-6
ترتيب القيم الممرَّرة مهم. في الاستدعاء الأول تكون ⁦a⁩ تساوي ⁦10⁩ و⁦b⁩ تساوي ⁦4⁩. وفي الثاني تكون ⁦a⁩ تساوي ⁦4⁩ و⁦b⁩ تساوي ⁦10⁩.
Python
1def add_numbers(a, b):
2    result = a + b
3    print(result)
4
5add_numbers(3)
Output
TypeError: the call is missing an argument
أُعطيت قيمة واحدة لمعاملين فلا قيمة لـ ⁦b⁩. تتوقف بايثون بخطأ ⁦TypeError⁩.
نشاط الفصل

اكتب دالة ⁦multiply(a, b)⁩ تعرض حاصل الضرب. اكتب استدعاءين وقل ما يعرضه كل منهما. ضع خطًا تحت المعاملات في التعريف وارسم دائرة حول القيم الممرَّرة في الاستدعاءين.

تدرّب
1
في ⁦def triangle_area(base, height)⁩ ما أسماء المعاملات؟
2
في ⁦print(triangle_area(6, 4))⁩ أي قيمة تدخل في المعامل ⁦base⁩؟
3
ماذا تعرض ⁦subtract(4, 10)⁩ إذا كانت الدالة تطبع ⁦a - b⁩؟
4
لماذا تسبب ⁦add_numbers(3)⁩ خطأ؟