الوحدة 83 · 18 فصلًا

المعارف المعلوماتية — الثانوي التأهيلي

المعالجة الآلية للمعلومة، التفكير الخوارزمي وبنى المعطيات الساكنة والدينامية، البرمجة المهيكلة بلغة C والبرمجة الكائنية بـJava/C++، تكنولوجيا الويب وقواعد البيانات ونظم المعلومات وUML، نظم التشغيل والشبكات المعلوماتية ومعمارية الحاسوب، ثم المكتبيات المتقدمة وإنتاج الوسائط المتعددة — مبنية على توصيف اختبار التخصص لدورة نونبر 2025. كما تشمل المكتبيات والوسائط المتعددة، لتمنح المترشح تصورًا متكاملًا يربط المفاهيم النظرية بالقدرة على تحليل المشكلات التقنية كما ترد في اختبار التخصص.

18 فصلًا 10 أسئلة ~6.0 ساعات

أهداف الوحدة

  • التمييز بين المعلوميات كأداة وكثقافة رقمية وكعلم وكتكنولوجيا، وربط كل فصل بموقعه في سلسلة بيانات ← خوارزمية ← برنامج ← نظام ← شبكة ← خدمة.
  • إتقان التفكير الخوارزمي (تسلسل، شرط، تكرار، دوال، عودية) وتحليل التعقيد الخطي والتربيعي والفرز والبحث.
  • التمييز بين بنى المعطيات الساكنة (مصفوفات، سجلات، ملفات) والدينامية (مكدسات، طوابير، قوائم، أشجار، رسوم بيانية) ومجال استعمال كل بنية.
  • البرمجة المهيكلة بلغة C (مؤشرات، ذاكرة دينامية، ملفات) والبرمجة الكائنية (تغليف، وراثة، تعدد أشكال) بـJava/C++.
  • بناء تطبيق ويب كامل: HTML/CSS/JS، PHP وMySQL، مبادئ الأمن الأساسية (SQL Injection، XSS)، وSQL (استعلامات، ربط، دوال تجميعية).
  • التمييز بين وظائف نظام التشغيل (عمليات، ذاكرة، ملفات) ومكونات الشبكة (OSI/TCP-IP، عنونة IP، توجيه) ومعمارية الحاسوب (المعالج، الذاكرة، الحافلات).
  • توظيف مصطلحات القاموس الفرنسي-العربي بدقة، لأن جزءاً من الاختبار قد يستعمل المصطلح الفرنسي مباشرة.
  • توظيف نظم المعلومات وUML وتدبير المشاريع، والمكتبيات المتقدمة والوسائط المتعددة

هذه الوحدة ليست تلخيصًا لوثيقة 2005، وليست كتابًا عامًا في علوم الحاسوب. هي تركيب معرفي موجّه لاختبار التخصص: تُستعمل وثيقة 2005 لتثبيت هوية المادة ومفاهيمها المؤسسة وموقع الخوارزميات والبرمجة والأنظمة والشبكات والبرمجيات داخل المنهاج المغربي؛ ويُستعمل توصيف 2025 لضبط ما يجب أن يغطيه التحضير فعلًا وبأي وزن.

هرم المرجعية

  1. توصيف اختبار التخصص 2025: المرجع الحاكم في التغطية والأوزان.
  2. التعليمات الرسمية 2005: المرجع الوزاري المؤسس لمادة المعلوميات في الجذوع المشتركة بالتأهيلي.
  3. Ouahbi et al. (2019): تحليل وضع منهاج المعلوميات بالثانوي المغربي في ضوء التعليمات الرسمية.
  4. Oumad, El Youssefi & Haddi (2023): تقرير ميداني وطني حول مواقف المدرسين من المنهاج الحالي والمستقبلي.
  5. Ouahbi et al. (2015): قراءة إصلاحية مبكرة تميز بين الاستعمال الأداتي للتكنولوجيا وعلوم الحاسوب باعتبارها معرفة مدرسية.

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

تنبيه منهجي

ما ورد في توصيف 2025 ولم يكن موجودًا في وثيقة 2005 (مثل البنى الدينامية، UML، البرمجة الكائنية، PHP/MySQL، إدارة العمليات والذاكرة، التوجيه IP، إنتاج الوسائط المتعددة...) يُقدَّم هنا باعتباره محتوى امتحانيًا حديثًا مصدر إلزامه هو التوصيف، لا باعتباره جزءًا أصليًا من منهاج 2005.

الأوزان الثلاثة للتوصيف

المجالالوزنالمكوّنات
التطوير45%خوارزميات، بنى معطيات، برمجة، ويب، قواعد بيانات ونظم معلومات
الأنظمة والشبكات30%نظم التشغيل، الشبكات، معمارية الحاسوب
البرمجيات25%مكتبيات متقدمة، خدمات الإنترنت، وسائط متعددة

مصفوفة المطابقة بين فصول الوحدة وتوصيف الاختبار

التطوير (45%)

  • الفصل 02: التسلسل، الشرط، التكرار، الدوال، العودية
  • الفصل 03: البنى الساكنة، الملفات، التعقيد، الفرز والبحث
  • الفصل 04: المكدسات، الطوابير، القوائم، الأشجار، الرسوم
  • الفصل 05: البرمجة المهيكلة بلغة C
  • الفصل 06: البرمجة الكائنية Java أو C++
  • الفصل 07: HTML/CSS/JS + PHP/MySQL + عمل الويب
  • الفصلان 08 و09: قواعد البيانات + SQL + UML + تدبير المشروع

الأنظمة والشبكات (30%)

  • الفصل 10: نظم التشغيل وإدارة الموارد والأوامر
  • الفصل 11: LAN/MAN/WAN، OSI/TCP-IP، IP، التوجيه
  • الفصل 12: معمارية الأنظمة ذات المعالج الدقيق

البرمجيات (25%)

  • الفصل 13: مكتبيات متقدمة وخدمات الإنترنت
  • الفصل 14: إنتاج المحتوى المتعدد الوسائط

القاعدة المعتمدة في هذه الوحدة: كل عنصر منصوص عليه في التوصيف له موضع صريح داخل المتن؛ ولا تُدرج موضوعات إضافية إلا عندما تكون لازمة لفهم العنصر الموصوف أو لحل أسئلة التمييز بين مفاهيم متقاربة.

كن أول من يقيّم هذا الفصل

ما المعلوميات؟

المعلوميات ليست مرادفًا لاستعمال الحاسوب، ولا لمجرد امتلاك مهارات مكتبية. موضوعها المركزي هو المعالجة الآلية للمعلومة؛ أي تمثيل المعلومات تمثيلًا صوريًا، بناء إجراءات لمعالجتها، ثم تنفيذ هذه الإجراءات بواسطة نظام حاسوبي. من هذا التعريف تتفرع ثلاثة مستويات مترابطة:

  • مستوى التمثيل: كيف نمثل الأعداد، النصوص، الصور، السجلات، العلاقات، والكيانات؟
  • مستوى المعالجة: كيف نصوغ خوارزمية صحيحة، محددة، قابلة للتنفيذ، وذات كلفة معقولة؟
  • مستوى التنفيذ: كيف تتحول الخوارزمية إلى برنامج يعمل فوق بنية مادية ونظام تشغيل وشبكة؟

البعد العلمي والتقني والمجتمعي

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

المفاهيم المؤسسة التي تربط فصول الوحدة

  1. المعلومة / البيانات: الشيء الذي نمثله ونخزنه وننقله.
  2. الخوارزمية: وصف منتهٍ ودقيق للمعالجة.
  3. البنية: تنظيم البيانات بطريقة تخدم العمليات المطلوبة.
  4. النظام: بيئة تنفيذ تتفاعل فيها المكونات المادية والبرمجية والشبكية.
صلة هذا الفصل بالتوصيف

التوصيف الحديث لا يختبر "تعريف المعلوميات" فقط، بل يبني جميع مجالاته على هذه البنية: الخوارزمية ← البرنامج ← نظام التشغيل والمعمارية ← الشبكة ← التطبيق وقاعدة البيانات ← الخدمات والمحتوى الرقمي.

تطبيق: من التمثيل إلى المعالجة

لنأخذ العدد 13. في النظام الثنائي يُكتب 1101 لأن 13 = 8 + 4 + 0 + 1. والمحرف 'A' يُخزَّن برمز العدد 65 في الترميز ASCII، أي 01000001 على ثمانية بتات (64 + 1). الحاسوب إذن لا يعرف "عددًا" و"حرفًا" إلا بالاتفاق على طريقة تمثيل؛ وهذا هو معنى مستوى التمثيل في هذا الفصل.

المعطىالمعلومة المستخرجة منهالمعالجة المطلوبة
15 (رقم مجرد)لا معنى له وحده—
15 في سجل نقط تلميذنقطة في مادة ماحساب المعدل، الترتيب
سلسلة نقط الفصل كاملًاتقدم التلميذ أو تراجعهالترتيب، المقارنة، العرض البياني

أخطاء شائعة في فهم المادة

  • اعتبار المعلوميات "تعلم برنامج Word وExcel": هذه مهارات استعمال، أما العلم فموضوعه التمثيل والمعالجة.
  • الخلط بين المعطى (مادة خام) والمعلومة (معطى مفسَّر في سياق).
  • الخلط بين الخوارزمية (الوصف المجرد) والبرنامج (تنفيذها بلغة معينة).

أسئلة تدريب

1. ما الفرق بين الخوارزمية والبرنامج؟

الخوارزمية وصف منته ودقيق لخطوات المعالجة مستقل عن لغة بعينها؛ البرنامج ترجمتها بلغة برمجة قابلة للتنفيذ على آلة. الخوارزمية الواحدة قد تُنجز ببرامج عدة.

2. اكتب العدد 10 بالنظام الثنائي.

10 = 8 + 2، أي 1010.

3. إلى أي بعد (علمي/تقني/مجتمعي) ينتمي النقاش حول حماية المعطيات الشخصية؟

إلى البعد المجتمعي (الأمن والخصوصية)، وإن كانت تطبيقاته التقنية تمر عبر التشفير وصلاحيات الوصول.

كن أول من يقيّم هذا الفصل

الخوارزمية: خصائصها وبنيتها

الخوارزمية (Algorithme) سلسلة محددة من التعليمات تحول مدخلات إلى مخرجات. الخوارزمية الجيدة ينبغي أن تكون واضحة، منتهية، قابلة للتنفيذ، صحيحة بالنسبة إلى مواصفات المسألة، وأن تكون كلفتها الزمنية والذاكرية مناسبة.

الإسناد والتسلسل

التسلسل (enchaînement séquentiel) يعني أن التعليمات تنفذ بترتيبها. الإسناد (affectation) يغير قيمة متغير. يجب التمييز بين "المساواة الرياضية" وبين الإسناد البرمجي: x = x + 1 ليس مساواة منطقية، بل تحديث لقيمة x.

Lire a, b
s ← a + b
Ecrire s

البنية الشرطية

البنية الشرطية تختار مسارًا وفق قيمة منطقية. الصيغ الأساسية: شرط بسيط، شرط ثنائي if/else، وشروط متداخلة أو متعددة الفروع.

Si note >= 10 Alors
    Ecrire "Admis"
Sinon
    Ecrire "Non admis"
FinSi

من الأخطاء المفاهيمية الشائعة: الخلط بين الشرط المركب والتداخل. الشرط المركب يوظف معاملات منطقية مثل AND/OR/NOT، أما التداخل فيضع بنية شرطية داخل فرع بنية أخرى.

التكرار: for / while / do…while

الحلقة ذات العداد مناسبة عندما يكون عدد التكرارات معروفًا أو محكومًا بمجال عددي. الحلقة الشرطية while تفحص الشرط قبل التنفيذ، بينما do…while تضمن تنفيذ الجسم مرة واحدة على الأقل.

Pour i de 1 à n Faire
    somme ← somme + i
FinPour

المفهوم المركزي في تحليل الحلقات هو عدد المرات التي ينفذ فيها الجسم. حلقة واحدة حتى n تقود غالبًا إلى كلفة خطية؛ حلقتان متداخلتان كل منهما حتى n تقودان غالبًا إلى كلفة تربيعية.

الدوال ذات المعاملات

الدالة (fonction paramétrée) وحدة مستقلة تستقبل معاملات وتعيد قيمة أو تحقق أثرًا محددًا. الفائدة ليست فقط تقليل التكرار، بل أيضًا التجريد، التقسيم إلى وحدات، سهولة الاختبار، وإعادة الاستخدام.

Fonction max2(a, b)
    Si a > b Alors
        Retourner a
    Sinon
        Retourner b
    FinSi
FinFonction

يجب فهم الفرق بين المعامل الصوري (paramètre formel) داخل تعريف الدالة والوسيط الفعلي (argument) عند النداء.

العودية

العودية (récursivité) هي أن تستدعي الدالة نفسها لحل نسخة أصغر من المشكلة. لكل عودية سليمة عنصران: حالة توقف تمنع الاستدعاء غير المنتهي، وخطوة عودية تقلص المشكلة وتقترب حتمًا من حالة التوقف.

Fonction factorielle(n)
    Si n <= 1 Alors
        Retourner 1
    Sinon
        Retourner n * factorielle(n - 1)
    FinSi
FinFonction

تنفذ الاستدعاءات العودية عادة فوق مكدس الاستدعاءات call stack. كل استدعاء يحتفظ بسياقه المحلي إلى أن يعود الاستدعاء الأعمق. لذلك قد تؤدي عودية عميقة جدًا إلى تجاوز المكدس.

الاستدلال على صحة الخوارزمية

في المسائل البسيطة يكفي تتبع القيم، لكن الفهم المتين يعتمد ثلاثة أسئلة: هل تتوقف الخوارزمية؟ هل تعطي نتيجة مطابقة للمواصفات؟ هل تعمل لجميع الحالات المقبولة؟ في الحلقات يمكن استعمال فكرة الثابت الحلقي invariant de boucle: خاصية صحيحة قبل وبعد كل دورة، وتساعد في تبرير صحة النتيجة النهائية.

كن أول من يقيّم هذا الفصل

المصفوفات

المصفوفة (tableau) تخزن عناصر من النوع نفسه في مواقع متجاورة منطقيًا، ويتيح الفهرس وصولًا مباشرًا إلى عنصر. الوصول بالرتبة عملية ثابتة تقريبًا O(1)، بينما البحث عن قيمة دون ترتيب مسبق يحتاج في أسوأ الأحوال إلى فحص جميع العناصر O(n).

في المصفوفات ثنائية البعد، يجب ضبط معنى الصف والعمود وترتيب المرور. الحلقتان المتداخلتان على مصفوفة n × m تكلفتهما العامة O(nm).

السلاسل النصية

السلسلة (chaîne de caractères) متتالية محارف. في C هي عادة مصفوفة محارف منتهية بالمحرف الصفري '\0'. عمليات مثل حساب الطول، المقارنة، النسخ والبحث تستند إلى المرور على المحارف ما لم تتوفر بنية أو معلومة مسبقة تختصر ذلك.

السجلات

السجل (enregistrement / record) يجمع حقولًا قد تكون من أنواع مختلفة تحت كيان واحد: مثل طالب له رقم واسم ومعدل. في C يمثل عادة بـ struct.

struct Etudiant {
    int id;
    char nom[50];
    float moyenne;
};

الملفات

الملف (fichier) تخزين دائم للبيانات خارج الذاكرة الرئيسية. يجب التمييز بين ملف نصي يفسر البيانات كمحارف، وملف ثنائي يحفظ تمثيلًا خامًا أو منظمًا للبايتات. المسار العام: فتح ← قراءة/كتابة ← فحص الأخطاء ← إغلاق.

التعقيد الزمني: خطي وتربيعي

التعقيد لا يقيس الزمن بالثواني، بل نمو عدد العمليات مع حجم المدخل. في التوصيف ورد صراحة التعقيد الخطي والتربيعي.

ثابت — O(1)

المعنى: لا يتغير مع n. مثال: الوصول إلى عنصر بفهرسه.

خطي — O(n)

المعنى: يتناسب تقريبًا مع n. مثال: بحث خطي.

تربيعي — O(n²)

المعنى: يتناسب تقريبًا مع مربع n. مثال: حلقتان كاملتان متداخلتان.

عند المقارنة بين خوارزميتين نهتم خصوصًا بسلوكهما عندما تكبر المدخلات، ونهمل الثوابت والحدود الأقل رتبة في ترميز Big-O.

البحث الخطي والبحث الثنائي

البحث الخطي يفحص العناصر تباعًا؛ يعمل في بيانات غير مرتبة وكلفته في أسوأ حالة O(n). البحث الثنائي يحتاج إلى ترتيب مسبق، ويقسم مجال البحث إلى نصفين في كل خطوة، ولذلك كلفته O(log n). رغم أن توصيف الاختبار يذكر الخطية والتربيعية صراحة، فإن فهم البحث الثنائي ضروري للتمييز بين خوارزميات البحث.

خوارزميات الفرز الأساسية

الفرز بالاختيار (Selection Sort)

في كل دورة نبحث عن أصغر عنصر في الجزء غير المرتب ونضعه في موضعه. الكلفة الزمنية المعتادة O(n²).

الفرز بالإدراج (Insertion Sort)

نبني جزءًا مرتبًا تدريجيًا، وندرج كل عنصر في مكانه. أسوأ حالة O(n²)، لكنه قد يكون جيدًا في بيانات صغيرة أو شبه مرتبة.

الفرز بالتبادل/الفقاعات (Bubble Sort)

تُقارن العناصر المتجاورة وتبدل إذا كان ترتيبها خاطئًا. بسيط تعليميًا لكنه غالبًا غير كفء: O(n²).

مبدأ التمييز

لا تحفظ أسماء الخوارزميات فقط. اسأل: ما العملية التي تتكرر؟ ما الجزء الذي يصبح مرتبًا بعد كل دورة؟ هل الفرز مستقر؟ هل يعمل في مكانه؟ ما كلفته في أفضل/أسوأ حالة؟

مثال محلول: البحث الثنائي

المصفوفة المرتبة [2, 5, 8, 12, 16, 23, 38] والمطلوب القيمة 23 (الفهارس من 0 إلى 6).

الخطوةالمجالالوسطالمقارنة
10 … 63 (القيمة 12)12 < 23 فننتقل إلى اليمين
24 … 65 (القيمة 23)وُجدت القيمة

أنجز البحث الثنائي المهمة في خطوتين، بينما يحتاج البحث الخطي إلى ست مقارنات. في 1000 عنصر مرتب لا يتجاوز البحث الثنائي نحو 10 خطوات (210 = 1024)، في مقابل 1000 في الأسوأ للخطي. شرطه المسبق أن تكون المصفوفة مرتبة.

مثال: تتبع الفرز بالإدراج على [5, 2, 4, 1]

الدورةالعنصر المُدرَجالمصفوفة بعدها
12[2, 5, 4, 1]
24[2, 4, 5, 1]
31[1, 2, 4, 5]

قراءة التعقيد من الشيفرة

for (i = 0; i < n; i++)          /* O(n) */
    s += t[i];

for (i = 0; i < n; i++)          /* O(n²) */
    for (j = 0; j < n; j++)
        if (t[i] < t[j]) c++;

الأولى حلقة واحدة، فعدد العمليات يتناسب مع n. الثانية حلقتان متداخلتان تنفذان n × n مرة. وإذا تضاعف الحجم من 1000 إلى 2000 تضاعف زمن الأولى تقريبًا مرتين، وتضاعف الثانية تقريبًا أربع مرات. وعدد المقارنات في الفرز بالاختيار هو n(n−1)/2، أي 10 مقارنات عند n = 5، وهو ما يبرر التعقيد التربيعي.

أخطاء شائعة

  • تطبيق البحث الثنائي على مصفوفة غير مرتبة، فتكون النتيجة غير موثوقة.
  • خطأ الإزاحة بواحد: حلقة i <= n على مصفوفة من n عنصرًا.
  • الخلط بين الأفضل والأسوأ: الفرز بالإدراج على مصفوفة مرتبة أصلًا تكفيه مقارنة واحدة للعنصر، لكن تعقيده في الأسوأ تربيعي.
  • الاعتقاد أن O(n) يعني "n ثانية"؛ هي مقياس نمو لا زمن.

أسئلة تدريب

1. ما تعقيد الوصول إلى t[i] وما تعقيد البحث عن قيمة في مصفوفة غير مرتبة؟

الأول O(1) لأن الفهرس يحدد الموضع مباشرة. والثاني O(n) في الأسوأ لأن قد تُفحص كل العناصر.

2. لماذا نهمل الثوابت في Big-O؟

لأن المقياس يصف سلوك النمو عند كبر المدخل؛ 3n و100n ينموان خطيًا كلاهما.

3. أيّ الفرزين الثلاثة يستفيد من كون البيانات شبه مرتبة؟

الفرز بالإدراج، لأن كل عنصر يُدرَج بعد قليل من الإزاحات. أما الاختيار فيبقى يبحث عن الأصغر في كل دورة مهما كان الترتيب.

كن أول من يقيّم هذا الفصل

لماذا البنى الدينامية؟

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

المكدس Stack

المكدس يعمل بمبدأ LIFO: آخر داخل أول خارج. العمليات القياسية: push للإضافة، pop للحذف والإرجاع، peek/top لقراءة القمة. إذا نفذت البنية جيدًا تكون هذه العمليات O(1). من تطبيقاته: مكدس الاستدعاءات، التراجع، تقييم التعابير.

الطابور Queue

الطابور يعمل بمبدأ FIFO: أول داخل أول خارج. العمليات الأساسية: enqueue في الخلف وdequeue من الأمام. يستعمل في جدولة الطلبات، الطباعة، شبكات الاتصال، وخوارزمية BFS.

القائمة المرتبطة

القائمة الأحادية تتكون من عقد، كل عقدة تحمل قيمة ومؤشرًا إلى التالية. الإدراج في البداية O(1)، أما الوصول إلى العنصر ذي الرتبة k فيتطلب المرور من الرأس O(k). الحذف يحتاج الانتباه إلى وصل العقدة السابقة بالتالية وتحرير الذاكرة إن كانت مخصصة ديناميًا.

typedef struct Node {
    int data;
    struct Node *next;
} Node;

في القائمة المزدوجة توجد وصلتان: السابقة والتالية، ما يسهل الحركة والحذف في الاتجاهين على حساب ذاكرة إضافية.

الأشجار الثنائية

الشجرة بنية هرمية من عقد وروابط. في الشجرة الثنائية لكل عقدة ابنان على الأكثر: يسار ويمين. مصطلحات أساسية: الجذر، الورقة، الأب، الابن، العمق، الارتفاع، الشجرة الفرعية.

في شجرة البحث الثنائية BST تكون قيم الفرع الأيسر أصغر عادة من قيمة العقدة، واليمنى أكبر. البحث والإدراج والحذف قد تكون O(log n) إذا كانت الشجرة متوازنة، لكنها قد تنحدر إلى O(n) إذا أصبحت سلسلة.

طرق المرور

  • Preorder: الجذر ← اليسار ← اليمين.
  • Inorder: اليسار ← الجذر ← اليمين؛ يعطي ترتيبًا تصاعديًا في BST.
  • Postorder: اليسار ← اليمين ← الجذر.

الرسوم البيانية Graphs

الرسم البياني يتكون من رؤوس vertices وحواف edges. قد يكون موجهًا أو غير موجه، موزونًا أو غير موزون. من المفاهيم: الدرجة، المسار، الدورة، الاتصال.

مصفوفة المجاورة

نستعمل جدولًا n×n؛ الخانة A[i][j] تشير إلى وجود الحافة أو وزنها. ميزة: اختبار وجود حافة سريع O(1). عيب: ذاكرة O(n²) حتى لو كان الرسم قليل الحواف.

قوائم المجاورة والمؤشرات

لكل رأس قائمة بجيرانه، عادة بعقد ومؤشرات. الذاكرة تصبح أقرب إلى O(V+E)، وهي أنسب للرسوم المتناثرة. هذا هو المقصود عمليًا في التوصيف بتمثيل الرسوم بواسطة الجداول والمؤشرات.

BFS وDFS

البحث بالعرض BFS يستعمل طابورًا ويزور المستويات تدريجيًا. البحث بالعمق DFS يستعمل مكدسًا صريحًا أو العودية. فهم العلاقة بين الخوارزمية وبنية البيانات المستخدمة نقطة أساسية: BFS ↔ Queue، DFS ↔ Stack/Recursion.

مثال محلول: المكدس والأقواس

للتحقق من توازن الأقواس نُدرج كل قوس فاتح في المكدس، وعند كل قوس مغلق نُخرج القمة ونتأكد من تطابقها.

  • {[()]}: يُدرج { ثم [ ثم (، ثم يطابق ) مع ( و] مع [ و} مع {، ويصير المكدس فارغًا في النهاية: متوازنة.
  • ([)]: عند ) تكون القمة [ وليست (: غير متوازنة.
  • ((: ينتهي النص والمكدس غير فارغ: غير متوازنة.

مثال: الإدراج في بداية قائمة مرتبطة

Node *n = malloc(sizeof(Node));
if (n == NULL) return tete;
n->data = 7;
n->next = tete;     /* 1: نربط العقدة الجديدة بالرأس القديم */
tete = n;           /* 2: ثم نجعلها رأسًا */

الترتيب مهم: لو نفذنا الخطوة الثانية أولًا لضاع الرأس القديم وفقدنا بقية القائمة.

مثال: شجرة البحث الثنائية

نُدرج القيم 8, 3, 10, 1, 6 بالترتيب. الجذر 8؛ 3 على يساره؛ 10 على يمينه؛ 1 و6 ابنا 3.

المرورالنتيجة
Preorder8, 3, 1, 6, 10
Inorder1, 3, 6, 8, 10 (تصاعدي)
Postorder1, 6, 3, 10, 8

لو أُدرجت القيم مرتبة 1, 2, 3, 4, 5 لصارت الشجرة سلسلة يمينية، وتنحدر العمليات إلى O(n).

مثال: رسم من خمسة رؤوس

الحواف: A–B، A–C، B–D، C–D، D–E (غير موجه). قوائم المجاورة: A: B, C | B: A, D | C: A, D | D: B, C, E | E: D.

  • BFS من A (طابور، الجيران بالترتيب الأبجدي): A, B, C, D, E.
  • DFS من A (عودية): نزور A ثم B ثم D؛ وفي D نزور C (جار D غير المزور) ثم E: A, B, D, C, E.
  • الذاكرة: مصفوفة المجاورة 25 خانة، بينما قوائم المجاورة تحمل 10 عناصر (كل حافة مرتين). الفارق يكبر مع الرسوم الكبيرة المتناثرة.

أخطاء شائعة

  • pop على مكدس فارغ (underflow) دون فحص.
  • الخلط بين LIFO (مكدس) وFIFO (طابور).
  • حذف عقدة دون وصل السابقة بالتالية، أو دون تحرير الذاكرة.
  • الاعتقاد أن شجرة البحث الثنائية متوازنة دائمًا.

أسئلة تدريب

1. ما البنية التي تناسب خوارزمية BFS، وما التي تناسب DFS؟

BFS يستعمل طابورًا، وDFS يستعمل مكدسًا صريحًا أو العودية (مكدس الاستدعاءات).

2. ما تعقيد الوصول إلى العنصر ذي الرتبة k في قائمة مرتبطة أحادية؟

O(k) أي خطي، لأنه يلزم المرور من الرأس عقدة بعد عقدة، بخلاف المصفوفة O(1).

3. أيّ المرورين يعطي ترتيبًا تصاعديًا في BST؟

Inorder (يسار ← جذر ← يمين).

كن أول من يقيّم هذا الفصل

نموذج C

C لغة مترجمة، إجرائية، قريبة نسبيًا من الذاكرة، وتمنح تحكمًا مباشرًا في المؤشرات والملفات. البرنامج يبدأ عادة من main، ويُبنى من تعليمات ودوال وأنواع بيانات.

الأنواع والمتغيرات والمعاملات

الأنواع الأساسية: char، int، float، double. المعاملات الحسابية والمنطقية والمقارنة لها أسبقية؛ لذلك الأقواس ضرورية عندما قد يلتبس ترتيب التقييم.

الدوال وتمرير المعاملات

في C تمرر القيم افتراضيًا بالقيمة. لتعديل متغير لدى المستدعي نمرر عنوانه بمؤشر.

void incrementer(int *x) {
    (*x)++;
}

int main(void) {
    int a = 5;
    incrementer(&a);
    return 0;
}

المصفوفات والمؤشرات

اسم المصفوفة يتحول في أغلب التعبيرات إلى مؤشر إلى أول عنصر. التعبير t[i] يكافئ مفاهيميًا *(t + i). لكن المصفوفة ليست "مؤشرًا قابلًا لإعادة الإسناد"؛ يجب التمييز بين الهوية التخزينية للمصفوفة وبين متغير المؤشر.

السلاسل في C

السلسلة هي مصفوفة char منتهية بـ \0. دوال شائعة في string.h: strlen، strcpy، strcmp، strcat. من الأخطاء الخطيرة: تجاوز حدود المصفوفة، نسيان مساحة المحرف الصفري، أو النسخ إلى مساحة غير كافية.

الذاكرة الدينامية

الدوال الأساسية: malloc، calloc، realloc، free. كل تخصيص ناجح يجب أن تكون له استراتيجية تحرير واضحة لتجنب تسرب الذاكرة. كما يجب فحص قيمة المؤشر بعد malloc.

الملفات في C

يُمثل الملف بمؤشر FILE*. فتح الملف عبر fopen بأوضاع مثل "r"، "w"، "a"، ويمكن إضافة b للثنائي. القراءة/الكتابة النصية: fprintf، fscanf، fgets. الثنائية: fread وfwrite.

أخطاء دلالية يجب تمييزها

  • Compilation error: مخالفة تركيبية أو نوعية تمنع بناء البرنامج.
  • Runtime error: مشكلة تحدث أثناء التنفيذ مثل وصول غير صالح للذاكرة.
  • Logical error: البرنامج يعمل لكنه يعطي نتيجة خاطئة.

مثال محلول: تبديل قيمتين

الدالة التالية لا تغيّر شيئًا لدى المستدعي لأن المعاملين يُمرَّران بالقيمة:

void swap_faux(int a, int b) { int t = a; a = b; b = t; }

الصيغة الصحيحة تمرّر العنوانين:

void swap(int *a, int *b) { int t = *a; *a = *b; *b = t; }

int main(void) {
    int x = 3, y = 8;
    swap(&x, &y);      /* x == 8, y == 3 */
    return 0;
}
السطر*a (= x)*b (= y)t
قبل الاستدعاء38—
t = *a383
*a = *b883
*b = t833

مثال: قراءة ملف نصي وجمع أعداده

FILE *f = fopen("notes.txt", "r");
if (f == NULL) { perror("ouverture"); return 1; }
int v, somme = 0;
while (fscanf(f, "%d", &v) == 1) somme += v;
fclose(f);

الشرط fscanf(...) == 1 أسلم من اختبار نهاية الملف قبل القراءة، لأنه يتوقف عند أول فشل في قراءة عدد.

أخطاء شائعة

  • scanf("%d", x) بدل scanf("%d", &x): يُمرَّر القيمة بدل العنوان، وسلوكه غير معرّف.
  • if (a = 5) بدل if (a == 5): إسناد لا مقارنة، والشرط صحيح دائمًا.
  • char s[5] = "Maroc";: الكلمة خمسة محارف وتحتاج ستة مواضع مع المحرف الصفري.
  • استعمال مؤشر بعد free، أو نسيان free فيحدث تسرب للذاكرة.
  • الوصول إلى t[n] في مصفوفة من n عنصرًا؛ الفهارس الصالحة من 0 إلى n-1.

أسئلة تدريب

1. ما ناتج: int t[3] = {1,2,3}; int *p = t; printf("%d", *(p+2));

يطبع 3، لأن *(p+2) يكافئ t[2]، وجمع 2 إلى المؤشر يتقدم عنصرين لا بايتين.

2. لماذا نفحص ناتج malloc؟

لأنه يعيد NULL عند عدم توفر الذاكرة، وإهمال الفحص يعني الكتابة عبر مؤشر فارغ.

3. برنامج يُترجم دون خطأ لكنه يعطي معدلًا خاطئًا، ما نوع الخطأ؟

خطأ منطقي: الترجمة لم تفشل ولا التنفيذ انقطع، لكن الخوارزمية أو تطبيقها غير صحيحين.

كن أول من يقيّم هذا الفصل

الفكرة المركزية

البرمجة الكائنية Object-Oriented Programming تنظم البرنامج حول كائنات تجمع حالة state وسلوكًا behavior. الصنف class مخطط، والكائن object نسخة منه.

التغليف Encapsulation

التغليف يفصل التمثيل الداخلي عن الواجهة العامة. نحمي الحقول ونمرر الوصول إليها عبر طرائق تتحقق من الشروط. في Java/C++ تتحكم محددات الوصول مثل private وpublic وprotected في الرؤية.

الباني Constructor

الباني يُستعمل لتهيئة الكائن عند إنشائه، ويساعد على ضمان أن الكائن يبدأ في حالة صحيحة. في C++ يوجد أيضًا مفهوم الهادم destructor لتحرير الموارد المرتبطة بعمر الكائن.

الوراثة Inheritance

الوراثة تمثل علاقة is-a: صنف متخصص يشتق من صنف عام. لا ينبغي استعمالها لمجرد إعادة الاستخدام إذا لم توجد علاقة مفهومية سليمة؛ أحيانًا يكون التركيب composition أنسب.

تعدد الأشكال Polymorphism

يسمح بالتعامل مع كائنات من أصناف مختلفة عبر واجهة مشتركة، مع تنفيذ السلوك المناسب وقت التشغيل. في Java يرتبط ذلك بالـ method overriding والمراجع من النوع الأب/الواجهة. في C++ يرتبط عادة بالدوال الافتراضية virtual.

Overloading مقابل Overriding

المفهومOverloadingOverriding
المعنىالاسم نفسه بتواقيع مختلفةإعادة تعريف طريقة موروثة
المكانداخل الصنف أو النطاق نفسهبين صنف أب وصنف ابن
القرارغالبًا وقت الترجمةقد يكون وقت التشغيل عبر الربط الدينامي

Java وC++: فروق مفاهيمية نافعة

  • Java تدير الذاكرة تلقائيًا عبر Garbage Collector؛ C++ يسمح بإدارة يدوية/RAII.
  • Java لا تدعم الوراثة المتعددة للأصناف لكنها تدعم تعدد الواجهات؛ C++ يسمح بوراثة متعددة.
  • المؤشرات الخام مركزية في C++ أكثر من Java.
  • كلاهما يدعم التجريد، التغليف، الوراثة، وتعدد الأشكال.

مثال محلول: تعدد الأشكال بالأشكال الهندسية

class Forme { double aire() { return 0; } }

class Cercle extends Forme {
    private double r;
    Cercle(double r) { this.r = r; }
    @Override double aire() { return Math.PI * r * r; }
}

class Carre extends Forme {
    private double c;
    Carre(double c) { this.c = c; }
    @Override double aire() { return c * c; }
}

Forme[] t = { new Cercle(1), new Carre(2) };
for (Forme f : t) System.out.println(f.aire());

الناتج: 3.14159... ثم 4.0. المتغير f من النوع Forme لكن الطريقة المنفذة تُحدَّد بنوع الكائن الفعلي وقت التشغيل: هذا هو الربط الدينامي. ولو أضفنا صنف Triangle لما احتجنا تعديل الحلقة، وهنا تظهر فائدة التعدد في تقليل الاقتران.

مثال: التغليف يحمي الحالة

class Compte {
    private double solde;
    public void retirer(double m) {
        if (m > 0 && m <= solde) solde -= m;
    }
    public double getSolde() { return solde; }
}

لو كان solde عامًا لأمكن لأي كود أن يضع رصيدًا سالبًا. الطريقة هي الحارس الوحيد للثوابت (الرصيد لا يصير سالبًا).

وراثة أم تركيب؟

  • "الدائرة هي شكل" علاقة is-a: وراثة مناسبة.
  • "السيارة لها محرك" علاقة has-a: تركيب، والمحرك حقل داخل الصنف لا أب له.

أسئلة تدريب

1. في Java، أيّ العلاقتين overload وأيّهما override: طريقتان afficher() وafficher(int n) في صنف واحد؟

هذا overloading: الاسم نفسه بتوقيعين مختلفين داخل الصنف، ويُحسم الاختيار عادة وقت الترجمة.

2. لماذا لا يكون Pile ابنًا لـ ArrayList بالضرورة؟

لأن الوراثة تُورِّث كل العمليات، فيمكن إدراج عنصر في وسط المكدس وهذا يكسر مبدأ LIFO. التركيب (حقل قائمة داخل المكدس) يكشف عمليتي push وpop فقط.

3. ما دور الباني؟

تهيئة الكائن عند إنشائه بحالة صحيحة، كأن يرفض قيمة سالبة لنصف قطر.

كن أول من يقيّم هذا الفصل

كيف يعمل الويب؟

الويب منظومة موارد تُعرّف بعناوين URL، وتُنقل أساسًا عبر HTTP/HTTPS. عند إدخال عنوان، يترجم DNS اسم النطاق إلى عنوان IP؛ ينشئ العميل اتصالًا بالخادم، ويرسل طلب HTTP، ثم يستقبل استجابة تحمل رمز حالة ورؤوسًا ومحتوى.

HTTP: الطلب والاستجابة

طرق شائعة: GET لجلب مورد، POST لإرسال بيانات/إنشاء معالجة، PUT للتحديث الكامل في سياقات API، وDELETE للحذف. رموز الحالة تقسم إلى فئات: 2xx نجاح، 3xx إعادة توجيه، 4xx خطأ من جهة العميل، 5xx خطأ من جهة الخادم.

HTTPS هو HTTP فوق قناة مؤمنة بـ TLS، ويوفر تشفيرًا وسلامة للبيانات ومصادقة للخادم عبر الشهادات الرقمية.

HTML: بنية الوثيقة

HTML يصف البنية الدلالية للمحتوى: عناوين، فقرات، روابط، صور، جداول، نماذج. الأفضل استعمال عناصر دلالية مثل header، nav، main، section، article بدل جعل كل شيء div.

<form method="post" action="/login.php">
  <label>Email</label>
  <input type="email" name="email" required>
  <button type="submit">Connexion</button>
</form>

CSS: العرض ونموذج الصندوق

CSS تفصل العرض عن المحتوى. كل عنصر ينظر إليه ضمن نموذج الصندوق: content → padding → border → margin. مفاهيم أساسية: المحددات، الوراثة، التتالي، النوعية specificity، Flexbox، Grid، والاستجابة لأحجام الشاشات.

JavaScript: السلوك في المتصفح

JavaScript تتعامل مع DOM، الأحداث، التحقق من المدخلات، والطلبات غير المتزامنة. الـ DOM تمثيل شجري للصفحة؛ تعديل عقده يغير ما يراه المستخدم دون إعادة تحميل كاملة.

const btn = document.querySelector("#btn");
btn.addEventListener("click", () => {
  document.querySelector("#msg").textContent = "Bonjour";
});

PHP: التنفيذ على الخادم

PHP تنفذ على الخادم؛ لا يصل الكود نفسه إلى المتصفح، بل نتيجة التنفيذ. تعالج بيانات النماذج عبر $_GET و$_POST، وتتعامل مع الجلسات وقواعد البيانات. ينبغي دائمًا التحقق من المدخلات ومعالجتها بأمان.

PHP وMySQL والأمن الأساسي

عند إرسال قيم المستخدم إلى SQL يجب تفادي بناء الاستعلام بالوصل النصي المباشر، لأن ذلك يفتح باب SQL Injection. القاعدة الصحيحة هي استعمال prepared statements. كما يجب ترميز المخرجات عند إدراج بيانات المستخدم في HTML للحد من XSS.

Cookies وSessions

HTTP عديم الحالة في الأصل. ملفات الارتباط cookies تخزن معلومات صغيرة لدى العميل، أما الجلسة session فتحفظ الحالة غالبًا على الخادم ويربطها العميل بمعرف جلسة. من المهم تمييز موقع التخزين ومستوى الحساسية.

مثال محلول: تتبع طلب HTTP

عند كتابة عنوان صفحة، يترجم DNS اسم النطاق إلى عنوان IP، ثم يرسل المتصفح طلبًا كهذا:

GET /notes.php?classe=1A HTTP/1.1
Host: exemple.ma

فيرد الخادم بسطر حالة ورؤوس ومحتوى: HTTP/1.1 200 OK ثم صفحة HTML. إن لم يوجد المورد جاء 404؛ وإن وقع عطل في كود الخادم جاء 500؛ وإن نُقل المورد نهائيًا جاء 301 مع عنوان جديد؛ وإن مُنع الوصول جاء 403.

مثال: النوعية في CSS

p      { color: red; }
.info  { color: blue; }
#titre { color: green; }

<p id="titre" class="info">...</p>   /* النتيجة: green */

ترتيب القوة: المعرّف #id أقوى من الفئة .class التي هي أقوى من اسم العنصر. وعند تساوي النوعية تفوز القاعدة الأخيرة في الترتيب.

مثال: استعلام آمن في PHP

// خطر: وصل نصي مباشر
$sql = "SELECT * FROM users WHERE email = '$email'";

// آمن: استعلام مُحضَّر
$st = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$st->execute([$email]);

// ترميز المخرجات ضد XSS
echo htmlspecialchars($nom, ENT_QUOTES, 'UTF-8');

إذا أدخل مهاجم ' OR '1'='1 في الصيغة الأولى صار الشرط صحيحًا دائمًا. في الصيغة الثانية تُعامل القيمة بيانات لا شيفرة.

CookieSession
موقع التخزينلدى العميلغالبًا على الخادم، ومعها معرّف لدى العميل
الملاءمةتفضيلات غير حساسة (اللغة)حالة الدخول وبيانات حساسة

أخطاء شائعة

  • الاعتقاد أن شيفرة PHP تصل إلى المتصفح: يصل ناتجها فقط.
  • التحقق من المدخلات في JavaScript وحدها: يمكن تجاوزه، فالتحقق الملزم على الخادم.
  • إرسال كلمة المرور بـ GET فتظهر في العنوان وفي السجلات.

أسئلة تدريب

1. لماذا يُستعمل POST لنموذج الدخول؟

لأن GET يضع القيم في العنوان فتظهر في السجل والتاريخ؛ POST يضعها في جسم الطلب. وهو ليس بديلًا عن HTTPS الذي يحمي القناة.

2. ما الفرق بين 404 و500؟

404 خطأ من جهة العميل: المورد المطلوب غير موجود. 500 خطأ من جهة الخادم: فشل داخلي أثناء المعالجة.

3. ماذا يضيف HTTPS إلى HTTP؟

التشفير وسلامة البيانات ومصادقة الخادم بالشهادة الرقمية عبر TLS.

كن أول من يقيّم هذا الفصل

من الكيان إلى الجدول

قاعدة البيانات مجموعة منظمة من البيانات تديرها منظومة SGBD/DBMS. في النمذجة المفاهيمية: الكيان شيء نريد تخزين معلومات عنه، السمة خاصية، العلاقة/الارتباط صلة بين كيانات.

المفاتيح والقيود

  • Primary Key: يعرّف كل صف تعريفًا فريدًا ولا يقبل التكرار.
  • Foreign Key: يربط جدولًا بجدول آخر ويحافظ على التكامل المرجعي.
  • UNIQUE: يمنع التكرار في عمود/مجموعة أعمدة.
  • NOT NULL: يفرض وجود قيمة.
  • CHECK: يفرض شرطًا منطقيًا على القيم إذا كان النظام يدعمه.

إنشاء الجداول

CREATE TABLE Etudiant (
    id INT PRIMARY KEY,
    nom VARCHAR(80) NOT NULL,
    classe_id INT,
    moyenne DECIMAL(4,2),
    FOREIGN KEY (classe_id) REFERENCES Classe(id)
);

CRUD وSELECT

العمليات الأساسية: INSERT للإضافة، SELECT للقراءة، UPDATE للتعديل، DELETE للحذف.

SELECT nom, moyenne
FROM Etudiant
WHERE moyenne >= 10
ORDER BY moyenne DESC;

الترشيح يتم بـ WHERE، الترتيب بـ ORDER BY، التجميع بـ GROUP BY، وترشيح المجموعات بـ HAVING.

الدوال التجميعية

الدوال COUNT، SUM، AVG، MIN، MAX تعمل على مجموعات صفوف. قاعدة مهمة: WHERE يرشح الصفوف قبل التجميع، بينما HAVING يرشح المجموعات بعده.

الربط Joins

INNER JOIN يعيد الصفوف التي تحقق شرط الربط في الطرفين. LEFT JOIN يحتفظ بكل صفوف الجدول الأيسر حتى لو لم يوجد مطابق في الأيمن، مع قيم NULL عند غياب المطابقة.

SELECT e.nom, c.libelle
FROM Etudiant e
JOIN Classe c ON e.classe_id = c.id;

التكامل والمعاملات

المعاملة transaction مجموعة عمليات يجب أن تعامل كوحدة. المبادئ الشهيرة ACID: الذرية، الاتساق، العزل، الاستمرارية. رغم أنها ليست منصوصًا عليها حرفيًا في التوصيف، فهي توضح لماذا لا تُفهم قواعد البيانات كمجرد جداول وSQL بل كنظام يحمي الاتساق.

مثال محلول على جدولين

لنفرض الجدولين: Classe: (1, '1A')، (2, '1B'). وEtudiant (id, nom, classe_id, moyenne): (1, Ali, 1, 12.00)، (2, Sara, 1, 9.00)، (3, Omar, 2, 15.00)، (4, Lina, NULL, 11.00).

الاستعلامالنتيجة
... Etudiant e JOIN Classe c ON e.classe_id = c.id3 صفوف (Ali وSara وOmar)؛ تُستبعد Lina لأن لا مطابق لها
... Etudiant e LEFT JOIN Classe c ON e.classe_id = c.id4 صفوف؛ Lina تظهر مع NULL في العمود libelle
SELECT COUNT(*) FROM Etudiant4
SELECT COUNT(classe_id) FROM Etudiant3 (القيم NULL لا تُحتسب)

الفرق بين WHERE وHAVING بمثال

-- (أ) ترشيح الصفوف قبل التجميع
SELECT c.libelle, AVG(e.moyenne)
FROM Etudiant e JOIN Classe c ON e.classe_id = c.id
WHERE e.moyenne >= 10
GROUP BY c.libelle;

-- (ب) ترشيح المجموعات بعد التجميع
SELECT c.libelle, AVG(e.moyenne)
FROM Etudiant e JOIN Classe c ON e.classe_id = c.id
GROUP BY c.libelle
HAVING AVG(e.moyenne) >= 11;

الاستعلام (أ): تُحذف Sara (9) أولًا فيصير متوسط 1A هو 12.00 ومتوسط 1B هو 15.00. الاستعلام (ب): متوسط 1A هو (12 + 9) / 2 = 10.50 فلا يستوفي الشرط، فلا يظهر إلا 1B بـ15.00. الاستعلامان يختلفان لأن ترتيب التنفيذ مختلف.

أخطاء شائعة

  • WHERE classe_id = NULL: لا تُعيد شيئًا. الصحيح IS NULL، فالمقارنة بـ NULL لا تكون صحيحة أبدًا.
  • DELETE FROM Etudiant; دون WHERE تحذف كل الصفوف.
  • استعمال دالة تجميعية في WHERE؛ مكانها HAVING.
  • كتابة عمود غير مجمَّع في SELECT مع GROUP BY.
  • إدراج قيمة classe_id لا توجد في Classe: يرفضها المفتاح الأجنبي، وهذا مقصود لحماية التكامل المرجعي.

أسئلة تدريب

1. اكتب استعلامًا يعرض أسماء التلاميذ الذين لا قسم لهم.

SELECT nom FROM Etudiant WHERE classe_id IS NULL; ويعيد Lina.

2. متى نستعمل LEFT JOIN بدل INNER JOIN؟

حين نريد الاحتفاظ بصفوف الجدول الأيسر ولو غاب المطابق، كعرض كل التلاميذ بما فيهم من لا قسم لهم.

3. ما فائدة المفتاح الأساسي؟

يعرّف كل صف تعريفًا فريدًا ولا يقبل التكرار ولا NULL، ويُستعمل هدفًا للمفاتيح الأجنبية.

كن أول من يقيّم هذا الفصل

نظام المعلومات

نظام المعلومات ليس البرنامج وحده. إنه تنظيم يضم أشخاصًا، إجراءات، بيانات، موارد مادية وبرمجية، وقواعد تشغيل؛ هدفه جمع المعلومات ومعالجتها وتخزينها وتوزيعها لدعم نشاط المؤسسة وقراراتها.

حالات الاستخدام Use Case

مخطط حالات الاستخدام يجيب: من يتفاعل مع النظام؟ وما الخدمة التي يطلبها؟ العناصر: الممثل Actor، حالة الاستخدام، وحدود النظام، وعلاقات مثل include وextend والتعميم. لا يصف المخطط تفاصيل الخوارزمية الداخلية.

مخطط الأصناف Class Diagram

يمثل البنية الساكنة: أصناف، خصائص، عمليات، وعلاقات.

  • Association: ارتباط عام بين كائنات.
  • Aggregation: علاقة جزء/كل ضعيفة؛ الجزء يمكن أن يعيش مستقلًا.
  • Composition: علاقة جزء/كل قوية؛ عمر الجزء مرتبط بالكل.
  • Inheritance/Generalization: تخصص صنف من صنف أكثر عمومية.

التعددية multiplicity مثل 1، 0..1، *، 1..* تحدد عدد الكائنات المرتبطة.

مخطط التسلسل Sequence Diagram

يصف التفاعل الزمني بين كائنات/فاعلين عبر رسائل مرتبة من الأعلى إلى الأسفل. يفيد في تفصيل سيناريو حالة استخدام: من يبدأ الطلب، من يستدعي من، ومتى يرجع الجواب. هو مخطط ديناميكي، بخلاف مخطط الأصناف ذي الطبيعة البنيوية.

تدبير المشروع المعلوماتي

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

عناصر التدبير

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

في مشروع برمجي، التوثيق، التحكم في النسخ، الاختبارات، وقابلية الصيانة ليست ملحقات؛ بل عناصر في جودة المنتج وسلامة التطوير.

مثال محلول: نظام لتتبع غياب التلاميذ

حالات الاستخدام. الممثلون: الأستاذ، الحارس العام، ولي الأمر. حالات الاستخدام: «تسجيل الغياب» (الأستاذ)، «استشارة الغيابات» (الحارس وولي الأمر)، «إرسال إشعار» (يُستدعى من «تسجيل الغياب»)، «توثيق غياب بشهادة» (الحارس).

  • «include»: «تسجيل الغياب» تتضمن دائمًا «التحقق من الهوية»، إذ لا تتم بدونها.
  • «extend»: «طباعة تقرير» امتداد اختياري لـ«استشارة الغيابات»، تحدث في بعض الحالات فقط.

مخطط الأصناف.

العلاقةالنوعالتعدديةالتبرير
قسم — تلميذارتباطقسم 1 ↔ 1..* تلميذالتلميذ ينتمي إلى قسم واحد في السنة الدراسية
تلميذ — غيابتركيب1 ↔ 0..*سجل الغياب لا معنى له دون التلميذ
تلميذ — مادةارتباط *..* بصنف ارتباط* ↔ *العلاقة تحمل بيانات (النقطة)، فتصير صنفًا مستقلًا

مخطط التسلسل لحالة «تسجيل الغياب»: الأستاذ ← واجهة التسجيل: choisirClasse() ← النظام: chargerEleves() ← الأستاذ: marquerAbsent(élève) ← النظام: enregistrer() ← قاعدة البيانات ← رسالة تأكيد.

أخطاء شائعة

  • رسم خطوات الخوارزمية داخل مخطط حالات الاستخدام: هذا المخطط يبيّن الخدمات لا التفاصيل.
  • الخلط بين include (إلزامي) وextend (اختياري)، أو عكس اتجاه السهم.
  • اعتبار كل علاقة جزء/كل تركيبًا؛ التركيب يشترط ارتباط عمر الجزء بالكل.

أسئلة تدريب

1. أيّ مخطط يجيب: «في أي ترتيب تُتبادل الرسائل؟»

مخطط التسلسل، لأنه يصف التفاعل الزمني، بينما مخطط الأصناف يصف البنية.

2. ما الفرق بين التجميع والتركيب؟

في التجميع يعيش الجزء مستقلًا عن الكل (أستاذ وقسم الأساتذة)، أما في التركيب فيزول الجزء بزوال الكل (فاتورة وبنودها).

3. لماذا لا يكفي «الإنجاز» في دورة حياة المشروع؟

لأن الجودة تتطلب تحليلًا يسبقه واختبارًا ونشرًا وصيانة بعده، وإهمال أي مرحلة ينعكس على الكلفة والأجل.

كن أول من يقيّم هذا الفصل

دور نظام التشغيل

نظام التشغيل طبقة وسيطة تدير الموارد وتوفر خدمات للبرامج. وظائفه المحورية في التوصيف: إدارة العمليات، الذاكرة، الملفات، والإدخال/الإخراج.

العمليات Processes

البرنامج ملف ساكن، أما العملية فهي برنامج قيد التنفيذ مع حالة وذاكرة وسياق. حالات مبسطة: جديد، جاهز، قيد التنفيذ، انتظار/محجوب، منتهٍ. يقرر المجدول أي عملية تستعمل المعالج.

خوارزميات جدولة شائعة

  • FCFS: أول داخل أول مخدوم؛ بسيط وقد يسبب انتظارًا طويلًا.
  • SJF: الأقصر أولًا؛ جيد لمتوسط الانتظار لكنه يحتاج تقدير زمن التنفيذ.
  • Round Robin: شرائح زمنية؛ مناسب للأنظمة التفاعلية.

التزامن ومشكلة السباق

عندما تشترك عمليات/خيوط في مورد يمكن أن تحدث race condition. تستعمل آليات مثل mutex وsemaphore لتنظيم الدخول إلى المقاطع الحرجة.

إدارة الذاكرة

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

Page fault يحدث عندما تحتاج العملية إلى صفحة غير موجودة حاليًا في RAM؛ عندها يجب جلبها من التخزين.

نظام الملفات

يوفر أسماء وملفات ومجلدات وأذونات وبيانات وصفية. المسار قد يكون مطلقًا أو نسبيًا. الأذونات في Unix/Linux تقرأ غالبًا كثلاثيات: قراءة r، كتابة w، تنفيذ x للمستخدم والمجموعة والآخرين.

الإدخال/الإخراج

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

أوامر Linux الشائعة

الأمرالغرض
pwdإظهار المجلد الحالي
lsعرض المحتويات
cdتغيير المجلد
mkdir / rmdirإنشاء/حذف مجلد فارغ
cp / mv / rmنسخ/نقل-إعادة تسمية/حذف
cat / lessعرض محتوى ملف
grepالبحث عن نمط نصي
chmodتعديل الأذونات
ps / topمعاينة العمليات
killإرسال إشارة إلى عملية

أوامر Windows CMD الشائعة

الأمرالغرض
dirعرض ملفات ومجلدات
cdتغيير المسار
mkdir / rmdirإنشاء/حذف مجلد
copy / move / delنسخ/نقل/حذف
typeعرض ملف نصي
clsمسح الشاشة
ipconfigعرض إعدادات IP
pingاختبار الوصول عبر ICMP
tasklist / taskkillعرض العمليات/إنهاؤها

مثال محلول: مقارنة خوارزميات الجدولة

ثلاث عمليات تصل كلها عند اللحظة 0، بأزمنة تنفيذ: P1 = 5 وP2 = 3 وP3 = 1.

الخوارزميةترتيب التنفيذأزمنة الانتظارالمتوسط
FCFSP1، P2، P30، 5، 813/3 ≈ 4.33
SJFP3، P2، P10، 1، 45/3 ≈ 1.67
Round Robin (شريحة 2)P1، P2، P3، P1، P2، P1P1: 4، P2: 5، P3: 413/3 ≈ 4.33

في Round Robin: ينتهي P3 عند 5، وP2 عند 8، وP1 عند 9. وزمن الانتظار = زمن الانتهاء − زمن التنفيذ (لأن الوصول عند 0). SJF يعطي أقل متوسط انتظار هنا، لكن RR يضمن لكل عملية دورًا سريعًا، وهذا مهم في الأنظمة التفاعلية.

مثال: حالة السباق

خيطان ينفذان compteur++ والقيمة الأولى 0. العملية في الحقيقة ثلاث خطوات: قراءة، زيادة، كتابة. إذا قرأ الخيطان القيمة 0 قبل أن يكتب أحدهما، كتب كل منهما 1، فتكون النتيجة 1 بدل 2. الحل: حماية المقطع الحرج بـ mutex.

مثال: الذاكرة الصفحية

بحجم صفحة 4096 بايت، العنوان الافتراضي 10000 يقع في الصفحة ⌊10000 / 4096⌋ = 2 بإزاحة 10000 − 2 × 4096 = 1808. يبحث النظام في جدول الصفحات عن الإطار المقابل للصفحة 2 ويضيف الإزاحة.

مثال: قراءة الأذونات

chmod 754 rapport.txt: الرقم 7 للمالك = rwx، و5 للمجموعة = r-x، و4 للآخرين = r--. وعكسيًا فإن -rw-r--r-- تعني 644.

أخطاء شائعة

  • الخلط بين البرنامج (ملف ساكن) والعملية (برنامج قيد التنفيذ).
  • الظن أن الذاكرة الافتراضية تعني أن الذاكرة بلا حدود؛ كثرة page fault تبطئ النظام بشدة.
  • حذف ملف بـ rm يختلف عن إرساله إلى سلة المحذوفات؛ لا استرجاع تلقائي في سطر الأوامر.

أسئلة تدريب

1. ما خطر SJF؟

قد يجوّع العمليات الطويلة إن توالى وصول عمليات قصيرة، ويتطلب أيضًا تقدير زمن التنفيذ مسبقًا.

2. ما أذونات ملف chmod 600؟

قراءة وكتابة للمالك فقط (rw-------).

3. ماذا يحدث عند page fault؟

تُقاطَع العملية، ويجلب النظام الصفحة المطلوبة من التخزين إلى إطار في RAM (وقد يُخلي إطارًا آخر)، ثم تُستأنف العملية.

كن أول من يقيّم هذا الفصل

LAN / MAN / WAN

  • LAN: شبكة محلية ضمن مساحة محدودة كمدرسة أو مؤسسة.
  • MAN: نطاق حضري/مدينة، بين LAN وWAN.
  • WAN: نطاق جغرافي واسع؛ الإنترنت أكبر مثال عملي.

التصنيف يتعلق أساسًا بالامتداد ونموذج الربط والإدارة، لا بنوع بروتوكول واحد بعينه.

نموذج OSI

الطبقةالوظيفة المركزيةأمثلة/مفاهيم
7 Applicationخدمات التطبيقاتHTTP, DNS, SMTP
6 Presentationالتمثيل/الترميز/التشفيرصيَغ وتمثيلات
5 Sessionإدارة الجلساتتنسيق الحوار
4 Transportالنقل طرف-لطرفTCP, UDP, ports
3 Networkالعنونة والتوجيهIP, routers
2 Data Linkالإطارات والوصول للوسطEthernet, MAC
1 Physicalالإشارات والوسطكابل/موجة/موصل

نموذج TCP/IP

يُبسط عادة إلى أربع طبقات: Application، Transport، Internet، Network Access. OSI نموذج مرجعي سباعي، بينما TCP/IP عائلة بروتوكولات عملية بني عليها الإنترنت. المهم ليس حفظ المطابقة حرفيًا، بل معرفة وظيفة كل مستوى ومكان البروتوكولات.

TCP مقابل UDP

TCP اتصالي، موثوق، مرتب، ويستعمل آليات تأكيد وإعادة إرسال وتحكم في التدفق. UDP غير اتصالي وأخف، ولا يضمن التسليم أو الترتيب، ويفيد في حالات تفضل السرعة أو تتحمل الفقد.

IPv4 والعنوان والقناع

IPv4 عنوان 32 بت يكتب أربع مجموعات عشرية. القناع subnet mask يحدد أي البتات للشبكة وأيها للمضيف. الترميز /24 يعني أن 24 بت للشبكة و8 بت للمضيف.

مثال

في شبكة 192.168.1.0/24: عنوان الشبكة هو 192.168.1.0، وعنوان البث عادة 192.168.1.255، ومجال المضيفين التقليدي من .1 إلى .254.

الشبكات الفرعية Subnetting

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

ARP وDHCP وDNS وNAT

  • ARP: ربط عنوان IPv4 المحلي بعنوان MAC.
  • DHCP: توزيع إعدادات الشبكة آليًا كـ IP والقناع والبوابة وDNS.
  • DNS: تحويل أسماء النطاقات إلى عناوين IP وبيانات أخرى.
  • NAT: ترجمة العناوين، ويستعمل كثيرًا لربط شبكة خاصة بالإنترنت عبر عنوان/عناوين عامة.

التوجيه Routing

الموجه يختار القفزة التالية وفق جدول التوجيه. القاعدة الأساسية: البحث عن أفضل مسار مطابق، وعند تساوي الأنماط يفضل أطول بادئة مطابقة longest prefix match. يمكن أن تكون المسارات ثابتة أو تتعلم عبر بروتوكولات توجيه ديناميكية.

البوابة الافتراضية تستخدم عندما لا يملك المضيف مسارًا محليًا أدق للوجهة.

مثال محلول: تقسيم شبكة إلى شبكات فرعية

المطلوب تقسيم 192.168.1.0/24 إلى أربع شبكات فرعية. نقتطع بتّين من جزء المضيف (22 = 4) فتصير البادئة /26 والقناع 255.255.255.192. بقي 6 بتات للمضيفين: 26 − 2 = 62 مضيفًا في كل شبكة.

الشبكةالمضيفونعنوان البث
192.168.1.0/26.1 – .62.63
192.168.1.64/26.65 – .126.127
192.168.1.128/26.129 – .190.191
192.168.1.192/26.193 – .254.255

المضيف 192.168.1.100 ينتمي إلى الشبكة الثانية (64–127). والمضيفان 192.168.1.70 و192.168.1.130 في شبكتين مختلفتين، فلا يتخاطبان إلا عبر موجّه.

مثال: أطول بادئة مطابقة

الوجهةالقاعدةالقفزة التالية
10.0.0.0/8—R1
10.1.0.0/16—R2
0.0.0.0/0 (افتراضية)—R3
  • حزمة إلى 10.1.2.3: تطابق /8 و/16 معًا؛ تفوز /16 لأنها أطول، فالقفزة R2.
  • حزمة إلى 10.9.9.9: تطابق /8 فقط، فالقفزة R1.
  • حزمة إلى 8.8.8.8: لا شيء أدق، فتذهب إلى الافتراضية R3.

مصافحة TCP الثلاثية

قبل نقل البيانات يتبادل الطرفان: SYN من العميل، ثم SYN-ACK من الخادم، ثم ACK من العميل. بذلك يتفقان على أرقام التسلسل، وهذا ما يجعل TCP اتصاليًا. أما UDP فيرسل مباشرة دون مصافحة.

أخطاء شائعة

  • نسيان طرح عنواني الشبكة والبث عند حساب المضيفين: 2h − 2 لا 2h.
  • الخلط بين عنوان MAC (طبقة الوصلة، محلي) وعنوان IP (طبقة الشبكة، منطقي).
  • القول إن DNS يوزع عناوين IP للأجهزة؛ هذا دور DHCP، أما DNS فيترجم الأسماء.

أسئلة تدريب

1. كم مضيفًا في شبكة /27؟

بقي 5 بتات للمضيف: 25 − 2 = 30.

2. لماذا يناسب UDP البث الصوتي المباشر؟

إعادة إرسال حزمة قديمة لا تفيد في البث المباشر؛ يُفضَّل تحمل فقد قليل على تأخر يسببه TCP.

3. ما دور البوابة الافتراضية؟

هي الموجّه الذي يرسل إليه المضيف كل حزمة وجهتها خارج شبكته المحلية.

كن أول من يقيّم هذا الفصل

النموذج الوظيفي

يتكون النظام ذي المعالج الدقيق من: المعالج، الذاكرة المركزية، وحدات الإدخال/الإخراج، والحافلات. تتبادل هذه الوحدات البيانات والعناوين وإشارات التحكم.

المعالج CPU

المعالج يضم عادة:

  • ALU: العمليات الحسابية والمنطقية.
  • Control Unit: فك التعليمات وتنسيق التنفيذ.
  • Registers: ذاكرة صغيرة وسريعة جدًا داخل المعالج.

دورة التعليمة المبسطة: Fetch → Decode → Execute. يُجلب الأمر من الذاكرة، يفك ترميزه، ثم تنفذ العملية وتُحدّث الحالة.

السجلات المهمة

سجل عداد البرنامج PC يشير إلى التعليمة التالية؛ سجل التعليمة IR يحمل التعليمة الجاري فكها؛ وتوجد سجلات عامة ومؤشرات ومكدس بحسب المعمارية.

الذاكرة المركزية والتدرج الهرمي

كلما اقتربت الذاكرة من المعالج زادت سرعتها عادة وقل حجمها: Registers → Cache → RAM → Storage. الذاكرة المخبئية تستغل مبدأي المحلية الزمنية والمكانية لتقليل زمن الوصول المتوسط.

الحافلات Buses

  • Data bus: يحمل البيانات.
  • Address bus: يحدد الموقع/الجهاز المقصود.
  • Control bus: يحمل إشارات مثل قراءة/كتابة ومقاطعات وتزامن.

اتساع حافلة العنوان يرتبط بعدد المواقع الممكن عنونتها؛ اتساع حافلة البيانات يؤثر في كمية البيانات المنقولة في عملية واحدة.

الإدخال/الإخراج والمقاطعات

قد يتعامل المعالج مع جهاز عبر منافذ أو عناوين ذاكرية مخصصة. المقاطعة تجعل الجهاز يطلب خدمة من المعالج عند حدث. أما DMA فيسمح لبعض الأجهزة بنقل كتل بيانات مع تدخل أقل من CPU.

حساب السعة العنوانية

حافلة عنوان من n خطًا تتيح 2n عنوانًا مختلفًا. إذا كان لكل عنوان بايت واحد:

عرض حافلة العنوانعدد العناوينالسعة
16 بتًا65 53664 Kio
20 بتًا1 048 5761 Mio
32 بتًا4 294 967 2964 Gio

تتبع دورة تعليمة

لنفرض أن PC = 100 وأن التعليمة المخزنة في العنوان 100 هي «اجمع محتوى الموضع 200 إلى المراكم».

  1. Fetch: يوضع 100 على حافلة العنوان، تُقرأ التعليمة عبر حافلة البيانات، تُنسخ إلى IR، ثم يصير PC مشيرًا إلى التعليمة التالية.
  2. Decode: تفسّر وحدة التحكم رمز العملية وتعرف أنها جمع وأن المعامل في العنوان 200.
  3. Execute: يُقرأ الموضع 200، تجمع ALU القيمة إلى المراكم، وتُحدَّث أعلام الحالة.

أثر الذاكرة المخبئية على متوسط زمن الوصول

بنموذج مبسّط: T = h × Tc + (1 − h) × Tm، حيث h نسبة الإصابة. إذا كان Tc = 2 ns وTm = 50 ns وh = 0.9 فإن T = 1.8 + 5 = 6.8 ns، أي أقل بكثير من 50 ns. ورفع h إلى 0.99 يعطي 1.98 + 0.5 = 2.48 ns.

الاستقصاء أم المقاطعة؟

الاستقصاء Pollingالمقاطعة Interrupt
المبدأالمعالج يسأل الجهاز دوريًاالجهاز ينبه المعالج عند الحدث
الكلفةوقت معالج ضائع في الانتظارتبديل سياق عند كل مقاطعة
الملاءمةأجهزة سريعة وأحداث متواترةأحداث نادرة وغير متوقعة (لوحة المفاتيح)

أخطاء شائعة

  • الخلط بين حافلة العنوان (تحدد الموضع) وحافلة البيانات (تنقل المحتوى).
  • القول إن الذاكرة المخبئية «تكبّر» الذاكرة الرئيسية؛ هي تقلل زمن الوصول المتوسط فحسب.
  • الخلط بين السجل والذاكرة المخبئية: السجلات داخل المعالج وبأعداد قليلة.

أسئلة تدريب

1. كم بايتًا يمكن عنونتها بحافلة عنوان من 12 خطًا؟

212 = 4096 بايت، أي 4 Kio.

2. ما وظيفة DMA؟

تمكين جهاز من نقل كتلة بيانات مع الذاكرة دون أن يمرّ كل بايت عبر المعالج، فيتفرغ هذا لعمل آخر.

3. لماذا تنجح الذاكرة المخبئية في الواقع؟

بفضل المحلية الزمنية (ما استُعمل يُعاد استعماله قريبًا) والمكانية (ما جاور ما استُعمل يُستعمل غالبًا).

كن أول من يقيّم هذا الفصل

معالجة النصوص المتقدمة

المستوى المتقدم لا يعني تغيير الخط والحجم فقط، بل بناء وثيقة منظمة قابلة للصيانة. مفاهيم رئيسية: الأنماط styles، العناوين الهرمية، المقاطع sections، الرؤوس والتذييلات، ترقيم الصفحات، الجداول، الصور، الإحالات، الفهرس الآلي، والتعليقات/تعقب التغييرات.

ميزة الأنماط أنها تفصل المعنى البنيوي عن التنسيق اليدوي؛ فإذا غُيّر نمط عنوان تتغير جميع العناوين المرتبطة به.

الدمج البريدي Mail Merge

يربط قالب وثيقة بمصدر بيانات لتوليد نسخ شخصية عديدة: شهادات، استدعاءات، مراسلات. المكونات: المستند الرئيسي، مصدر البيانات، حقول الدمج، ثم المعاينة/التوليد.

الجداول الحسابية

الخلية قد تحمل قيمة أو صيغة. المراجع: نسبية A1، مطلقة $A$1، أو مختلطة. عند نسخ الصيغة تتغير المراجع النسبية وتثبت المطلقة.

وظائف محورية

SUM، AVERAGE، MIN، MAX، COUNT، IF، وعمليات البحث مثل VLOOKUP/XLOOKUP بحسب البرنامج. كما تعد الجداول المحورية Pivot Tables أداة تلخيص وتحليل دينامي للبيانات.

التحقق من صحة البيانات، التنسيق الشرطي، الفرز والترشيح، الرسوم، وحماية الخلايا تدخل في الاستعمال المتقدم.

العروض التقديمية

المستوى المتقدم يشمل: القالب والنسق، الشريحة الرئيسية Slide Master، التخطيط المتسق، إدراج الرسوم والوسائط، ضبط الانتقالات والحركات دون إفراط، والتمييز بين محتوى الشريحة وملاحظات المقدم.

SGBD ضمن البرمجيات المكتبية

عند استعمال برنامج مكتبي لقواعد البيانات، تبقى المفاهيم نفسها: جداول، حقول، أنواع، مفاتيح، علاقات، استعلامات، نماذج وتقارير. النموذج واجهة إدخال/عرض؛ التقرير مخرج منسق؛ والاستعلام أداة لاستخراج/تحويل البيانات.

خدمات الإنترنت

الخدمات تشمل الويب، البريد الإلكتروني، نقل الملفات، التخزين السحابي، المؤتمرات، البحث، والتعاون. ينبغي تمييز الإنترنت كبنية شبكية عالمية عن الويب كخدمة تعمل فوقها.

البريد الإلكتروني: بنية الخدمة

SMTP يستعمل لإرسال البريد بين العملاء/الخوادم أو بين الخوادم. IMAP يتيح مزامنة الصندوق مع الخادم، بينما POP3 يميل إلى نموذج تنزيل الرسائل. الويب ميل ليس بروتوكولًا بريديًا مستقلًا؛ هو واجهة ويب للوصول إلى خدمة البريد.

مثال محلول: المراجع في الجداول الحسابية

في الخلية C2 الصيغة =B2*$F$1، حيث F1 تحمل نسبة ثابتة. عند سحب الصيغة إلى C3 تصير =B3*$F$1: المرجع النسبي B2 انزاح بسطر، والمطلق $F$1 ثبت. المرجع المختلط $A1 يثبت العمود ويحرك السطر، وA$1 بالعكس.

شرط وبحث: =IF(B2>=10;"ناجح";"راسب") (يختلف الفاصل بين ; و, بحسب إعدادات البرنامج). و=VLOOKUP(A2;Table;2;FALSE) بحث عن تطابق تام؛ يغفل كثيرون المعامل الأخير فتُعاد نتيجة تقريبية خاطئة.

مثال: الدمج البريدي لاستدعاءات

  1. مصدر البيانات: جدول فيه الأعمدة nom وclasse وdate.
  2. المستند الرئيسي: نص الاستدعاء مع حقول «nom» و«classe» و«date».
  3. المعاينة للتأكد من صحة الحقول، ثم توليد مستند فيه نسخة لكل سطر في المصدر.
البروتوكولدوره
SMTPإرسال الرسائل من العميل إلى الخادم ثم بين الخوادم
IMAPقراءة الرسائل مع إبقائها على الخادم ومزامنة الأجهزة
POP3تنزيل الرسائل إلى الجهاز (وغالبًا حذفها من الخادم)

أخطاء شائعة

  • التنسيق اليدوي لكل عنوان بدل نمط العناوين، فيتعذر بناء الفهرس الآلي.
  • كتابة نتيجة محسوبة كقيمة ثابتة بدل الصيغة، فلا تتحدث عند تغيّر المصدر.
  • الخلط بين الإنترنت (بنية الشبكات) والويب (خدمة تعمل فوقها).

أسئلة تدريب

1. لماذا الأنماط أفضل من التنسيق اليدوي؟

لأن تعديل نمط واحد يعدّل جميع العناصر المرتبطة به، ولأن العناوين بالنمط تغذي الفهرس الآلي.

2. ما الذي يحدث لـ $A$1 عند النسخ؟

لا يتغير؛ هو مرجع مطلق على العمود والسطر معًا.

3. أيّ بروتوكول يناسب من يقرأ بريده من هاتف وحاسوب معًا؟

IMAP، لأنه يبقي الرسائل على الخادم ويزامن حالتها بين الأجهزة.

كن أول من يقيّم هذا الفصل

سلسلة إنتاج المحتوى

التوصيف يحدد خمس أفكار مترابطة: الاكتساب → المونتاج → التحرير الرقمي → الترميز → النشر. يجب فهم كل مرحلة لا حفظ أسماء برامج.

اكتساب الصورة

الصورة النقطية شبكة بكسلات. جودتها تتأثر بالأبعاد البكسلية، عمق اللون، جودة المستشعر/المسح، والضغط. الدقة الطباعية PPI/DPI تختلف عن مجرد عدد البكسلات، ويجب عدم الخلط بينها.

نماذج اللون

RGB نموذج ضوئي إضافي للشاشات؛ CMYK نموذج طرحي للطباعة. تغيير فضاء اللون قد يغير المجال اللوني الممكن تمثيله، لذلك يجب اختيار النموذج وفق وسيط النشر.

صيغ الصور والضغط

  • JPEG: ضغط فقدي، مناسب غالبًا للصور الفوتوغرافية.
  • PNG: ضغط غير فقدي ودعم للشفافية.
  • GIF: لوحة ألوان محدودة ودعم للحركة البسيطة.
  • SVG: متجهي، مناسب للرسوم والأيقونات وقابل للتكبير دون بكسلة.

الصوت الرقمي

تحويل الصوت إلى رقمي يعتمد على معدل أخذ العينات وعمق البت وعدد القنوات. معدل عينات أعلى يسمح بتمثيل ترددات أعلى ضمن حدود نظرية أخذ العينات، وعمق بت أكبر يزيد دقة مستويات السعة.

WAV قد يخزن صوتًا غير مضغوط أو PCM؛ MP3/AAC أمثلة على ترميز ضياعي لتقليل الحجم.

الفيديو: إطار، معدل، دقة

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

Codec مقابل Container

Codec يحدد كيف تضغط/تفك بيانات الفيديو أو الصوت مثل H.264/H.265. Container يجمع المسارات والبيانات الوصفية مثل MP4/MKV. ملف MP4 ليس "خوارزمية ضغط" في حد ذاته؛ يمكن أن يحمل مسارات مرمزة بترميزات مختلفة.

المونتاج والتحرير

التحرير غير الخطي يعتمد خطًا زمنيًا، مسارات، قصًا، انتقالات، مؤثرات، مزج صوت، ومعالجة لون. المبدأ الجيد: احتفظ بنسخة أصلية، اعمل على مشروع قابل للتعديل، ثم صدّر نسخة نهائية وفق وسيط النشر.

الترميز والنشر

عند التصدير نختار: الدقة، معدل الإطارات، codec، معدل البت، إعدادات الصوت والحاوية. النشر للويب يوازن بين الجودة والحجم وسرعة التحميل والتوافق. كما يجب مراعاة حقوق الاستخدام والخصوصية وإمكانية الوصول.

حسابات الحجم: ثلاثة أمثلة محلولة

الحالةالحسابالنتيجة
صورة 1920×1080 بـ24 بتًا للبكسل، غير مضغوطة1920 × 1080 × 3 بايت6 220 800 بايت ≈ 5.9 Mio
صوت بجودة قرص مدمج: 44 100 Hz، 16 بتًا، قناتان44 100 × 16 × 21 411 200 بت/ث ≈ 1411 kbit/s
دقيقة واحدة من الصوت نفسه1 411 200 × 60 / 810 584 000 بايت ≈ 10.1 Mio
دقيقة فيديو بمعدل بت 5 Mbit/s5 × 60 / 8نحو 37.5 Mo

الفرق بين الحجم الخام والحجم المضغوط هو سبب وجود الترميز. وأخذ العينات: لتمثيل ترددات حتى 20 kHz يلزم معدل يفوق ضعفها، أي أكثر من 40 kHz، ومن هنا اختير 44.1 kHz للأقراص المدمجة.

اختيار الصيغة المناسبة

الحاجةالاختيارالسبب
صورة فوتوغرافية للويبJPEGضغط فقدي بحجم صغير مقبول بصريًا
شعار بخلفية شفافةPNG أو SVGشفافية وحدود حادة بلا فقد
أيقونة تُكبَّر لأحجام عدةSVGمتجهية لا تتبكسل
تسجيل صوتي للأرشفةWAVغير مضغوط
موسيقى للنشرMP3 أو AACضياعي بحجم أصغر

أخطاء شائعة

  • إعادة حفظ صورة JPEG مرارًا: في كل مرة يتراكم فقد جديد.
  • تكبير صورة منخفضة الدقة وتوقع تحسن الجودة؛ لا تُسترد تفاصيل غير مسجّلة.
  • القول إن MP4 "ضغط"؛ هو حاوية، والترميز مثل H.264 هو الذي يضغط.
  • تصدير للويب بنموذج CMYK، والشاشة تعمل بـ RGB.

أسئلة تدريب

1. ما الفرق بين الترميز codec والحاوية container؟

الترميز خوارزمية ضغط وفك للصوت أو الفيديو، والحاوية ملف يجمع المسارات والبيانات الوصفية. الحاوية الواحدة تحمل ترميزات مختلفة.

2. لماذا يُصدَّر الشعار الذي سيُطبع بـ CMYK؟

لأن الطباعة نموذج طرحي بالأحبار، فتُراجع الألوان في فضائها الفعلي بدل مفاجأة اختلافها عن الشاشة.

3. ماذا يحدث لجودة الصوت إذا خُفِّض عمق البت من 16 إلى 8؟

تقل دقة مستويات السعة (256 مستوى بدل 65 536)، فيظهر ضجيج تكميم أوضح.

كن أول من يقيّم هذا الفصل

أقوى طريقة لتثبيت هذه المادة ليست دراسة الفصول كجزر. لنأخذ مثال تطبيق ويب لإدارة نتائج المتعلمين:

  1. الخوارزميات: حساب المعدلات، الفرز، البحث، التحقق من القيم.
  2. بنى المعطيات: مصفوفات/قوائم أثناء المعالجة، وأشجار/رسوم إذا كانت العلاقات معقدة.
  3. البرمجة: C يوضح المنطق المهيكل والذاكرة، بينما Java/C++ يوضحان التصميم الكائني.
  4. الويب: HTML/CSS/JS للواجهة، PHP للمعالجة الخادمية، HTTP للاتصال.
  5. قواعد البيانات: جداول الطلبة والمواد والنقط، مفاتيح وعلاقات واستعلامات.
  6. UML: توصيف الفاعلين والسيناريوهات والأصناف والتفاعلات قبل التنفيذ.
  7. نظام التشغيل: يدير العمليات والذاكرة والملفات التي يعتمد عليها الخادم.
  8. الشبكة: IP، DNS، TCP، التوجيه تنقل الطلب من العميل إلى الخادم.
  9. المعمارية: CPU والذاكرة والحافلات تنفذ في النهاية كل تعليمات البرنامج.
  10. المكتبيات والوسائط: تستعمل في تقارير الإدارة، عرض النتائج، وإنتاج المحتوى المصاحب.
قاعدة للمراجعة العميقة

عند أي مفهوم، اسأل أين يوجد في السلسلة بيانات → خوارزمية → برنامج → نظام → شبكة → خدمة/منتج. هذا الربط يقلل الحفظ المتناثر، ويزيد القدرة على تمييز إجابات QCM المتقاربة.

مثال ثانٍ: من الفكرة إلى الإتاحة

لنتتبع مسارا معاكسا: طلب مستخدم صفحة نتائجه عبر المتصفح. الشبكة (DNS ثم TCP) توجه الطلب إلى الخادم، الذي ينفذ نظام تشغيله عملية استقبال الطلب وتشغيل برنامج المعالجة. البرنامج (PHP مثلا) يستدعي قاعدة البيانات باستعلام يعتمد على بنية علائقية صُمِّمت مسبقا بمخطط UML. الخوارزمية داخل البرنامج تفرز النتائج وتحسب الترتيب، وبنية البيانات (مصفوفة أو قائمة) تحملها مؤقتا قبل تحويلها إلى HTML يعرضه المتصفح. هذا المسار المعاكس — من طلب المستخدم إلى الأجهزة الفعلية التي تنفذه — يوضح أن كل مجال من المجالات العشرة نقطة عبور إلزامية، لا اختيارا منفصلا.

لماذا هذا الربط يفيد في الامتحان تحديدا؟

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

تدريب على الربط بين المجالات

هذه أسئلة تقع عند التقاء مجالين، وهو ما تتعمد أسئلة الاختيار المتعدد أحيانًا. اكتب جوابك أولًا ثم افتح التعليل.

1. صفحة نتائج تحمل ببطء رغم اتصال سريع. ما أولى الفرضيات التي تفحصها؟

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

2. لماذا يتعذر على موقع أن يطلب من المتصفح تنفيذ كود PHP؟

لأن PHP ينفذ على الخادم، ولا يصل المتصفح إلا ناتج التنفيذ (HTML). أما JavaScript فتنفذ في المتصفح.

3. مستخدمان يسجلان حجزًا في الوقت نفسه فيكتبان على المقعد ذاته. أي مفاهيم تتقاطع هنا؟

حالة سباق في نظام التشغيل أو التطبيق، ويعالجها على مستوى قاعدة البيانات مفهوم المعاملة (العزل) وقيود التفرد، وعلى مستوى النظام أقفال أو mutex.

4. لماذا قد تعمل البرمجة بـ C على بيانات صغيرة لكن يتعطل التطبيق على بيانات كبيرة؟

أسباب محتملة: تجاوز حدود مصفوفة، أو تسرب ذاكرة بعدم استدعاء free، أو تعقيد تربيعي لا يظهر في المدخلات الصغيرة.

5. حدد المجال الأنسب لكل سؤال: مخطط الأصناف؟ مخطط التسلسل؟ جدول التوجيه؟ جدول الصفحات؟

مخطط الأصناف والتسلسل: نظم المعلومات وUML. جدول التوجيه: الشبكات (طبقة الشبكة). جدول الصفحات: نظم التشغيل (الذاكرة الافتراضية).

كن أول من يقيّم هذا الفصل
العربيةالفرنسيةملاحظة سريعة
الخوارزميةAlgorithmeإجراء منتهٍ لمعالجة مشكلة
بنية المعطياتStructure de donnéesتنظيم البيانات والعمليات عليها
العوديةRécursivitéاستدعاء الدالة لنفسها مع حالة توقف
التعقيدComplexitéنمو كلفة الخوارزمية
مصفوفةTableauبنية متجانسة مفهرسة
سلسلة محارفChaîne de caractèresمتتالية محارف
سجلEnregistrementحقول مختلفة تحت كيان واحد
مكدسPileLIFO
طابورFileFIFO — لا تخلطه مع fichier
قائمة مرتبطةListe chaînéeعقد ومؤشرات
شجرة ثنائيةArbre binaireابنان على الأكثر لكل عقدة
رسم بيانيGrapheرؤوس وحواف
برمجة مهيكلةProgrammation structuréeتفكيك منطقي وبنيات تحكم واضحة
برمجة كائنيةProgrammation orientée objetClasses/objets
قاعدة بياناتBase de donnéesبيانات منظمة تحت إدارة SGBD
مفتاح أساسيClé primaireمعرّف فريد للصف
مفتاح أجنبيClé étrangèreرابط نحو مفتاح في جدول آخر
ربطJointureجمع صفوف من جداول مرتبطة
نظام معلوماتSystème d'informationأشخاص + إجراءات + بيانات + تقنيات
حالة استخدامCas d'utilisationخدمة للنظام من منظور فاعل
مخطط أصنافDiagramme de classesالبنية الساكنة
مخطط تسلسلDiagramme de séquenceالتفاعل عبر الزمن
عمليةProcessusبرنامج قيد التنفيذ
ذاكرة افتراضيةMémoire virtuelleفضاء منطقي مع paging غالبًا
نظام ملفاتSystème de fichiersتنظيم الملفات والمجلدات والبيانات الوصفية
عنونة IPAdressage IPتعريف واجهات الشبكة منطقيًا
توجيهRoutageاختيار مسار الرزم
معالجProcesseurCPU
ذاكرة مركزيةMémoire centraleRAM أساسًا
حافلةBusقناة بيانات/عناوين/تحكم
معالجة نصوصTraitement de texteTexteur
جدول حسابيTableurSpreadsheet
عرض بمساعدة الحاسوبPrésentation Assistée par OrdinateurPréAO
وسائط متعددةMultimédiaصوت/صورة/فيديو/نص…
ترميزEncodageتحويل وفق صيغة/codec
كن أول من يقيّم هذا الفصل

أولًا: المرجع الرسمي المؤسس

Ministère de l'Éducation Nationale — Direction des Curricula. Programme et Instructions Officielles pour l'Enseignement de l'Informatique aux Troncs Communs, septembre 2005, 34 p.

ثانيًا: توصيف الاختبار المعتمد في المطابقة

المركز الوطني للامتحانات المدرسية وتقييم التعلمات. توصيف المجالات المضمونة للاختبارات الكتابية لمباريات ولوج سلك تأهيل أطر التدريس بالمراكز الجهوية لمهن التربية والتكوين — تخصص المعلوميات — دورة نونبر 2025.

ثالثًا: الدراسات المغربية التحليلية

  • Ouahbi, I.; Darhmaoui, H.; Kaddari, F.; Bemmouna, A. (2019). "Computer Science Program in Moroccan Secondary Schools: Curricula Analysis." International Journal of Modern Education and Computer Science, 11(3), 10–15. DOI: 10.5815/ijmecs.2019.03.02. صفحة المقال
  • Oumad, M.; El Youssefi, A.; Haddi, A. (2023). Attitudes des enseignantes et des enseignants de l'informatique envers le curriculum actuel et futur pour l'enseignement de la discipline au cycle secondaire marocain. Rapport d'étude, janvier 2023. نسخة القراءة
  • Ouahbi, I.; Darhmaoui, H.; Kaddari, F.; Bemmouna, A.; Elachqar, A.; Lahmine, S. (2015). "Un aperçu sur l'enseignement de l'informatique au Maroc : Nécessité d'une réforme des curricula." Frantice.net, n°11, 51–66. نسخة فهرسة AUF/APPRENDRE

ملاحظات حول استعمال المراجع

  • تستعمل وثيقة 2005 لتحديد المنطلقات الرسمية وهوية المادة ومفاهيمها الأساسية.
  • تستعمل دراسة 2019 لإثبات استمرار اعتماد تعليمات 2005 كمرجع للتأهيلي، وتشخيص الحاجة إلى إصلاح المحتوى والمنهجية.
  • تستعمل دراسة 2023 باعتبارها أحدث مادة ميدانية حول المنهاج المغربي، وبخاصة لكونها شملت 619 مدرسًا/مدرسة من مختلف الجهات، منهم 383 بالتأهيلي.
  • توصيف 2025 هو المرجع الوحيد في هذه الوحدة لتحديد الأوزان والمجالات الامتحانية الحديثة.
كن أول من يقيّم هذا الفصل
إذا استفدت من هذه الوحدة نرجو أن تترك لنا كلمة فهي تهمّنا وتساعد غيرك على الوصول إليها
تقويم الوحدة

تحقق من استيعابك

رائز قصير من 10 أسئلة، ينتقل من المفاهيم الأساسية إلى التطبيق. مباشرة بعد الإجابة يظهر التصحيح والتفسير، ويمكنك الاعتراض إذا رأيت أن الإجابة المقترحة خاطئة.

10 أسئلة 7 دقائق تقريبًا
تدرب في ظروف المباراة

اختبارات تجريبية مرتبطة بهذه الوحدة

اختبارات من المباراة التي تنتمي إليها هذه الوحدة.

كل الاختبارات ←
اختبار تجريبي

محاكاة متقدمة لمباراة التفتيش التربوي — معارف وديداكتيك التعليم الابتدائي

محاكاة غير رسمية من إعداد EduConcours، صُممت لقياس دقة القراءة وعمق التحليل والقدرة على حل وضعيات مركبة، لا مجرد استرجاع التعاريف. يتكون الاختبا…

120 سؤال 240 دقيقة
ابدأ الاختبار ←
اختبار تجريبي

اختبار علوم التربية — التعليم الثانوي التأهيلي والإعدادي — دورة أبريل 2024

اختبار مشترك في علوم التربية لفائدة مترشحي التعليم الثانوي التأهيلي والإعدادي، بجميع التخصصات — دورة أبريل 2024.

60 سؤال 120 دقيقة
ابدأ الاختبار ←
اختبار تجريبي

اختبار علوم التربية — مباراة توظيف أساتذة التعليم الثانوي (الأطر النظامية للأكاديميات) — دورة نونبر 2022

اختبار علوم التربية في مباراة توظيف أساتذة التعليم الثانوي (الأطر النظامية للأكاديميات) — دورة نونبر 2022، من إعداد المركز الوطني للتقويم والامت…

60 سؤال 120 دقيقة
ابدأ الاختبار ←

هل أفادتك هذه الصفحة؟ شاركها مع زملائك المترشحين

واتساب فيسبوك