تجاوز إلى المحتوى الرئيسي
تابعنا على تيليجرامانضم

الحزم (Packages)

الخوارزميات والبرمجة · المهارات الرقمية

آخر تحديث:

محتويات الموضوع (١٣)

شرح الموضوع

الحُزَم ⁦(Packages)⁩

من الدالة إلى الحزمة: ماذا نعرف قبل البدء؟

سأتعرَّف في هذا الدرس ماهيَّة الحُزَم البرمجية وأنواعها، وأتعلَّم كيف أستخدمها وكيفية إنشاء حُزْمة برمجية خاصة.

نتاجات التعلُّم :

  • أوضح المقصود بكل من: الوحدات البرمجية، الحزم.
  • أختار الطريقة المثلى لتمثيل أجزاء المشكلة في صورة جمل برمجية، أو روتين فرعي، أو وحدات، أو كائنات.
  • أستخدم لغة البرمجة بايثون في تطوير حلول برمجية للمشكلات باستخدام جمل برمجية، مثل: الروتينات الفرعية، والوحدات، والكائنات.
  • أُحدّد الأماكن المناسبة لاستخدام الدوال والروتينات الفرعية في الحل البرمجي.
  • أُنشئ دوال وروتينات فرعية باستخدام لغة البرمجة بايثون.
  • أكتب جملاً برمجية وروتينات فرعية ووحدات باستخدام لغة البرمجة بايثون.
  • أضيف مكتبات برمجية إلى البرامج، وأوظفها في أغراض محددة.
  • أستخدم لغة البرمجة بايثون في إعداد حزمة برمجية.
  • كذلك تعرفت أنَّ كل مجموعة من الدوال التي تشترك معاً في الغرض والاستخدام نفسيهما قد جُمعت في وحدات ⁦(Modules)⁩.
الشكل (5-1): برنامج في لغة البرمجة بايثون.
الشكل (5-1): برنامج في لغة البرمجة بايثون.

أتأمل المقطع البرمجي الظاهر في الشكل (5-1)، ثمَّ أوضح الجمل الموجودة فيه.

ما ناتج تنفيذ البرنامج؟

ماذا تُسمى ⁦(math)⁩ في لغة البرمجة بايثون؟

الوحدة ⁦(Module)⁩ والحزم ⁦(Packages)⁩:

الوحدة ملف، والحزمة دليل منظَّم

  • من الأمثلة على الوحدات التي استخدمتها سابقاً: وحدة ⁦(math)⁩، ووحدة ⁦(time)⁩.
  • ويمكن تعرف الدليل - بوصفه حزمة - من خلال وجود ملف ⁦(init.py)⁩.

أنواع الحزم

ثلاثة أنواع من الحزم، ولماذا نستعملها؟

توجد أنواع مختلفة من الحزم، أبرزها:

  • وهذا النوع من الحزم يُثبت باستخدام مدير الحزم ⁦(pip)⁩، مثل: ⁦(numpy)⁩، و⁦(pandas)⁩.
  • تنظيم الكود: الحزم أداة فاعلة لتنظيم المقطع البرمجي ⁦(Code)⁩؛ تتيح تقسيم الكود إلى أجزاء صغيرة ومستقلة ومنظمة.
  • فائدة التقسيم: يسهل تصحيح الأخطاء، واختبار البرنامج وصيانته، وإعادة استخدام الكود في مشروعات متعددة عن طريق استيراده.
  • أسماء الوحدات: يمكن للحزم المختلفة أن تحتوي على وحدات تحمل الاسم نفسه من دون أي مشكلات.
  • قابلية التوسع: تجعل الحزم المشروعات أكثر قابلية للتوسع بدعم التطوير التعاوني بين الفرق المختلفة، وتسهل التعامل مع التعديلات المستقبلية.
  • النتيجة: تسهم الحزم في تحسين كفاءة المشروع، وتزيد من مرونته.

إنشاء الوحدات :

أنشئ وحدتك الخاصة ثم استدعها

  • إنشاء الوحدة: نكتب الدوال والوظائف داخل ملف بايثون ⁦(Python File)⁩، ثمَّ نحفظه بامتداد ⁦(.py)⁩، ويحمل اسماً يمثل الوحدة.
  • الاستدعاء: إنشاء ملف آخر أساسي، ثمَّ حفظه في المجلد نفسه، واستدعاء الوحدة باستخدام الأمر ⁦(import)⁩.
  • الفائدة: نستخدم الدوال والوظائف المُعرَّفة في الوحدة داخل الملف الأساسي؛ ما يسهل تنظيم الكود، ويتيح إعادة استخدامه في مشروعات عديدة.

تثبيت الحُزَم الخارجية ومكتبة ⁦(NumPy)⁩:

تثبيت حزمة خارجية وأولى مكتباتها

  • التثبيت: تُثبَّت الحزم الخارجية في بايثون باستخدام مدير الحزم الافتراضي ⁦(pip)⁩ واستخدام الأمر:

pip install package_name

  • السرعة: تُعالج البيانات المُخزَّنة في كائن المصفوفة أسرع بنحو (50) مرَّة تقريبًا من قوائم بايثون التقليدية.
  • الاستخدام: هذه السرعة تجعل المكتبة أكثر استخدامًا في علم البيانات.
  • الاسم: يُطلَق على كائن المصفوفة في المكتبة ⁦(NumPy)⁩ اسم ⁦(ndarray)⁩.
  • اللغة: جزء من المكتبة مكتوب بلغة بايثون، والأجزاء التي تتطلَّب سرعة عالية مكتوبة بلغة ⁦C⁩ أو لغة ⁦C++⁩.

استخدام المكتبات:

استيراد مكتبة ثم استدعاء دوالها

  • يتطلَّب استخدام المكتبات في برامج بايثون استيرادها أولًا.
  • ويُمكن ذلك باستخدام الأمر ⁦(import)⁩ متبوعًا باسم المكتبة كما هو مُوضَّح في المثال الآتي.

مثال:

إنشاء الحُزم :

أنشئ حزمتك الخاصة خطوة بخطوة

  • الأهمية: إنشاء الحزم من الجوانب المهمة في تطوير البرمجيات الحديثة؛ إذ يتيح تنظيم المقاطع البرمجية (الأكواد) بطريقة منهجية يمكن بها إعادة الاستخدام.
  • تقسيم المشروعات: إنشاء الحزم يسمح بتقسيم المشروعات الكبيرة إلى أجزاء صغيرة ومنفصلة؛ ما يسهل إدارة الكود.
  • المشاركة: تمكن الحزم مطوري البرامج من مشاركة الآخرين في برامجهم؛ إما بتثبيتها محليا، وإما بنشرها في مستودعات، مثل مستودع بايثون الرسمي ⁦(PyPI)⁩.

يُبيّن المثال الآتي كيف يُمكن إنشاء حُزمة وحدات

  • من المُلاحظ أنني استخدمتُ الأمر البرمجي الآتي لاستدعاء وحدة نمطية داخل حُزمة مُعيّنة:

from packagename import modulename

  • ثمّ استخدمتُ الأمر البرمجي الآتي لاستدعاء دالّة مُعيّنة داخل الوحدة النمطية:

modulename.functionname

  • يُمكن استخدام هذه الحُزمة في برامج ومشروعات أُخرى بعد حفظها في المُجلّد المُخصّص للحُزم داخل ملف بايثون في جهاز الحاسوب.

المواطنة الرقمية:

المواطنة الرقمية: حقوق من يكتب الحزم

  • نشر المعرفة: أُقسّم البرامج الكبيرة إلى حُزم، ثمّ إلى وحدات برمجية ودوال برمجية؛ لكي يتمكّن مُطوّرو البرامج من استخدامها.
  • الأمان والموثوقية: أُراعي حقوق الملكية الفكرية؛ بأن أستخدم الحُزم بصورة قانونية، وألّا أتعدّى على حقوق الملكية الفكرية لأصحاب الحُزم.
  • كذلك أتجنّب استخدام الحُزم التي تُوزّع بطريقة غير قانونية أو دون إذن من أصحاب الحقوق.

أُقيّم تعلّمي

ما الفَرق بين الوحدة ⁦(Module)⁩ والحُزمة ⁦(Package)⁩؟

أستخدم ما تعلّمته من معارف في هذا الدرس للإجابة عن الأسئلة الآتية:

أُعرّف الحُزم البرمجية، ثمّ أُوضّح أهمية استخدامها في المشروعات.

أُوظّف مهارات التفكير الناقد والبحث الرقمي والتواصل في الإجابة عن الأسئلة الآتية:

ماذا تعني عبارة: "الاتّساق في ممارسات الترميز الخاصة بالمُبرمج"؟

السؤال الثالث: ما الخطوات اللازمة لإنشاء وحدة برمجية ⁦(Module)⁩ في بايثون؟

أُنشئ وحدة برمجية لحساب محيط دائرة ومساحتها، ثمّ أحفظها في ملف مُنفصل.

السؤال الرابع: كيف يُمكن تثبيت مكتبة خارجية باستخدام ⁦(pip)⁩؟

السؤال الخامس: أملأ الفراغ بما هو مناسب في ما يأتي:

الهدف الرئيس لإنشاء الحُزم في بايثون هو

الملف الذي يجب أن تحتويه كل حُزمة في بايثون هو

يُمكن استيراد ملف مُعيّن من حُزمة في بايثون باستخدام التعليمة

الخطوة الأولى لإنشاء حُزمة في بايثون هي

أُنشئ حُزمة تساعد على معالجة النصوص؛ بأن تعمل على حساب عدد الكلمات، وعكس النصوص، وتحويل النصوص من أحرف كبيرة إلى أحرف صغيرة والعكس.

أسئلة الوحدة: حلّ بنفسك

أختار رمز الإجابة الصحيحة في كلٍّ ممّا يأتي:

  1. من مراحل دورة حياة تطوير النظام التي تتضمَّن وضع المُخطَّط الزمني للتنفيذ:
  • أ. التطوير.
  • ب. التصميم.
  • ج. التخطيط وتحليل المُتطلَّبات.
  1. الوثيقة التي تنتج من مرحلة تحديد المُتطلَّبات هي:
  • أ. ⁨(Software Requirement Specification)⁩.
  • ب. ⁨(Design Document Specification)⁩.
  • ج. ⁨(Development Document Specification)⁩.
  1. من مراحل دورة حياة تطوير النظام التي تتضمَّن إنتاج صيغة برمجية قابلة للاستخدام:
  • أ. التصميم.
  • ب. التطوير.
  • ج. الاختبار.
  1. أحد أنواع البيانات المجرَّدة يُستخدَم فيه الأمر ⁦(pop)⁩ لحذف عنصر من عناصره:
  • أ. ⁨(List)⁩.
  • ب. ⁨(Stack)⁩.
  • ج. ⁨(Set)⁩.
  1. نوع من البيانات يدعم العمليات الرياضية، مثل عمليات التقاطع والاتحاد:
  • أ. القاموس.
  • ب. الصف.
  • ج. المجموعة.
  1. الرمز ⁦(numpy)⁩ هو اختصار لـ:
  • أ. ⁨(Numerical Platform)⁩.
  • ب. ⁨(Numerical Python)⁩.
  • ج. ⁨(Number Picker)⁩.

أُعرِّف المقصود بدورة حياة تطوير الأنظمة ⁦(SDLC)⁩، وأذكر مراحلها الأساسية.

أنشِئ وحدات بلغة البرمجة بايثون لعمل محاكاة لإدارة سجل التصفح ⁦Browser History⁩ بحيث:

  1. تعمل الوحدة المستدعية على:

تعريف السجل من خلال قائمة فارغة.

استدعاء وحدات الإضافة والحذف ومعرفة الصفحة الحالية والحجم والتحقق فيما إذا كان السجل فارغًا أم لا.

  1. إنشاء:
  • أ. وحدة باسم ⁦push⁩ تُستخدم عند زيارة صفحة جديدة.
  • ب. وحدة تُسمى ⁦pop⁩ لعرض الصفحة السابقة.
  • ج. وحدة تُسمى ⁦peek⁩ لعرض الصفحة الحالية.
  • د. معرفة عدد الصفحات من وحدة تُسمى ⁦size⁩.
  • هـ. التحقق هل السجل فارغ أم لا باستخدام وحدة تُسمى ⁦is_empty⁩.

أقرأ الحالة الآتية، ثمَّ أختار نموذج ⁦(SDLC)⁩ المناسب، وأُبرِّر إجابتي:

تعمل شركة طيران على تطوير نظام حجز تذاكر يتَّسم بالتعقيد.

أرسم مُخطَّط سَيْر العمليات للمسألة الآتية:

حساب الراتب الإجمالي لمندوب مبيعات، راتبه الأساسي (300) دينار أردني، والعمولة الإضافية التي يأخذها مُوزَّعة على النحو الآتي:

  1. إذا كانت مبيعاته أقلَّ من (1000) دينار أو تساويها، فإنَّ نسبة عمولته تبلغ 6٪.
  1. إذا كانت مبيعاته أكثر من (1000) دينار، وأقلَّ من (3000) دينار أو تساويها، فإنَّ نسبة عمولته تبلغ 7.5٪.
  1. إذا كانت مبيعاته أكثر من (3000) دينار، وأقلَّ من (5000) دينار أو تساويها، فإنَّ نسبة عمولته تبلغ 9٪.
  1. إذا كانت مبيعاته أكثر من (5000) دينار، فإنَّ نسبة عمولته تبلغ 10٪.

ما ناتج تنفيذ كل مقطع برمجي ممّا يأتي:

أ- ```python def drawtriangle(n): if n == 0: return drawtriangle(n - 1) print("" n)

draw_triangle(5) ```

ب- ```python def repeatstring(s, n): if n == 0: return "" return s + repeatstring(s, n - 1)

print(repeat_string("Hello", 3)) ```

  • المقصود بدورة حياة تطوير الأنظمة وأذكر مراحلها الأساسية: راجع درس ⁦(SDLC)⁩.

تعليمات للمراجعة والتحسين

تعريفات أساسية

الدالة ⁦(Function)⁩

مقطعاً برمجياً له اسم يؤدي وظيفة ما، ويمكن استدعاؤه باستخدام اسمه

الوحدة ⁦(Module)⁩

ملف يحتوي على مقاطع برمجية ⁦(Code)⁩ مكتوبة مسبقاً، ومن الممكن استدعاؤها وإعادة استخدامها في برامج أخرى

الحزم ⁦(Packages)⁩

طريقة لتنظيم الوحدات المرتبطة معاً في تسلسل هرمي، وهي تُعد دليلاً ⁦(Directory)⁩ يحتوي على وحدات متعددة، وحُزم فرعية، وموارد إضافية، مثل: ملفات البيانات، والوثائق

الحزم الخارجية ⁦(Third-Party Packages)⁩

حزم خارجية ⁦(Third-Party Packages)⁩ تطورها أطراف ثالثة، وهي توفر مزايا إضافية لمطوري البرامج

الحزم التي طورها المستخدم ⁦(User-Defined Packages)⁩

حزم مخصصة ⁦(User-Defined Packages)⁩ يطورها المستخدم لتلائم متطلبات خاصة في برنامجه

الأسماء المستعارة ⁦(Alias)⁩

تتيح برامج بايثون كتابة أسماء مستعارة ⁦(Alias)⁩ بدلًا من كتابة الأسماء الحقيقية للمكتبات

مكتبة ⁦(NumPy)⁩

مكتبة جاهزة تُستخدَم مع المصفوفات، وتحتوي على دوال للعمل في مجال الجبر الخطّي

بطاقات مهمة

الوحدة المستدعاة ⁦(Imported Module)⁩

ملف ⁦(Rarea.py)⁩ يُسمى الوحدة المستدعاة ⁦(Imported Module)⁩

الوحدة المستدعية ⁦(Calling Module)⁩

الملف ⁦(area_main.py)⁩ الذي يتضمَّن جملة الاستدعاء يُسمى الوحدة المستدعية ⁦(Calling Module)⁩

معاينة موضوع «الحزم (Packages)» من وحدة «الخوارزميات والبرمجة» في مادة المهارات الرقمية. أقسام الشرح: ١٣، التعريفات: ٧.

المصدر: المركز الوطني لتطوير المناهج، الحزم (Packages) (ص ٧١–٨٧)

موضوعات أخرى في الوحدة

تابع الدراسة