استخدامات هياكل البيانات - كتاب المهارات الرقمية - الصف 9 - الفصل 1 - المملكة العربية السعودية

الكتاب: كتاب المهارات الرقمية - الصف 9 - الفصل 1 | المادة: المهارات الرقمية | المرحلة: الصف 9 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

الدرس: استخدامات هياكل البيانات

📚 معلومات الصفحة

الكتاب: كتاب المهارات الرقمية - الصف 9 - الفصل 1 | المادة: المهارات الرقمية | المرحلة: الصف 9 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

نوع المحتوى: درس تعليمي

📝 ملخص الصفحة

📚 هياكل البيانات

المفاهيم الأساسية

القائمة (List): هيكل بيانات يُستخدم عند الحاجة إلى تغيير عناصره بشكل متكرر.

الصف (Tuple): هيكل بيانات يُستخدم عند الحاجة إلى تخزين بيانات دون الحاجة إلى تغييرها.

القاموس (Dictionary): هيكل بيانات يُستخدم عند الحاجة إلى إيجاد ربط منطقي بين (المفتاح: القيمة) وعند الحاجة للبحث عن بيانات بناءً على مفتاح محدد.

خريطة المفاهيم

```markmap

هياكل البيانات

هياكل بيانات غير بسيطة (Non-Primitive)

هياكل بيانات خطية (Linear)

#### القواميس (Dictionary)

##### طريقة الإنشاء

###### الطريقة الثانية: أمر dict()

  • مثال: myDict = dict()
##### إنشاء قاموس عن طريق إدخال المستخدم

  • استخدام حلقة تكرار (for loop) لجمع البيانات
  • استخدام دالة الإدخال (input()) لقراءة المفتاح والقيمة من المستخدم
  • إضافة العنصر إلى القاموس باستخدام الصيغة: myDict[key] = value
##### الوصول إلى العناصر

###### الطريقة الأولى: باستخدام المفتاح بين أقواس مربعة []

  • مثال: capital1 = ArabGulf["SaudiArabia"]
###### الطريقة الثانية: باستخدام دالة .get()

  • مثال: capital2 = ArabGulf.get("Oman")
##### تعديل العناصر

  • إعادة تعيين قيمة مفتاح موجود
  • مثال: Employees["Saad"] = "Data Scientist"
##### الدوال المستخدمة مع القواميس

###### dictName.get(x)

  • ترجع القيمة المرتبطة بالمفتاح x، أو ترجع None إذا لم يوجد المفتاح.
###### dictName.update(x)

  • تضيف أزواج عناصر جديدة أو تحدث القيم للمفاتيح الموجودة.
###### dictName.values()

  • ترجع جميع القيم الموجودة في القاموس.
###### dictName.keys()

  • ترجع جميع المفاتيح الموجودة في القاموس.
###### dictName.clear()

  • تحذف جميع العناصر الموجودة في القاموس.
##### حذف العناصر

###### حذف جميع العناصر

  • باستخدام دالة `clear()`
  • مثال: `ArabGulf.clear()`
  • النتيجة: `{}`
###### حذف عنصر محدد

  • باستخدام كلمة `del` متبوعة باسم القاموس والمفتاح بين قوسين مربعين
  • مثال: `del ArabGulf["Oman"]`
  • النتيجة: `{'SaudiArabia': 'Riyadh', 'Bahrain': 'Manama'}`
###### حذف القاموس كاملاً

  • باستخدام كلمة `del` متبوعة باسم القاموس فقط
##### استخدامات هياكل البيانات

###### القائمة (List)

  • عند الحاجة إلى تغيير عناصر القائمة بشكل متكرر.
###### الصف (Tuple)

  • عند الحاجة إلى تخزين بيانات دون الحاجة إلى تغييرها.
###### القاموس (Dictionary)

  • عند الحاجة إلى إيجاد ربط منطقي بين (المفتاح: القيمة).
  • عند الحاجة للبحث عن بيانات بناءً على مفتاح محدد.
##### مشروع البنك

  • استخدام القاموس لحفظ بيانات العميل.
  • رقم الحساب هو المفتاح الفريد.
  • القيمة المرتبطة بالمفتاح هي قائمة تحتوي على اسم العميل ورصيد الحساب.
```

نقاط مهمة

  • إذا حاولت طباعة قاموس قمت بحذفه سابقاً، ستتلقى رسالة خطأ `NameError`.
  • في مشروع البنك، يُستخدم القاموس لأن سجل العميل يحتاج إلى ربط منطقي بين رقم الحساب (المفتاح) وبياناته الأخرى (القيمة).

📋 المحتوى المنظم

📖 محتوى تعليمي مفصّل

نوع: محتوى تعليمي

تلقت رسالة خطأ لأنك حاولت طباعة قاموس قمت بحذفه سابقاً.

نوع: محتوى تعليمي

print(ArabGulf) NameError: name 'ArabGulf' is not defined

استخدامات هياكل البيانات

نوع: محتوى تعليمي

يستخدم كل هيكل من هياكل البيانات لأغراض مختلفة، يمكن توضيحها في الجدول الآتي:

الاستخدام

نوع: محتوى تعليمي

هيكل البيانات

نوع: محتوى تعليمي

عند الحاجة إلى تغيير عناصر القائمة بشكل متكرر.

نوع: محتوى تعليمي

عند الحاجة إلى تخزين بيانات دون الحاجة إلى تغييرها.

نوع: محتوى تعليمي

1- عند الحاجة إلى إيجاد ربط منطقي بين (المفتاح: القيمة).

نوع: محتوى تعليمي

2- عند الحاجة للبحث عن بيانات بناءً على مفتاح محدد.

نوع: محتوى تعليمي

القائمة (List)

نوع: محتوى تعليمي

الصف (Tuple)

نوع: محتوى تعليمي

القاموس (Dictionary)

نوع: محتوى تعليمي

مشروع البنك

نوع: محتوى تعليمي

ستنشئ الآن مشروعاً لم حاكاة لأحد البنوك خطوة بخطوة، يحتوي سجل عميل البنك على بيانات مسجلة تتعلق به، وتتضمن:

نوع: محتوى تعليمي

رقم الحساب

نوع: محتوى تعليمي

اسم العميل

نوع: محتوى تعليمي

رصيد الحساب

نوع: محتوى تعليمي

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

نوع: METADATA

وزارة التعليم Ministry of Education 2025 - 1447

نوع: METADATA

191

🔍 عناصر مرئية

استخدامات هياكل البيانات

A table comparing different data structures (List, Tuple, Dictionary) with their uses.

📄 النص الكامل للصفحة

تلقت رسالة خطأ لأنك حاولت طباعة قاموس قمت بحذفه سابقاً. print(ArabGulf) NameError: name 'ArabGulf' is not defined --- SECTION: استخدامات هياكل البيانات --- يستخدم كل هيكل من هياكل البيانات لأغراض مختلفة، يمكن توضيحها في الجدول الآتي: --- SECTION: الاستخدام --- --- SECTION: هيكل البيانات --- --- SECTION: عند الحاجة إلى تغيير عناصر القائمة بشكل متكرر. --- --- SECTION: عند الحاجة إلى تخزين بيانات دون الحاجة إلى تغييرها. --- --- SECTION: 1- عند الحاجة إلى إيجاد ربط منطقي بين (المفتاح: القيمة). --- --- SECTION: 2- عند الحاجة للبحث عن بيانات بناءً على مفتاح محدد. --- --- SECTION: القائمة (List) --- --- SECTION: الصف (Tuple) --- --- SECTION: القاموس (Dictionary) --- --- SECTION: مشروع البنك --- ستنشئ الآن مشروعاً لم حاكاة لأحد البنوك خطوة بخطوة، يحتوي سجل عميل البنك على بيانات مسجلة تتعلق به، وتتضمن: رقم الحساب اسم العميل رصيد الحساب ستستخدم هياكل البيانات القاموس لحفظ بيانات العميل، بحيث سيكون رقم الحساب كقيمة فريدة بمثابة مفتاح، حيث إن سجل العميل يحتوي على اسمه ورصيده أيضاً، وبالتالي يمكنك استخدام القائمة مرتبطة بالمفتاح. وزارة التعليم Ministry of Education 2025 - 1447 191 --- VISUAL CONTEXT --- **TABLE**: استخدامات هياكل البيانات Description: A table comparing different data structures (List, Tuple, Dictionary) with their uses. Table Structure: Headers: هيكل البيانات | الاستخدام Rows: Row 1: القائمة (List) | عند الحاجة إلى تغيير عناصر القائمة بشكل متكرر. Row 2: الصف (Tuple) | عند الحاجة إلى تخزين بيانات دون الحاجة إلى تغييرها. Row 3: القاموس (Dictionary) | 1- عند الحاجة إلى إيجاد ربط منطقي بين (المفتاح: القيمة). 2- عند الحاجة للبحث عن بيانات بناءً على مفتاح محدد. X-axis: الاستخدام Y-axis: هيكل البيانات Data: The table lists three data structures: القائمة (List), الصف (Tuple), and القاموس (Dictionary). Each structure has associated uses described in the 'الاستخدام' column. Context: Explains the practical applications of different Python data structures.

✅ حلول أسئلة الكتاب الرسمية

عدد الأسئلة: 3

سؤال 1: استخدامات هياكل البيانات: يُستخدم كل هيكل من هياكل البيانات لأغراض مختلفة، يمكن توضيحها في الجدول الآتي: القائمة (List)، الصف (Tuple)، القاموس (Dictionary).

الإجابة: س1: - القائمة (List): يتم الوصول للعناصر عن طريق الفهرس (Index). - القاموس (Dictionary): يتم الوصول للقيم عن طريق المفتاح (Key).

خطوات الحل:

  1. | الهيكل | الوصف | آلية الوصول للعناصر | |--------|-------|-------------------| | **القائمة (List)** | هيكل بيانات مرتب يمكن تعديله | يتم الوصول للعناصر عن طريق **الفهرس (Index)** الذي يبدأ عادةً من الصفر | | **الصف (Tuple)** | هيكل بيانات مرتب لا يمكن تعديله | يتم الوصول للعناصر عن طريق **الفهرس (Index)** الذي يبدأ عادةً من الصفر | | **القاموس (Dictionary)** | هيكل بيانات غير مرتب (زوج مفتاح-قيمة) | يتم الوصول للقيم عن طريق **المفتاح (Key)** الفريد المرتبط بها |
  2. **المبدأ المستخدم:** كل هيكل بيانات في لغة البرمجة له خصائص وآليات وصول محددة تناسب استخدامات مختلفة.
  3. 1. **القائمة (List):** * هي مجموعة **مرتبة** و **قابلة للتغيير** من العناصر. * العناصر داخل القائمة لها **مواضع ثابتة**. * للوصول إلى عنصر معين، نستخدم **رقم الفهرس** الخاص بموقعه. مثال: `my_list[0]` تُرجع العنصر الأول. 2. **القاموس (Dictionary):** * هو مجموعة من أزواج **المفتاح (Key)** و **القيمة (Value)**. * كل مفتاح يجب أن يكون **فريدًا** ويُستخدم كمعرف للقيمة المرتبطة به. * للوصول إلى قيمة معينة، نستخدم **المفتاح** المرتبط بها وليس الفهرس. مثال: `my_dict["name"]` تُرجع القيمة المرتبطة بالمفتاح `"name"`.
  4. > **ملاحظة:** الصف (Tuple) يشبه القائمة في آلية الوصول (عن طريق الفهرس)، لكن الفرق الرئيسي أنه **غير قابل للتعديل** بعد الإنشاء.
  5. **الخلاصة:** آلية الوصول للبيانات تختلف باختلاف هيكل التخزين؛ فالقائمة تعتمد على **الترتيب والفهرس**، بينما يعتمد القاموس على **المفتاح الفريد**.

سؤال 2: تلقيت رسالة خطأ لأنك حاولت طباعة قاموس قمت بحذفه سابقًا. ArabGulf= { "SaudiArabia" : "Riyadh", "Oman" : "Muscat", "Bahrain" : "Manama" } del ArabGulf print(ArabGulf)

الإجابة: س2: مثال لقاموس مطبوع: {الاسم: محمد، اسم العائلة: العتيبي}

خطوات الحل:

  1. | المعطيات | الوصف | |----------|-------| | الكود المنفذ | `ArabGulf = {"SaudiArabia": "Riyadh", "Oman": "Muscat", "Bahrain": "Manama"}` <br> `del ArabGulf` <br> `print(ArabGulf)` | | المطلوب | تفسير سبب ظهور رسالة الخطأ عند تنفيذ هذا الكود. |
  2. **المبدأ المستخدم:** أمر `del` في بايثون يُستخدم لحذف كائنات (متغيرات، عناصر من قائمة، إلخ) من الذاكرة. محاولة الوصول إلى متغير تم حذفه ستتسبب في خطأ `NameError`.
  3. 1. **الخطوة الأولى: إنشاء القاموس وتخزينه.** * ينشئ السطر الأول قاموسًا باسم `ArabGulf` ويخزنه في الذاكرة. * محتويات القاموس: `{"SaudiArabia": "Riyadh", "Oman": "Muscat", "Bahrain": "Manama"}`. 2. **الخطوة الثانية: حذف القاموس من الذاكرة.** * أمر `del ArabGulf` **يمسح المتغير `ArabGulf` وكل محتوياته تمامًا** من ذاكرة البرنامج. * بعد هذا السطر، لم يعد اسم `ArabGulf` معرّفًا أو موجودًا. 3. **الخطوة الثالثة: محاولة الوصول إلى شيء غير موجود.** * يأتي سطر `print(ArabGulf)` ويحاول طباعة محتويات المتغير `ArabGulf`. * بما أن `ArabGulf` قد تم حذفه، فإن المترجم لا يعرف ما هو `ArabGulf` ويُصدر خطأ.
  4. > **التنبيه:** الخطأ الناتج سيكون من نوع `NameError` مع رسالة تشبه: `NameError: name 'ArabGulf' is not defined`، لأننا نحاول استخدام اسم لم يعد معرّفًا.
  5. **النتيجة:** لا يمكن طباعة قاموس تم حذفه، وسينتهي التنفيذ برسالة خطأ. للحصول على نتيجة طباعة صحيحة (مثل المثال في الإجابة)، يجب تنفيذ أمر `print` **قبل** استخدام `del`.

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

الإجابة: س3: بعد إدخال المستخدم اسمه ورقم هاتفه يتم تخزينهما في قاموس: {الاسم: نورة، رقم الهاتف: 0551234567}

خطوات الحل:

  1. | المعطيات | الوصف | |----------|-------| | بيانات العميل | رقم الحساب، اسم العميل، رصيد الحساب | | المطلوب | تصميم هيكل بيانات باستخدام القاموس (Dictionary) لحفظ بيانات عميل البنك، حيث يكون **رقم الحساب** هو المفتاح الفريد (Key). |
  2. **المبدأ المستخدم:** هيكل **القاموس (Dictionary)** مثالي لتخزين البيانات المرتبطة بكيان واحد (مثل عميل) حيث يكون لكل عنصر بيانات **مفتاح (Key)** فريد و **قيمة (Value)** مرتبطة به. في هذا المشروع، سيكون المفتاح هو المعرف الفريد للعميل (رقم الحساب).
  3. 1. **الخطوة الأولى: تحديد المفتاح والقيم.** * **المفتاح (Key):** رقم الحساب. تم اختياره لأنه قيمة **فريدة** لا تتكرر بين العملاء. * **القيم (Values):** باقي بيانات العميل، وهي اسم العميل ورصيد الحساب. 2. **الخطوة الثانية: تصميم هيكل القاموس.** * سيكون للقاموس **زوج واحد من المفتاح والقيمة** لكل عميل. * **المفتاح:** رقم الحساب (مثال: `1001`). * **القيمة:** ستكون **قاموسًا آخر** أو **قائمة** تحتوي على باقي التفاصيل. النموذج الأكثر وضوحًا هو استخدام قاموس فرعي: python # هيكل البيانات المقترح customer_record = { 1001: {"name": "نورة", "balance": 5000.0}, 1002: {"name": "خالد", "balance": 12000.5} # ... وهكذا لعملاء آخرين } 3. **الخطوة الثالثة: شرح آلية العمل (مشابهة للمثال المعطى).** * كما في مثال الإجابة `{الاسم: نورة، رقم الهاتف: 0551234567}`، حيث المفتاح هو نوع البيانات (`"الاسم"`) والقيمة هي البيانات الفعلية (`"نورة"`). * في مشروع البنك، نرفع مستوى التنظيم: * المفتاح الرئيسي للقاموس الكبير هو **رقم الحساب**. * القيمة المقابلة لكل مفتاح هي **قاموس صغير** مفتاحه هو نوع المعلومة (`"اسم العميل"`, `"رصيد الحساب"`) وقيمته هي المعلومة نفسها.
  4. > **تطبيق عملي:** للوصول إلى رصيد العميل ذي رقم الحساب 1001، نكتب: `customer_record[1001]["balance"]`، مما يعيد القيمة `5000.0`.
  5. **التصميم النهائي:** باستخدام القاموس، أصبح لدينا نظام تخزين مرن يسمح بالوصول السريع إلى بيانات أي عميل باستخدام **رقم حسابه الفريد** كمفتاح رئيسي، مع حفظ جميع تفاصيله بشكل منظم داخل قيمة ذلك المفتاح.

🎴 بطاقات تعليمية للمراجعة

عدد البطاقات: 5 بطاقة لهذه الصفحة

ما هو الاستخدام الرئيسي للقائمة (List) في بايثون؟

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

الإجابة الصحيحة: c

الإجابة: عند الحاجة إلى تغيير عناصر القائمة بشكل متكرر.

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

تلميح: هذا الهيكل مناسب عندما تكون البيانات قابلة للتعديل والإضافة والحذف.

التصنيف: مفهوم جوهري | المستوى: سهل

ما هو الاستخدام الرئيسي للصف (Tuple) في بايثون؟

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

الإجابة الصحيحة: b

الإجابة: عند الحاجة إلى تخزين بيانات دون الحاجة إلى تغييرها.

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

تلميح: هذا الهيكل يحافظ على البيانات ثابتة بعد إنشائها.

التصنيف: مفهوم جوهري | المستوى: سهل

ما هو أحد الاستخدامات الرئيسية للقاموس (Dictionary) في بايثون؟

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

الإجابة الصحيحة: c

الإجابة: عند الحاجة للبحث عن بيانات بناءً على مفتاح محدد.

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

تلميح: يسمح هذا الهيكل بالوصول السريع إلى قيمة ما باستخدام معرف فريد.

التصنيف: مفهوم جوهري | المستوى: متوسط

ما هو الخطأ الذي سيظهر عند تنفيذ الكود التالي، ولماذا؟ python ArabGulf = {"SaudiArabia": "Riyadh"} del ArabGulf print(ArabGulf)

  • أ) SyntaxError: invalid syntax
  • ب) KeyError: 'ArabGulf'
  • ج) NameError: name 'ArabGulf' is not defined
  • د) TypeError: 'dict' object is not callable

الإجابة الصحيحة: c

الإجابة: NameError: name 'ArabGulf' is not defined

الشرح: 1. السطر الأول ينشئ قاموسًا باسم `ArabGulf`. 2. الأمر `del ArabGulf` يحذف المتغير `ArabGulf` وكل محتوياته من الذاكرة. 3. عند محاولة طباعة `ArabGulf` بعد حذفه، لا يعرف المترجم هذا الاسم بعد الآن. 4. النتيجة: خطأ `NameError` لأن المتغير لم يعد معرفًا.

تلميح: ما الذي يفعله الأمر `del`؟ وما الذي يحدث عند محاولة استخدام متغير بعد حذفه؟

التصنيف: سؤال اختبار | المستوى: متوسط

في مشروع محاكاة البنك، لماذا يُعتبر القاموس (Dictionary) هيكل بيانات مناسب لتخزين سجل العميل؟

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

الإجابة الصحيحة: c

الإجابة: لأن رقم الحساب يمكن أن يكون مفتاحًا فريدًا للوصول السريع إلى بيانات العميل (الاسم والرصيد).

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

تلميح: فكر في العلاقة بين رقم الحساب وبقية بيانات العميل، وكيفية البحث عن عميل معين.

التصنيف: تفكير ناقد | المستوى: صعب