أساسيات الوَحدات

7.1 أساسيات الوَحدات

أهداف التعلم

في نهاية هذا القسم، ينبغي أن تكون قادرًا على:

  • كتابة وَحدة تتكون فقط من تعريفات الدوال.
  • استيراد الوَحدة واستخدام الدوال في برنامج.

تعريف وَحدة

تُعرَّف الوَحدات بوضع الشِفرة في ملف .py. الوَحدة area أدناه موجودة في ملف باسم area.py. توفر هذه الوَحدة دوال لحساب المساحة.

مثال 7.1

وَحدة area

    """دوال لحساب مساحة الأشكال الهندسية."""

    import math

    # أشكال ثنائية الأبعاد

    def square(side):
        """تحصل على مساحة المربع."""
        return side**2

    def rectangle(length, width):
        """تحصل على مساحة المستطيل."""
        return length * width

    def triangle(base, height):
        """تحصل على مساحة المثلث."""
        return 0.5 * base * height

    def trapezoid(base1, base2, height):
        """تحصل على مساحة شبه المنحرف."""
        return 0.5 * (base1 + base2) * height

    def circle(radius):
        """تحصل على مساحة الدائرة."""
        return math.pi * radius**2

    def ellipse(major, minor):
        """تحصل على مساحة القطع الناقص."""
        return math.pi * major * minor

    # أشكال ثلاثية الأبعاد

    def cube(side):
        """تحصل على مساحة سطح المكعب."""
        return 6 * side**2

    def cylinder(radius, height):
        """تحصل على مساحة سطح الأسطوانة."""
        return 2 * math.pi * radius * (radius + height)

    def cone(radius, height):
        """تحصل على مساحة سطح المخروط."""
        return math.pi * radius * (radius + math.hypot(height, radius))

    def sphere(radius):
        """تحصل على مساحة سطح الكرة."""
        return 4 * math.pi * radius**2

مفاهيم تطبيقية

تعريف وَحدة

1.
كم عدد الدوال المُعرَّفة في الوَحدة area؟
  1. 6
  2. 10
  3. 49
2.
ماذا ستكون نتيجة تشغيل area.py كبرنامج؟
  1. ستُعرَّف الدوال وتكون جاهزة للاستدعاء.
  2. لا شيء؛ الوَحدة لا تحتوي على تعليمات لتشغيلها.
  3. SyntaxError
3.
ما القيمة المُرجَعة للدالّة cube(5)؟
  1. 60
  2. 125
  3. 150

استيراد وَحدة

يمكن استخدام الوَحدة المُعرَّفة في area.py في برامج أخرى. عند استيراد الوَحدة area، تُحذف اللاحقة .py:

    import area
    
    print("مساحة ملعب كرة سلة:", area.rectangle(94, 50))
    print("مساحة حلبة سيرك:", area.circle(21))

الإخراج هو:

    مساحة ملعب كرة سلة: 4700
    مساحة حلبة سيرك: 1385.4423602330987

نقطة تحقق

استيراد area في صَدَفة بايثون

مفاهيم تطبيقية

استيراد وَحدة

4.
ما التعليمة التي تستورد وَحدة من ملف باسم secret.py؟
  1. import secret
  2. import secret.py
  3. import "secret.py"
5.
ما الشِفرة التي تُرجع مساحة دائرة نصف قطرها 3 أمتار؟
  1. circle(3)
  2. area.circle(3)
  3. circle.area(3)
6.
يرغب مبرمج في كتابة دالّة تحسب مساحة شكل سداسي. أين يجب كتابة الدالّة؟
  1. البرنامج الرئيسي
  2. وَحدة area
  3. وَحدة secret

جرّب بنفسك

وَحدة التحويل

اكتب وَحدة تُعرّف الدوال التالية:

  1. cel2fah(c) –
    تحوّل درجة حرارة بالدرجة المئوية إلى فهرنهايت.
    الصيغة هي 9/5 * c + 32.
  2. fah2cel(f) –
    تحوّل درجة حرارة بالفهرنهايت إلى مئوية.
    الصيغة هي 5/9 * (f - 32).
  3. km2mi(km) –
    تحوّل مسافة بالكيلومترات إلى أميال.
    الصيغة هي km / 1.60934.
  4. mi2km(mi) –
    تحوّل مسافة بالأميال إلى كيلومترات.
    الصيغة هي mi * 1.60934.

يجب أن تتضمن كل دالّة سلسلة توثيق كأول سطر. تم توفير سلسلة توثيق للوَحدة لك.

ينبغي ألا تفعل الوَحدة شيئًا سوى تعريف الدوال. عند النقر على زر "تشغيل"، يجب أن تعمل الوَحدة بدون أخطاء. ولا ينبغي أن يظهر أي ناتج.

جرّب بنفسك

عطلة أوروبية

اكتب برنامجًا يستخدم وَحدة conversion من التمرين السابق لإكمال قصة قصيرة. يجب أن يتطابق خرج البرنامج مع المثال التالي (المدخلات بخط عريض):

    بأي سرعة كنت تقود؟ 180
    واو، هذا يعادل 112 ميلاً في الساعة!
    كم كانت درجة الحرارة؟ 35
    هذا يعادل 95 درجة فهرنهايت!

لاحظ أن هذا التمرين يتطلب ملفين:

  1. european.py، البرنامج الرئيسي. تعليمات الإدخال والإخراج مُوفَّرة كنقطة بداية. عدّل الأسطر التي تحتوي على تعليقات TODO لاستخدام وَحدة التحويل.
  2. conversion.py، الوَحدة الأخرى. انسخ والصق شِفرتك من التمرين السابق. استورد هذه الوَحدة في european.py بعد سلسلة التوثيق.