هياكل البيانات الأساسية
-
مقدمة دورة هياكل البيانات الأساسية3 المواضيع|1 اختبار
-
مواد الدورة (Course Materials)
-
قياس الكفاءة (Performance Evaluation)12 المواضيع|5 الإختبارات
-
قياس كفاءة البرامج (Program performance evaluation)
-
مختصر كتابي: قياس كفاءة البرامج
-
القياس الصحيح للكفاءة (The correct measure of performance)
-
أمثلة على نمو العمليات (Examples of operations growth)
-
مختصر كتابي: أمثلة على نمو العمليات
-
التدوينات المتقاربة (Asymptotic Notation)
-
مختصر كتابي: التدوينات المتقاربة
-
الحالة الافضل والمتوسطة للكفاءة (The best and the average case of performance)
-
مختصر كتابي: الحالة الافضل والمتوسطة للكفاءة
-
ترتيب درجات النمو (The order of growth functions)
-
مختصر كتابي: ترتيب درجات النمو
-
المصادر
-
قياس كفاءة البرامج (Program performance evaluation)
-
المصفوفة (Array)9 المواضيع|5 الإختبارات
-
تعريف المصفوفة (Array Definition)
-
مختصر كتابي: تعريف المصفوفة
-
التخزين في الذاكرة (Storage in memory)
-
مختصر كتابي: التخزين في الذاكرة
-
العمليات وتعقيدها (Operations and time complexity)
-
مختصر كتابي: العمليات وتعقيدها
-
النسخه السطحية والنسخة العميقة (Shallow copy and Deep copy)
-
مختصر كتابي: النسخة السطحية والنسخة العميقة
-
المصادر
-
تعريف المصفوفة (Array Definition)
-
المجموعة ثنائية الأبعاد (Two dimensional array)5 المواضيع|1 اختبار
-
مجموعة متعددة الأبعاد (Multi dimensional array)2 المواضيع
-
المصفوفات الديناميكية (ArrayLists)9 المواضيع|4 الإختبارات
-
تعريف المصفوفات الديناميكية (ArrayLists Definition)
-
مختصر كتابي: تعريف المصفوفات الديناميكية
-
عمليات المصفوفات الديناميكية (ArrayLists Operations)
-
مختصر كتابي: عمليات المصفوفات الديناميكية
-
التخزين في الذاكرة (Storage in memory)
-
مختصر كتابي: التخزين في الذاكرة
-
تعقيد وقت العمليات (Operations time complexity)
-
مختصر كتابي: تعقيد وقت العمليات
-
المصادر
-
تعريف المصفوفات الديناميكية (ArrayLists Definition)
-
الرصة (Stack)9 المواضيع|5 الإختبارات
-
الطابور (Queue)13 المواضيع|6 الإختبارات
-
تعريف الطابور (Queue)
-
مختصر كتابي: تعريف الطابور (Queue)
-
الفرق بين الواجهة والكلاس (Difference between interface and class)
-
مختصر كتابي: الفرق بين الواجهة والكلاس
-
الطابور في جافا (Queue in Java)
-
مختصر كتابي: الطابور في جافا
-
مثال لكلاس طابور في الجافا (Example of a queue class in java)
-
مختصر كتابي: مثال لكلاس طابور في الجافا
-
طريقة عمل ال ArrayDeque
-
مختصر كتابي: طريقة عمل ال ArrayDeque
-
متي يُستخدام الطابور (When does the queue use)؟
-
مختصر كتابي: متي يُستخدم الطابور
-
المصادر
-
تعريف الطابور (Queue)
-
خاتمة دورة هياكل البيانات الأساسية
الإختبارات
مختصر كتابي: مقدمة هياكل البيانات
ما هي هياكل البيانات؟
هياكل البيانات (Data Structures) ليست لغة برمجة ولا كودًا مكتوبًا. هي، كما يقول اسمها، هياكل أو أشكال نمثّل بها البيانات التي نحتاج إلى تخزينها أو استرجاعها في أي وقت ونحن نحل مشكلة ما. واختيار الشكل المناسب هو ما يجعل الوصول إلى البيانات سهلًا وسريعًا.
تشبيه من البيت: لكل شيء مكانه
- تضع بطاقتك وفلوسك في محفظة، والمحفظة في درج معين في غرفتك، وملابسك في الدولاب.
- عندما تريد محفظتك لا تبحث في البيت كله، بل تذهب مباشرة إلى الدرج. وعندما تريد طبقًا أو ملعقة تذهب إلى المطبخ، لا إلى غرفة النوم.
- البيت نفسه فيه مخازن كثيرة لأنواع مختلفة من الأشياء، وكل شيء مخزّن حسب فيم تستخدمه ومتى تستخدمه.
ماذا لو وضعنا كل شيء في كومة واحدة؟
تخيّل أننا أزلنا كل الدواليب والمخازن، وجعلنا البيت صالة واحدة وضعنا فيها الحلل والملابس والمحافظ في كومة كبيرة. هل سيكون أسهل أن تبحث عن محفظتك وسط هذه الكومة، أم أن تذهب إلى الدرج كما اعتدت؟ هذا بالضبط هو الفرق بين أن تستخدم هيكل بيانات مناسبًا يسهّل عليك الحل، وأن تلجأ إلى حلول بدائية جدًا تصعّب المشكلة بدل أن تسهّلها.
لماذا نحتاج أشكالًا كثيرة؟
- لا يصلح أن تضع المحفظة في الدولاب، لأن الدولاب مخصص للملابس. لكل نوع بيانات أو مشكلة المخزن الذي يناسبها، حسب طريقة الحل أو الاسترجاع التي تريدها.
- الأطباق: كلها متشابهة، ولا يهمك أي طبق تأخذ، فتأخذ أول طبق تجده في الرصّة.
- الملابس: تختار قطعة بعينها، فتحتاج أن تكون كل الملابس أمامك لتختار واحدة وتترك الباقي.
- طريقة تخزين الأطباق تناسب الأطباق، وطريقة تخزين الملابس تناسب الملابس. وكذلك نختار طريقة تخزين البيانات حسب المشكلة، لتكون استعادتها أسهل.
أين نجد هياكل البيانات؟
في تطبيقات الموبايل والكمبيوتر، والألعاب (Games)، ومواقع التواصل الاجتماعي، والرسائل التي ترسلها. كل واحد منها قد يستخدم هيكلًا أو اثنين أو عشرة هياكل بيانات، بطرق مختلفة تناسب كل جزء من البيانات. وهذه الطرق تعود في النهاية إلى مجموعة هياكل بيانات متعارف عليها، مثل الشجرة (Tree) والمكدس (Stack) والمصفوفة (Array).
معرفتك بهذه الأشكال تعطيك مجموعة أدوات تختار منها عند حل مشكلتك، فتقول: هذه المشكلة يناسبها هذا الهيكل، أو مزيج من هيكلين. وفي هذا الكورس سنتعرف على العمليات المستخدمة مع كل شكل، وكيف يُخزَّن في الذاكرة، وأي أنواع المشكلات يحلها جيدًا.
الخلاصة
- هياكل البيانات أشكال لتمثيل البيانات وتخزينها واسترجاعها بسهولة.
- الشكل المناسب يسهّل الحل، والشكل الخطأ يتعبك جدًا في الاسترجاع.
- لكل مشكلة الهيكل الذي يناسب طريقة استخدامها، تمامًا كمخازن البيت.
- فهم الهياكل الشائعة يجعلك تختار الهيكل المناسب في المكان المناسب.
مصطلحات الدرس
| المصطلح | بالإنجليزية | المعنى |
|---|---|---|
| هياكل البيانات | Data Structures | أشكال نمثّل بها البيانات لتخزينها واسترجاعها |
| المصفوفة | Array | عناصر مرتبة بجانب بعضها في صف واحد |
| المكدس | Stack | عناصر مرصوصة فوق بعضها |
| الشجرة | Tree | عناصر مرتبة في مستويات تتفرع من عنصر واحد |

