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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

سجل طالب

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

وكتمثيل رمزي

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

مكون من

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

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

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

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

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

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

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

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

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

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

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

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

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

وهكذا

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

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

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

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

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

وهكذا

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


شكرا لك أستاذ على كل الدروس بالفعل كانت توضيحية لدي سؤال بخصوص هذا الدرس:

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

السؤال هو : هل من الضروري أن يكون المعطى محددا مسبقا بسعته أم أن الحاسوب يتكفل بهذه المهمة ونقدم له فقط البيان ليحدد بنفسه السعة الممكنة للقيام بالأمر ؟

سبب هذا السؤال أنه بدا لي لو أنه العكس فستكون البرمجة شيئا عقيما إذ أنه في كل مرة نريد إدخال بيان نضطر فيها إلا تحديد السعة ... أتمنى أن تفهم سؤالي لأنني لم أعرف كيف أصيغه جيدا ... :)

السعة تحدد من البداية ولا يحتاج تعديلها كلما غيرنا القيمة

الأمر أشبه بوعاء الطبخ (طنجرة) فأنت كفرد لا يتطلب الأمر أن تستخدم وعاء ضخم كالذي يستخدم في المطاعم الكبيرة

حتى لو أدى الغرض ولكنه بالنسبة لك مربك حين تريد أن تنظفه وحين تريد أن تضعه على الرف

فقط يستخدم في حال الحاجة إليه مثلا كنت تعيش في منزل كبير يضم عدة عوائل وكان المطبخ واحد حينها لا ينفع وعاء صغير وتحتاج إلى الكبير

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

الآن بعد أن أصبحت السعات التخزينية كبيرة وسريعة ورخيصة لم يعد مسألة تحديد السعات بالأمر المهم جدا وإنما التركيز على الأداء

أخي الكريم السلسلة لها تتمة عملية لكني توقفت هنا ظنا مني أن لا أحد يتابع لأنه لم يسألني أحد عن التتمة

فإن كنت متابع ويهمك الأمر حتى أتابع بتيسير الله

لأنه إن وجد ولو واحد متابع فواجب علي الإكمال

أما إن لم يوجد فهناك أمور أخرى أولى