اختصار المنهج · قبل الامتحان

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

ملخص كل درس وأفكاره الرئيسية وأسئلته المهمة في صفحة واحدة. اطبعها واحفظها.

كتاب الطالب· Student's Book

الوحدة 1الأمن السيبراني Cyber Security

الدرس 1: الأمن السيبراني: المفاهيم ومحاور CIA والإجراءات الأمنية

  • أمن المعلومات يحمي البيانات بجميع أشكالها، والأمن السيبراني فرع منه يختص بحماية الأنظمة والبيانات الرقمية من التهديدات الإلكترونية.
  • نموذج CIA يقوم على ثلاثة محاور: السرية (الوصول للمصرّح لهم فقط)، النزاهة (دقة المعلومات وعدم التلاعب بها)، التوفر (إتاحة الخدمات عند الحاجة).
  • من أمثلة الهجمات: DoS و DDoS تستهدف التوفر، MITM يستهدف النزاهة، وPassword cracking وDumpster diving وPhishing تستهدف السرية.
  • المصادقة تعتمد على ثلاثة عوامل: ما تعرفه، وما تملكه، وما أنت عليه (المقياس الحيوي)، ويمكن الجمع بينها في مصادقة ثنائية.
  • أدوات الحماية الرقمية تشمل VPN، وتطبيقات المراسلة المشفّرة، وبرامج إدارة كلمات المرور، وتشفير البريد الإلكتروني، ومتصفحات الخصوصية، والمحافظ الرقمية.
  • إدارة التصحيحات الأمنية بانتظام تمنع استغلال الثغرات المعروفة في الأنظمة والتطبيقات.

الزبدة: الأمن السيبراني هو حماية الأنظمة والشبكات والبيانات الرقمية من التهديدات الإلكترونية. · كل إجراء أمني يخدم واحدًا أو أكثر من محاور CIA الثلاثة: السرية، النزاهة، التوفر. · المصادقة الثنائية والتشفير وإدارة كلمات المرور من أهم أدوات الحماية اليومية.

الأسئلة المهمة (7)
عرّف الأمن السيبراني.
ممارسة حماية الأنظمة والشبكات من التهديدات الإلكترونية، وحماية البيانات الرقمية والبرامج من الهجمات التي تهدف للوصول إلى المعلومات المهمة أو تغييرها أو تدميرها.
اذكر عناصر نموذج CIA الثلاثة ووظيفة كل عنصر.
السرية: حماية المعلومات من الوصول غير المصرّح به. النزاهة: الحفاظ على صحة المعلومات وموثوقيتها. التوفر: إتاحة المعلومات والخدمات باستمرار عند الحاجة.
فرّق بين هجمات DoS و DDoS.
DoS يستهدف خدمة أو جهازًا واحدًا بإغراقه بطلبات زائفة، بينما DDoS يُنفَّذ من أجهزة متعددة ترسل حزمًا من البيانات وتهاجم من مواقع متعددة، ما يزيد من سرعة الهجوم وقوته، ومن ثَمّ يصعب التصدي له وتتبعه، بينما يسهل تتبّع هجمات DoS.
اذكر عوامل المصادقة الثلاثة مع مثال لكل منها.
عامل المعرفة (كلمة المرور)، عامل الامتلاك (مفتاح الأمان المادي أو البطاقة الذكية)، عامل المقياس الحيوي (بصمة الإصبع أو الوجه).
علّل: تُعدّ برامج إدارة كلمات المرور من أدوات الأمن السيبراني المهمة.
لأنها تنشئ كلمات مرور قوية وفريدة وتخزّنها وتديرها بأمان، وتكتشف كلمات المرور الضعيفة، وتقلّل خطر التعرّض للاختراق.
طبّق عناصر CIA على مثال ماكينة الصراف الآلي.
السرية: المصادقة الثنائية بالبطاقة البنكية ورمز PIN. النزاهة: عدم تغيير معلومات الحساب إلا من المستخدم المصرَّح له. التوفر: إتاحة النظام المصرفي وماكينة الصراف على مدار الساعة.
ما وظيفة الشبكة الافتراضية الخاصة VPN؟
تشفّر اتصال الإنترنت وتوجّهه عبر خادم في موقع مختلف، فتخفي عنوان IP للمستخدم ونشاط التصفح وتحمي البيانات من المهاجمين خاصة عند استخدام شبكات Wi-Fi العامة.

الدرس 2: الأمن السيبراني: الممارسات والوظائف والأخلاقيات

  • من ممارسات الأمن السيبراني اليومية: كلمات مرور قوية، تفعيل المصادقة الثنائية، تحديث الأجهزة وحمايتها، الحذر من التصيّد الاحتيالي، والنسخ الاحتياطي المنتظم للبيانات.
  • الإبلاغ عن أي نشاط مشبوه إلى مسؤولي النظام أو السلطات المختصة جزء أساسي من الممارسات الأمنية.
  • تشمل وظائف الأمن السيبراني: محلل الأمن السيبراني، مهندس أمن، مستشار أمني، مخترق أخلاقي، مهندس تصميم أنظمة أمنية، مستجيب للحوادث، ومحلل مركز العمليات الأمنية SOC.
  • الجوانب الأخلاقية الرئيسة في الأمن السيبراني أربعة: احترام خصوصية الآخرين، استخدام التكنولوجيا بمسؤولية، التواصل بأمان واحترام، والصدق والأمانة.
  • المخترق الأخلاقي يقوم بمحاولات اختراق مصرَّح بها فقط بهدف تعزيز دفاعات المؤسسة، بخلاف المخترق غير الأخلاقي.

الزبدة: الأمن السيبراني ممارسة يومية قبل أن يكون وظيفة متخصصة. · لكل جانب من جوانب حماية الأنظمة وظيفة متخصصة، من التحليل إلى التصميم إلى الاستجابة للحوادث. · السلوك الأخلاقي الرقمي (الخصوصية، المسؤولية، الاحترام، الصدق) شرط أساسي لبيئة إنترنت آمنة.

الأسئلة المهمة (6)
اذكر ثلاثًا من ممارسات الأمن السيبراني اليومية.
استخدام كلمات مرور قوية وفريدة، تفعيل المصادقة الثنائية، والنسخ الاحتياطي المنتظم للبيانات المهمة (أو أي ثلاث ممارسات أخرى من القائمة).
ما الفرق بين عمل محلل الأمن السيبراني ومهندس الأمن؟
محلل الأمن السيبراني يراقب الأنظمة والشبكات لاكتشاف انتهاكات الأمان ويحلّل المخاطر، بينما مهندس الأمن يصمّم أنظمة الأمان نفسها وينفّذها (الجدران النارية، التشفير، أنظمة كشف الاختراق).
من هو المخترق الأخلاقي Ethical Hacker وما دوره؟
متخصص يحدّد الثغرات في أنظمة الكمبيوتر والشبكات، ويقوم بمحاولات اختراق مصرَّح بها لمحاكاة الهجمات الحقيقية ومساعدة المؤسسات على تعزيز دفاعاتها.
اذكر الجوانب الأخلاقية الرئيسة الأربعة في مجال الأمن السيبراني.
احترام خصوصية الآخرين، استخدام التكنولوجيا بمسؤولية، التواصل بأمان واحترام، والصدق والأمانة.
علّل: يُعدّ النسخ الاحتياطي للبيانات من الممارسات الأمنية المهمة.
لأنه يضمن الوصول إلى الملفات والمستندات المهمة في حال تمّ اختراق النسخة الأصلية منها أو تلفها.
ماذا يجب أن تفعل إذا شاهدت سلوكًا غير أخلاقي على الإنترنت كالتنمّر أو نشر معلومات كاذبة؟
الإبلاغ عن هذا السلوك غير الأخلاقي لشخص موثوق به أو للجهات المختصة.

الوحدة 2برمجة Python

الدرس 1: مدخل إلى البرمجة

  • البرمجة مجموعة من التعليمات والأوامر تُترجم إلى لغة الآلة لتنفيذ مهام تحلّ مشكلة ما.
  • خطوات إنشاء برنامج سبع: تحديد المشكلة، إعداد الخوارزمية، رسم خريطة التدفق، كتابة البرنامج، اختباره، إصداره، وتوثيقه.
  • الخوارزمية مجموعة من الخطوات المنطقية والمتسلسلة لحل مشكلة، وخريطة التدفق تمثّلها برموز قياسية متفق عليها.
  • Python لغة برمجة عالية المستوى مفتوحة المصدر وسهلة التعلم، وتجمع بين خصائص المترجم والمفسّر عبر ترجمة الشيفرة إلى Byte Code قبل تفسيرها وتنفيذها.
  • من المفاهيم الأساسية في Python: البيانات، المتغيرات، العوامل، التعليمات، الدوال، والوحدات والحزم.
  • الدالة ()print تطبع المخرجات على الشاشة، ويمكن تشغيل برنامج Python في PyCharm بأكثر من طريقة (RUN، Ctrl+Shift+F10، شريط الأدوات).
  • تنقسم أنواع البيانات في Python إلى ثماني فئات رئيسة: رقمية، نصية، تسلسلية، ربط، مجموعات، منطقية، ثنائية، وفارغة.

الزبدة: كل برنامج يبدأ بمشكلة محددة يُصاغ لها حلّ منطقي (خوارزمية) قبل كتابة أي شيفرة برمجية. · خريطة التدفق ترجمة بصرية للخوارزمية تسهّل على المبرمج تحويلها إلى برنامج فعلي. · كل قيمة في Python لها نوع بيانات محدد يحكم طريقة تخزينها ومعالجتها.

الأسئلة المهمة (7)
عرّف البرمجة.
مجموعة من التعليمات والأوامر تُترجم إلى لغة الآلة التي بدورها توجّه الحاسوب لتنفيذ مجموعة من المهام لحلّ مشكلة ما.
اذكر خطوات إنشاء برنامج بالترتيب.
تحديد المشكلة، إعداد خطة الحل (الخوارزمية)، رسم خريطة التدفق، كتابة البرنامج، اختبار البرنامج، إصدار البرنامج، توثيق البرنامج.
ما الخوارزمية؟ ولمن نُسب هذا الاسم؟
مجموعة من الخطوات المنطقية والمتسلسلة لحل مشكلة ما، نُسب الاسم إلى محمد بن موسى الخوارزمي عالم الرياضيات المسلم.
قارن بين Interpreter و Compiler من حيث سرعة التنفيذ واكتشاف الأخطاء.
Interpreter أبطأ في التنفيذ (الترجمة أثناء التشغيل) لكن الأخطاء تظهر مباشرة عند السطر الذي يحتويها. Compiler أسرع في التنفيذ (بعد الترجمة الكاملة) لكن جميع الأخطاء تظهر دفعة واحدة بعد الترجمة.
اذكر ثلاثة من المفاهيم الأساسية في لغة Python.
أي ثلاثة من: البيانات، المتغيرات، العوامل، التعليمات، الدوال، الوحدات والحزم.
ما ناتج تنفيذ التعليمة التالية: print('I am a Python Developer')
I am a Python Developer
اذكر أربعة من أنواع البيانات الرئيسة في Python مع مثال لكل نوع.
الرقمية (10)، النصية ("Hello")، المنطقية (True)، التسلسلية القائمة ([1, 2, 3]) — أو أي أربعة أنواع أخرى من الأنواع الثمانية مع أمثلتها.

الدرس 2: المتغيرات Variables

  • المتغيّر مكان في الذاكرة لتخزين البيانات مؤقتًا أثناء تنفيذ البرنامج، وله اسم وقيمة ونوع، ويُخصَّص له قيمة برمز التخصيص (=).
  • أنواع المتغيرات الأساسية: str (نص)، int (عدد صحيح)، float (عدد عشري)، bool (منطقية).
  • اسم المتغير يبدأ بحرف أو شرطة سفلية، يحتوي أحرفًا وأرقامًا فقط، ولا يستخدم الكلمات المحجوزة، وPython حساسة لحالة الأحرف.
  • الدالة ()type تُحدّد نوع المتغير، والدالة ()print تعرض المخرجات، وتضيف الفاصلة (,) مسافة تلقائية بين العناصر عند الطباعة.
  • رموز العمليات الحسابية في Python: ‎+ - * / // % **‎، وتُنفَّذ وفق أولويات: الأقواس، الأسس، الضرب والقسمة، ثم الجمع والطرح.
  • الدالة ()input تستقبل بيانات من المستخدم وتُرجعها دائمًا كسلسلة نصية، وتحتاج تحويلًا بالدالة ()int أو ()float عند التعامل معها كأرقام.

الزبدة: كل متغير في Python له اسم وقيمة ونوع يتحدد تلقائيًا من القيمة المخصصة له. · دالتا ()print و ()input هما بوابة تبادل البيانات بين البرنامج والمستخدم: إخراج وإدخال. · مخرجات ()input نصية دائمًا، والتحويل الصريح بـ ()int أو ()float ضروري لأي عملية حسابية عليها.

الأسئلة المهمة (6)
عرّف المتغيّر Variable في لغة Python.
مكان يتم حجزه في الذاكرة لتخزين البيانات بصورة مؤقتة أثناء تنفيذ البرنامج، وله اسم وقيمة ونوع.
اذكر قواعد تسمية المتغيرات في Python.
يبدأ الاسم بحرف أو شرطة سفلية ولا يبدأ برقم، يحتوي على أحرف أبجدية وأرقام فقط دون مسافات أو رموز خاصة (باستثناء _)، ولا يجوز استخدام الكلمات المحجوزة.
ما الفرق بين نوعي المتغيرات int و float؟ مثّل لكل منهما.
int لتخزين الأعداد الصحيحة مثل months_count = 12، وfloat لتخزين الأعداد العشرية مثل my_salary = 1930.750.
ما القيمة التي تُرجعها دالة ()input دائمًا، وكيف نحوّلها إلى رقم؟
تُرجع دالة ()input القيمة دائمًا كسلسلة نصية String، وتُحوَّل إلى رقم باستخدام الدالة ()int (لعدد صحيح) أو الدالة ()float (لعدد عشري).
رتّب أولويات تنفيذ العمليات الحسابية في Python.
1) العمليات داخل الأقواس. 2) رفع الأسس. 3) الضرب والقسمة. 4) الجمع والطرح. 5) العمليات المتكافئة تُنفَّذ من اليسار إلى اليمين.
ما ناتج الكود: print(num_1 // num_2) إذا كان num_1=23 و num_2=5؟
4 (ناتج القسمة الصحيح بدون كسور Floor division).

الدرس 3: السلاسل النصية Strings

  • السلسلة النصية String مجموعة أحرف وأرقام ورموز تُميَّز بعلامات اقتباس فردية أو مزدوجة، وهي قابلة للتكرار Iterable وغير قابلة للتغيير Immutable.
  • الفهرسة Indexing تصل إلى موقع حرف واحد في السلسلة: من البداية تبدأ من 0، ومن النهاية عكسيًّا تبدأ من -1.
  • القطع Slicing بالصيغة str[start:stop:step] يستخرج جزءًا من السلسلة النصية، ويكون الاتجاه الافتراضي من اليسار لليمين بخطوة واحدة عند عدم تحديد الخطوة.
  • معامل الجمع (+) يربط سلاسل نصية (Concatenation)، ومعامل الضرب (*) يكرر سلسلة نصية.
  • دخل input() دون تحويل يُعامَل كنص، فتؤدي عملية الجمع بين مدخلين رقميين إلى دمجهما كنصوص لا جمعهما حسابيًّا.
  • من دوال السلاسل النصية الشائعة: len() للطول، capitalize/upper/lower لحالة الأحرف، find() لموقع أول ظهور (وتُرجع -1 إن لم تجد)، replace() للاستبدال، count() لعدد مرات التكرار، center() للتوسيط.
  • تعليمة f-string تكتب متغيرات داخل نص مباشرة بوضعها بين أقواس معقوفة { } بعد حرف f، ويمكن التحكم بتنسيق الأرقام العشرية بإضافة :.2f.
  • علامات الاقتباس الثلاثية ''' ''' تُستخدم لكتابة سلاسل نصية متعددة الأسطر.

الزبدة: كل سلسلة نصية Immutable: أي عملية معالجة عليها تنتج نسخة جديدة ولا تُغيّر الأصل. · الفهرسة والتقطيع أدوات أساسية للوصول إلى أجزاء محددة من نص طويل دون إعادة كتابته. · دوال Python المدمجة (built-in methods) توفر حلولاً جاهزة لمعالجة النصوص بدلًا من كتابة كود معقد.

الأسئلة المهمة (8)
عرّف السلسلة النصية String.
مجموعة من الأحرف والأرقام والرموز تُميَّز بعلامات اقتباس، وتُخزَّن في متغيرات يتم التعامل معها كقيمة نصية.
ما الفرق بين السلسلة القابلة للتكرار Iterable وغير القابلة للتغيير Immutable؟
Iterable تعني أن عناصر السلسلة قابلة للتكرار (المرور عليها عنصرًا عنصرًا)، أما Immutable فتعني أن السلسلة النصية غير قابلة للتغيير المباشر، وأي عملية معالجة عليها تنتج نسخة جديدة معدّلة بدلًا من تعديل الأصل.
من أي رقم تبدأ عملية الفهرسة Indexing عند العد من بداية السلسلة، ومن أي رقم تبدأ عند العد من نهايتها؟
تبدأ من رقم صفر عند العد من البداية، وتبدأ من الرقم -1 عند العد عكسيًّا من النهاية.
اكتب صيغة عملية القطع Slicing، ووضّح ماذا يحدث عند عدم تحديد مقدار واتجاه الخطوة.
الصيغة: str[start : stop : step]. عند عدم تحديد مقدار واتجاه الخطوة يكون الاتجاه تلقائيًّا من اليسار إلى اليمين بمقدار خطوة واحدة.
ماذا يحدث عند جمع مدخلين رقميين تم استقبالهما بدالة input() دون تحويلهما إلى أعداد؟
يتم التعامل معهما كنصوص، فيؤدي استخدام عملية الجمع (+) إلى دمج القيمتين معًا (Concatenation) بدلًا من جمعهما حسابيًّا، مثل دمج '10' و '12' لينتج '1012'.
ماذا تُرجع دالة find() إذا لم تجد النص المطلوب في السلسلة النصية؟
تُرجع العدد -1.
ما وظيفة كل من الدوال: capitalize و upper و lower؟
capitalize: تحوّل الحرف الأول إلى كبير وبقية الأحرف إلى صغيرة. upper: تحوّل جميع الأحرف إلى أحرف كبيرة. lower: تحوّل جميع الأحرف إلى أحرف صغيرة.
كيف تُستخدم التعليمة f-string، وكيف يمكن تنسيق رقم عشري داخلها بمنزلتين بعد الفاصلة؟
تُكتب بوضع حرف f قبل علامة الاقتباس، وتُكتب المتغيرات داخل أقواس معقوفة { }، مثل f'Name: {name}'. ولتنسيق رقم عشري بمنزلتين نكتب {variable:.2f}.

الدرس 4: الشروط Conditions

  • الشروط Conditions تعبيرات منطقية تُرجع قيمة Boolean (True أو False) لاختبار حالة معينة داخل البرنامج.
  • عوامل المقارنة (==، !=، <، >، <=، >=) تقارن بين عاملين وتُرجع True أو False، ويختلف عامل التخصيص (=) عن عامل المقارنة (==).
  • العوامل المنطقية and وor وnot تربط شروطًا متعددة معًا: and تتطلب صحة الشرطين معًا، or تكتفي بصحة أحدهما، وnot تعكس القيمة المنطقية.
  • التعليمة الشرطية البسيطة if تنفذ كتلة أوامر عند تحقق شرط واحد فقط، وif-else تضيف كتلة بديلة تُنفَّذ عند عدم تحقق الشرط.
  • الشرط المتداخل Nested if يضع تعليمة شرطية داخل أخرى لفحص أكثر من شرط بالتتابع.
  • الشرط المتسلسل if-elif-else يفحص عدة شروط مرتبطة من الأعلى للأسفل، وينفذ أول شرط يتحقق فقط متجاهلاً الباقي، لذا يجب ترتيب الشروط بصورة منطقية.
  • المسافة البادئة Indentation تحدد الكتلة البرمجية التابعة للشرط، وتبدأ الكتلة بعد علامة النقطتين الرأسيتين ( : ).

الزبدة: أي شرط في Python يُختزل في النهاية إلى قيمة منطقية واحدة: True أو False. · ترتيب الشروط في if-elif-else يغيّر نتيجة البرنامج، لأن أول شرط يتحقق هو الذي يُنفَّذ وتُهمل بقية الشروط. · الالتزام بالمسافة البادئة الصحيحة شرط أساسي لعمل التعليمات الشرطية في Python دون أخطاء.

الأسئلة المهمة (7)
عرّف الشروط Conditions في البرمجة.
تعبيرات منطقية تُستخدم لاختبار حالة معينة داخل البرنامج، وتُرجع قيمة من نوع Boolean تتمثل في True أو False.
ما الفرق بين عامل التخصيص (=) وعامل المقارنة (==)؟
عامل التخصيص (=) يُستخدم لتخصيص قيمة للمتغير، أما عامل المقارنة (==) فيُستخدم للمقارنة بين عنصرين ويُرجع True أو False.
وضّح الفرق بين العمليات المنطقية and وor وnot.
and تُرجع True إذا كانت كلتا القيمتين صحيحتين معًا، وإلا تُرجع False. or تُرجع True إذا كانت أي من القيمتين صحيحة، وإلا تُرجع False. not تعكس القيمة المنطقية: تُرجع False إذا كانت القيمة صحيحة، وTrue إذا كانت خاطئة.
ما الفرق بين التعليمة الشرطية if البسيطة وif-else؟
if البسيطة تنفذ كتلة أوامر فقط عند تحقق الشرط، وإذا لم يتحقق لا يُنفَّذ شيء. أما if-else فتنفذ كتلة الأوامر الأولى عند تحقق الشرط، وتنفذ كتلة بديلة عند عدم تحققه.
متى يُستخدم الشرط المتداخل Nested if؟
يُستخدم عندما تحتوي التعليمة الشرطية على تعليمة شرطية أخرى داخلها، لفحص أكثر من شرط داخل البرنامج.
علّل: يجب مراعاة ترتيب الشروط في الشرط المتسلسل if-elif-else بصورة منطقية.
لأن البرنامج يفحص الشروط من الأعلى إلى الأسفل، وعند تحقق أول شرط يتم تنفيذ التعليمات المرتبطة به وتجاهل بقية الشروط، فإذا كان ترتيب الشروط غير منطقي قد يُنفَّذ شرط أعم قبل شرط أدق فتظهر نتيجة غير صحيحة.
متى تبدأ الكتلة البرمجية Block of Code ومتى تنتهي؟
تبدأ الكتلة البرمجية بعد علامة النقطتين الرأسيتين ( : ) في نهاية سطر التعليمة الشرطية، وتنتهي عند انتهاء المسافة البادئة Indentation.

الدرس 5: التكرار Loops

  • التكرار Loops عملية تُستخدم لتكرار تنفيذ مجموعة تعليمات وفق عدد محدد من المرات أو عند تحقق شرط معين، وله نوعان رئيسان: while وfor.
  • الحلقة التكرارية while تُنفَّذ طالما الشرط صحيح True، وتنتهي عند أن يصبح الشرط False.
  • الحلقة التكرارية for تُستخدم لتكرار تنفيذ كتلة برمجية لعدد محدد من المرات، بالمرور على عناصر كائن قابل للتكرار Iterable مثل السلاسل النصية أو دالة range().
  • دالة range() تولّد تسلسلاً من الأعداد الصحيحة بثلاث صيغ: range(stop)، range(start, stop)، range(start, stop, step).
  • التكرارات المتداخلة Nested Loops تكتب حلقة داخل حلقة أخرى، بحيث تُنفَّذ الحلقة الداخلية بالكامل في كل مرة تُنفَّذ فيها الحلقة الخارجية، ويحتاج كل مستوى تداخل جديد مسافة بادئة إضافية.
  • تعليمة break تُخرج من الحلقة التكرارية مباشرة عند تحقق شرط معين، وتعليمة continue تتجاوز التكرار الحالي وتنتقل إلى التكرار التالي دون إنهاء الحلقة.
  • كتلة else المرتبطة بحلقة تكرارية (while...else أو for...else) تُنفَّذ فقط إذا انتهت الحلقة بشكل طبيعي دون الخروج منها بتعليمة break.
  • while True تُنشئ حلقة تكرارية لا نهائية Infinity Loop لأن شرطها True دائمًا، وتحتاج إلى break للخروج منها.

الزبدة: التكرار يُغني عن كتابة نفس التعليمات البرمجية عدة مرات يدويًّا. · الفرق الجوهري بين while وfor: while تعتمد على تحقق شرط منطقي، وfor تعتمد على المرور على عناصر كائن قابل للتكرار أو عدد مرات محدد عبر range(). · break وcontinue يمنحان المبرمج تحكمًا دقيقًا في مسار تنفيذ الحلقة التكرارية دون تغيير شرطها الأساسي.

الأسئلة المهمة (7)
عرّف التكرار Loops، واذكر نوعيه الرئيسين في Python.
عملية تُستخدم لتكرار تنفيذ مجموعة من التعليمات البرمجية وفق عدد محدد من المرات أو عند تحقق شرط معيّن. نوعاه الرئيسان: الحلقة التكرارية while، والحلقة التكرارية for.
متى تنتهي الحلقة التكرارية while؟
تنتهي الحلقة التكرارية while عند عدم تحقق الشرط (يصبح False) بعد تعديل قيمة متغير الشرط أثناء التكرار.
ما وظيفة كل من تعليمتي break وcontinue؟
break تُستخدم لإيقاف الحلقة التكرارية والخروج منها مباشرة عند تحقق شرط معين. continue تُستخدم لتجاوز التكرار الحالي والانتقال مباشرة إلى التكرار التالي، مع تجاهل الأوامر المتبقية في الدورة الحالية.
متى تُنفَّذ كتلة else المرتبطة بحلقة تكرارية while أو for؟
تُنفَّذ بعد انتهاء الحلقة التكرارية بشكل طبيعي، أي إذا لم يتم الخروج منها بتعليمة break (مثل عدم إدخال كلمة المرور الصحيحة خلال جميع المحاولات المتاحة).
اكتب صيغة الحلقة التكرارية for، ووضّح معنى iterable.
الصيغة: for variable in iterable:\n code block. وiterable (قابل للتكرار) هو كائن يمكن الانتقال عبر عناصره انتقالاً متعاقباً، مثل السلاسل النصية Strings.
اذكر الصيغ الثلاث لدالة range() مع مثال لكل صيغة.
range(start, stop, step) مثل range(1,11,2) تعطي 1,3,5,7,9. range(start, stop) مثل range(3,7) تعطي 3,4,5,6. range(stop) مثل range(5) تعطي 0,1,2,3,4.
ما المقصود بالتكرارات المتداخلة Nested Loops؟
حلقات تكرارية تُكتب داخل حلقات تكرارية أخرى، بحيث تُنفَّذ الحلقة الداخلية بالكامل في كل مرة تُنفَّذ فيها الحلقة الخارجية، ويحتاج كل مستوى تداخل جديد إلى مسافة بادئة إضافية.

الدرس 6: تصحيح الأخطاء والاستثناءات Debugging and Exceptions

  • الأخطاء البرمجية Errors تنقسم إلى ثلاثة أنواع رئيسة: أخطاء بناء الجملة Syntax Errors (تمنع تشغيل البرنامج)، وأخطاء وقت التشغيل Runtime Errors (تحدث أثناء التنفيذ وتوقفه)، والأخطاء المنطقية Logical Errors (البرنامج يعمل لكن النتيجة غير صحيحة).
  • معالجة الاستثناءات Exceptions Handling أسلوب برمجي لاكتشاف الأخطاء غير المتوقعة أثناء تشغيل البرنامج ومعالجتها دون توقف البرنامج.
  • تتكون معالجة الاستثناءات من أربع كتل: try (التعليمات المحتمل حدوث خطأ فيها)، except (معالجة الخطأ عند حدوثه)، else (تُنفَّذ عند نجاح try دون استثناء)، finally (تُنفَّذ دائمًا سواء حدث خطأ أم لا).
  • يُفضَّل استخدام استثناءات محددة Specific Exceptions مثل ValueError وZeroDivisionError لتحديد الخطأ ومعالجته بوضوح، ويمكن استخدام استثناء شامل Catch-all عبر except Exception as e لالتقاط أي خطأ.
  • تصحيح الأخطاء Debugging عملية تتبع التعليمات البرمجية وتحليلها خطوة بخطوة لاكتشاف الأخطاء وفهم سير التنفيذ.
  • تشمل خطوات التصحيح في PyCharm: إضافة نقطة توقف Breakpoint، الضغط على أداة Debug، التعامل مع أدوات التصحيح (Step Over، Step Into، Step Out، Resume، Rerun، Stop)، وظهور النتائج في نافذة Console.

الزبدة: ليست كل الأخطاء تُظهر رسالة: الأخطاء المنطقية تمر دون رسالة خطأ لكنها تنتج نتائج غير صحيحة، بخلاف أخطاء بناء الجملة ووقت التشغيل. · معالجة الاستثناءات لا تمنع وقوع الخطأ، بل تمنع توقف البرنامج بشكل مفاجئ وتوفر بديلاً أو رسالة توضيحية للمستخدم. · أدوات التصحيح في بيئة التطوير (مثل PyCharm) تسمح بمراقبة قيم المتغيرات لحظة بلحظة، وهو أسرع من تتبع الخطأ بالقراءة فقط.

الأسئلة المهمة (7)
اذكر الأنواع الثلاثة الرئيسة للأخطاء البرمجية في Python.
أخطاء بناء الجملة Syntax Errors، أخطاء وقت التشغيل Runtime Errors، الأخطاء المنطقية Logical Errors.
ما الفرق بين أخطاء بناء الجملة وأخطاء وقت التشغيل من حيث توقيت ظهورها؟
أخطاء بناء الجملة تظهر قبل بدء تشغيل البرنامج لأن المفسّر لا يستطيع فهم التعليمات، بينما أخطاء وقت التشغيل تحدث أثناء تنفيذ البرنامج نتيجة عملية غير صحيحة أو بيانات غير مناسبة.
علّل: الأخطاء المنطقية أصعب في الاكتشاف من أخطاء بناء الجملة.
لأن التعليمات البرمجية تعمل عملاً صحيحًا من الناحية التركيبية ولا يتعرّف عليها مفسّر Python، لكن نتيجة تنفيذها غير صحيحة أو غير متوقعة، فلا تظهر أي رسالة خطأ تنبّه المبرمج.
عدّد كتل معالجة الاستثناءات الأربع، ووضّح وظيفة كل منها.
try: تحتوي التعليمات التي يُحتمل أن يُنتج عنها استثناء. except: تكتشف الاستثناء الذي حدث داخل try وتعالجه. else: تُنفَّذ بعد نجاح تنفيذ try دون وقوع استثناء. finally: تُنفَّذ دائمًا في نهاية البرنامج سواء حدث خطأ في try أو لم يحدث.
لماذا يُفضَّل استخدام الاستثناءات المحددة (Specific Exceptions) على الاستثناء الشامل (Catch-all Exception)؟
لأنها تساعد في تحديد الخطأ ومعالجته معالجة واضحة ومحددة، وتسهّل تتبع الأخطاء وفهمها، بخلاف الاستثناء الشامل الذي يلتقط جميع الأخطاء المحتملة بمعالجة عامة واحدة.
ما وظيفة نقطة التوقف Breakpoint في عملية تصحيح الأخطاء؟
أداة تُستخدم لإيقاف تشغيل البرنامج مؤقتًا عند سطر معين أثناء تشغيله، للسماح بتتبع قيم المتغيرات وسير التنفيذ عند تلك النقطة.
اذكر ثلاثة من أدوات شريط التصحيح Debug Toolbar في PyCharm ووظيفة كل منها.
أي ثلاثة من: Resume Program (استكمال التشغيل حتى نقطة التوقف التالية)، Step Over (تنفيذ السطر الحالي دون الدخول للدوال)، Step Into (الدخول داخل الدالة المستدعاة)، Step Out (الخروج من الدالة الحالية)، Rerun (إعادة التشغيل من البداية)، Stop (إيقاف جلسة التصحيح نهائيًا).

الوحدة 3المنتجات الرقمية

الدرس 1: المنتجات الرقمية: تصميمها وإنتاجها

  • بعد إتقان مفاهيم البرمجة بلغة Python (المتغيرات، الحلقات التكرارية، الشروط، معالجة الأخطاء)، يمكن تصميم برامج متكاملة تخدم مواقف حياتية.
  • من أفكار مشاريع Python للصف العاشر: لعبة حجر ورقة مقص، تحدي العواصم، وبرنامج حساب الوقت المتبقي حتى موعد معيّن.
  • يتضمّن مدخل المشروع ثماني خطوات رئيسة: تحديد المشكلة، إعداد الخوارزمية، تصميم خريطة التدفق، كتابة الرموز البرمجية، الاختبار والتصحيح، العرض على الزملاء والمعلم، التحسين وَفْق التغذية الراجعة، وبناء البرنامج.
  • يتكوّن فريق العمل من 4 إلى 5 أعضاء بأدوار محددة: قائد الفريق، مُعد الخوارزمية، مصمم خريطة التدفق، المُبرمج، ومُعد العرض التقديمي.
  • خطوات إعداد المشروع تسعة: فكرة المشروع، إعداد بيئة العمل، إعداد هيكل المشروع، كتابة التعليمات البرمجية، اختبار المشروع، تطوير المشروع، توثيق المشروع، مشاركة المشروع، والاستمرار في التعلم.
  • من أدوات إعداد بيئة العمل: PyCharm للبرمجة، PowerPoint للعرض التقديمي، Draw.io لرسم خريطة التدفق، وGitHub لإدارة نسخ الأكواد ومشاركة الملفات بين الفريق.
  • يُفضَّل الاستغلال الأمثل لمهارات: استخدام Python، أنواع متعددة من المتغيرات، التعليمات الشرطية Conditions، ومعالجة الأخطاء باستخدام try/except في هيكل المشروع النهائي.

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

الأسئلة المهمة (8)
اذكر الأفكار الثلاث المقترحة لمشاريع Python للصف العاشر كما وردت في الدرس.
لعبة حجر ورقة مقص، تحدي العواصم، وبرنامج حساب الوقت المتبقي حتى موعد معيّن.
اذكر الخطوات الثماني التي يتضمنها مدخل المشروع.
تحديد مشكلة المشروع، إعداد الخوارزمية، تصميم خريطة التدفق، كتابة الرموز البرمجية، اختبار البرنامج وتصحيحه إن وجد، عرض المشروع على الزملاء والمعلم، تحسين البرنامج وَفْق التغذية الراجعة، بناء البرنامج.
من كم عضوًا يتكوّن فريق العمل، واذكر أدوارهم؟
يتكوّن من 4 إلى 5 أعضاء: قائد الفريق، مُعد الخوارزمية، مصمم خريطة التدفق، المُبرمج، ومُعد العرض التقديمي.
ما مسؤولية قائد الفريق؟
إدارة عمل الفريق وتجميع الملفات والمستندات المطلوبة وتقديمها للمعلم.
اذكر شرطين من شروط فكرة المشروع الجيدة.
أي شرطين من: أن تكون الفكرة واضحة وقابلة للتطبيق (شرح المشكلة والحلول)، تحديد الفئة المستفادة وتوضيح كيفية الاستفادة، أن تكون الفكرة قابلة لتصميم نموذج برمجي، أن تحتوي على عدة مصادر خارجية يسهل الرجوع إليها.
اذكر ثلاثة من الأدوات المستخدمة في إعداد بيئة العمل للمشروع مع وظيفة كل منها.
أي ثلاثة من: PyCharm (تصميم النموذج البرمجي)، PowerPoint (إعداد العرض التقديمي)، Windows screen recorder (تسجيل الشاشة لتوثيق المشروع)، Draw.io (رسم خريطة التدفق)، Microsoft Edge (البحث عن المعلومات)، Copilot (المساعدة في كتابة الأكواد)، GitHub (إدارة نسخ الأكواد ومشاركة الملفات).
ما المهارات البرمجية التي يُفضَّل استغلالها الأمثل في هيكل المشروع؟
استخدام لغة Python، استخدام أنواع متعددة من المتغيرات، استخدام التعليمات البرمجية للشروط Conditions، معالجة الأخطاء باستخدام الاستثناءات try/except.
اذكر رموز خريطة التدفق الأساسية Basic Flowchart Symbols السبعة كما وردت في الكتاب.
End / Start، وInput / Output، وProcess، وDecision، وArrows، وOn-page connector، وOff-page connector.

كتاب الطالب· Student's Book

الوحدة 1الوحدة الأولى: قواعد البيانات SQLite في Python

الدرس 1: مدخل إلى قواعد البيانات Introduction to Database

  • قاعدة البيانات أداة لتنظيم البيانات وتخزينها وإدارتها، وأهميتها في: تنظيم البيانات، سهولة البحث والاسترجاع، الحفاظ على دقة البيانات، إمكانية مشاركة البيانات، أمان المعلومات، إنشاء تقارير وتحليل النتائج.
  • التطور التاريخي: 1960's الهرمية والشبكية HDB/NDB، 1970's العلائقية RDB، 1980's أنظمة إدارة قواعد البيانات العلائقية RDBMS، 1990's الكائنية OODB، 2000 إلى الآن قواعد البيانات الضخمة BDDB.
  • مميزات قواعد البيانات أربعة: الكفاءة، والأمان، والتكامل، والتنظيم.
  • أنواع قواعد البيانات: الهرمية، والشبكية، والعلائقية، والكائنية، وNoSQL، والموزعة. والعلائقية هي الأكثر استخدامًا وهي موضوع هذا الكتاب.
  • مكونات قاعدة البيانات العلائقية ستة: الجداول Tables، والأعمدة Columns، والصفوف Rows، والمفتاح الأساسي Primary Key، والمفتاح الخارجي Foreign Key، والعلاقات Relationships.
  • أنواع العلاقات ثلاثة: واحد إلى واحد One to One، وواحد إلى متعدد One to Many، ومتعدد إلى متعدد Many to Many، وهذه الأخيرة تحتاج جدولًا وسيطًا بين الجدولين.
  • نظام إدارة قواعد البيانات DBMS يدير قاعدة البيانات ويشغّلها، مثل MySQL وOracle وSQL Server، ويسمح بإضافة وتعديل وحذف واسترجاع البيانات.
  • DB Browser for SQLite برنامج مجاني مفتوح المصدر لإدارة قواعد بيانات SQLite، وعلاماته الرئيسية: Database Structure وBrowse Data وEdit Pragmas وExecute SQL، ويُحفظ العمل بـ Write Changes.

الزبدة: قاعدة البيانات ليست مجرد مكان للتخزين، بل نظام يُنظّم البيانات في جداول مترابطة ليجعل البحث والاسترجاع والحماية والتحليل ممكنًا بكفاءة. · قوة النموذج العلائقي أنه يمنع تكرار البيانات: نُقسّم المعلومات إلى جداول متخصصة، ثم نربطها بالمفتاح الأساسي والمفتاح الخارجي. · التعامل مع البيانات مسؤولية أخلاقية وقانونية قبل أن يكون مهارة تقنية: خصوصية، ونزاهة، وحقوق ملكية، والتزام بالقوانين. · DB Browser for SQLite هو النافذة العملية التي نرى بها الجداول وهيكلتها وبياناتها قبل أن نكتب أي أمر SQL.

الأسئلة المهمة (8)
عرّف قاعدة البيانات واذكر أهم الأسباب التي تجعلها ضرورية.
قاعدة البيانات أداة تُستخدم لتنظيم البيانات وتخزينها وإدارتها بطريقة تتيح الوصول إليها وإدارتها بسهولة. وأهم الأسباب التي تجعلها ضرورية: تنظيم البيانات، وسهولة البحث والاسترجاع، والحفاظ على دقة البيانات، وإمكانية مشاركة البيانات، وأمان المعلومات، وإنشاء تقارير وتحليل النتائج.
رتّب مراحل تطور قواعد البيانات تاريخيًا مع ذكر ما ظهر في كل مرحلة.
1960's ظهور قواعد البيانات الهرمية والشبكية HDB/NDB، ثم 1970's ظهور قواعد البيانات العلائقية RDB، ثم 1980's انتشار أنظمة إدارة قواعد البيانات العلائقية RDBMS، ثم 1990's ظهور قواعد البيانات الكائنية OODB، ثم من 2000 إلى الآن ظهور قواعد البيانات الضخمة BDDB.
قارن بين المفتاح الأساسي Primary Key والمفتاح الخارجي Foreign Key.
المفتاح الأساسي قيد يُطبق على عمود أو مجموعة أعمدة ذات قيم فريدة في الجدول، لا يمكن أن تتكرر ولا أن تكون فارغة. أما المفتاح الخارجي فهو قيد يُطبق على عمود أو مجموعة أعمدة يُستخدم لربط جدول بجدول آخر، ويرتبط بمفتاح أساسي في جدول مختلف.
علّل: لا يمكن الربط المباشر بين جدولين تربطهما علاقة متعدد إلى متعدد Many to Many.
لأن كل صف في الجدول الأول قد يرتبط بعدة صفوف في الجدول الثاني والعكس صحيح، فلا يكفي عمود واحد لتمثيل الارتباط؛ لذلك يتم إنشاء جدول وسيط بين الجدولين المرتبطين لتمثيل هذه العلاقة، مثل جدول author_book بين جدولي book وauthor.
اذكر ثلاثة من الجوانب الأخلاقية الواجب مراعاتها عند التعامل مع قواعد البيانات.
احترام الخصوصية بالامتناع عن الوصول إلى بيانات شخصية أو حساسة دون تصريح، والنزاهة في التعامل مع البيانات بعدم تعديلها أو حذفها دون إذن، واحترام حقوق الملكية بعدم نسخ أو استخدام قواعد البيانات أو التطبيقات المرتبطة بها دون إذن المالك. ومنها كذلك: عدم إساءة مشاركة البيانات، والحفاظ على سلامة النظام، والامتثال للأنظمة والقوانين، وتحمّل المسؤولية المهنية.
ما وظيفة نظام إدارة قواعد البيانات DBMS؟ ومثّل له بثلاثة أمثلة.
يُقصد به إدارة وتشغيل قاعدة البيانات، ويسمح بإضافة وتعديل وحذف واسترجاع البيانات بسهولة. ومن أمثلته: MySQL وOracle وSQL Server.
اذكر وظيفة كل علامة من علامات التبويب الرئيسية Main Tabs في برنامج DB Browser for SQLite.
Database Structure لعرض هيكلة قاعدة البيانات مثل الجداول والفهارس، وBrowse Data لاستعراض بيانات الجداول وإجراء التعديلات اللازمة مباشرة، وEdit Pragmas لتعديل إعدادات قاعدة البيانات، وExecute SQL لكتابة وتنفيذ استعلامات SQL يدويًا.
لماذا يُفضّل إغلاق قاعدة البيانات بالأمر Close Database بعد الانتهاء من العمل؟
للتأكد من حفظ جميع التعديلات وإغلاق الاتصال بقاعدة البيانات بأمان، مما يقلل من احتمالية فقدان البيانات أو حدوث تلف في الملف. ويسبق ذلك حفظ التغييرات بالضغط على Write Changes من شريط الأدوات.

الدرس 2: إنشاء قواعد البيانات Creating a Database

  • SQLite إحدى قواعد البيانات التي يُمكن إنشاؤها والتعامل معها بسهولة في Python من خلال المكتبة القياسية sqlite3 دون الحاجة إلى خادم خارجي Server.
  • صيغة الاتصال: connection = sqlite3.connect('database_name.db')؛ حيث connection كائن الاتصال، وsqlite3 المكتبة، وconnect الدالة، و'database_name.db' اسم قاعدة البيانات.
  • خطوات إنشاء قاعدة بيانات في PyCharm: كتابة التعليمات البرمجية (استدعاء sqlite3، إنشاء الاتصال، إغلاق الاتصال)، ثم تنفيذ التعليمات، ثم التأكد من إنشاء ملف قاعدة البيانات بمجلد المشروع.
  • كود مثال 1 ثلاثة أسطر: import sqlite3 ثم connection= sqlite3.connect('grade11_books.db') ثم connection.close().
  • إذا كانت قاعدة البيانات غير موجودة يتم إنشاؤها تلقائيًا، والامتداد الافتراضي لملف SQLite هو db.
  • أسباب وجوب إغلاق الاتصال: منع تسرب الموارد مثل الذاكرة، وضمان سلامة البيانات وعدم فقدها، وتجنّب أخطاء تعيق فتح قاعدة البيانات مرة أخرى.
  • الاستثناءات try / except / finally تُستخدم لمعالجة الأخطاء أثناء التعامل مع قواعد البيانات: try للمحاولة، وexcept عند حدوث الخطأ، وfinally تُنفَّذ في جميع الحالات.
  • يُخصَّص للمتغير connection القيمة None في البداية لضمان تعريفه في جميع الحالات، ثم يُختبر بـ if connection is not None قبل الإغلاق.

الزبدة: دالة connect لا تفتح قاعدة بيانات موجودة فقط، بل تُنشئها تلقائيًا إن لم تكن موجودة؛ فالإنشاء والفتح أمر واحد في SQLite. · الاتصال مورد يجب إغلاقه: كل قاعدة بيانات تُفتح ولا تُغلق تهدد سلامة البيانات وتُبقي الموارد محجوزة. · بنية try / except / finally تفصل بين ما قد يفشل، وما نفعله عند الفشل، وما يجب أن يحدث في كل الأحوال — ولهذا يوضع الإغلاق داخل finally.

الأسئلة المهمة (8)
ما مزايا SQLite في بيئة Python كما ذكرها الكتاب؟
SQLite إحدى قواعد البيانات التي يُمكن إنشاؤها والتعامل معها بسهولة في لغة Python من خلال المكتبة القياسية sqlite3، دون الحاجة إلى خادم خارجي Server.
اكتب صيغة التعليمة البرمجية للاتصال بقاعدة البيانات، واشرح كل جزء فيها.
الصيغة: connection = sqlite3.connect('database_name.db'). وconnection كائن (مُتغير) الاتصال بقاعدة البيانات Database Connection Object، وsqlite3 مكتبة قواعد البيانات، وconnect دالة من مكتبة sqlite3 لإنشاء / فتح اتصال بقاعدة البيانات، و'database_name.db' اسم قاعدة البيانات.
اذكر خطوات إنشاء قاعدة بيانات جديدة باستخدام بيئة التطوير المتكاملة PyCharm.
أولًا كتابة التعليمات البرمجية: استدعاء مكتبة sqlite3، ثم إنشاء اتصال بقاعدة البيانات، ثم إغلاق الاتصال بقاعدة البيانات. ثانيًا تنفيذ التعليمات البرمجية. ثالثًا التأكد من إنشاء ملف قاعدة البيانات بمجلد المشروع.
علّل: يجب التأكد من إغلاق الاتصال بقاعدة البيانات بشكل صحيح.
لثلاثة أسباب ذكرها الكتاب: منع تسرب الموارد (مثل الذاكرة)، وضمان سلامة البيانات وعدم فقد البيانات، وتجنّب حدوث أخطاء قد تعيق فتح قاعدة البيانات مرة أخرى نتيجة بقاء الاتصال بها مفتوحًا دون إغلاق.
ما وظيفة كل من try وexcept وfinally في مثال 2؟
try تحوي محاولة إنشاء الاتصال بقاعدة البيانات وطباعة رسالة النجاح. وexcept Exception as e تُنفَّذ إذا حدث خطأ أثناء محاولة الاتصال فتطبع رسالة تُوضح الخطأ (المتغير e). وfinally تُنفَّذ في جميع الحالات، سواء تم الاتصال بقاعدة البيانات بنجاح أم حدث خطأ أثناء التنفيذ، وفيها يُختبر وجود الاتصال ثم يُغلق.
لماذا خُصِّصت القيمة None للمتغير connection في بداية التعليمات البرمجية؟
لضمان تعريف المتغير في جميع الحالات، سواء تم الاتصال بقاعدة البيانات بنجاح أم حدث خطأ أثناء التنفيذ. فهي قيمة غير محددة تعني أن المتغير لا يشير حاليًا إلى أي اتصال بقاعدة بيانات.
كيف نتأكد عمليًا من نجاح تنفيذ مثال 1؟
في بيئة التطوير المتكاملة PyCharm IDE يظهر ملف قاعدة البيانات grade11_books.db في Project Panel، أي داخل مجلد المشروع، كما يوضح شكل رقم (2-2).
ماذا يحدث عند تنفيذ connect باسم قاعدة بيانات غير موجودة؟ وما امتداد ملف SQLite؟
إذا كانت قاعدة البيانات غير موجودة يتم إنشاؤها تلقائيًا، والامتداد الافتراضي لملف قاعدة البيانات من نوع SQLite هو db.

الدرس 3: إنشاء الجداول Creating Tables

  • الجدول هيكل أساسي في قواعد البيانات لتخزين البيانات وتنظيمها وتنفيذ عمليات CRUD (الإدخال، الاستعلام، التعديل، الحذف)، ويتكون من صفوف Rows يمثل كل صف سجل Record، وأعمدة Columns يمثل كل عمود خاصية Attribute.
  • أنواع البيانات في SQLite خمسة: INTEGER للأرقام الصحيحة، وREAL للأرقام العشرية، وTEXT للنصوص، وBLOB للكائنات الثنائية الكبيرة، وNULL لتمثيل القيم الفارغة.
  • NULL ليست نوع بيانات للعمود، وإنما تُستخدم للدلالة على غياب القيمة؛ ولكل عمود نوع أساسي من INTEGER أو TEXT أو REAL أو BLOB.
  • القيود Constraints أربعة: NOT NULL لا يسمح بترك العمود فارغًا، وUNIQUE يمنع تكرار القيم، وPRIMARY KEY يجعل العمود NOT NULL وUNIQUE معًا، وCHECK يفرض شرطًا منطقيًا.
  • الصيغة العامة للقيد: column DATA_TYPE Constraint، ويمكن الجمع بين أكثر من قيد في العمود نفسه، وتُحدد قيمة افتراضية بـ DEFAULT.
  • AUTOINCREMENT سلوك خاص في SQLite يُستخدم مع PRIMARY KEY من النوع INTEGER لزيادة القيمة تلقائيًا بمقدار واحد، وINTEGER PRIMARY KEY يزيدها تلقائيًا حتى بدونه.
  • صيغة إنشاء الجدول: cursor.execute مع الأمر CREATE TABLE IF NOT EXISTS ثم اسم الجدول، ثم أسماء الأعمدة وأنواعها وقيودها.
  • خطوات إنشاء الجدول: تحديد بنية الجدول، ثم كتابة التعليمات البرمجية (sqlite3، الاتصال، المؤشر، إنشاء الجدول، commit، close)، ثم التنفيذ، ثم معاينة البنية في DB Browser.

الزبدة: نوع البيانات والقيد يعملان معًا: النوع يحدد شكل المعلومة، والقيد يحدد شروط قبولها؛ فبدون القيود يمكن إدخال بيانات ناقصة أو مكررة. · PRIMARY KEY ليس قيدًا واحدًا بل أثر مزدوج: يمنع الفراغ ويمنع التكرار في الوقت نفسه. · العبارة IF NOT EXISTS تحمي البرنامج من التوقف عند إعادة تشغيله، فهي تمنع خطأ إنشاء جدول موجود مسبقًا. · لا تُحفظ التغييرات في قاعدة البيانات إلا بعد commit()، ولا يُترك الاتصال مفتوحًا بعد close().

الأسئلة المهمة (8)
عرّف الجدول في قواعد البيانات، واذكر مكوناته.
الجدول هيكل أساسي في قواعد البيانات يُستخدم لتخزين البيانات وتنظيمها وتنفيذ العمليات الأساسية CRUD (الإدخال، الاستعلام، التعديل، الحذف) بسهولة وكفاءة. ويتكون من مجموعة من الصفوف Rows والأعمدة Columns، بحيث يمثل كل صف سجل Record، ويمثل كل عمود خاصية Attribute.
اذكر أنواع البيانات في SQLite مع مثال لكل نوع.
INTEGER لتخزين الأرقام الصحيحة مثل العمر 17 وسنة النشر 2025. وREAL لتخزين الأرقام العشرية مثل سعر الكتاب 3.15. وTEXT لتخزين النصوص مثل عنوان الكتاب Learn SQLite. وBLOB لتخزين كائنات ثنائية كبيرة Binary Large Object مثل الصور JPEG وPNG والمستندات PDF وWord. وNULL لتمثيل القيم الفارغة (بدون قيمة) مثل عنوان كتاب غير مُدخل.
علّل: لا يُعدّ NULL نوع بيانات للعمود.
لأن كل عمود عند إنشاء الجدول يجب أن يكون له نوع بيانات أساسي مثل INTEGER أو TEXT أو REAL أو BLOB، أما NULL فهي ليست نوع بيانات للعمود، وإنما تُستخدم للدلالة على غياب القيمة.
قارن بين القيود NOT NULL وUNIQUE وPRIMARY KEY.
NOT NULL لا يسمح بترك العمود فارغًا، وصيغته name TEXT NOT NULL. وUNIQUE يضمن عدم تكرار القيم في العمود، وصيغته email TEXT UNIQUE. وPRIMARY KEY يحدد العمود كمفتاحٍ أساسي مما يجعله NOT NULL وUNIQUE معًا، وصيغته id INTEGER PRIMARY KEY.
ما وظيفة القيد CHECK؟ اكتب مثالين عليه من الكتاب.
يفرض شرطًا منطقيًا يجب أن يتحقق عند إدخال قيمة للعمود. ومثاله: age INTEGER CHECK (age <= 20) و name TEXT CHECK (length (name) < 30).
اذكر القواعد القياسية لتسمية الجداول والأعمدة.
يحتوي الاسم على أحرف وأرقام والشرطة السفلية ( _ )، ويبدأ بحرف (ويُمكن أن يبدأ بشرطة سفلية)، ولا يبدأ برقم، ولا يُسمح بالمسافات أو الرموز الخاصة مثل @ و# و$، والاسم غير حساس لحالة الأحرف الإنجليزية، ويجب أن يكون لكل جدول اسم فريد لا يُمكن تكراره، وكذلك لكل عمود بالجدول اسم فريد لا يُمكن تكراره.
ما المؤشر cursor؟ ولماذا يُفضّل استخدام IF NOT EXISTS؟
المؤشر cursor كائن يُستخدم كأداة تساعد في التفاعل مع قاعدة البيانات بطريقة منظمة، مثل إنشاء قاعدة البيانات وأيضًا إضافة واسترجاع وتعديل وحذف البيانات. ويُفضل استخدام العبارة الشرطية IF NOT EXISTS لمنع حدوث أخطاء عند محاولة إنشاء جدول موجود مسبقًا.
ما وظيفة الدالة commit()؟ وماذا يحدث لو نُسيت؟
commit() دالة تُستخدم لحفظ التغييرات التي تم إجراؤها على قاعدة البيانات، وتأتي في مثال الكتاب بعد إنشاء الجدول وقبل إغلاق الاتصال. ولو نُسيت فلن تُحفَظ التغييرات على قاعدة البيانات، لأن الكتاب جعل حفظ التغيرات خطوة مستقلة ضمن خطوات إنشاء الجدول.

الدرس 4: إضافة البيانات Inserting Data

  • عمليات CRUD أربع: الإدخال INSERT، والقراءة SELECT، والتعديل UPDATE، والحذف DELETE.
  • صيغة الإضافة: cursor.execute("INSERT INTO table_name (column1, column2, ...) VALUES (?, ?, ...)", (value1, value2, ...)).
  • العناصر المؤقتة placeholders (?) تُستبدل بالقيم بطريقة آمنة، وتُستخدم المعاملات Parameters بدل كتابة القيم داخل الاستعلام لحماية قاعدة البيانات ومنع هجمات الحقن البرمجي SQL Injection.
  • القيمة None في Python تتحول تلقائيًا إلى NULL في SQLite، وهي الطريقة الصحيحة لإدخال القيم الفارغة.
  • تتولى قاعدة البيانات إسناد قيم رقمية تلقائية تصاعدية للمفتاح الأساسي من النوع INTEGER عند عدم إدخال قيم يدوية.
  • عند تنفيذ INSERT دون تحديد عمود أو أكثر، تُعبَّأ الأعمدة غير المحددة بقيمتها الافتراضية إن وجدت أو بالقيمة NULL، بشرط ألا يكون عليها قيد NOT NULL.
  • الدالة executemany() تُدرج عدة سجلات دفعة واحدة، ويُمرَّر لها نص الأمر ثم قائمة List عناصرها من النوع tuple، وعدد عناصر القائمة يساوي عدد الصفوف.
  • خطوات الإدخال: تحديد القيم، ثم كتابة التعليمات (sqlite3، الاتصال، المؤشر، الإضافة، commit، close)، ثم التنفيذ، ثم معاينة محتوى الجدول في DB Browser.

الزبدة: علامة الاستفهام ليست مجرد اختصار في الكتابة، بل هي درع أمني: تفصل نص الأمر عن القيم فتمنع هجمات الحقن البرمجي SQL Injection. · الفرق بين execute وexecutemany هو الفرق بين تمرير tuple واحد وتمرير قائمة من tuples: صف واحد مقابل عدة صفوف دفعة واحدة. · ترك العمود id فارغًا ليس نسيانًا بل تصميم: قاعدة البيانات تتولى ترقيمه تلقائيًا لأنه مفتاح أساسي من النوع INTEGER. · الإضافة لا تكتمل إلا بـ commit()، والتحقق البصري في DB Browser هو الدليل النهائي على نجاح العملية.

الأسئلة المهمة (8)
ما عمليات CRUD؟ اذكرها مع أمر SQL المقابل لكل منها.
أربع عمليات رئيسة تُستخدم بصورة متكررة عند التعامل مع قواعد البيانات: الإدخال INSERT لإضافة بيانات جديدة إلى قاعدة البيانات، والقراءة SELECT لقراءة واسترجاع بيانات من قاعدة البيانات، والتعديل UPDATE لتعديل أو تحديث بيانات مخزنة، والحذف DELETE لحذف بيانات موجودة.
اكتب صيغة التعليمة البرمجية لإضافة البيانات، واشرح أجزاءها.
الصيغة: cursor.execute("INSERT INTO table_name (column1, column2, ...) VALUES (?, ?, ...)", (value1, value2, ...)). وcursor.execute يُنفذ أمر SQL داخل قاعدة البيانات، وINSERT INTO أمر SQL لإضافة بيانات للجدول، وtable_name اسم الجدول، و(column1, column2, ...) أسماء الأعمدة، و(?, ?, ...) عناصر مؤقتة placeholders للقيم المطلوب إدخالها، و(value1, value2, ...) القيم المطلوب إدخالها.
علّل: تُستخدم المعاملات Parameters والعناصر المؤقتة (?) بدلًا من إدخال القيم مباشرة في الاستعلام.
لحماية قاعدة البيانات ومنع هجمات الحقن البرمجي SQL Injection، وهي نوع من الهجمات السيبرانية التي يستغل فيها المخترِق مدخلات المستخدم غير الآمنة لإدخال أوامر SQL ضارة بهدف الوصول إلى قاعدة البيانات أو تعديلها أو حذف بيانات منها دون إذن. كما أن العنصر المؤقت (?) يتم استبداله بالقيم المطلوبة بطريقة آمنة.
ماذا يحدث عند إرسال القيمة None من Python إلى قاعدة بيانات SQLite؟
تتحول تلقائيًا إلى NULL في قاعدة البيانات، وهي تُمثل الطريقة الصحيحة لإدخال القيم الفارغة في Python.
لماذا لم تُدخَل قيمة للعمود id في مثالي الدرس؟
لأن قاعدة البيانات تتولى إسناد قيم رقمية تلقائية تصاعدية للمفتاح الأساسي من النوع INTEGER عند عدم إدخال قيم يدوية.
ماذا يحدث عند تنفيذ الأمر INSERT دون تحديد اسم عمود أو أكثر؟
يتم تعبئة الأعمدة غير المحددة إما بقيمتها الافتراضية (إن وجدت) أو بالقيمة NULL، بشرط ألا يكون عليها قيد NOT NULL.
قارن بين الدالتين execute() وexecutemany() في إضافة البيانات.
execute() تُستخدم لإدخال صف واحد، وتُمرَّر لها قيم الأعمدة في متغير من نوع tuple، ولإضافة أكثر من صف يتم تكرار التعليمة. أما executemany() فتُستخدم لإدراج عدة سجلات (rows) في الجدول دفعة واحدة، ويُمرَّر لها نص الأمر ثم قائمة (List) تتكون من عدة عناصر كل عنصر من النوع tuple، وعدد عناصر القائمة يساوي عدد الصفوف المطلوب إضافتها.
اذكر خطوات إدخال البيانات في قاعدة البيانات كما رتّبها الكتاب.
1) تحديد القيم المطلوب إضافتها لأعمدة الجدول. 2) كتابة التعليمات البرمجية: استدعاء مكتبة sqlite3، إنشاء / فتح اتصال بقاعدة البيانات، إنشاء كائن المؤشر، إضافة القيم للأعمدة، حفظ التغييرات، إغلاق الاتصال. 3) تنفيذ التعليمات البرمجية. 4) معاينة محتوى الجدول في برنامج DB Browser.

الدرس 5: الاستعلام عن البيانات Querying Data

  • الاستعلام عملية رئيسية في إدارة قواعد البيانات، تُستخدم لتصفية (اختيار / استرجاع) البيانات وفق شروط ومعايير محددة.
  • الشروط في SQLite هي التعبيرات المنطقية Logical Expressions التي تحدد الصفوف التي يجب التعامل معها عند الاسترجاع أو الحذف أو التحديث.
  • الشرط البسيط مقارنة واحدة بين قيمتين بعامل مقارنة واحد، والشرط المركب شرطان أو أكثر يُربط بينهما بـ AND أو OR.
  • من العوامل الشرطية: = و != و >< و > و < و >= و <= و BETWEEN و NOT BETWEEN و IN و NOT IN و IS NULL و IS NOT NULL و LIKE و NOT LIKE، و% تُمثل مجموعة أحرف مجهولة و_ تُمثل حرف مجهول.
  • القيمة NULL تعني عدم وجود قيمة، وهي ليست صفر (0) ولا سلسلة نصية فارغة ("").
  • صيغة الاستعلام: cursor.execute(”SELECT column1, column2, ... FROM tabel_name WHERE condition_column = ?”, (condition_value,)).
  • استخدام الرمز * يسترجع جميع الأعمدة، وترك عبارة WHERE يسترجع جميع الصفوف.
  • دوال fetch ثلاث: fetchall() لجميع الصفوف دفعة واحدة، وfetchmany(size) لعدد محدد، وfetchone() لصف واحد في كل مرة؛ وfetchone تُعيد tuple بينما تُعيد الأخريان list من tuples.
  • fetchall قد تستهلك الكثير من الذاكرة إذا كانت النتائج كبيرة، فيُنصح عند العدد الكبير باستخدام fetchmany أو fetchone داخل حلقة.
  • تُطبع نتائج الاستعلام بحلقة تكرارية، فيظهر كل صف في سطر مستقل.

الزبدة: الاستعلام = اختيار أعمدة (SELECT) + من جدول (FROM) + وفق شرط اختياري (WHERE)؛ فإن غاب الشرط عادت كل الصفوف، وإن وُضعت النجمة عادت كل الأعمدة. · الشرط تعبير منطقي، وقوته من العوامل الشرطية: مقارنة، أو نطاق، أو قائمة قيم، أو فحص فراغ، أو مطابقة نمط نصي. · تنفيذ الاستعلام شيء وجلب نتائجه شيء آخر: execute تُنفذ، ودوال fetch هي التي تجلب البيانات فعليًا إلى Python.

الأسئلة المهمة (8)
عرّف الاستعلام Database Query كما ورد في الكتاب.
هو أحد العمليات الرئيسية في إدارة قواعد البيانات، ويُستخدم لتصفية (اختيار / استرجاع) البيانات وفق شروط ومعايير محددة.
ما المقصود بالشروط في SQLite؟ وفيمَ تُستخدم؟
هي التعبيرات المنطقية Logical Expressions التي تُستخدم لتحديد الصفوف التي يجب التعامل معها عند تنفيذ أوامر مثل (الاسترجاع، الحذف، التحديث) على قاعدة البيانات.
قارن بين الشرط البسيط Simple Condition والشرط المركب Compound Condition.
الشرط البسيط تعبير منطقي يتكون من مقارنة واحدة بين قيمتين، مثل (price> 30)، باستخدام عامل مقارنة واحد مثل (=، >، <، =>، =<، ><). أما الشرط المركب فيتكون من شرطين أو أكثر يتم الربط بينهما باستخدام عوامل المنطق (AND, OR).
علّل: لا يصح فحص القيم الفارغة بكتابة price = NULL.
لأن NULL تشير إلى «عدم وجود قيمة» وهي ليست صفر (0) ولا سلسلة نصية فارغة ("")، فلا تصح مقارنتها بعامل المساواة؛ والعامل الشرطي المخصص لذلك هو IS NULL، ولنفيه IS NOT NULL.
اكتب صيغة التعليمة البرمجية لإنشاء استعلام في SQLite داخل Python، وبيّن وظيفة العنصر المؤقت فيها.
الصيغة: cursor.execute (”SELECT column1, column2, ... FROM tabel_name WHERE condition_column = ?”, (condition_value,)). والعنصر المؤقت placeholder هو علامة الاستفهام (?)، وهو موضع مؤقت لقيمة الشرط تُمرَّر بعد الفاصلة في (condition_value,).
ماذا يحدث إذا كتبنا الاستعلام دون تحديد الأعمدة (باستخدام *) ودون تعبير WHERE؟
إذا لم يتم تحديد الأعمدة واستُخدم الرمز *، يتم استرجاع جميع قيم أعمدة الجدول؛ وإذا لم يتم تحديد الشرط (بدون تعبير WHERE)، فسيتم استرجاع جميع صفوف الجدول. أي تعود كل بيانات الجدول.
قارن بين دوال fetch الثلاث من حيث ما تسترجعه ونوع ما تُعيده.
fetchall() تسترجع جميع الصفوف دفعة واحدة، وfetchmany(size) تسترجع عددًا محددًا من الصفوف حسب المعامل size، وfetchone() تسترجع صفًا واحدًا فقط من النتائج في كل مرة. وfetchone تُعيد النتائج على شكل tuple، بينما fetchmany وfetchall تعيدان النتائج على شكل list يحتوي على عناصر من نوع tuple (كل tuple يمثل صفًا من قاعدة البيانات).
علّل: يُنصح باستخدام fetchmany أو fetchone داخل حلقة عند التعامل مع عدد كبير من الصفوف.
لأن الدالة fetchall قد تستهلك الكثير من الذاكرة إذا كانت النتائج كبيرة، فاستخدام fetchmany أو fetchone داخل حلقة يقلل استهلاك الذاكرة ويحسّن الأداء.

الدرس 6: تحديث البيانات Updating Data

  • تعديل البيانات من المهام الأساسية التي تهدف إلى تحديث أو تصحيح المعلومات المخزّنة ضمن جداول قاعدة البيانات، وتشمل تعديل قيمة واحدة أو أكثر في صف معين أو في مجموعة من الصفوف.
  • لتنفيذ عملية التعديل في بيئة SQLite نستخدم الأمر UPDATE.
  • صيغة التحديث: cursor.execute (”UPDATE table_name SET column_name = ? WHERE condition_column = ?”, (value, condition_value)).
  • خطوات التحديث أربع: تحديد البيانات المطلوب تحديثها (العمود، والقيمة الجديدة، والشرط)، ثم كتابة التعليمات البرمجية، ثم تنفيذها، ثم معاينة محتوى الجدول في برنامج DB Browser.
  • يتم تحديث جميع الصفوف في الجدول إذا لم يتم تحديد شرط.
  • لتحديث أكثر من عمود يُكتب في SET كل عمود ومعه عنصره المؤقت مفصولًا بفاصلة: SET price =?, year = ?.
  • تُستخدم الخاصية cursor.rowcount لمعرفة عدد الصفوف التي تأثرت بآخر عملية (إضافة / تعديل / حذف) تمت على قاعدة البيانات.
  • الشرط قد يكون بسيطًا (WHERE id = ?) أو مركبًا يربط شرطين بـ AND مثل: WHERE price < ? AND category = ?.
  • القيم تُمرَّر بترتيب ظهور العناصر المؤقتة: القيم الجديدة أولًا ثم قيم الشرط.
  • لا يُحفظ التعديل في قاعدة البيانات إلا بعد connection.commit()، ثم يُغلق الاتصال بـ connection.close().

الزبدة: التحديث = أمر UPDATE على جدول + SET يحدد الأعمدة وقيمها الجديدة + WHERE يحدد الصفوف؛ وغياب WHERE يعني الجدول كله. · عدد القيم المُمرَّرة في القوس الأخير يساوي عدد علامات الاستفهام في الأمر، وترتيبها هو ترتيب ظهورها: الجديد ثم الشرط. · cursor.rowcount هو المقياس الذي يخبرك كم صفًّا تأثر فعلًا بآخر عملية، فيكشف الشرط الخاطئ قبل الحفظ.

الأسئلة المهمة (8)
عرّف عملية تعديل البيانات كما وردت في الكتاب، واذكر الأمر المستخدم لتنفيذها في SQLite.
هي من المهام الأساسية التي تهدف إلى تحديث أو تصحيح المعلومات المخزّنة ضمن جداول قاعدة البيانات، وتشمل تعديل قيمة واحدة أو أكثر في صف معين، أو في مجموعة من الصفوف. ولتنفيذها في بيئة SQLite نستخدم الأمر UPDATE.
اكتب صيغة التعليمة البرمجية لتحديث قاعدة البيانات SQLite في Python، وسمِّ أجزاءها.
cursor.execute (”UPDATE table_name SET column_name = ? WHERE condition_column = ?”, (value, condition_value)). وأجزاؤها: cursor.execute يُنفذ أمر SQL داخل قاعدة البيانات، وUPDATE أمر SQL لتحديث البيانات، وtable_name اسم الجدول، وcolumn_name اسم العمود المطلوب تحديث بياناته، والعنصر المؤقت الأول placeholder للقيمة الجديدة، وcondition_column العمود المُستخدم في جملة الشرط، والعنصر المؤقت الثاني لقيمة الشرط، وvalue القيمة الجديدة، وcondition_value قيمة الشرط.
علّل: قد يؤدي تنفيذ أمر UPDATE إلى تغيير بيانات الجدول كله.
لأن الكتاب ينص على أنه يتم تحديث جميع الصفوف في الجدول إذا لم يتم تحديد شرط؛ فإذا نُسيت عبارة WHERE طُبّق التعديل على كل صفوف الجدول.
كيف تُحدّث أكثر من عمود في تعليمة واحدة؟ اكتب مثالًا من الكتاب.
تُكتب الأعمدة بعد SET مفصولة بفاصلة، ولكل عمود عنصره المؤقت، ثم تُمرَّر قيمها بالترتيب نفسه. ومثال الكتاب في مثال 2: SET price =?, year = ? WHERE category = ? مع القيم (2.5,2024,'Art').
ما وظيفة cursor.rowcount؟ ومتى تُستخدم؟
تُستخدم الخاصية cursor.rowcount لمعرفة عدد الصفوف التي تأثرت بآخر عملية (إضافة / تعديل / حذف) تمت على قاعدة البيانات، وقد استُخدمت في مثال 2 لطباعة عدد الصفوف التي تم تحديثها بالتعليمة print(“Number of rows updated = “, cursor.rowcount).
اكتب التعليمة التي يستخدمها الكتاب لتحديث جميع الصفوف التي ليس لها قيمة محددة بعمود تاريخ النشر.
cursor.execute(""" UPDATE book SET price=?, year = ? WHERE year IS NULL""",(2.5,2024) ). والشرط فيها year IS NULL، ولأن الشرط لا يحوي عنصرًا مؤقتًا فالقيم المُمرَّرة قيمتان فقط هما القيمتان الجديدتان.
ما الفرق بين الشرط البسيط والشرط المركب في أمر التحديث؟ مثّل لكل منهما من الكتاب.
الشرط البسيط مقارنة واحدة، ومثاله في مثال 1: WHERE id = ?، وفي مثال 2: WHERE category = ?. أما الشرط المركب فيربط شرطين أو أكثر بعامل منطق، ومثاله في الكتاب: WHERE price < ? AND category = ? مع القيم (3,2.5,'Art')، و WHERE category = ? AND price < ? مع القيم ('Science', 3, 'Art', 2.5).
علّل: تُوضع القيمة الجديدة قبل قيمة الشرط في قوس القيم.
لأن العناصر المؤقتة (?) تُملأ بترتيب ظهورها في نص أمر SQL، وعبارة SET تسبق عبارة WHERE، فتكون القيمة الجديدة أولًا ثم قيمة الشرط. ولهذا جاءت القيم في مثال 1 (2,5): الاثنان للسعر والخمسة لرقم الصف.

الدرس 7: حذف البيانات Deleting Data

  • حذف البيانات من العمليات الأساسية في إدارة قواعد البيانات، ويهدف إلى إزالة سجل محدد أو مجموعة من الصفوف من الجداول بشكل دائم.
  • لتنفيذ عملية الحذف في SQLite يتم استخدام أمر DELETE مع تحديد الشروط اللازمة لضمان دقة الحذف.
  • صيغة الحذف: cursor.execute (”DELETE FROM table_name WHERE column_name = ?”, (value)).
  • تُحذف جميع الصفوف في الجدول إذا لم يتم تحديد شرط الحذف.
  • خطوات الحذف ثلاث: تحديد البيانات المطلوب حذفها (الشرط، وعمود الشرط، والقيمة)، ثم كتابة التعليمات البرمجية، ثم تنفيذها.
  • التعليمات البرمجية سبع: استدعاء المكتبة، وفتح الاتصال، وإنشاء المؤشر، وحذف البيانات، وطباعة عدد الصفوف المحذوفة، وحفظ التغييرات، وإغلاق الاتصال.
  • الشرط قد يكون بسيطًا مثل WHERE title=? أو مركبًا مثل WHERE price > ? AND year < ?.
  • تُستخدم الخاصية cursor.rowcount لمعرفة عدد الصفوف التي تم حذفها.
  • لحذف الصفوف التي لا يحتوي عمود year فيها على قيم: cursor.execute('DELETE FROM book WHERE year IS NULL')، ولحذف جميع الصفوف غير الفارغة نستخدم المعامل الشرطي IS NOT NULL.

الزبدة: الحذف يزيل الصف كله بشكل دائم، فلا تُذكر أعمدة بعد DELETE، ويقتصر التحكم فيه على عبارة WHERE. · غياب الشرط في DELETE يمحو الجدول كله، ولذلك ينص الكتاب على تحديد الشروط اللازمة لضمان دقة الحذف. · العناصر المؤقتة placeholders هي أسلوب البرمجة الآمنة الذي يتفادى أخطاء تنفيذ الحذف وهجمات SQL Injection.

الأسئلة المهمة (8)
عرّف عملية حذف البيانات كما وردت في الكتاب، واذكر الأمر المستخدم لتنفيذها في SQLite.
هي من العمليات الأساسية في إدارة قواعد البيانات، حيث تهدف إلى إزالة سجل محدد أو مجموعة من الصفوف من الجداول بشكل دائم. ولتنفيذها في SQLite يتم استخدام أمر DELETE مع تحديد الشروط اللازمة لضمان دقة الحذف.
اكتب صيغة التعليمة البرمجية لحذف البيانات في Python، وسمِّ أجزاءها.
cursor.execute (”DELETE FROM table_name WHERE column_name = ?”, (value)). وأجزاؤها: cursor.execute يُنفذ أمر SQL داخل قاعدة البيانات، وDELETE FROM أمر SQL لحذف صف / صفوف من الجدول، وtable_name اسم الجدول، وcolumn_name العمود المُستخدم في جملة الشرط، والعنصر المؤقت placeholder لقيمة الشرط، وvalue قيمة الشرط.
علّل: يُشدد الكتاب على تحديد الشروط اللازمة عند الحذف.
لأن الحذف يزيل الصفوف بشكل دائم، ولأن الكتاب ينص على أنه تُحذف جميع الصفوف في الجدول إذا لم يتم تحديد شرط الحذف؛ فتحديد الشرط هو ما يضمن دقة الحذف.
قارن بين صيغة أمر DELETE وصيغة أمر UPDATE من حيث الأجزاء.
يشترك الأمران في cursor.execute واسم الجدول وعبارة WHERE والعناصر المؤقتة. ويختلفان في أن UPDATE يحوي عبارة SET تحدد العمود المطلوب تحديث بياناته وقيمته الجديدة، فتُمرَّر فيه قيمة جديدة وقيمة شرط؛ أما DELETE فلا يحوي أعمدة ولا قيمًا جديدة لأنه يزيل الصف كله، فلا يُمرَّر فيه إلا قيم الشرط.
اذكر خطوات حذف بيانات قاعدة البيانات كما وردت في الكتاب.
1. تحديد البيانات المطلوب حذفها: تحديد الشرط للصفوف المطلوب حذفها، وتحديد عمود / أعمدة الشرط، وتحديد القيمة / القيم. 2. كتابة التعليمات البرمجية: استدعاء مكتبة sqlite3، إنشاء / فتح اتصال بقاعدة البيانات، إنشاء كائن المؤشر للتعامل مع قاعدة البيانات، حذف البيانات، طباعة عدد الصفوف التي تم حذفها، حفظ التغييرات، إغلاق الاتصال. 3. تنفيذ التعليمات البرمجية.
اكتب التعليمة التي يستخدمها الكتاب لحذف الصفوف التي لا يحتوي عمود تاريخ النشر فيها على قيم، وما المعامل المستخدم لعكسها؟
التعليمة: cursor.execute('DELETE FROM book WHERE year IS NULL'). ولحذف جميع الصفوف غير الفارغة نستخدم المعامل الشرطي (IS NOT NULL).
ما وظيفة cursor.rowcount في مثالي هذا الدرس؟
cursor.rowcount معرفة عدد الصفوف التي تم حذفها، وقد طُبع في المثالين بالتعليمة print("Number of rows deleted = ", cursor.rowcount).
في مثال 2 مُرِّرت القيمتان (10,2000). علّل هذا الترتيب.
لأن العناصر المؤقتة تُملأ بترتيب ظهورها في أمر SQL، والأمر هو WHERE price > ? AND year < ?، فعلامة الاستفهام الأولى للسعر فتقابلها 10، والثانية لسنة النشر فتقابلها 2000.

الوحدة 2الوحدة الثانية: المنتجات الرقمية Digital Products

الدرس 1: الذكاء الاصطناعي وتكامله مع قواعد البيانات AI and Database Integration

  • التعرف على الوجوه Face Recognition أحد تطبيقات رؤية الحاسوب Computer Vision التي تتيح تحليل الصور لاكتشاف وتمييز وجوه الأشخاص، سواء للتسجيل أو الأمان أو التحليل.
  • نستخدم في المشروع قاعدة بيانات SQLite لأنها خفيفة ولا تحتاج إلى خادم Server خارجي.
  • مكتبات المشروع أربع: OpenCV لاكتشاف الوجوه والتعامل مع الصور (تُثبَّت بـ pip install opencv-python)، وos لإدارة الملفات ومسارات الصور، وsqlite3 لإنشاء وتخزين البيانات، وdatetime لتسجيل الوقت والتاريخ، والثلاث الأخيرة مدمجة في Python.
  • مراحل المشروع خمس: إعداد بيئة المشروع، ثم التعرف على الوجه، ثم استخراج معلومات الوجه، ثم الاتصال بقاعدة البيانات، ثم تخزين البيانات.
  • بناء البرنامج ثماني خطوات: تعريف دالة التعرف، ثم إنشاء قاعدة البيانات، ثم قراءة الصورة من المستخدم، ثم تحويلها إلى تدرج رمادي، ثم كشف الوجوه بكاشف Haar، ثم التعامل مع كل وجه مكتشف، ثم حفظ النتائج، ثم عرض الصورة المُعدلة.
  • الجدول face_log يحفظ اسم الصورة واسم الشخص وموقع الوجه (x, y, w, h) وتاريخ الاكتشاف detected_at.
  • كشف الوجه Face Detection تحديد موقع الوجه وأبعاده، أما التعرف على الوجه Face Recognition فمقارنة الوجه المكتشف بوجوه معروفة لتحديد هوية الشخص.
  • تُحوَّل الصورة إلى تدرج رمادي لأن الخوارزميات تعمل أسرع وأكفأ على الصور ذات القناة الواحدة، ولتقليل حجم البيانات، ولأن معظم الكواشف تعتمد على تباين الإضاءة لا الألوان.
  • قاعدة البيانات أفضل من ملف نصي في: تنظيم البيانات، والبحث والاسترجاع السريع باستعلامات SQL، وعدم التكرار عبر القيود، والاعتمادية والأمان.
  • matchTemplate دالة من OpenCV تقارن صورة صغيرة (الوجه المُكتشف) مع صورة كبيرة (الوجه المعروف) وتعيد درجة التشابه كنسبة.

الزبدة: المشروع يجمع تقنيتين: رؤية الحاسوب تكتشف الوجه وتتعرف عليه، وقاعدة البيانات تحفظ نتيجة كل تعرف بزمنه ومكانه. · الوجه يتحول إلى بيانات: إحداثيات وأبعاد واسم ووقت، وهذه البيانات هي ما يُخزَّن في جدول face_log لا الصورة نفسها. · كل تعليمة في المشروع مبنية على ما درسناه في الوحدة الأولى: CREATE TABLE للجدول، وINSERT INTO للتخزين، وcommit وclose في النهاية.

الأسئلة المهمة (8)
عرّف التعرف على الوجوه Face Recognition كما ورد في الكتاب.
أحد تطبيقات رؤية الحاسوب Computer Vision التي تتيح تحليل الصور لاكتشاف وتمييز وجوه الأشخاص، سواء للتسجيل أو الأمان أو التحليل.
علّل: استُخدمت قاعدة بيانات SQLite في هذا المشروع.
لأنها خفيفة ولا تحتاج إلى خادم Server خارجي، وقواعد البيانات وسيلة مُنظمة لتخزين المعلومات واسترجاعها.
اذكر المكتبات المستخدمة في المشروع واستخدام كل منها.
OpenCV لاكتشاف الوجوه والتعامل مع الصور وتُثبَّت بأمر pip install opencv-python، وos لإدارة الملفات ومسارات الصور، وsqlite3 لإنشاء وتخزين البيانات في قاعدة بيانات محلية، وdatetime لتسجيل الوقت والتاريخ لكل وجه يتم التعرف عليه؛ والثلاث الأخيرة مكتبات مدمجة في Python.
قارن بين كشف الوجه Face Detection والتعرف على الوجه Face Recognition.
كشف الوجه: عملية تحديد موقع وجود وجه داخل صورة أو فيديو، أي تحديد الإحداثيات (x, y) والأبعاد الطول والعرض (h, w). أما التعرف على الوجه: فهو عملية مقارنة الوجه المكتشف مع مجموعة من الوجوه المعروفة لتحديد هوية الشخص.
علّل: تُحوَّل الصورة إلى تدرج رمادي قبل كشف الوجوه.
لأن خوارزميات كشف الوجوه والتعرف عليها تعمل بشكل أسرع وأكفأ على الصور الرمادية (ذات القناة الواحدة) بدلًا من الصور الملونة (ذات 3 قنوات)، ولتقليل حجم البيانات المراد معالجتها، ولأن معظم الكواشف والتقنيات تعتمد على تباين الإضاءة وليس الألوان.
ما فائدة استخدام قاعدة بيانات بدلًا من ملف نصي في هذا المشروع؟
تنظيم البيانات: تسهل التعامل مع بيانات كثيرة ومنظمة (مثل اسم الوجه، الوقت، المكان). والبحث والاسترجاع السريع: يمكن استخدام استعلامات SQL للبحث والتحليل بسهولة. وعدم التكرار: يمكن ضبطه عبر القيود في الجداول. والاعتمادية والأمان: أكثر أمانًا ودقة في الحفظ والاسترجاع مقارنة بملف نصي.
ما وظيفة الدالة matchTemplate وكيف نستفيد من ناتجها؟
matchTemplate هي دالة من OpenCV تقوم بمقارنة صورة صغيرة (الوجه المُكتشف) مع صورة كبيرة (الوجه المعروف)، وتعيد (درجة التشابه) بين الصورتين كنسبة، ومن خلالها نحدد إذا كان الوجه مطابقًا أم لا؛ وفي المشروع إذا تجاوزت النسبة 0.3 أو 0.7 تعتبر مطابقة مقبولة.
اذكر أعمدة الجدول face_log كما تظهر في برنامج DB Browser وما تحفظه.
id: رقم الصف. image_name: اسم الصورة المستخدمة. person_name: اسم الشخص الذي تم التعرف عليه. x, y, w, h: إحداثيات وقياسات الوجه في الصورة. detected_at: تاريخ ووقت عملية التعرف على الوجه. ويمكن استخدام هذه البيانات لأغراض مثل التوثيق، التحليل، تتبع الحضور.

الدرس 2: مراحل تصميم وتطوير المنتج الرقمي Designing and Developing a Digital Product

  • الهدف الأساسي من إنتاج المشروع هو الاستفادة من المهارات التي دُرست وطُبقت من خلال أوراق العمل، وتنمية مهارات العمل الجماعي التعاوني، والقدرة على تجميع الوسائط وفق أُسس تحليل النظم والبرمجة، وتنمية الابتكار.
  • خطوات تصميم المشروع ثمانٍ: تحديد مشكلة المشروع، إعداد الخوارزمية، تصميم خريطة التدفق، كتابة التعليمات البرمجية، اختبار البرنامج وتصحيحه، عرض المشروع، تحسينه وفق التغذية الراجعة، بناء البرنامج.
  • يتكون الفريق من 4 إلى 5 أعضاء: قائد الفريق، ومُعد الخوارزمية، ومصمم خريطة التدفق، والمبرمج، ومُعد العرض التقديمي.
  • مراحل المشروع الأسبوعية ست: التخطيط والتحليل، ثم خطة المشروع والتوزيع، ثم التصميم والتوثيق الأولي، ثم البرمجة والتنفيذ الأولي، ثم الاختبار والتحسين، ثم التوثيق النهائي والعرض؛ ويختلف عددها وفق خطة توزيع المنهج.
  • شروط فكرة المشروع خمسة، وآخرها أن تعتمد على تقنية اكتشاف الوجوه أو أي تقنية من تقنيات الذكاء الاصطناعي.
  • مجالات مهارات المشروع خمسة: المهارات الرقمية والتقنية، والتفكير الناقد وحل المشكلات، ومهارات التوثيق والبحث العلمي، ومهارات العمل الجماعي، ومهارات العرض والتواصل.
  • أدوات إعداد بيئة العمل: PyCharm لتصميم النموذج البرمجي، وPowerPoint للعرض التقديمي، وWindows screen recorder لتسجيل الشاشة، وDraw.io لخريطة التدفق، وMicrosoft Edge للبحث.
  • المهارات البرمجية المفضلة في هيكل المشروع: لغة Python، وأنواع متعددة من المتغيرات، وتعليمات الشروط Conditions، ومعالجة الأخطاء بالاستثناءات try/ except.
  • خطوات تنفيذ المشروع ثمانٍ: إعداد بيئة العمل، إعداد هيكل المشروع، كتابة التعليمات البرمجية، اختبار المشروع، تطوير المشروع، توثيق المشروع، مشاركة المشروع، الاستمرار في التعلم.
  • التوثيق العلمي يلتزم بطريقة علمية لتوثيق المراجع مثل نظام APA، ويُعرض المشروع ويُشارك على منصة Teams.

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

الأسئلة المهمة (8)
ما الهدف الأساسي من إنتاج المشروع كما ذكره الكتاب؟
الاستفادة من المهارات التي تم دراستها وتطبيقها من خلال أوراق العمل، بالإضافة إلى تنمية مهارات العمل الجماعي التعاوني، والقدرة على تجميع الوسائط اللازمة لإنتاج المشروع وفق أُسس تحليل النظم والبرمجة، والقدرة على تنمية الابتكار.
اذكر خطوات تصميم المشروع الثماني بالترتيب.
تحديد مشكلة المشروع، ثم إعداد الخوارزمية، ثم تصميم خريطة التدفق، ثم كتابة التعليمات البرمجية، ثم اختبار البرنامج وتصحيح البرنامج إن وجدت، ثم عرض المشروع على زملائك ومعلمك، ثم تحسين البرنامج وفق التغذية الراجعة، ثم بناء البرنامج.
عدّد أعضاء فريق العمل ومسؤولية كل عضو.
يتكون الفريق من 4 إلى 5 أعضاء: قائد الفريق المسؤول عن إدارة الفريق وتجميع الملفات والمستندات المطلوبة وتقديمها للمعلم، ومُعد الخوارزمية المسؤول عن إعداد الخطوات الأساسية لعمل المشروع، ومصمم خريطة التدفق المسؤول عن ترجمة الخوارزمية إلى خريطة التدفق، والمبرمج المسؤول عن ترجمة خريطة التدفق لتعليمات برمجية واختبارها والتأكد من سلامتها، ومُعد العرض التقديمي المسؤول عن إعداد وتصميم العرض التقديمي للمناقشة.
ما شروط فكرة المشروع كما وردت في الكتاب؟
أن تكون الفكرة واضحة وقابلة للتطبيق مع شرح المشكلة والحلول، وتحديد الفئة المستفادة، وأن تكون الفكرة قابلة لتصميم نموذج برمجي، وأن تحتوي على عدة مصادر خارجية يسهل الرجوع إليها، وأن تعتمد على تقنية اكتشاف الوجوه أو أي تقنية من تقنيات الذكاء الاصطناعي.
اذكر البرمجيات والأدوات التي يحتاجها الفريق في إعداد بيئة العمل ووظيفة كل منها.
PyCharm لتصميم النموذج البرمجي واستيراد المكاتب اللازمة، وPowerPoint لإعداد العرض التقديمي، وWindows screen recorder لتسجيل الشاشة استعدادًا لتوثيق المشروع، وDraw.io لرسم خريطة التدفق للمشروع، وMicrosoft Edge للبحث عن المعلومات، وأي مستلزمات أخرى تخدم المشروع.
ما المهارات البرمجية التي يُفضل استغلالها في إعداد هيكل المشروع؟
استخدام لغة Python، واستخدام أنواع متعددة من المتغيرات، واستخدام التعليمات البرمجية للشروط Conditions، ومعالجة الأخطاء باستخدام الاستثناءات try/ except.
ما الجوانب التي يجب أن يشملها العرض التقديمي في خطوة توثيق المشروع؟
عرض بيانات المدرسة وأعضاء الفريق، والترحيب بالمعلم وزملائه المتعلمين، وعرض مقدمة عن فكرة المشروع موضحًا الهدف والمشكلة والفئة المستفادة والحل، وعرض خريطة التدفق، وعرض النموذج البرمجي، وعرض المصادر، وفتح باب الأسئلة والمناقشة، والختام، وتسليم مجلد مجمع لجميع ملفات المشروع.
علّل: يطلب الكتاب توثيق المراجع بنظام علمي مثل APA.
لأن الالتزام بطريقة علمية لتوثيق المراجع جزء من التوثيق العلمي للمشروع، وAPA اختصار لعبارة American Psychological Association، ويُعد أحد أشهر أنظمة التوثيق المرجعي المستخدمة عالميًا، خاصةً في الأبحاث العلمية والعلوم الاجتماعية والنفسية والتربوية والبحث الأكاديمي عمومًا.

كتاب الطالب· Student's Book

الوحدة 1الباب الأول: مدخل إلى البيسك المرئي

الدرس 1: مفاهيم أساسية

  • البرنامج تعليمات منطقية يوجه بها المبرمج الحاسوب لأداء مهمة.
  • لغة البرمجة أداة لبناء البرامج، والمبرمج يكتب تعليماتها.
  • يعرض الكتاب لغات المستوى الأدنى: الآلة والتجميع، والأعلى: النصية والمرئية.
  • الواجهة المرئية تسهل تفاعل المستخدم، وتبقى التعليمات وراء عملية المعالجة.

الزبدة: الحاسوب يحتاج تعليمات البرنامج للاستفادة من مكوناته. · تختلف طريقة كتابة البرنامج وعرضه، وتظل دورة الإدخال والمعالجة والإخراج واضحة.

الأسئلة المهمة (5)
ما البرنامج؟
مجموعة تعليمات منطقية يوجه بها المبرمج الحاسوب للقيام بمهمة محددة.
من المبرمج؟
من يكتب تعليمات برامج الحاسوب.
لماذا تعلم البرمجة مهم؟
لبناء برامج تلبي الحاجات المحلية، والاستقلالية، وإعداد الكفاءات.
ما أساس لغة الآلة؟
أرقام النظام الثنائي.
ما الذي يميز الواجهة المرئية؟
واجهة رسومية تفاعلية سهلة للمستخدم.

الدرس 2: واجهة البيسك المرئي ٢٠٠٨م

  • البرنامج أثناء مرحلة التصميم.
  • إضافة الكائنات المختلفة للنموذج.
  • ضبط أوصاف الكائن المحدد.
  • محتويات المشروع من النماذج والوحدات النمطية.

الزبدة: كل نافذة تؤدي وظيفة محددة في التصميم. · يمكن تثبيت النوافذ أو إخفاؤها تلقائيًا وتنظيم مواضعها.

الأسئلة المهمة (5)
ما المشروع؟
البرنامج أثناء مرحلة التصميم.
ما وظيفة صندوق الأدوات؟
إضافة الكائنات المختلفة للنموذج.
ما وظيفة نافذة الخصائص؟
ضبط أوصاف الكائن المحدد.
ماذا يعرض مستكشف الحل؟
محتويات المشروع من النماذج والوحدات النمطية.
ما المقصود بالإخفاء التلقائي؟
ظهور النافذة عند مرور مؤشر الفأرة عليها.