4-1 مقدمة:
تستخدم كلمة هيكل وهيكلية في مجالات عديدة لتوصيف أغراض كبيرة تم بنائها من وحدات بنائية صغيرة بأسلوب تكراري، وهياكل البيانات هي كتلة منطقية نجمت عن تكرارية عناصر البيانات وفق ترتيب محدد وعلاقات، وتعتبر هياكل البيانات مرحلة وسيطة بين الملفات على وسائط التخزين وبين برامج التطبيقات فيما يوضحه الشكل 14-1.
الشكل 14-1
14-2 تعريف هياكل البيانات:
تعرف على أنها بناء منطقي كبير من عناصر البيانات أو مجموعات منظمة من عناصر البيانات تعامل كوحدة واحدة، مثل المصفوفات أو السجلات.
ويمكن أن تعرف أيضاً أنها مجموعة من عناصر البيانات المنظمة وفق أسلوب يوحي بكيفية تخزينها واسترجاعها كعناصر بيانات مستقلة.
والتعريف الأخير ليس على إطلاقه ففي استرجاع البيانات من جداول قواعد البيانات العلاقية لا يستطيع المستخدم غير المتخصص تحديد أسلوب الاسترجاع، لكن في بعض هياكل البيانات مثل المصفوفات يجب على المستخدم فهم طبيعة المصفوفة وكتابة البرامج اللازمة والمحققة لأهدافه مما يستدعي فهم هيكل البيانات ومناظرة الشكل المنطقي بالوضع التخزيني للبيانات داخل الذاكرة الأساسية.
•أنواع هياكل البيانات:
تقسم هياكل البيانات إلى عدة أنواع يناظر كل منها أسلوباً خاصاً في تصميم البرامج والمعالجة الالكترونية ويمكن إدراجها تحت ثلاثة أنواع:
1. هياكل بيانات خطية
2. هياكل بيانات شجرية
3.هياكل بيانات شبكية
14-3 هياكل البيانات الخطية:
أي ترص البيانات داخل الذاكرة على خط واحد وتشمل:
• المصفوفة ARRAY.
• سلسلة الحروف STRING (السلاسل(.
• السجلات RECORDS والملفات (الجداول).
• القوائم LISTS.
• الكومةSTACK .
• قوائم الانتظارQUE .
14-3-1 المصفوفة:
سوف نتفهم طبيعة المصفوفة من المثال التالي، إذا كانت درجات مادة قواعد البيانات لفئة من الطلبة على النحو(45، 15 ،30 ،32 ،48 ،55 ،12) فإنه يمكن القول أن درجة الطالب الأول تساوي45 ، ودرجة الثاني 15والثالث30 وهكذا ،فإذا رمزنا لعنصر البيانات بالرمز (ع) فإن(ع)=45 ،ع(2)=15، ع(3)=30، ع(7)=12 وهكذا، ويسمى الرقم إلى جوار (ع) بالرقم الدليل ويشير إلى رقم العنصر أي ترتيبه في ذات الفئة، فإذا اعتبرنا أن الرقم الدليل له قيمة عامة هي (1) فإنه يتيح التعامل المتكرر ومعرفة أي عنصر في فئة الدرجات بتغير قيمة(1). و رصد الدرجات على النحو السابق يسمى مصفوفة، واستخدام الرقم الدليل SUBSCRIPT يسمح بمعالجة ومعرفة كل عنصر من عناصرها على حده.
خصائص المصفوفة:
• تحتوي على عدد محدد من عناصر البيانات.
• تحتوي على نوع واحد من عناصر البيانات.
• ذات حيز ثابت لا يتغير ولا يتبدل في المصفوفة الواحدة.
•عندما يتم تخزين بيانات المصفوفة في ذاكرة الحاسب فإن هناك تناظر وتماثل بين شكل المصفوفة المنطقية (المكتوبة على الورق) وبين شكلها وهيئتها في ذاكرة الحاسب مما يساعد على إنشاء منطق برنامج يتعامل مع عناصرها باستخدام الرقم الدليل (1).
•يتطلب تخزين المصفوفة في ذاكرة الحاسب وإجراء معالجة بياناتها عدة خطوات على النحو التالي:
1. فتح مخازن في ذاكرة الحاسب للتخزين المؤقت للبيانات بأمر التخصيص LET كما في لغة بيسك وذلك وفق منطق البرامج الذي سيتعامل مع البيانات ويعيب هذه الطريقة البطيء واحتمالات الخطأ.
2. أو تخصيص مواقع متلاصقة في ذاكرة الحاسب لعناصر البيانات وهذه وظيفة تؤدى في كل لغات البرمجة بأمر ذاتي FUNCTION BUILT IN مثل الأمر "الطول، الاسم DIM" كما في لغة بيسك مثل 100 ×DIM.
3. استخدام الرقم الدليل في الإشارة لعناصر البيانات المطلوب التعامل معها.
4. إذا تعامل البرنامج مع بعض عناصر البيانات فإن البرنامج لا يمكنه التعامل مع نفس العناصر مرة أخرى رغم بقاء البيانات في مواقع التخزين داخل الذاكرة وقد حلت لغة البيسك هذه المشكلة بالأمر Restore مع أتاحت إعادة تسمية المتغيرات والتعامل معها على اعتبارها مدخلات جديدة.
المصفوفات ذات البعدين: إن معالجة المصفوفة الأحادية يوضح مدى التطابق بين المصفوفة المنطقية والأخرى المخزنة في ذاكرة الحاسب ويوضح كذلك ضرورة معرفة البرامج عنوان أول خلية تخزين داخل الذاكرة مما يساعد على تحديد باقي مواقع تخزين عناصر المصفوفة، لكن هذه البساطة في معالجة المصفوفة ذات البعد الواحد ليس شرطاً في المصفوفات المتعددة التي تتركب من عدد من الأعمدة وعدد آخر من الصفوف مثل مصفوفة لنفس الطلبة لعدد من المواد الدراسية حيث يختلف الشكل المنطقي لها عن الشكل التخزيني فيما يوضحه الجدول.
اسم الطالب | درجة المادة الأولى | درجة المادة الثانية | درجة المادة الثالثة |
أحمد أحمد أحمد | 15 | 20 | 13 |
سناء أحمد أحمد | 18 | 12 | 16 |
زكي رمزي | 14 | 10 | 18 |
رمزي | 17 | 20 | 17 |
نجاة | 10 | 15 | 14 |
هديل | 16 | 17 | 10 |
فإذا كان العمود الأول من جهة اليسار يرصد درجات الطلبة في الكيمياء والذي يليه هي درجات الفيزياء والعمود الأخير يمثل درجات الطلبة في الأحياء فإن مثل هذه المصفوفات تستدعي أن نتذكر ما يلي:
• أن ذاكرة الحاسب ليست على هيئة جدول بل هي خلايا تخزين متراصة متجاورة على مستوى واحد.
•ضرورة برمجة المستويين س، ص على الورق داخل الذاكرة على مستوى واحد وواحد فقد.
وحتى يجري ذلك لأبد أن نتأكد أن حيز المصفوفة لن يتغير عند إجراء تحديث على البيانات بعدها يتم إدخال البيانات الخاصة بالصف الأول ثم الصف الثاني ثم الصف الثالث وهكذا على النحو الموضح في الشكل 14-2 مما يستدعي:
الشكل 14-2 الشكل داخل الذاكرة |
الشكل 14-2 الشكل داخل الذاكرة
1- التحديد الدقيق لعدد وحدات التخزين اللازمة للمصفوفة.
2- حجز مواقع التخزين في الذاكرة متلاصقة ما أمكن.
3- تخزين البيانات في الذاكرة صفاً صفاً.
4- تحديد المداخل الصحيحة للمصفوفة
يتبع....