الفصل 5: المصفوفات والخرائط
ما ستتعلم في هذا الفصل
- إنشاء المصفوفات والعمليات عليها
- الوصول والتعديل بالفهرس
- دوال المصفوفات المدمجة
- الخرائط (القواميس) وعملياتها
- المصفوفات المتداخلة
- أنماط عملية للبيانات المجمّعة
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 | خ["مفتاح"] = قيمة |
| إضافة | م.أضف(عنصر) | خ["جديد"] = قيمة |
| طول | طول(م) | طول(خ) |
| مرور | لكل ع في م | لكل مفتاح في خ |