17 - سلسلة تبسيط البرمجة – أنواع المعطيات المركبة

السلام عليكم ورحمة الله وبركاته

بسم الله الرحمن الرحيم

قررت إحدى الشركات الكبرى بمناسبة مرور 10 سنوات على تأسيس الشركة أن تمنح موظفيها هدية قيمة عبارة عن ساعة قيّمة وقلم ثمين وميدالية من البرونز ومحفظة نقود من الجلد الطبيعي

واقترح أحد أعضاء اللجنة المسؤولة عن عملية التوزيع وضع لصاقات على كل قطعة مكتوب عليها اسم الموظف لتصبح الأقلام تحمل ملصق عليه اسم كل موظف على حدا ونفس الشيء بالنسبة للساعات والميداليات والمحافظ

وأن يتم جمعها كلها في صندوق كرتوني واحد

وعندما يحين وقت التوزيع يقوموا بإخراج القطع سواء كانت ساعة أو قلم أو غيرها وينظروا اسم الموظف ثم يعطوه إياها

إلا أن أحد المنظمين قدم اقتراح آخر

فقال لماذا لا نحضر علب صغيرة نضع في كل واحدة ساعة وقلم وميدالية ومحفظة

ثم نضع على العلبة اسم الموظف

بهذا الشكل نتعامل مع نوع واحد وهو علب الهدايا بدل من خليط من الهدايا

ويكون لدينا ملصق واحد على العلبة بدل من أربع ملصقات على أربع قطع لأننا نعرف أن العلبة تحوي قطعة واحدة فقط من كل نوع وأن العلبة بما فيها هي للموظف

إن الاقتراح الثاني هو الذي يمثل نوع المعطيات المركب

أي أنه نوع جديد معرف من قبل المستخدم يضم في داخله عدة متغيرات من أنواع أخرى سواء بسيطة أو مركبة سبق تعريفها

وعلى فرض أننا نريد عمل برنامج لأرشفة سجلات الطلاب في أحد المعاهد

فيلزمنا أن نسجل لكل طالب رقم تعريفي يكون وحيد حتى لا يختلط مع طلاب آخرين بنفس الاسم

ومتغير رمزي لحفظ الاسم

ومتغير رمزي آخر لحفظ اسم العائلة

ومتغير رقمي لحفظ العمر ويكفي متحول من النوع بايت لأن العمر يستحيل أن يتجاوز 255 أو أن يكون سالب

ومتغير من النوع تاريخ لحفظ تاريخ الالتحاق

ومتغير من النوع رقم عشري لحفظ النسبة المحصلة في نهاية العام

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

و لهذا فالأنسب أن نطبق الاقتراح الثاني

فنستطيع أن نعرف نوع جديد من المعطيات نسميه

سجل طالب

يضم في داخله متغير وحيد لكل نوع من الانواع المذكورة أعلاه

وكتمثيل رمزي

عرف نوع مركب اسمه "سجل طالب"

مكون من

الاسم من النوع نص

العائلة من النوع نص

العمر من النوع رقم بايت

الالتحاق من النوع تاريخ

النسبة المحصلة من النوع عدد عشري

والآن حتى نحفظ معلومات الطلاب فيكفي حجز متغير مصفوفي من النوع المركب "سجل طالب"

ولنسمه سجلات الطلاب وليكن بحجم 500

احجز "سجلات الطلاب" من النوع سجل طالب[500]

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

كمثال لو أردنا الوصول إلى عُمْر خالد فيكون لدينا

سجلات الطلاب(216).العمر فنجد فيه مثلا 26

سجلات الطلاب(216).الالتحاق فنجد قيمته 16-09-2010

سجلات الطلاب(216).النسبة وتكون 67.13

وهكذا

كما يمكن أن تكون حقول النوع المركب هي من أنواع مركبة أخرى

فعلى فرض نريد برنامج لإدارة الجامعة

فنستطيع أن نعرف نوع مركب يمثل الكلية يضم متغير يمثل عدد القاعات ومتغير لعدد الأقسام

و متغير من النوع المركب سجل طالب لتمثيل طلاب هذه الجامعة

ومتغير مركب يمثل الكادر التدريسي

وهكذا

ألقاكم على خير والسلام عليكم