الخوارزميات المتقدمة: المصفوفات والدوال في البرمجة
الأهداف التعليمية:
- فهم مفهوم المصفوفات (tableaux) أحادية وثنائية البعد
- إتقان تعريف واستدعاء الدوال (procédures/fonctions)
- التعامل مع الخوارزميات الكلاسيكية (بحث، ترتيب، إدراج)
1. المصفوفات أحادية البعد (Tableau à une dimension)
المصفوفة (array/list) هي بنية بيانات تخزن مجموعة من العناصر من نفس النوع في مواقع متتالية في الذاكرة. يتم الوصول إلى كل عنصر باستخدام مؤشر (indice). تعريف مصفوفة: T[1..n] حيث n عدد العناصر. مثال: T = [12, 7, 19, 3, 25] — T[1]=12، T[2]=7، T[3]=19، T[4]=3، T[5]=25. العمليات الأساسية: إدخال عنصر (insertion)، حذف عنصر (suppression)، البحث (recherche)، الترتيب (tri)، المسح (parcours).
2. المصفوفات ثنائية البعد (Matrices)
المصفوفة ثنائية البعد M[1..n, 1..m] تحتوي على n صف (lignes) و m عمود (colonnes). يُشار للعنصر بـ M[i,j] حيث i رقم الصف و j رقم العمود. مثال: مصفوفة 3×3. العمليات المهمة: جمع وضرب المصفوفات، حساب المحدد (déterminant)، المصفوفة المنقولة (transposée).
3. الدوال والإجراءات (Fonctions et Procédures)
الدالة (fonction) هي مجموعة من التعليمات تؤدي مهمة محددة وتُرجع قيمة واحدة. مثال دالة لحساب العاملي (factorielle) : Fonction fact(n) : Si n=0 retourner 1 Sinon retourner n × fact(n-1). الإجراء (procédure) يؤدي مهمة دون إرجاع قيمة. الفائدة من الدوال: إعادة الاستخدام (réutilisabilité)، تقسيم المشكلة إلى أجزاء صغيرة (diviser pour régner)، سهولة الصيانة والتصحيح.
4. خوارزميات كلاسيكية هامة
البحث الخطي (Recherche séquentielle) : البحث عن عنصر في مصفوفة بمسحها عنصراً عنصراً. التعقيد: O(n). خوارزمية: Pour i de 1 à n si T[i] = x retourner vrai — retourner faux.
البحث الثنائي (Recherche dichotomique) : يطبق على مصفوفة مرتبة، يقسمها إلى نصفين في كل خطوة. التعقيد: O(log n). أسرع بكثير من البحث الخطي للمصفوفات الكبيرة.
ترتيب الفقاعات (Tri à bulles) : مقارنة العناصر المتجاورة وتبديلها عند الضرورة. التعقيد: O(n²).
ترتيب الإدراج (Tri par insertion) : بناء المصفوفة المرتبة عنصراً عنصراً. التعقيد: O(n²).
5. تطبيق بكالوريا محلول
التمرين: اكتب خوارزمية (دالة) تبحث عن أكبر عنصر في مصفوفة T[1..n].
الحل (الخوارزمية): Fonction max_tableau(T, n) : max ← T[1] — Pour i de 2 à n si T[i] > max alors max ← T[i] — FinPour — Retourner max.
نفس الخوارزمية بلغة Python: def max_tableau(T, n): max_val = T[0]; for i in range(1, n): if T[i] > max_val: max_val = T[i]; return max_val.
الخلاصة:
المصفوفات والدوال أساسيات لا غنى عنها في البرمجة. المصفوفات تسمح بتخزين ومعالجة مجموعات البيانات. الدوال تسمح بتنظيم البرنامج وتقسيمه. الخوارزميات الكلاسيكية للبحث والترتيب يجب إتقانها لأنها تتكرر في امتحانات البكالوريا والشهادات المهنية.
مدونة التربية و التعليم في الجزائر – دروس، فروض، نتائج امتحانات مدونة التربية والتعليم في الجزائر | تحضير الدروس، فروض واختبارات، نتائج البكالوريا وBEM، مسابقات التوظيف، والتوجيه المدرسي للطلاب وأولياء الأمور.