هياكل البيانات (Data Structures)

مقدمة

لقد استخدمنا بعض أنواع البيانات في البرامج البسيطة التي قمنا ببنائها في الدروس السابقة (النصوص، اﻷعداد، القيم المنطقية ....) وهذه اﻷنواع هي المكوّنة لهياكل البيانات، أي هي الجزيئات الصغيرة التي تتجمع مع بعضها لتكوين هياكل البيانات.

مشكلة تخزين بيانات المنشورات

إذا قلت لك أنت اﻵن تعمل على مشروع شبكة اجتماعية، ولديك منشورات، لو كان المنشور مجرد كتابة (نص) لكان تخزينه أسهل، إنشاء متغير وإرفاق النص كقيمة له var post = "نص المنشور" لكن الحقيقة أن اﻷمر أكثر تعقيداً، فالمنشور ليس مجرد نصّاً، بل هناك لكل منشور بعض البيانات اﻷخرى المرتبطة به، على سبيل المثال (ناشر المنشور، وقت النشر، عدد اﻹعجابات، عدد المشاهدات، عدد التعليقات، ...الخ) وكل منشور يجب أن يحتوي على هذه البيانات، فكيف تخزينها في برنامج والتعامل معها؟ هل ستقوم بإنشاء متغير لكل شيء مما ذكرنا؟ فلنفرض أن لدينا عدد كبير من المنشورات، كيف ستتعامل مع بيانات كل منشور؟ هنا يبدأ اﻹحتياج لهياكل البيانات حيث البرامج اﻷكثر تعقيداً، وهنا تظهر أهميتها الكبيرة جداً، فبهياكل البيانات تستطيع تخزين عدد كبير من المنشورات، ولكل منشور بيانات مختلفة مرتبطة مع بعضها (محتوى المنشور، الناشر، وقت النشر ...) ويمكنك بكل سهولة الوصول لبيانات منشور معين من وسط هذه المنشورات، وتعديلها وإجراء أي عمليات عليه بكفاءة.

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

مفهوم هياكل البيانات

هي طرق خاصة لتخزين وتنظيم البيانات في البرنامج مما يسهّل التعامل معها ويساعد على استخدامها بكفاءة

لماذا هياكل البيانات؟

في معظم البرامج التي سنعمل عليها؛ هناك معلومات مرتبطة ببعضها، لتخزينها نحتاج ﻷنواع بيانات جديدة تسهّل عملية تخزين هذه البيانات وتجعلها أكثر كفاءة؛ كمشكلة تخزين بيانات المنشورات التي ذكرناها باﻷعلى.

هياكل البيانات برمجياً

تختلف هياكل البيانات من لغة ﻷخرى، وتختلف مسمياتها، فربما تحتوي لغة على هياكل بيانات لا تحتويها اﻷخرى، وربما هناك نوع من هياكل البيانات موجود في لغتين لكن يختلف اسمه من لغة ﻷخرى، لكننا سنتناول نوعين مشهورين جداً من هياكل البيانات، وهما اﻷكثر استخداما، وربما هناك مبرمجين محترفين مثلاً في مجال الويب لا يعرفوا أنواعاً أخرى ولم يستخدموا أنواعاً أخرى، وهناك لغات كجافاسكريبت و PHP و Python لا تحتوي على هياكل بيانات إلا هذين النوعين، وغالباً ما يتم تسميتهما مجموعات (Collections) ﻷن مهمتهما تجميع البيانات.

أنواع هياكل البيانات

المصفوفات (arrays)

وهي أشهر هياكل البيانات وأكثرها استخداما، وأبسط الطرق لتجميع البيانات، وتقريبا كل لغات البرمجة تحتوي على المصفوفات، ربما يتغير اسمها في لغة كلغة Python إلى "List" لكن اﻹسم اﻷشهر لها المصفوفات Arrays فهي تستخدم في تخزين بيانات متعددة، على سبيل المثال لدينا عدد من اﻷشخاص في البرنامج، نريد أن ننشئ متغير نضع فيه أسماء كل مستخدمي البرنامج، يمكننا هنا استخدام المصفوفات arrays لتحتوي المصفوفة على أسماء كل مستخدمي البرنامج.

القواميس (Dictionaries)

هذا النوع من هياكل البيانات مهم ﻷبعد درجة، واستخداماته واسعه وكبيرة جداً لكنه يختلف جداً من لغة لأخرى، ويختلف إسمه بشكل كبير بين اللغات، لكننا سنستخدم مصطلح القواميس، وله عدة أسماء أخرى:

  • المصفوفة اﻹرتباطية (Associative Array)
  • جدول تجزئة (Hash Table)

لنفرض أن لدينا مستخدمين في النظام، ونريد تخزين كل مستخدمي النظام في متغير، سنستخدم هنا المصفوفات، كل مصفوفة تحتوي على مستخدم، لكن في بعض اﻷحيان لا نريد فقط لكل مستخدم ان يتم تخزين اسمه، بل نريد تخزين اسمه وبريده اﻹلكتروني وأي بيانات أخرى، هنا سنستخدم المصفوفة اﻹرتباطية

نعلم أنه من الصعب نسبياً عليك فهم هذه المعلومات نظرياً، لذلك الدروس القادمة سنشرح فيها كل ما ذكرنا في هذا الدرس بشكل تطبيقي

سنشرح ما درست من هياكل البيانات بشكل تطبيقي في الدروس القادمة باستخدام لغة Javascript لذلك ننصح بالرجوع لهذا الدرس مراراً وتكراراً أثناء قراءتك للدروس القادمة وأثناء تعلمك هياكل البيانات في أي لغة.

المساهمين

وجدت خطأ أو تريد المساهمة في محتوى الدرس؟ عدل الصفحة على Github