كتاب البرمجة Python للصف العاشر PDF

Document Details

AstoundingNarcissus2177

Uploaded by AstoundingNarcissus2177

2024

د.أشرف رضوان رضوان سليمان,أ.رأفت صابر عبدالاله أحمد,أ.منيرة خالد محمد أبو شيبة,د.يوسف منصور يوسف الخليفي,أ.إبرا

Tags

برمجة Python ذكاء اصطناعي تقنية المعلومات تعلم البرمجة

Summary

يُقدم هذا الكتاب، الطبعة الأولى، دليلاً شاملاً حول البرمجة بلغة Python، للصف العاشر في الكويت. يغطي الكتاب مفاهيم أساسية، مثل تصحيح الأخطاء، والذكاء الاصطناعي، مع التركيز على التطبيقات العملية. يقدم أيضًا مشاريع عملية لتطبيق ما تعلمه الطالب في بيئة حقيقية.

Full Transcript

‫‪AI‬‬ ‫الطبعة األولى‬ ‫اﻷول‬ ‫الجزء الثاني‬ ‫الصف ‪ -‬اﻟﺠﺰء‬ ‫العاشر‪-‬‬ ‫اﻟﺼﻒ اﻟﻌﺎﺷﺮ‬ ‫إشراف‬ ‫أ‪.‬منى سالم عوض سالم (رئيس اللجنة)‬...

‫‪AI‬‬ ‫الطبعة األولى‬ ‫اﻷول‬ ‫الجزء الثاني‬ ‫الصف ‪ -‬اﻟﺠﺰء‬ ‫العاشر‪-‬‬ ‫اﻟﺼﻒ اﻟﻌﺎﺷﺮ‬ ‫إشراف‬ ‫أ‪.‬منى سالم عوض سالم (رئيس اللجنة)‬ ‫تأليف‬ ‫د‪.‬أشـ ــرف رضــوان رضــوان ســليمان‬ ‫أ‪.‬رأفـ ـ ـ ــت صـ ـ ـ ــابر عبــدالاله أحم ـ ـ ـ ـ ـ ـ ـ ـ ـ ــد‬ ‫أ‪.‬ــمنيرة خـ ـ ــالد محــمد أــبو شيب ـ ـ ـ ـ ـ ـ ـ ــة‬ ‫د‪.‬يوســف منصــور يوس ـ ـ ــف الخليفــي‬ ‫أ‪.‬إبراه ــيم عبدهللا إبراهـ ـ ــيم املي ــاس‬ ‫تصميم‬ ‫أ‪.‬سنية مح ـ ـ ـ ـ ـ ــمد على املـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــؤمن‬ ‫أ‪.‬إيمان عبدالعزيز أحمد الفار سي‬ ‫الطبعة األولى‬ ‫‪ ١٤٤٦‬هـ‬ ‫‪ 2025/2024‬م‬ ‫‪CODE‬‬ ‫حقوق التأليف والطبع والنشر محفوظة لوزارة التربية ‪ -‬قطاع البحوث التربوية واملناهج‬ ‫إدارة تطوير املناهج‬ ‫الطبعة األولى‪2025-2024 :‬م‬ ‫ً‬ ‫القناة التربوية‬ ‫شاركنا بتقييم مناهجنا‬ ‫الكتاب كامًال‬ ‫أودع بمكتبة الوزارة تحت رقم ( ‪ )1‬بتاريخ ‪2025/1/6‬م‬ H.H. Sheikh Meshal AL-Ahmad Al-Jaber Al-Sabah Amir Of The State Of Kuwait POSTER 48x65 with cadre cm.indd 1 12/28/23 9:44 AM H. H. Sheikh Sabah Khaled Al-Hamad Al-Sabah Crown Prince Of The State Of Kuwait crown prince.indd 1 6/6/24 6:48 PM Amir Of The State Of Kuwait ‫يمثــل رمــز االســتجابة الســريعة ‪ QR‬رابــط‬ ‫لملفــات أوراق العمــل‪ ،‬ومصــادر التعلــم‪.‬‬ ‫المحـــتوى‬ ‫رقم الصفحة‬ ‫العنوان‬ ‫‪11‬‬ ‫املقدمة‬ ‫الوحدة األولى برمجة بايثون ‪Python‬‬ ‫‪13‬‬ ‫تصحيح األخطاء واالستثناءات ‪Debugging and Exceptions‬‬ ‫‪27‬‬ ‫املكتبات ‪Libraries‬‬ ‫‪41‬‬ ‫مدخل إلى واجهة المستخدم الرسومية ‪GUI‬‬ ‫‪67‬‬ ‫الدوال ‪Functions‬‬ ‫‪97‬‬ ‫توظيف الدوال في الواجهة الرسومية‬ ‫‪111‬‬ ‫القواميس ‪Dictionaries‬‬ ‫‪131‬‬ ‫تطبيقات إثرائية ‪ -‬تعزيز مهارات متقدمة‬ ‫الوحدة الثانية الذكاء االصطناعي ‪Artificial Intelligence‬‬ ‫‪151‬‬ ‫مدخل إلى الذكاء االصطناعي ‪Artificial Intelligence‬‬ ‫‪153‬‬ ‫الذكاء االصطناعي التوليدي ‪Generative A.I‬‬ ‫‪158‬‬ ‫أدوات الذكاء االصطناعي التوليدي واستخدامها‬ ‫‪165‬‬ ‫املبادئ األخالقية في التعامل الذكاء االصطناعي التوليدي‬ ‫الوحدة الثالثة المنتجات الرقمية‬ ‫‪171‬‬ ‫مشروع تقنية التعرف على الوجوه ‪A.I. Face Recognition Project‬‬ ‫‪177‬‬ ‫توظيف الواجهة الرسومية مع مشروع التعرف على الوجوه‬ ‫‪185‬‬ ‫املراجع‬ ‫المقدمة‬ ‫في ظــل الثــورة الرقميــة التي أحدثــت تغــييرات جوهريــة في مختلــف املجــاالت‪ ،‬أصبــح إتقــان‬ ‫البرمجــة ضــرورة ملحــة لتحقيــق الطموحــات‪ ،‬وقــد بــرزت لغــة ‪ Python‬بسبــب ســهولة تعلمهــا‬ ‫وشــيوعها كأداة مثاليــة للدخــول إلى عالــم الــذكاء االصطنــاعي‪.‬‬ ‫يهــدف هــذا الكتــاب مــن تقنيــة املعلومــات في لغــة البرمجــة ‪ Python‬إلى تزويــدك بمعرفــة‬ ‫شــاملة حــول توظيــف ‪ Python‬في تطويــر حلــول ّ‬ ‫فّعالــة في مجــال الــذكاء االصطنــاعي‪ ،‬بـ ً‬ ‫ـدًءا مــن‬ ‫بناًء على األساسيات التي تم تناولها‬ ‫املفاهيم األساسية وصواًلا إلى التطبيقات املتقدمة‪ ،‬وذلك ً‬ ‫في الجــزء األول‪ ،‬نستكشــف في هــذا الكتــاب اإلمكانيــات الواســعة للغــة ‪ Python‬مــن خالل‬ ‫الوحــدة األولى التي تســتعرض مهــارات اكتشــاف األخطــاء‪ ،‬واملكتبــات‪ ،‬الواجهــة الرســومية‪،‬‬ ‫الــدوال‪ ،‬القواميــس‪ ،‬وتوظيفهــا في الواجهــة الرســومية‪.‬‬ ‫تقــدم الوحــدة الثانيــة مقدمــة شــاملة في الــذكاء االصطنــاعي‪ ،‬بمــا في ذلــك الــذكاء‬ ‫االصطنــاعي التوليــدي‪ ،‬وأدواتــه املختلفــة‪ ،‬وتطبيقاتــه العمليــة‪ ،‬إلى جانــب اســتعراض املبــادئ‬ ‫األخالقيــة التي تحكــم اســتخدامه‪.‬كمــا يحتــوي الكتــاب على مشــروعات عمليــة وأمثلــة تطبيقيــة‬ ‫مصممــة لتوضيــح املفاهيــم املعقــدة بأســلوب بســيط ومنهجي‪ ،‬ممــا يتيــح للــطالب بنــاء تطبيقــات‬ ‫تعتمــد على الــذكاء االصطنــاعي وتطويــر برامــج بواجهــات رســومية (‪ )GUI‬لتحقيــق مشــاريعهم‬ ‫الخاصــة‪.‬‬ ‫تتضمــن الوحــدة الثالثــة مشــروعات عمليــة تعتمــد على اســتخدام تقنيــات الــذكاء‬ ‫االصطنــاعي ومكتبــات لغــة ‪ Python‬لتطبيــق مــا تعلمــه الــطالب في بيئــة حقيقيــة‪.‬ومنهــا مشــروع‬ ‫تطويــر نظــام ذكــي مثــل تطبيــق التعــرف على الوجــوه‪ ،‬حيــث يتــم اســتخدام مكتبــات متقدمــة‬ ‫لتحليــل الصــور واســتخراج البيانــات منهــا‪.‬كمــا يمكــن التوســع في املشــروع لتضــمين تطبيقــات‬ ‫أخرى مثل تصنيف الصور‪ ،‬معالجة النصوص‪ ،‬أو بناء أنظمة توصية‪.‬يهدف هذا املشروع إلى‬ ‫تعزيز فهم املتعلمين لتوظيف أدوات الذكاء االصطناعي في حل املشكالت الواقعية‪ ،‬مما يفتح‬ ‫ً‬ ‫أمامهــم آفاًقــا واســعة لإلبــداع والتعلــم التطبيقــي‪ ،‬ويعــزز مــن قدرتهــم على تطويــر حلــول مبتكــرة‬ ‫باســتخدام البرمجــة والتقنيــات الحديثــة‪.‬‬ ‫برمجة ‪Python‬‬ ‫الوحدة األولى‬ ‫تصحيح األخطاء واالستثناءات‬ ‫‪Debugging and Exceptions‬‬ ‫مدخل إلى تصحيح األخطاء واالستثناءات‬ ‫‪1‬‬ ‫تصحيح األخطاء ‪Debugging‬‬ ‫‪2‬‬ ‫األخطاء اللغوية ‪Syntax Errors‬‬ ‫‪3‬‬ ‫األخطاء الداللية ‪Symanitc Errors‬‬ ‫‪4‬‬ ‫األخطاء المنطقية ‪Logic Errors‬‬ ‫‪5‬‬ ‫االستثناءات ‪Exceptions‬‬ ‫‪6‬‬ ‫تصحيح األخطاء واالستثناءات‬ ‫‪Debugging and Exceptions‬‬ ‫نتاجــــات التعــلم‬ ‫ التعرف على مفهوم األخطاء (‪ )Errors‬واالستثناءات (‪ ،)Exceptions‬والتمييز بين أنواع‬ ‫األخطاء الشائعة مثل األخطاء النحوية (اللغوية) (‪ ، )Syntax Errors‬األخطاء الداللية‬ ‫‪ ،Semantic Error‬األخطاء املنطقية ‪.Logic Errors‬‬ ‫ إدراك أهميــة التعامــل مــع االســتثناءات لضمــان اســتمرارعمــل البرامــج وتجنــب توقفهــا‬ ‫املفاجــئ عنــد مواجهــة أخطــاء غيــرمتوقعــة‪.‬‬ ‫ اســتخدام التعليمــة البرمجيــة ‪ Try‬ملحاولــة تنفيــذ األوامــر األساســية‪ ،‬وتحديــد‬ ‫الســيناريوهات التــي قــد تــؤدي إلــى أخطــاء‪.‬‬ ‫ تطبيــق التعليمــة البرمجيــة ‪ Except‬ملعالجــة االســتثناءات وتنفيــذ تعليمــات بديلــة عنــد‬ ‫حــدوث خطــأ لضمــان اســتمرارالبرنامــج بسالســة‪.‬‬ ‫ تحليل رسائل الخطأ واستنتاج أسبابها لتحسين مهارات تصحيح األخطاء (‪.)Debugging‬‬ ‫ تطبيــق آليــات إدارة األخطــاء فــي مشــروعات عمليــة لضمــان اســتقرار البرامــج وســهولة‬ ‫صيانتهــا‪.‬‬ ‫تصحيح األخطاء واالستثناءات ‪Debugging and Exceptions‬‬ ‫مدخل إلى تصحيح األخطاء واالستثناءات‬ ‫ ‬ ‫ تعــتبر األخطــاء واالســتثناءات مفهــوم أســا سي في البرمجــة‪ ،‬وتهــدف إلى التعامــل مــع األخطــاء التي قــد تحــدث أثنــاء‬ ‫تشغيل البرنامج بطريقة منظمة تمنع توقفه‪ ،‬وتتيح آلية معالجتها للمبرمجين التحقق من األخطاء والتعامل معها‬ ‫بمرونة‪.‬كما تســاعد في تحسين اســتقرار البرنامج وتقديم تجربة مســتخدم أفضل من خالل عرض رســائل تنبيهية‬ ‫أو اتخاذ إجراءات بديلة دون تعطيل البرنامج بالكامل‪.‬‬ ‫تصحيح األخطاء ‪Debugging‬‬ ‫ قد يقع املبرمج في بعض األخطاء عند تعامله مع النصوص البرمجية في لغة ‪ ،Python‬ويمكن استخدام بعض‬ ‫التقنيات التي يتم تنفيذها الكتشاف تلك األخطاء وتصحيحها‪.‬‬ ‫وهناك ثالثة أنواع من األخطاء وهي‪:‬‬ ‫أنواع األخطاء في ‪Python‬‬ ‫‪Errors‬‬ ‫‪Syntax‬‬ ‫‪Semantic‬‬ ‫‪Logic‬‬ ‫األخطاء اللغوية ‪Syntax Errors‬‬ ‫ أخطاء تحدث عندما ال تتبع التعليمات البرمجية املكتوبة لقواعد اللغة البرمجية املستخدمة‪ ،‬وهذه األخطاء‬ ‫تمنــع البرنامــج مــن العمــل‪ ،‬وال يســتطيع املفســر ‪ Interprerter‬فهــم تلــك التعليمــات بسبــب وجــود خطــأ في تركيــب‬ ‫الجمــلة البرمجــية منــها‪ :‬‬ ‫ استخدام مسافة إضافية أو ناقصة بين الكلمات أو الرموز‪.‬‬ ‫ استخدام األقواس أو عالمات االقتباس بشكل غير صحيح‪.‬‬ ‫‪17‬‬ ‫‪..‬تصحيح األخطاء‬ ‫واالستثناءات‬ ‫الثانية‬ ‫تصحيح األخطاء‬ ‫الوحدة‬ ‫األولى ‪..‬‬ ‫الوحدة‬ ‫مثال ‪ :1‬األخطاء اللغوية ‪Syntax Errors‬‬ ‫ظهور خط أحمر متعرج‬ ‫سهم يشير ملوضع الخطأ‬ ‫عدد األخطاء التي‬ ‫اكتشفها ‪Interpreter‬‬ ‫تعني وجود خطأ‬ ‫تصحيح الخطأ‬ ‫تعني عدم وجود خطأ‬ ‫تقنية املعلومات ‪..‬الصف العاشر‬ ‫‪18‬‬ ‫تصحيح األخطاء واالستثناءات ‪Debugging and Exceptions‬‬ ‫األخطاء الداللية ‪Semantic Errors‬‬ ‫ األخطاء املكتشفة أثناء التنفيذ ولكن يجب أن تنشأ ظروف خاصة لتظهر تلك األخطاء‪.‬على سبيل املثال‪ :‬‬ ‫ الوصول إلى عنصر غير موجود في قائمة محددة‪.‬‬ ‫ األخطاء الحسابية مثل تقسيم عدد صحيح على صفر‪.‬‬ ‫ً‬ ‫وحسابًيا ال يمكن القسمة على (صفر)‪.‬‬ ‫هذا خطأ داللي ألن املستخدم أدخل (صفر) كقيمة للمتغير الثاني‪،‬‬ ‫األخطاء المنطقية ‪Logic Errors‬‬ ‫ األخطــاء التي ال يتعــرف عليهــا ‪ ،Python Interprerter‬ولكنهــا قــد تــؤدي إلى نتائــج غير متوقعــة أو غير صحيحــة‬ ‫(بــمعنى أن الــنص البرمجي يعــمل ــبدون مــشكالت لــكن نتيــجة ــهذا الــنص البرمجي غير صحيــحة)‪.‬على سبــيل املــثال‪ :‬‬ ‫ استخدام شرط غير صحيح‪.‬‬ ‫ استخدام العمليات الحسابية بشكل غير صحيح‪.‬‬ ‫‪19‬‬ ‫‪..‬تصحيح األخطاء‬ ‫واالستثناءات‬ ‫الثانية‬ ‫تصحيح األخطاء‬ ‫الوحدة‬ ‫األولى ‪..‬‬ ‫الوحدة‬ ‫مثال ‪3‬‬ ‫هذا خطأ منطقي ألن التعليمات البرمجية تحسب محيط املستطيل وليس املساحة‪.‬‬ ‫تصحيح األخطاء‪ :‬عملية تحديد وإصالح األخطاء في التعليمات البرمجية‪.‬‬ ‫مثال ‪4‬‬ ‫املتغيرن صي‬ ‫‪logic error‬‬ ‫عدم وجود ‪:‬‬ ‫‪syntax error‬‬ ‫عدم وجود مسافة بادئة‬ ‫‪syntax error‬‬ ‫الحــظ‪ :‬في الجملــة الشــرطية يتــم مقارنــة قيمــة ‪ x‬وهي قيمــة نصيــة بالرقــم ‪( 0‬مقارنــة غير صحيحــة)‪،‬‬ ‫وبالتــالي يتــم تنفيــذ التعليمــة البرمجيــة التابعــة لألمــر ‪.else‬‬ ‫تقنية املعلومات ‪..‬الصف العاشر‬ ‫‪20‬‬ ‫تصحيح األخطاء واالستثناءات ‪Debugging and Exceptions‬‬ ‫االستثناءات ‪Exceptions‬‬ ‫ يمكــن اســتخدام التعليمــات البرمجيــة (‪ )try/except‬لتحديــد الجــزء مــن التعليمــات البرمجيــة املتوقــع حــدوث‬ ‫خطــأ به‪ ،‬ال ستمرار تنف يذ البرنا مج دون تو قف‪.‬‬ ‫ يوجــد العديــد مــن أنــواع االســتثناءات ومنهــا (‪ ،)TypeError - IndexError - NameError- ValueError‬وسيتــم‬ ‫التــطرق إلى أــحد ــهذه األــنواع‪ :‬‬ ‫ً‬ ‫ أن تطلب من املستخدم قيمة رقمية و بدًال من ذلك يقوم املستخدم بإدخال قيمة نصية‬ ‫‪ValueError‬‬ ‫ وهو ما ينتج عنه خطأ في البرنامج يسمى ‪.ValueError‬‬ ‫تنقسم التعليمات البرمجية ‪ try/except‬إلى‪ :‬‬ ‫ التعليمة البرمجية ‪ :try‬تشمل التعليمات البرمجية التي قد تحدث فيها أخطاء أثناء التنفيذ‪.‬‬ ‫ التعليمة البرمجية ‪ :except‬تشمل التعليمات البرمجية التي يتم تنفيذها إذا حدث خطأ في كتلة التعليمات‬ ‫ البرمجية ‪.try‬‬ ‫الصيغة العامة لالستثناءات ‪try/except Syntax‬‬ ‫‪try:‬‬ ‫‪# try block‬‬ ‫‪# Put here code to test‬‬ ‫‪except:‬‬ ‫‪# except block‬‬ ‫‪# Will executed if existed error in try block‬‬ ‫‪21‬‬ ‫‪..‬تصحيح األخطاء‬ ‫واالستثناءات‬ ‫الثانية‬ ‫تصحيح األخطاء‬ ‫الوحدة‬ ‫األولى ‪..‬‬ ‫الوحدة‬ ‫مثال ‪5‬‬ ‫‪.1‬يســتمر البرنامج في اســتقبال بيانات عددية صحيحة ‪ integer‬فقط‪ ،‬ويتوقف البرنامج عند اســتقبال غير ذلك‬ ‫من البيانات‪ ،‬ويظهر رســالة الخطأ التالية‪ValueError: invalid literal for int( ) :‬‬ ‫العدد املدخل عشري‬ ‫‪.2‬الستمرار البرنامج دون توقف يتم استخدام ‪.try / except‬‬ ‫ُ‬ ‫يستمر البرنامج في استقبال قيم متغيرة وعند إدخال بيانات غير عددية صحيحة‪ُ ،‬تظهر رسالة للمستخدم‬ ‫‪ ،You did not enter a valid number‬ويستمر في استقبال البيانات‪ ،‬كما في املثال التالي‪ :‬‬ ‫مثال ‪6‬‬ ‫ برنامج يستقبل أعداد صحيحة‪ ،‬و ُُيظهر رسالة يحدد ما إذا كان العدد املدخل ً‬ ‫زوجًيا أم ً‬ ‫فردًيا‪ ،‬وعند إدخال بيانات‬ ‫من نوع آخر‪ ،‬يتم استثناء الخطأ وطباعة رسالة ‪ ،You did not enter a valid number‬ويستمر البرنامج دون توقف‪.‬‬ ‫القيمة املدخلة نصية‬ ‫مالحظة‪ - :‬تستخدم التعليمة ‪ continue‬لتجاوز بقية النص البرمجي في الحلقة الحالية واالنتقال للتكرار التالي‪.‬‬ ‫‪ -‬تستخدم التعليمة ‪ break‬للخروج من الحلقة التكرارية ً‬ ‫فوًرا‪.‬‬ ‫تقنية املعلومات ‪..‬الصف العاشر‬ ‫‪22‬‬ ‫تصحيح األخطاء واالستثناءات ‪Debugging and Exceptions‬‬ ‫مثال ‪7‬‬ ‫البرنامج يهدف إلى حساب إجمالي الراتب للموظف بعد إضافة العالوة‪.‬‬ ‫إذا كانت املدخالت صحيحة‪ ،‬سيتم حساب إجمالي الراتب (الراتب األسا سي ‪ +‬العالوة) وطباعته‪.‬‬ ‫إذا كانت املدخالت غير صحيحة سيتم طباعة رسالة توضح نوع الخطأ‪.‬‬ ‫ إدخال فهرس عنصر قائمة (اسم املوظف) غير صحيح تظهر رسالة خطأ من نوع ‪.IndexError‬‬ ‫ً‬ ‫‪ -‬إدخال فهرس عنصر قائمة = ‪( ٦‬مثًال)‬ ‫ إدخال قيمة العالوة غير صحيحة (نصية) تظهر رسالة خطأ من نوع ‪.ValueError‬‬ ‫ً‬ ‫‪ -‬إدخال قيمة العالوة = ‪( Ali‬مثًال)‬ ‫ملعلوماتك (تصحيح األخطاء ‪)Debugging‬‬ ‫عملية تتبع سير التعليمات البرمجية خطوة بخطوة لتحديد األخطاء البرمجية وإصالحيها باستخدام‪:‬‬ ‫‪-Breakpoint‬‬ ‫‪ -‬أداة ‪ Debug‬من ‪. Main Menu‬‬ ‫‪ -‬أدوات ‪ Debugging‬من ‪.Debug Menu‬‬ ‫‪-Breakpoint‬‬ ‫‪ -‬إضافة نقاط التوقف ‪ Breakpoints‬في أسطر التعليمات البرمجية‪.‬‬ ‫‪23‬‬ ‫‪..‬تصحيح األخطاء‬ ‫واالستثناءات‬ ‫الثانية‬ ‫تصحيح األخطاء‬ ‫الوحدة‬ ‫األولى ‪..‬‬ ‫الوحدة‬ ‫أوراق العمل‬ ‫ورقة عمل ‪:1‬‬ ‫اسم البرنامج‪ :‬برنامج إدخال األوزان النسبية‪.‬‬ ‫مشكلة البرنامج‪ :‬يصحح األخطاء املختلفة في التعليمات البرمجية‪.‬‬ ‫ استدع امللف ‪player_weight.py‬‬ ‫ ادرس التعليمات البرمجية الخاصة بإدخال وزن الالعب التالية‪ :‬‬ ‫‪ -‬وزن الريشة (أقل من ‪ 63‬كيلو جرام)‪ -.‬وزن املتوسط(‪ 90-63‬كيلو جرام)‪ -.‬وزن ثقيل (يزيد عن ‪ 90‬كيلو جرام)‬ ‫املطلوب‪ :‬‬ ‫‪.1‬استكشف األخطاء املوجودة وصححها ثم استكمل الجدول التالي‪ :‬‬ ‫مالحظات‬ ‫التصحيح‬ ‫نوع الخطأ‬ ‫الخطأ‬ ‫رقم السطر‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪8‬‬ ‫‪10‬‬ ‫‪13‬‬ ‫‪21‬‬ ‫‪.2‬استخدم االستثناءت ‪ (try/except) Exceptions‬لتطوير البرنامج‪.‬‬ ‫تقنية املعلومات ‪..‬الصف العاشر‬ ‫‪24‬‬ ‫تصحيح األخطاء واالستثناءات ‪Debugging and Exceptions‬‬ ‫ورقة عمل ‪:2‬‬ ‫اسم البرنامج‪ :‬حساب املتوسط الحسابي‬ ‫مشكلة البرنامج‪ :‬اكتشاف األخطاء وتجاوزها (استكمال البرنامج العمل بصورة صحيحة)‪.‬‬ ‫املطلوب‪:‬‬ ‫ افتح امللف ‪.average_Exceptions.py‬‬ ‫ً‬ ‫ عدل ما يلزم لتصحيح األخطاء املحتمل استقبالها من املستخدم مستخدًما االستثناءات ‪try/excep‬‬ ‫‪25‬‬ ‫‪..‬تصحيح األخطاء‬ ‫واالستثناءات‬ ‫الثانية‬ ‫تصحيح األخطاء‬ ‫الوحدة‬ ‫األولى ‪..‬‬ ‫الوحدة‬ ‫ورقة عمل ‪:3‬‬ ‫اسم البرنامج‪ :‬مؤشـ ـ ــر كتلة الجسم ‪.)Body mass index( BMI‬‬ ‫مشكلة البرنامج‪ :‬اكتشاف األخطاء وتجاوزها (استكمال البرنامج العمل بصورة صحيحة)‪.‬‬ ‫املطلوب‪:‬‬ ‫‪.1‬افتح املل ــف ‪ ،BMI.py‬الذي يحسب مؤش ـ ـ ــر كتلة الجسم ‪ ،BMI‬بن ـ ـ ـ ـ ـ ـ ًـاًء على ط ـ ـ ـ ــول الشخص (باألمتار) ووزنه‬ ‫(بالكيلوجراــمات)‬ ‫ً‬ ‫‪.2‬تحقق من صحة اإلدخال‪ ،‬مستخدًما التعليمة البرمجية (‪.)try / except‬‬ ‫‪try:‬‬ ‫ الخطأ من نوع ‪ ValueError‬عند إدخال بيانات نصية‪.‬‬ ‫‪except ValueError:‬‬ ‫ الخطأ من نوع ‪ ZeroDivisionError‬عند القسمة على صفر (الطول)‬ ‫‪except ZeroDivisionError:‬‬ ‫‪.3‬شغل البرنامج وتأكد من خلوه من األخطاء‪.‬‬ ‫تقنية املعلومات ‪..‬الصف العاشر‬ ‫‪26‬‬ ‫الوحــــدة الثــــانية‬ ‫الوحدة األولى برمجة ‪Python‬‬ ‫المكتبات ‪Libraries‬‬ ‫المكتبات‬ ‫‪Libraries‬‬ ‫مدخل إلى المكتبات‬ ‫‪1‬‬ ‫أشهر المكتبات وأقسامها‬ ‫‪2‬‬ ‫التعامل مع المكتبات الخارجية‬ ‫‪3‬‬ ‫توثيق المكتبات‬ ‫‪44‬‬ ‫المكتبات ‪Libraries‬‬ ‫نتاجــــات التعــلم‬ ‫الجزء األول (أساسيات المكتبات)‬ ‫ فهــم املكتبــات كأدوات إلعــادة اســتخدام املقاطــع البرمجيــة وتنظيمهــا‪ ،‬ممــا يســهل بنــاء‬ ‫مشــروعات برمجيــة بكفــاءة‪.‬‬ ‫ تعل ــم كيفي ــة اس ــتيراد املكتب ــات ف ــي لغ ــة ‪ ،Python‬واس ــتخدام ال ــدوال لتوفي ــرالوق ــت‬ ‫والجه ــد‪.‬‬ ‫ التعامل مع املكتبات القياسية املدمجة في لغة ‪.Python‬‬ ‫ التعامل مع املكتبات الخارجية تثبيتها‪ ،‬تحديثها‪ ،‬وإدارتها من خالل بيئة التطوير‪.‬‬ ‫ تطويــرمكتبــات بســيطة تحــوي دوال وفئــات قابلــة إلعــادة االســتخدام فــي مشــروعات‬ ‫مختلفــة‪ ،‬ممــا يعــزز مبــدأ تقســيم البرامــج إلــى وحــدات صغي ــرة(‪.)modularity‬‬ ‫المكتبات ‪Libraries‬‬ ‫مدخل إلى المكتبات‬ ‫تتــميز لغــة البرمجــة ‪ Python‬بتوفــر العديــد مــن املكتبــات في مختلــف املجــاالت؛ منهــا تحليــل البيانــات ‪Data‬‬ ‫‪ ، Analysis‬الــذكاء االصطنــاعي ‪ ،Artificial Intelligence‬تعلــم اآللــة ‪ ،Machine Learning‬التعلــم العميــق ‪Deep‬‬ ‫‪ ،Learning‬األمــن الســيبراني ‪ ،Cybersecurity‬وتطويــر األلعــاب ‪.Gaming Development‬‬ ‫المكتبات في لغة ‪)Python Libraries( Python‬‬ ‫ُ‬ ‫املكتبة عبارة عن ملف يتضمن مجموعة من التعليمات البرمجية والوظائف اُملعرفة‪ ،‬كالدوال‬ ‫ُ‬ ‫‪ ،functions‬والفئات ‪ classes‬واملتغيرات ‪ ،variables‬والتي ُتسهم في حل مشكالت معينة‪ ،‬أو تنفيذ‬ ‫عمليات محددة‪ ،‬والتي يمكن استدعاؤها واستخدامها في البرامج لتسهيل تنفيذ العديد من املهام‪.‬‬ ‫أهمية استخدام المكتبات‬ ‫ً‬ ‫إعــادة اســتخدام املقاطــع البرمجيــة‪ :‬املكتبــات توفــر مقاطــع برمجيــة جاهــزة لالســتخدام بــدًال مــن‬ ‫إــعادة كتابتــها ــبشكل متــكرر‪.‬‬ ‫ً‬ ‫تــوفير الوقــت والجهــد‪ :‬مــن خالل اســتدعاء الــدوال املوجــودة في املكتبــات بــدًال مــن بنــاء دوال مــن‬ ‫الصــفر‪.‬‬ ‫ســهولة الصيانــة والتحديــث‪ :‬املكتبــات تتيــح اســتخدام حلــول مجربــة‪ ،‬ومتقدمــة مــع القــدرة على‬ ‫تحديثــها بــسهولة عندــما يــتم إــصدار تحديــثات جدــيدة‪.‬‬ ‫‪31‬‬ ‫الوحدة األولى ‪..‬املكتبات ‪Libraries‬‬ ‫أشهر مكتبات لغة ‪Python‬‬ ‫مكتبة ‪ :NumPy‬تتعامل مع الدوال الخاصة بالعمليات الحسابية‪ ،‬الجبر الخطي‪ ،‬واملصفوفات‪.‬‬ ‫مكتبة ‪ :Pandas‬استكشاف وتحليل ومعالجة البيانات‪.‬‬ ‫مكتبة ‪ :Matplotlib‬تمثيل البيانات ‪ ،Data Visualization‬وتصميم األشكال البيانية ‪.Graph‬‬ ‫مكتبة ‪ :OpenCV‬تعمل في مجال الرؤية الحاسوبية ‪ ،Computer Vision‬وتحليل الصور ومقاطع الفيديو‪.‬‬ ‫مكتبة ‪ :TensorFlow‬مكتبة رائدة في مجاالت تعلم اآللة والتعلم العميق‪.‬‬ ‫مكتبة ‪ :PyTorch‬مكتبة شهيرة في مجال التعلم العميق ومعالجة اللغات الطبيعية والرؤية الحاسوبية‪.‬‬ ‫أقسام المكتبات‬ ‫يمكن تقسيم املكتبات إلى‪:‬‬ ‫املكتبات الخاصة‬ ‫املكتبات الخارجية‬ ‫املكتبات القياسية‬ ‫‪Customize Libraries‬‬ ‫‪3‬‬ ‫‪Third-Party Libraries‬‬ ‫‪2‬‬ ‫‪Standard Libraries‬‬ ‫‪1‬‬ ‫مكتبات يتم تطويره ـ ـ ـ ـ ــا من قبل‬ ‫مكتبــات يتــم تطويرهــا مــن قبــل‬ ‫مكتبــات مدمجــة مــع لغــة‬ ‫مجتمــع مطــوري لغــة ‪ ،Python‬املبرمــج (إنشــاء ملــف ‪)Python‬‬ ‫‪ ،Python‬تغطــي العديــد مــن‬ ‫الشــركات واملؤسســات‪ ،‬الجامعــات تتضمــن مجموعــة مــن الــدوال‬ ‫الوظائــف األساســية مثــل التعامــل‬ ‫واملراكــز البحثيــة‪ ،‬املنظمــات غير ‪ ،functions‬الفئــات ‪،classes‬‬ ‫مــع امللفــات‪ ،‬العمليــات الحســابية‪،‬‬ ‫الربحيــة‪ ،‬واملبرمــجين‪ ،‬ويجــب املتــغيرات ‪ ،variables‬لتلبيــة‬ ‫معالجــة النصــوص‪ ،‬والتعامــل مــع‬ ‫تثبيتهــا للتعامــل معهــا على سبيــل احتياــجات مــحددة باملــشروع‪.‬‬ ‫البيانات؛ ومنها مكتبة ‪ math‬إلجراء‬ ‫املثــال مكتبــة ‪ NumPy‬للعمليــات‬ ‫العمليــات الحســابية‪ ،‬ومكتبــة‬ ‫الحســابية وتحليــل البيانــات‪،‬‬ ‫‪ datetime‬للتعامــل مــع الوقــت‬ ‫مكتبــة ‪ Pandas‬لتحليــل ومعالجــة‬ ‫والتاريــخ‪ ،‬ومكتبــة ‪ random‬لتوليــد‬ ‫البيانــات‪ ،‬ومكتبــة ‪TensorFlow‬‬ ‫القــيم العــشوائية‪.‬‬ ‫لتعــلم اآلــلة واــلذكاء االصطــناعي‪.‬‬ ‫تقنية املعلومات ‪..‬الصف العاشر‬ ‫‪32‬‬ ‫المكتبات ‪Libraries‬‬ ‫التعامل مع المكتبات الخارجية ‪Third-Party Libraries‬‬ ‫تثبيت المكتبات الخارجية ‪Install Third-Party Libraries‬‬ ‫مثا ل‪ :‬تثبيت مكتبة ‪numpy‬‬ ‫‪1‬‬ ‫الطريقة األولى‪ :‬استخدام األمر ‪ pip install‬يليه اسم املكتبة ‪library name‬‬ ‫‪ -‬من خالل أداة ‪ Terminal‬في ‪.PyCharm‬‬ ‫‪ -‬نكتب األمر ‪pip install numpy :‬‬ ‫ملعلوماتك‬ ‫‪.‬‬ ‫الطريقة الثانية‪ :‬استخدام األداة ‪Python Package‬‬ ‫‪ -‬البحث عن املكتبة املناسبة وتثبيتها من خالل األمر ‪ install‬واختيار اإلصدار املناسب للمكتبة‪.‬‬ ‫‪33‬‬ ‫الوحدة األولى ‪..‬املكتبات ‪Libraries‬‬ ‫ملعلوماتك‬ ‫الطريقة الثالثة‪ :‬استخدام نافذة األمر‪File => Settings => Project: Project name => Python Interpreter‬‬ ‫‪ ،‬ثم البحث عن املكتبة املطلوبة‪.‬‬ ‫يتم الضغط على أداة ‪install‬‬ ‫كذلك يمكن استعراض املكتبات الخارجية التي تم تثبيتها على املشروع من نفس النافذة‪.‬‬ ‫إلغاء تثبيت المكتبات الخارجية ‪Uninstall Third-Party Libraries‬‬ ‫يوجد العديد من الطرق إللغاء تثبيت املكتبات الخارجية منها‪:‬‬ ‫الطريقة األولى‪ :‬استخدام األمر ‪ ،pip uninstall library name‬من خالل أداة ‪ Terminal‬في ‪.PyCharm‬‬ ‫مثال‪ :‬إلغاء تثبيت مكتبة (‪)numpy‬‬ ‫‪pip uninstall numpy‬‬ ‫ملعلوماتك‬ ‫ ‬ ‫الطريقة الثانية‪ :‬استخدام نافذة األمر‪File => Settings => Project: Project name => Python Interpreter‬‬ ‫‪.‬‬ ‫يتم تحديد املكتبة ثم الضغط على أداة ‪uninstall‬‬ ‫تقنية املعلومات ‪..‬الصف العاشر‬ ‫‪34‬‬ ‫المكتبات ‪Libraries‬‬ ‫استيراد المكتبات ‪Import Libraries‬‬ ‫‪.1‬استيراد المكتبة كاملة‬ ‫‪import library name‬‬ ‫مثال ‪ :1‬استيراد مكتبة ‪ datetime‬المخصصة للتعامل مع التاريخ والوقت (إظهار تاريخ اليوم)‪.‬‬ ‫‪1‬‬ ‫‪: output‬‬ ‫مثال ‪ :2‬استيراد مكتبة ‪.random‬‬ ‫‪1‬‬ ‫يتم استيراد الدالة ‪ random.randint‬املخصصة لتوليد أحد األعداد الصحيحة بشكل عشوائي من املجال التالي‬ ‫(‪.)1,2,3,4,5,6,7,8,9,10‬‬ ‫عند استدعاء املكتبة كاملة باستخدام األمر ‪ ،import‬يجب كتابة اسم املكتبة ‪ random‬في كل‬ ‫ً‬ ‫مرة نستخدم فيها أحد دوالها متبوعًا بـنقطة ثم اسم الدالة املطلوبة مثل (‪.)randam.randint‬‬ ‫مالحظة‬ ‫‪35‬‬ ‫الوحدة األولى ‪..‬املكتبات ‪Libraries‬‬ ‫‪.2‬اســتيراد عنصــر محــدد (التعليمــات البرمجيــة الــدوال ‪ ،functions‬والفئــات ‪ ،classes‬و المتغيــرات ‪ ،)variables‬مــن‬ ‫مكتبــة محــددة‬ ‫‪From library name import part of library‬‬ ‫مثال ‪ :1‬استيراد الدالة ‪ asctime‬فقط‪ ،‬من مكتبة ‪ ،time‬والتعامل معها‪.‬‬ ‫‪1‬‬ ‫مثال ‪ :2‬استيراد أكثر من دالة من نفس المكتبة ‪random‬‬ ‫‪1‬‬ ‫مثال ‪ :3‬استيراد أكثر من دالة من مكتبات متعددة‬ ‫‪1‬‬ ‫ استيراد الدالة ‪ relativedelta‬من مكتبة ‪ :dateutil.relativedelta‬حساب الفرق بين تاريخين بدقة‪.‬‬ ‫ استيراد الدالة ‪ datetime.today‬من مكتبة ‪ :datetime‬الحصول على التاريخ الحالي‪.‬‬ ‫ تأكد من تثبيت مكتبة ‪( dateutil‬في ‪ )Terminal‬باستخدام األمر‪.pip install python-dateutil‬‬ ‫‪.3‬استيراد المكتبة والتعامل معها باسم مختصر ‪Import library name as shortcut name‬‬ ‫مثال‪ :‬التعبير عن اسم المكتبة ‪ datetime‬باالسم المختصر ‪dt‬‬ ‫‪1‬‬ ‫تقنية املعلومات ‪..‬الصف العاشر‬ ‫‪36‬‬ ‫المكتبات ‪Libraries‬‬ ‫‪.4‬استيراد جميع الكائنات (مثل الدوال‪ ،‬المتغيرات‪ ،‬الفئات) من مكتبة معينة‬ ‫مثال ‪ :1‬استدعاء جميع محتويات المكتبة ‪ datetime‬والتعامل معها‪.‬‬ ‫‪1‬‬ ‫مثال ‪ :2‬استدعاء جميع محتويات المكتبة ‪ random‬والتعامل معها‪.‬‬ ‫يمثل رمز * ‪ Asterisk‬إمكانية التعامل مع جميع محتويات املكتبة‪ ،‬دون الحاجة إلى كتابة اسم املكتبة قبلها‪.‬‬ ‫ملعلوماتك‬ ‫توثيق المكتبات‬ ‫دليل تفصيلي يساعد املطورين على كيفية استخدام محتوى املكتبة بشكل صحيح‪.‬‬ ‫وللحصول على ملف توثيقي للمكتبة يمكن استخدام‪:‬‬ ‫ استخدام أداة ‪ Terminal‬في ‪ PyCharm‬كتابة األمر‪pydoc library name‬‬ ‫مثال‪pydoc random :‬‬ ‫ ‬ ‫ استخدام مفتاح ‪ Ctrl‬والضغط على الزر األيسرللفأرة على اسم املكتبة بمنطقة كتابة األوامر‪.‬‬ ‫ُ‬ ‫شاشة ُتظهر محتوى ملف توثيق املكتبة ‪Random‬‬ ‫‪37‬‬ ‫الوحدة األولى ‪..‬املكتبات ‪Libraries‬‬ ‫أوراق العمل‬ ‫ورقة عمل (‪:)1‬‬ ‫اسم البرنامج‪ :‬توليد كلمة مرور قوية ‪Strong Password‬‬ ‫مشكلة البرنامج‪ :‬توليد كلمة مرور مركبة من األرقام‪،‬األحرف‪ ،‬والرموز ‪.‬‬ ‫املطلوب‪ :‬استدعاء امللف ‪ gen_password_library.py‬من مجلد أوراق العمل‪.‬‬ ‫إنشاء كلمة مرور قوية تشمل عدد محدد من الحروف والرموز واألرقام‪.‬‬ ‫‪: output‬‬ ‫تطوير البرنامج‪:‬‬ ‫طور البرنامج ليتم توليد كلمة مرور مركبة ال يقل عدد عناصرها عن ‪ ،8‬وال يزيد عن ‪.12‬‬ ‫تقنية املعلومات ‪..‬الصف العاشر‬ ‫‪38‬‬ ‫المكتبات ‪Libraries‬‬ ‫ورقة عمل (‪:)2‬‬ ‫اسم البرنامج‪ :‬بنك األسئلة‬ ‫مشكلة البرنامج‪ :‬توظيف املكتبات إلظهار أسئلة عشوائية‪ ،‬واستقبال األجوبة‪ ،‬وحساب النتيجة النهائية‪.‬‬ ‫املطلوب‪ :‬استدعاء امللف ‪ questions_bank.py‬من مجلد أوراق العمل‪.‬‬ ‫‪ -‬ادرس التعليمات البرمجية ثم استكمل البيانات املطلوبة‪:‬‬ ‫ اسم املكتبات املستخدمة‪:‬‬ ‫ ‪...............................................................................‬‬ ‫ ‪...............................................................................‬‬ ‫ اسم الدوال املستخدمة ووظيفة كل منها‪:‬‬ ‫ ‪...............................................................................‬‬ ‫ ‪...............................................................................‬‬ ‫‪39‬‬ ‫الوحدة األولى ‪..‬املكتبات ‪Libraries‬‬ ‫ورقة عمل (‪:)3‬‬ ‫اسم البرنامج‪ :‬احسب عمرك‬ ‫ُ‬ ‫مشكلة البرنامج‪ :‬توظيف املكتبات للحصول على الُعمر الخاص بتاريخ امليالد (يوم‪ /‬شهر ‪/‬سنة)‪.‬‬ ‫املطلوب‪:‬‬ ‫ استدع امللف ‪.calc_age.py‬‬ ‫ استكمل التعليمات البرمجية الالزمة‪.‬‬ ‫ اختبرالبرنامج وتأكد من خلوه من األخطاء‪.‬‬ ‫ أضف التعليمة البرمجية التالية‪ ،‬ثم شغل البرنامج واكتب وظيفتها‪.‬‬ ‫‪.....................................................................................................................................................................‬‬ ‫ استبدل ‪ %A‬بالحروف التالية وسجل وظيفة كل منها‪.‬‬ ‫‪................................................................%C‬‬ ‫‪................................................................ %B‬‬ ‫ تأكد من تثبيت مكتبة ‪ dateutil‬باستخدام األمر‪.pip install python-dateutil‬‬ ‫تقنية املعلومات ‪..‬الصف العاشر‬ ‫‪40‬‬ ‫الوحــــدة الثــــانية‬ ‫برمجة ‪Python‬‬ ‫الوحدة األولى‬ ‫المكتبات ‪Libraries‬‬ ‫الوحــــدة األولــــى‬ ‫واجهة المستخدم الرسومية ‪GUI‬‬ ‫الرسومية ‪GUI‬‬ ‫المستخدم‬ ‫‪Graphic‬‬ ‫واجهة‬ ‫‪User Interface‬‬ ‫مدخل إلى واجهة المستخدم الرسومية ‪GUI‬‬ ‫‪1‬‬ ‫توظيف المكتبات في الواجهة الرسومية‬ ‫‪22‬‬ ‫‪3‬‬ ‫واجهة المستخدم الرسومية ‪GUI‬‬ ‫نتاجــــات التعــلم‬ ‫ اإلملــام بمكونــات واجهــة املســتخدم الرســومية مــن خــال عــرض أبــرز البرامــج القائمــة‬ ‫عليهــا لبيــان أهميتهــا‪.‬‬ ‫ تعلم أبرز املكتبات في لغة الـ ‪ Python‬املتخصصة في إنشــاء واجهة رســومية واســتخدام‬ ‫دوالهــا الجاهــزة‪.‬‬ ‫ تعلم خطوات التصميم الرسومي من التخطيط للبرنامج إلى كتابة وتصديرالبرنامج‪.‬‬ ‫ تعلم كيفية إضافة مكتبة (‪ ) ICT_KW‬إلى املشروع واستدعائها‪.‬‬ ‫ التعامــل مــع بعــض عناصــرالواجهــة الرســومية ‪ Widgets‬للمكتبــة (‪ ) ICT_KW‬وضبــط‬ ‫خصائصهــا‪.‬‬ ‫ تصميم املشروعات التي تبرز أهمية توظيف واجهة املستخدم الرسومية‪.‬‬ ‫ تحفي ــز املتعلــم للبحــث عــن مكتبــات قياســية تســاعده علــى تصميــم واجهــات رســومية‬ ‫لتطويــر مشــروعه الخــاص‪.‬‬ ‫واجهة المستخدم الرسومية ‪GUI‬‬ ‫مدخل إلى واجهة المستخدم الرسومية ‪GUI‬‬ ‫ً‬ ‫ً‬ ‫إن معظم البرامج تعتمد على واجهات مرئية مشوقة تظهر نصوصًا ملونة وصورًا وأزرار وقوائم مختلفة تتطلب‬ ‫بناًء على اختياراته فيصبح التعامل أسهل‬ ‫تفاعل املستخدم معها فتنقله من شاشة إلى أخرى وتغير مجرى األمور ً‬ ‫ً‬ ‫وأكثر تشــويقًا مــن واجهــة ســطر األوامــر التي تعاملنــا معهــا في الفصــل الــدرا سي األول‪.‬كمــا أن التطــور التكنولــوجي‬ ‫الســريع شجــع املبرمجــون على تطويــر الواجهــات املرئيــة كونهــا الخطــوة األولى لتصميــم مشــاريع تعتمــد على الــذكاء‬ ‫االصطناعي‪.‬‬ ‫يســتعرض هــذا الجــزء مــن الكتــاب كيفيــة تصميــم واجهــة مرئيــة تــسمى واجهــة املســتخدم الرســومية ‪GUI‬‬ ‫)‪ ،(Graphical User Interface‬وبمــا أن تصميــم الواجهــة الرســومية يعتمــد على املهــارات األساســية لبرمجــة لغــة‬ ‫ً‬ ‫‪ Python‬بعضهــا ســبق وتعلمناهــا في الكتــاب األول والبــاقي سنتعلمــه تدريجيــًا بمــا يتناســب مــع مكونــات الواجهــة‬ ‫الرــسومية لنتمــكن ــمن تصمــيم وإنــشاء وتصدــير برناــمج متكاــمل وــمن املــهارات التي سنتعلمــها‪:‬‬ ‫املكتبات والوحدات (‪.)Libraries- Modules‬‬ ‫الدوال (‪.)Functions‬‬ ‫البيانات غير األولية (‪.)Non-Premitive Data‬‬ ‫سنبدأ في تعلم مفهوم واجهة املستخدم الرسومية ثم ننطلق لتعلم كل مهارة مما سبق‪.‬‬ ‫‪45‬‬ ‫الوحدة األولى ‪..‬واجهة املستخدم الرسومية‬ ‫مكونات واجهة المستخدم الرسومية ‪GUI‬‬ ‫واجهــة املســتخدم الرســومية (‪ ،GUI (Graphical User Interface‬هي واجهــة تفاعليــة تســمح‬ ‫للمســتخدم التفاعــل مــع التطبيقــات مــن خالل عناصــر رســومية مرئيــة‪ ،‬مثــل النوافــذ‪ ،‬األزرار ‪ ،‬والقوائــم‪،‬‬ ‫التي تعــمل على تبــسيط تجرــبة املــستخدم مــما يجــعل التطبيــقات أكثر ــسهولة ومالءــمة لالــستخدام‪.‬‬ ‫مثال‪ :‬برنامج بسيط يطلب من املستخدم إدخال الرقم املدني ليستخرج منه تاريخ امليالد‪ ،‬عند تشغيل‬ ‫البرنامج تظهر النافذة التالية‪:‬‬ ‫النافذة الرئيسية‬ ‫عنصر إلدخال‬ ‫الق ـ ـ ــيم‬ ‫عنصر لتنفيذ أمر‬ ‫عند الضغط عليه‬ ‫عنص ــر لع ـ ــرض‬ ‫الق ـ ـ ــيم‬ ‫ينتظر البرنامج من املستخدم إدخال رقمه املدني في العنصر الفارغ‪:‬‬ ‫تقنية املعلومات ‪..‬الصف العاشر‬ ‫‪46‬‬ ‫واجهة المستخدم الرسومية ‪GUI‬‬ ‫ُ‬ ‫عند الضغط على العنصر (اعرض تاريخ ميالدك) يتم معالجة القيمة اُملدخلة وإظهار الناتج كما في الشكل التالي‪:‬‬ ‫ومن هنا نرى أن واجهات املستخدم الرسومية تجعل البرامج أكثر سهولة في االستخدام‪ ،‬وتساعد املستخدمين‬ ‫على أداء املهام بسرعة وفعالية‪ ،‬ومن أبرز أمثلة برامج واجهات املستخدم الرسومية‪:‬‬ ‫أنظمة التشغيل ‪)macOS, Windows, Linux Distributions( :Operating Systems‬‬ ‫‪1‬‬ ‫‪ 2‬متصفحات اإلنترنت ‪)Google Chrome, Mozilla Firefox, Microsoft Edge( : Web Browsers‬‬ ‫‪ 3‬مشغالت الوسائط ‪)VLC Media Player,iTunes( :Media Players‬‬ ‫‪ 4‬تطبيقات الهواتف الذكية ‪)Whatsapp,Facebook, Instagram( :Mobile Applications‬‬ ‫‪ 5‬حزمة تطبيقات ‪)Word, Power point, Excel, Teams( :Office Suites‬‬ ‫‪ 6‬األلعاب ‪.Games‬‬ ‫‪47‬‬ ‫الوحدة األولى ‪..‬واجهة املستخدم الرسومية‬ ‫أهمية الواجهات الرسومية (‪)GUI‬‬ ‫ســهولة االســتخدام‪ :‬تجعــل الواجهــة الرســومية التفاعــل مــع األجهــزة والبرامــج أكثر ســهولة‬ ‫ً‬ ‫وسالســة‪ ،‬حيــث يمكــن للمســتخدمين الضغــط على العناصــر املرئيــة بــدًال مــن كتابــة األوامــر‬ ‫‪1‬‬ ‫النصــية‪.‬‬ ‫تعزيز اإلنتاجية‪ :‬توفر الواجهات الرسومية عناصر مرئية تساعد املستخدمين على أداء املهام‬ ‫بسرعة وكفاءة‪ ،‬مما يعزز اإلنتاجية‪.‬‬ ‫‪2‬‬ ‫سرعة التعلم‪ :‬بفضل التصميم البسيط للواجهات الرسومية‪ ،‬يمكن للمستخدمين الجدد‬ ‫تعلم كيفية استخدام البرامج واألجهزة بسرعة دون الحاجة إلى تدريب مكثف‪.‬‬ ‫‪3‬‬ ‫ً‬ ‫جاذبيــة التصميــم‪ :‬تســاهم الواجهــات الرســومية في جعــل التطبيقــات أكثر جاذبيــة وجمــاًال‪،‬‬ ‫مــما يزــيد ــمن تفاــعل املــستخدمين ورضاــهم‪.‬‬ ‫‪4‬‬ ‫التفاعــل الفــوري‪ :‬توفــر الواجهــات الرســومية اســتجابات فوريــة مــن خالل التغــييرات املرئيــة‬ ‫مثل تغيير األلوان أو األشكال عند التفاعل مع العناصر‪ ،‬مما يساعد املستخدمين على فهم‬ ‫‪5‬‬ ‫ــتأثير أفعالــهم ــبشكل أفــضل‪.‬‬ ‫دعــم املهــام املتعــددة‪ :‬تســهل الواجهــات الرســومية إدارة املهــام املتعــددة مــن خالل النوافــذ‬ ‫املتــعددة واألدوات التي تــساعد في تنظــيم العــمل والتنــقل بين املــهام بــسهولة‪.‬‬ ‫‪6‬‬ ‫إمكانية الوصول‪ :‬يمكن تصميم واجهات املستخدم الرسومية لتكون في متناول األشخاص‬ ‫ً‬ ‫ذوي االحتياجات الخاصة‪ ،‬مما يجعل التكنولوجيا أكثر شموًال‪.‬‬ ‫‪7‬‬ ‫تقنية املعلومات ‪..‬الصف العاشر‬ ‫‪48‬‬ ‫واجهة المستخدم الرسومية ‪GUI‬‬ ‫أشهر المكتبات المستخدمة للتعامل مع (‪:)GUI‬‬ ‫‪.Tkinter‬‬ ‫ ‬ ‫‪.PyQt‬‬ ‫ ‬ ‫‪.PySide‬‬ ‫ ‬ ‫‪.Flask/Django‬‬ ‫ ‬ ‫‪.Kivy‬‬ ‫ ‬ ‫‪.wxPython‬‬ ‫ ‬ ‫ً‬ ‫مستعيًنا بشبكة االنترنت‪ ،‬ابحث عن اثنين من املكتبات السابقة‪ ،‬واستكمل الجدول التالي‪:‬‬ ‫تدريب‪:‬‬ ‫االستخدام‬ ‫اسم املكتبة‬ ‫م‬ ‫‪..............................................................................................................‬‬ ‫‪..............................................................................................................‬‬ ‫‪...................‬‬ ‫‪1‬‬ ‫‪..............................................................................................................‬‬ ‫‪..............................................................................................................‬‬ ‫‪..............................................................................................................‬‬ ‫‪...................‬‬ ‫‪2‬‬ ‫‪..............................................................................................................‬‬ ‫‪49‬‬ ‫الوحدة األولى ‪..‬واجهة املستخدم الرسومية‬ ‫توظيف المكتبات في الواجهة الرسومية‬ ‫إنشاء الواجهة الرسومية‪:‬‬ ‫‪.1‬تصميم الواجهة الرسومية (‪:)Front-end‬‬ ‫عمليــة بنــاء عناصــر مرئيــة كاألزرار والعناويــن والصــور والقوائــم وغيرهــا؛ التي يتفاعــل معهــا املســتخدم وتتمثــل‬ ‫الخــطوات في النــقاط التالــية‪:‬‬ ‫صُور الشكل النهائي برسم واجهة البرنامج الرسومية التي سوف يتعامل معها املستخدمون‪.‬‬ ‫ََت ُ‬ ‫تحديــد العناصــر ‪ widgets‬املناــسبة لبــناء املخــطط الرــسومي‪ ،‬ورــسم مخــطط هــيكلي ــيوضح العناــصر‬ ‫وخصائصها‪.‬‬ ‫كتابة التعليمات البرمجية املناسبة لتصميم الواجهة الرسومية من خالل النافذة الرئيسية ‪،window‬‬ ‫ً‬ ‫ومجموعة من العناصر ‪ ،widgets‬وضبط خصائصها ‪ properties‬مستعينًا بأحد املكتبات املتخصصة‬ ‫في التصميم الرسومي‪.‬‬ ‫‪.2‬تصميم االستجابة لألحداث (‪:)Back-end‬‬ ‫هي االستجــابة ‪ Response‬لطلبات ‪ Requests‬الواجهة الرسومية التي تتمثل بتنفــيذ مهام معــين‪.‬‬ ‫الشكل التالي يوضح العالقة بين الواجهة الرسومية واالستجابة لألحداث‪:‬‬ ‫ب‪ -‬معالجة البيانات واألخطاء‪.‬‬ ‫‪.3‬اختبار البرنامج من حيث‪ :‬أ‪ -‬التأكد من استجابة األزرار والقوائم‬ ‫‪.4‬تصدير البرامج بإنشاء ملف تنفيذي‪.‬‬ ‫ً‬ ‫ســنعتمد في هــذا الكتــاب على املكتبــة الخاصــة (‪ ،)ICT_KW‬والتي أعــدت خصيصــًا لتصميــم واجهــة مســتخدم‬ ‫رــسومية بــسيطة‪.‬‬ ‫تقنية املعلومات ‪..‬الصف العاشر‬ ‫‪50‬‬ ‫واجهة المستخدم الرسومية ‪GUI‬‬ ‫مكتبة (‪.)ICT_KW‬‬ ‫مكتبــة خاصــة مبنيــة على البرمجــة الشــيئية ‪ ،)Object Oriented Programming) OOP‬تــم تصميمهــا لتســهيل‬ ‫إنشاء واجهات رسومية باستخدام لغة ‪ Python‬مبنية على مجموعة من املكتبات مثل ‪ Tkinter‬و ‪ Pillow‬وغيرها‬ ‫ــمن املكتــبات املــساندة‪ ،‬ولنتــعرف على البرمجــية الــشيئية ــمن خالل الــتالي‪:‬‬ ‫البرمجة الشيئية ( ‪:OOP(Object Oriented Programming‬‬ ‫تعــتبر لغــة ‪ Python‬مــن اللغــات التي تدعــم البرمجــة الشــيئية‪ ،‬وهي نمــوذج بــرمجي يعتمــد على الكائنــات‬ ‫وتفاعلها مع بعضها البعض‪ ،‬يمثل الكائن بفئة ‪ ،class‬يضم مجموعة من البيانات (املتغيرات)‪ ،‬والتي تعرف‬ ‫بالخصائص ‪ ،properties‬وكذلك نوعين من الدوال‪ :‬الدوال املدمجة ‪ methods‬والغير مدمجة ‪.functions‬‬ ‫مثال على ذلك‪ :‬مصنع لصناعة السيارات‪ ،‬يصنع أنواع مختلفة من السيارات‪ ،‬لكل صنف خواص مشتركة‬ ‫ومهام للتنفيذ بعضها مشتركة واألخرى خاصة‪.‬‬ ‫‪51‬‬ ‫الوحدة األولى ‪..‬واجهة املستخدم الرسومية‬ ‫في لغــة تتمثــل العالقــات بين العناصــر كعالقــة الوراثــة ‪ inheritance‬بين األب واألبنــاء حيــث يــرث األبنــاء بعــض‬ ‫الخصائــص مــن اآلبــاء‪ ،‬كمــا تــرث العناصــر خصائصهــا‪ ،‬ودوالهــا مــن النمــوذج البرمجي األســا سي؛ ممــا يعــزز إعــادة‬ ‫حّسـّن تنظــيم البرناــمج موضًحـ ـًا باــلشكل الــتالي‪:‬‬ ‫اــستخدام التعليــمات البرمجــية‪ ،‬و ُُي ـ‬ ‫األب ‪Parent‬‬ ‫املكتبة‬ ‫كائن يمثل املكتبة ‪ICT_KW‬‬ ‫‪ICT_KW‬‬ ‫االبن ‪Child‬‬ ‫النافذة الرئيسية‬ ‫األب ‪Parent‬‬ ‫‪Window‬‬ ‫كائن من فئة له خصائص ودوال‬ ‫مدمجة وغير املدمجة‪.‬‬ ‫العناصر‬ ‫االبن ‪Child‬‬ ‫‪Widgets‬‬ ‫وبعــد أن تعرفنــا على مفهــوم البرمجــة الشــيئية بــشكل بســيط‪ ،‬سنبــدأ في بنــاء مشــروع رســومي «الوقــت والتاريــخ»‪،‬‬ ‫للتعــرف على كيفيــة اســتخدام مكتبــة ‪ ،ICT_KW‬تصميــم النافــذة الرئيســية ‪ ،window‬ثــم إضافــة مجموعــة مــن‬ ‫العناصــر إليهــا مثــل العنــوان ‪ ،Label‬والصــورة ‪.Image‬‬ ‫الخطوة األولى‪ :‬تصميم الواجهة الرسومية‬ ‫‪ :1‬رسم واجهة المستخدم الرسومية‪.‬‬ ‫تصور الشكل النهائي برسم مخطط للواجهة املطلوبة‪:‬‬ ‫تقنية املعلومات ‪..‬الصف العاشر‬ ‫‪52‬‬ ‫واجهة المستخدم الرسومية ‪GUI‬‬ ‫‪ : 2‬تحديد العناصر ‪.widgets‬‬ ‫رسم مخطط هيكلي يوضح العناصر وخصائصها‪:‬‬ ‫‪ICT_KW‬‬ ‫)‪(Parent‬‬ ‫اﻟﻨﺎﻓﺬة اﻟﺮﺋيﺴﻴﺔ‬ ‫)‪(Parent/Child‬‬ ‫ﻋﺒﺎرة‬ ‫ﻋﺒﺎرة‬ ‫ﺻﻮرة اﻟﺴﺎﻋﮫ‬ ‫اﻟﻮﻗﺖ واﻟﺘﺎريﺦ الحﺎ;ي‬ ‫‪09:30:00.023 2024-9-16‬‬ ‫)‪(Child‬‬ ‫)‪(Child‬‬ ‫)‪(Child‬‬ ‫‪ : 3‬كتابة التعليمات البرمجية‪.‬‬ ‫أ‪ -‬إنشاء مشروع جديد ‪ New Project‬في برنامج ‪ PyCharm‬باسم ‪.FirstGUI‬‬ ‫ب‪ -‬إنشاء ملف ‪ Python‬باسم ‪.time_date_GUI‬‬ ‫ج‪ -‬تثبيت املكتبة ‪ ICT_KW‬باستخدام األمر ‪.pip install ICT_KW‬‬ ‫د‪ -‬استدعاء مكتبة ‪ ICT_KW‬باستخدام األمر ‪ import‬كالتالي‪:‬‬ ‫‪import ICT_KW‬‬ ‫ه‪ -‬تشغيل النافذة الرئيسية بكتابة التعليمية البرمجية التالية لعرض النافذة الرئيسية‪.‬‬ ‫)(‪ICT_KW. run‬‬ ‫و‪ -‬تشغيل البرنامج‪ ،‬لتظهر النافذة التالية‪:‬‬ ‫‪53‬‬ ‫الوحدة األولى ‪..‬واجهة املستخدم الرسومية‬ ‫التحكم في خصائص النافذة الرئيسية ‪Window‬‬ ‫النافذة الرئيسية ‪:Window‬‬ ‫هي اإلطار األسا سي الذي يحوي جميع عناصر الواجهة الرسومية‪.‬‬ ‫الصيغة ‪ICT_KW. window(Properties) :Syntax‬‬ ‫‪ICT_KW‬‬ ‫‪window‬‬ ‫‪Properties‬‬ ‫‪size: tuple‬‬ ‫‪title: string‬‬ ‫‪background_color: tuple‬‬ ‫)‪(width, height‬‬ ‫)‪(str‬‬ ‫)‪(0~255, 0~255, 0~255‬‬ ‫لتحديد حجم النافذة‬ ‫إلضافة عنوان للنافذة‬ ‫لتغيير لون التعبئة‬ ‫شكل يوضح الهيكل الرسومي للنافذة الرئيسية ‪ window‬وخصائصها‬ ‫ومــن خالل الهــيكل الرســومي الســابق يتــم تمثيــل كل عنصــر بتعليمــات برمجيــة لكــي يعمــل بــشكل صحيــح‪ ،‬وفــق‬ ‫البرناــمج املــحدد ــله‪.‬‬ ‫تقنية املعلومات ‪..‬الصف العاشر‬ ‫‪54‬‬ ‫واجهة المستخدم الرسومية ‪GUI‬‬ ‫التعليمات البرمجية‪:‬‬ ‫ويتم تحويل عناصر الهيكل الرسومي إلى تعليمات برمجية كما في الشكل التالي‪:‬‬ ‫اسم املكتبة‬ ‫‪ICT_KW‬‬ ‫دالة مدمجة‬ ‫‪window‬‬ ‫‪title‬‬ ‫‪size‬‬ ‫الوقت والتاريخ‬ ‫)‪(500, 100‬‬ ‫اسم الخاصية‬ ‫قيمة الخاصية‬ ‫= ‪ICT_KW.window(title‬‬ ‫الوقت والتاريـــخ‬ ‫‪,‬‬ ‫( = ‪size‬‬ ‫)) ‪500 , 100‬‬ ‫الوقت والتاريخ‬ ‫‪100‬‬ ‫‪500‬‬ ‫الشكل السابق يوضح حجم النافذة الرئيسية بالبكسل ‪Pixel‬‬ ‫الحظ ‪:‬‬ ‫‪55‬‬ ‫الوحدة األولى ‪..‬واجهة املستخدم الرسومية‬ ‫إضافة عناصر ‪ Widgets‬إلى النافذة الرئيسية‬ ‫ويتم ذلك من خالل إحدى الطرق التالية‪:‬‬ ‫‪.1‬إنشاء عنصر بطريقة مباشرة‪ ،‬والذي ال يمكن تعديل خصائصه‪.‬‬ ‫‪.2‬إنشاء عنصر بطريقة غير مباشرة‪ ،‬وإسناده ملتغير ‪.‬‬ ‫‪ -١‬العنوان ‪Label‬‬ ‫عنصر مرئي يعرض سلسلة نصية‪.‬‬ ‫الصيغة ‪Label_name(Optional) = ICT_KW. new_Label (Properties) :Syntax‬‬ ‫موقع العنصر في النافذة الرئيسية‬ ‫)‪location: tuple (x, y‬‬ ‫حجم العنصر في النافذة الرئيسية‬ ‫)‪size: tuple (width, height‬‬ ‫النص املعروض للمستخدم‬ ‫)‪text: string (str‬‬ ‫محاذاة النص‬ ‫›‪align: ‹left›, ‹right›, ‹center‬‬ ‫‪Properties‬‬ ‫لون التعبئة‬ ‫‪background_color: tuple‬‬ ‫‪Label‬‬ ‫)‪(0~255,0~255,0~255‬‬ ‫لون خط النص‬ ‫‪Fore_color: tuple‬‬ ‫)‪(0~255,0~255,0~255‬‬ ‫نوع خط النص‬ ‫)‪font_style: string (str‬‬ ‫حجم خط النص‬ ‫‪font_size: int‬‬ ‫سمك الخط (نعم‪/‬ال)‬ ‫‪bold: bool‬‬ ‫العنــوان األول ‪ :Label1‬التعليمــات البرمجيــة إلنشــاء عنــوان باســتخدام (الطريقــة املباشــرة)‪ ،‬حيــث ُُيظهــر النــص‬ ‫«الوــقت والتارــيخ الــحالي»‪ ،‬معتـ ًـمًدا على الــهيكل الرــسومي الــتالي‪:‬‬ ‫‪ICT_KW‬‬ ‫‪window‬‬ ‫‪Label‬‬ ‫‪text‬‬ ‫‪location‬‬ ‫‪size‬‬ ‫الوقت والتاريخ الحالي‬ ‫(‪)120,15‬‬ ‫)‪(250,30‬‬ ‫=‪ICT_KW.new_Label( text‬‬ ‫الوقت والتاريخ الحالي‬ ‫)) ‪,location=( 120 , 15 ) , size=( 250 , 30‬‬ ‫تقنية املعلومات ‪..‬الصف العاشر‬ ‫‪56‬‬ ‫واجهة المستخدم الرسومية ‪GUI‬‬ ‫الوقت والتاريخ‬ ‫‪X = 120‬‬ ‫الوقت والتاريخ الحالي‬ ‫‪Y‬‬ ‫‪Y = 15‬‬ ‫‪X‬‬ ‫موقع العنصر ‪ Location‬داخل النافذة يحدد من بداية الزاوية العلوية اليسرى حسب اإلحداثي‬ ‫السيني والصادي للنافذة (‪.)X,Y‬‬ ‫الحظ‬ ‫ويمكن إنشاء عنصر (‪ )Label2‬باستخدام (الطريقة غير املباشرة) وإسناده ملتغير ‪،‬مثال‪:‬‬ ‫))‪label2=ICT_KW.new_Label(text=str(datetime.now()),location=(25,50),size=(450,30‬‬ ‫‪57‬‬ ‫الوحدة األولى ‪..‬واجهة املستخدم الرسومية‬ ‫العنوان الثاني ‪:Lable2‬‬ ‫إلضافــة عنــوان داخــل النافــذة الرئيســية يظهــر فيــه التاريــخ والوقــت باســتخدام دالــة ( )‪ datetime.now‬مــن مكتبــة‬ ‫‪ datetime‬التي ــسبق وتعلمتــها‪ ،‬باتــباع الخــطوات التالــية‪:‬‬ ‫ استيراد املكتبة ‪ datetime‬باستخدام األمر‪:‬‬ ‫ إلنشــاء عنــوان ‪ label‬يعــرض قيمــة الدالــة ( )‪ datetime. now‬في الخاصيــة ‪ ،Text‬وتحوــيل قيمتــها إلى ــنص‬ ‫نستخدم الدالة ( )‪ str‬كما هو موضح بالشكل التالي‪. :‬‬ ‫‪ICT_KW‬‬ ‫‪window‬‬ ‫‪Label‬‬ ‫‪text‬‬ ‫‪location‬‬ ‫‪size‬‬ ‫))(‪str(datetime. now‬‬ ‫(‪)120,50‬‬ ‫)‪(250,30‬‬ ‫))‪ICT_KW.new_lable(text=str(datetime.now()),location=(120,50),size=(250,30‬‬ ‫عند تشغيل البرنامج تظهر النافذة الرئيسية بالشكل التالي‪:‬‬ ‫الوقت والتاريخ‬ ‫الوقت والتاريخ الحالي‬ ‫‪2024-09-20 19: 10: 27. 175412‬‬ ‫تقنية املعلومات ‪..‬الصف العاشر‬ ‫‪58‬‬ ‫واجهة المستخدم الرسومية ‪GUI‬‬ ‫‪ - 2‬الصورة ‪Image‬‬ ‫عنصر مرئي يعرض صورة‪.‬‬ ‫الصيغة ‪Image_name(Optional) = ICT_KW. new_Image(Properties) :Syntax‬‬ ‫‪location: tuple‬‬ ‫موقع العنصر في النافذة الرئيسية‬ ‫)‪(x, y‬‬ ‫‪size: tuple‬‬ ‫‪Properties‬‬ ‫حجم العنصر في النافذة الرئيسية‬ ‫‪image‬‬ ‫)‪(width, height‬‬ ‫اسم وامتداد الصورة املراد عرضها للمستخدم‬ ‫)‪image_file_path: string (str‬‬ ‫من نوع سلسلة نصية‪.‬‬ ‫‪background_color: tuple‬‬ ‫لون التعبئة‬ ‫)‪(0~255,0~255,0~255‬‬ ‫إضافة ملف “صورة” إلى مجلد املشروع ‪FirstGUI‬‬ ‫استيراد ملف الصورة ‪ clock.ico‬من مجلد الصور إلى مجلد املشروع باتباع الخطوات التالية‪:‬‬ ‫‪1.‬فتح مستكشف امللفات وابحث عن املجلد الخاص باملشروع وإنشاء مجلد باسم ‪.images‬‬ ‫‪2.‬نسخ ملف الصورة ‪ clock.ico‬من مجلد أوراق العمل ولصق في مجلد ‪ images‬داخل مجلد املشروع‪.‬‬ ‫‪3.‬االنتقال إلى برنامج ‪ PyCharm‬ومالحظة ظهور ملف الصورة في مجلد املشروع‪.‬‬ ‫سبق وأن تم تنفيذ نفس الخطوات في درس استيراد مكتبة ‪.ICT_KW‬‬ ‫‪59‬‬ ‫الوحدة األو

Use Quizgecko on...
Browser
Browser