Skip to content

الفصل 5: المصفوفات والخرائط

📖 المستوى: مبتدئ  |  ⏱ الوقت المقدّر: 50 دقيقة  |  📝 تمارين: 8

ما ستتعلم في هذا الفصل

  • إنشاء المصفوفات والعمليات عليها
  • الوصول والتعديل بالفهرس
  • دوال المصفوفات المدمجة
  • الخرائط (القواميس) وعملياتها
  • المصفوفات المتداخلة
  • أنماط عملية للبيانات المجمّعة

5.1 المصفوفات

الإنشاء والوصول

sad
# إنشاء مصفوفة
متغير أرقام = [10، 20، 30، 40، 50]
متغير أسماء = ["أحمد"، "سارة"، "محمد"]
متغير فارغة = []

# الوصول بالفهرس (يبدأ من 0)
اطبع_سطر(أرقام[0])    # 10
اطبع_سطر(أرقام[2])    # 30
اطبع_سطر(أسماء[1])    # سارة

# تعديل عنصر
أرقام[0] = 100
اطبع_سطر(أرقام[0])    # 100

# الطول
اطبع_سطر(طول(أرقام))   # 5

إضافة وإزالة عناصر

sad
متغير قائمة = [1، 2، 3]

# إضافة في النهاية
قائمة.أضف(4)
قائمة.أضف(5)
اطبع_سطر(قائمة)   # [1، 2، 3، 4، 5]

# إزالة آخر عنصر
قائمة.أزل()
اطبع_سطر(قائمة)   # [1، 2، 3، 4]

المرور على المصفوفة

sad
متغير فواكه = ["تفاح"، "برتقال"، "موز"، "عنب"]

# باستخدام لكل
لكل فاكهة في فواكه
    اطبع_سطر("🍎 " + فاكهة)
نهاية

# باستخدام الفهرس
متغير ف = 0
بينما (ف < طول(فواكه))
    اطبع_سطر(ف + ": " + فواكه[ف])
    ف = ف + 1
نهاية

5.2 عمليات المصفوفات الشائعة

البحث

sad
متغير أرقام = [15، 42، 7، 23، 8، 91]

# البحث عن قيمة
دالة ابحث(مصفوفة، قيمة)
    متغير ف = 0
    بينما (ف < طول(مصفوفة))
        إذا (مصفوفة[ف] == قيمة)
            ارجع ف
        نهاية
        ف = ف + 1
    نهاية
    ارجع -1
نهاية

اطبع_سطر(ابحث(أرقام، 23))   # 3
اطبع_سطر(ابحث(أرقام، 99))   # -1

الفرز البسيط

sad
دالة فرز(مصفوفة)
    متغير ن = طول(مصفوفة)
    متغير ي = 0
    بينما (ي < ن - 1)
        متغير ج = 0
        بينما (ج < ن - ي - 1)
            إذا (مصفوفة[ج] > مصفوفة[ج + 1])
                # تبادل
                متغير مؤقت = مصفوفة[ج]
                مصفوفة[ج] = مصفوفة[ج + 1]
                مصفوفة[ج + 1] = مؤقت
            نهاية
            ج = ج + 1
        نهاية
        ي = ي + 1
    نهاية
    ارجع مصفوفة
نهاية

متغير أرقام = [64، 34، 25، 12، 22، 11، 90]
اطبع_سطر(فرز(أرقام))

التصفية

sad
دالة صفّي(مصفوفة، شرط)
    متغير نتيجة = []
    لكل عنصر في مصفوفة
        إذا (شرط(عنصر))
            نتيجة.أضف(عنصر)
        نهاية
    نهاية
    ارجع نتيجة
نهاية

متغير أرقام = [1، 2، 3، 4، 5، 6، 7، 8، 9، 10]
متغير زوجية = صفّي(أرقام، لامدا(ن) ارجع ن % 2 == 0 نهاية)
اطبع_سطر(زوجية)   # [2، 4، 6، 8، 10]

5.3 الخرائط (القواميس)

sad
# إنشاء خريطة
متغير طالب = {
    "اسم": "فاطمة"،
    "عمر": 20،
    "تخصص": "علوم حاسب"،
    "معدل": 3.8
}

# الوصول
اطبع_سطر(طالب["اسم"])       # فاطمة
اطبع_سطر(طالب["معدل"])      # 3.8

# إضافة/تعديل
طالب["مستوى"] = 3
طالب["معدل"] = 3.9

# المرور على الخريطة
لكل مفتاح في طالب
    اطبع_سطر(مفتاح + ": " + طالب[مفتاح])
نهاية

خريطة كقاعدة بيانات بسيطة

sad
متغير جهات_اتصال = {}

# إضافة جهات اتصال
جهات_اتصال["أحمد"] = "0501234567"
جهات_اتصال["سارة"] = "0559876543"
جهات_اتصال["محمد"] = "0541112233"

# البحث
دالة ابحث_عن_جهة(اسم)
    إذا (اسم في جهات_اتصال)
        ارجع جهات_اتصال[اسم]
    نهاية
    ارجع "غير موجود"
نهاية

اطبع_سطر(ابحث_عن_جهة("سارة"))   # 0559876543
اطبع_سطر(ابحث_عن_جهة("خالد"))   # غير موجود

5.4 المصفوفات المتداخلة (مصفوفة ثنائية البعد)

sad
# جدول 3×3
متغير مصفوفة = [
    [1، 2، 3]،
    [4، 5، 6]،
    [7، 8، 9]
]

# الوصول
اطبع_سطر(مصفوفة[0][0])   # 1
اطبع_سطر(مصفوفة[1][2])   # 6

# المرور
لكل صف في مصفوفة
    متغير سطر = ""
    لكل عنصر في صف
        سطر = سطر + عنصر + " "
    نهاية
    اطبع_سطر(سطر)
نهاية

تمارين

تمرين 1: أكبر عنصر

اكتب دالة تجد أكبر عنصر في مصفوفة.

💡 الحل
sad
دالة أكبر(مصفوفة)
    متغير الأكبر = مصفوفة[0]
    لكل عنصر في مصفوفة
        إذا (عنصر > الأكبر)
            الأكبر = عنصر
        نهاية
    نهاية
    ارجع الأكبر
نهاية

اطبع_سطر(أكبر([3، 7، 1، 9، 4]))   # 9

تمرين 2: عكس مصفوفة

اكتب دالة تعكس ترتيب عناصر مصفوفة.

💡 الحل
sad
دالة اعكس_مصفوفة(مصفوفة)
    متغير معكوسة = []
    متغير ف = طول(مصفوفة) - 1
    بينما (ف >= 0)
        معكوسة.أضف(مصفوفة[ف])
        ف = ف - 1
    نهاية
    ارجع معكوسة
نهاية

اطبع_سطر(اعكس_مصفوفة([1، 2، 3، 4، 5]))
# [5، 4، 3، 2، 1]

ملخص الفصل

العمليةالمصفوفةالخريطة
إنشاء[1، 2، 3]{"أ": 1}
وصولم[0]خ["مفتاح"]
تعديلم[0] = 10خ["مفتاح"] = قيمة
إضافةم.أضف(عنصر)خ["جديد"] = قيمة
طولطول(م)طول(خ)
مرورلكل ع في ملكل مفتاح في خ

مُرخَّص بموجب رخصة MIT