أهم المعلومات عن معنى Data Structure

مقال بسيط باذن الله عن كل ما يخص ال Data Structure وكل ما تحتاج معرفته من معلومات وأمثلة وتجارب وكل ما تريد.

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

قبل أن نتحدث عن Data Structure يجب أن تعرف أولا معنى كلمة Data أو البيانات. في عالم البرمجة وعندما تتعامل مع تطبيق برمجي فإن البيانات هي كل المعلومات الموجودة في التطبيق الخاص بك وليكن على سبيل المثال أسماء المستخدمين للتطبيق والبريد الخاص بهم وعناوينهم وأسماء الأقسام والمنتجات وكل شيء في التطبيق. وأثناء كتابتك للكود البرمجي سوف تتعلم عن المتغيرات ( Variables ) والتي تمكنك من تخزين قيم البيانات ( Values ) فيها وفيما يلي مثال بأكثر من لغة عن المتغيرات وفيها قيم لبيانات مختلفة لتوضيح الفكرة ومعها نوع هذه البيانات.

ما هي المشكلة في عدم ترتيب البيانات ؟

تخيل معي أنك صاحب جامعة كبيرة وعندك آلاف الطلاب الذين يسجلون كل سنة وفي سنة واحدة حصلت على 5000 طالب جديد ومعك السجلات الخاصة بهم, الآن هناك الكثير من العمليات التي سوف تقوم بها سنويا وهي حذف طالب تم تخرجه وإضافة طالب جديد وتعديل بيانات طالب موجود بالفعل وهكذا تخيل معي لو لم يكن هناك طريقة لترتيب البيانات وأنواع البيانات فلن تستطيع القيام بهذه العملية بسهولة لكن ماذا لو قمنا بعمل Sort للبيانات أبجديا على سبيل المثال ؟ سوف تستيطع الآن الوصول بسهولة لمن تريد وتعديل بياناته ويمكنك أيضا تطبيق هذا المثال على شخص عنده آلاف الكتب كلها غير منظمة وكل مكان فيه مجموعة كتب ليس لها علاقة ببعضها وحاولت ان تبحث عن كتاب معين في هذه الكتب يجب عليك المرور عليها جميعا أو على الاقل بالمعدل نصفها حتى تصل للكتاب الخاص بك مع العلم أنك متأكد انه موجود لكن تخيل معي أن هذا الشخص يملك مكتبة منظمة بالأقسام وفيها قسم الروايات الخاصة بالجيب وداخل الروايات كل رواية مرتبة بالرقم الخاص بها وهنا كل ما عليك هو البحث عن الروايات وداخلها رواية رقم 50 فسوف تصل سريعا جدا وهكذا.

المعنى الحرفي والتسمية

في مجال هندسة البرمجيات جملة Data Structure تعني بنية أو هيكل البيانات والتي تتيح لك ترتيب وتخزين البيانات في الكمبيوتر وتهيئتها لإستخدامها بشكل سليم وبكفاءة عند التعامل معها والتعديل عليها وهي تستند على قدرة الكمبيوتر في تخزين البيانات في الذاكرة وتحديد نوع البيانات المناسب لكل تطبيق حتى يعمل ال Code أو ال Algorithm بطريقة فعالة سليمة.

لماذا Data Structure ؟

هنا سوف أوضح أهم المميزات التي سوف تحصل عليها من تعلمك ال Data Structure وإستخدامك لهيكلة البيانات.
  • الحصول على الترتيب المنهجي السليم للبيانات
  • تسريع تنفيذ العمليات وتوفير الوقت والمساحة داخل ال Memory
  • إستهلاك موارد ( Resources ) أقل لتنفيذ العمليات التي تتم على البيانات ( Edit, Delete, Update )
  • الحصول على البنية السليمة والصحيحة لعمل Algorithm فعال.

أنواع ال Data Structures

لدينا الكثير من الأنواع التي تحتاج الكثير للتحدث عنها وهي تحتاج لدورة تعليمية كاملة ولذلك سوف أتحدث عن بعض أنواع البيانات لتوضيح الفكرة.

Primitive Types

Boolean

في علوم الكمبيوتر Boolean Data Types هي قيمة من قيمتين محتملين وفي الغالب يكونوا True و False ويستخدموا مع ال Condition التي تقوم بتغيير المحتوى والتحكم فيه ( Control Flow ) فعلى سبيل المثال تخيل معي أنك تقوم بطلب منتج من موقع معين ولا يوجد لديك عنوان سوف تظهر لك رسالة أنه يجب عليك كتابة عنوان لتوصيل الطلب ولو كان لديك عنوان سوف يتم تنفيذ الطلب مباشرة وهنا مثال في لغة Python لعرض فكرة إستخدام Condition معين وطريقة إستخدام ال Boolean Values, لذلك يمكن تلخيص الموضوع في أن هذه القيم تعبر عن معنى True Or False, 1 Or 0, On Or Off, Yes Or No

Integer

وهو العدد الصحيح وهو عدد يمكن كتابته بدون كسور أو فواصل عشرية على سبيل المثال ( 1, 2, 3 ) وهذه تسمى الأعداد الطبيعية ومعها الصفر والأرقام السالبة ويتم إستخدام ال Integers في كل ما يحتاج لكتابة رقم على سبيل المثال رقم المعرف ( ID ) الخاص بك في الموقع وفيما يلي مثال بلغة Python يوضح لك نوع البيانات لتفهم الفكرة.

Float

العدد الفاصل العائم هو العدد العشري الذي يحتوي على علامة عشرية ويمكن كتابته عن طريق حاصل ضرب الكسر في العدد 10 مرفوع ل أس صحيح وهنا مثال لإثبات الفكرة في مثال بلغة Python

Character

كل رقم وحرف وعلامة هم في النهاية Character على سبيل المثال A, B, C, 1, 2, 3, -, @, # ,وأيضا هناك Hidden Characters مثل ال Space, Tab, Carriage-Return وهنا مثال في لغة JavaScript يوضح لك مجموعة Characters في مكان واحد وسوف نستعمل Function تدعى charAt للوصل ل Character معين عن طريق ال Index الخاص به ومعناها Character At Position

Pointer

ال Pointers من اسمه فهو مرجع أو إشارة لمكان البيانات داخل ال Computer Memory ولا يحتوي على بيانات معينة ولكن فقط إشارة لها

Composite Types

وهي البيانات المركبة التي يمكن أن تحتوي على مجموعة بيانات أخرى داخلها. ويطلق عليها Composite أو Non Primitive وهي تنقسم لجزئين Linear Data Structure و Non Linear Data Structure وسوف نتناولهم الآن للتعرف عليهم وعلى أنواع البيانات التي تخصهم

Linear Data Structure

وهي البيانات التي تضعها بجانب بعضها بطريقة متسلسلة أو خطية ( Sequential Order )
مقارنة بين Linear Data Structure و Non-Linear Data Structure

Array

هي مجموعة من العناصر الموجودة بجانب بعضها البعض وفكرتها هي إضافة مجموعة من البيانات من نفس النوع في مكان واحد ويمكن الوصول لكل عنصر من العناصر عن طريق ال Index الخاص به وفيما يلي مثال لل Array في بعض اللغات وكيفية الدخول لعنصر من عناصرها.

Stack

لفهم معنى ال Stack تخيل معي أنه لديك مجموعة اسطوانات فوق بعضها إذا أردت إضافة اسطوانة جديدة عليهم سوف تضيف الاسطوانة فوق أعلى اسطوانة وأيضا إذا أردت أن تزيل الاسطوانة فسوف تزيل أول اسطوانة وهذا ما يحدث في ال Stack البيانات تدخل وتخرج من مكان واحد ودخول البيانات يسمى Push وخروج البيانات يسمى Pop وهناك Peek لمعرفة أعلى عنصر في ال Stack وإدخال العناصر وإزالتها بهذا الترتيب يسمى LIFO بمعنى Last In First Out بمعنى من دخل أخيرا يخرج أولا وفيما يلي مثال بلغة Python لعرض الفكرة

Queue

ال Queue أو نظام الطابور هي نفس فكرة عمل ال Stack ولكن هناك مكانين يخرج منهم البيانات وتقوم بإضافة البيانات بواسطة enqueue() وإزالة البيانات بواسطة dequeue() والترتيب الخاص به يعمل بنظام FIFO ومعناها First In First Out لذلك يكن أن نقول من يأتي أولا يتم خدمته أولا لذلك تجد الإختلاف بينه وبين ال Stack في ال Stack يأتي الزبون آخر شخص ويمشي أول شخص ولكن في ال Queue يأتي الزبون أول شخص ويمشي أول شخص وهنا مثال في لغة Python لتوضيح الفكرة

Linked List

القائمة المتصلة هي بنية من البيانات تحتوي على مجموعة من السجلات مرتبة ومرتبطة ببعضها البعض وكل سجل يحتوي على حقلين الحقل الأول يحتوي على القيمة والثاني يحتوي على مؤشر عنوان السجل التالي أو السابق أو عنوان ملغي ( Null ) وكل سجل في القائمة يسمى عقدة ( Node ) ولا يشترط أن تكون العقد مرتبة بشكل متتالي في الذاكرة لأن نظام التشغيل هو من يقوم بحجز مكان العقدة في الذاكرة.
صورة لعرض فكرة ال Linked List

Non-Linear Data Structure

وهو عكس ال Linear Data Structure تماما والصورة الخاصة بال Linear توضح المقارنة بينهم فيمكن أن نقول أن البيانات في ال Non-Linear لا تخزن بجانب بعضها ولكنها تكون مرتبطة ببعضها بشكل ما.

Tree

ومن اسمها الشجرة ولكنها عكس الشجرة الموجودة في الطبيعي حيث أن ال Root الخاص بالشجرة في أعلى الشجرة والعناصر الموجودة في البنية تسمى Nodes وتتصل ببعضها عن طريق ال Edges وكل Node يحتوي على بيانات أو قيمة ( Value ) ويمكن أن يكون تحته Child Node أو لا, ويطلق على العناصر في أسفل الشجرة Leaf Nodes وهي العناصر التي لا يوجد تحتها Childs ويستخدم هذا النوع من البيانات في حالة كان لديك بيانات مرتبة بشكل هرمي مثل ال Folders الموجودة في نظام التشغيل على سبيل المثال أو لو أردت مثال من عالم الكمبيوتر فعندنا ال HTML DOM => Document Object Model وهي الشجرة الخاصة بالعناصر. وهنا بعض التعريفات لتلخيص ما كتبناه
Root أعلى Node في الشجرة
Edge حلقة الوصل بين ال Nodes
Child عبارة عن Node يحتوي على Parent
Parent عبارة عن Node يحتوي على حلقة وصل بينه وبين Child Node
Leaf عبارة عن Node لا يوجد لديه Child Node
مثال لعرض فكرة ال Tree Data Structure
هناك الكثير من أنواع البيانات التي لن يكفي مقال للكتابة عنها مثل Hash Table و Graph الخ…

العمليات التي تتم على البيانات

كل نوع من أنواع البيانات يتم عمل عمليات مختلفة عليه بناء على هذا النوع فمثلا الأرقام يمكنك عمل عمليات حسابية عليها وجمعها على بعضها أو ضربها في بعضها أو قسمتها وهكذا وال Strings يمكنك دمجها مع بعضها لتخرج ب String كامل يحتوي على الإثنين وهكذا وال

هذه بعض الكتب القيمة على موقع أمازون والتي سوف تساعدك للدخول لهذا العالم ويمكنك البحث عنها والحصول عليها بالطريقة المناسبة لك.

مراجع مهمة

المساهمين