14 - سلسلة تبسيط البرمجة – آلية المتغيرات المصفوفية

14 - سلسلة تبسيط البرمجة – آلية المتغيرات المصفوفية

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

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

عادة ما نطلق عليها المصفوفات وتجنبا حتى لا تختلط مع مفهوم المصفوفات الرياضية

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

وحتى ندرك لماذا اقتضت الحاجة لهذا النوع من المتغيرات لنتخيل المثال التالي :

قامت شركة لديها المئات من العمال ببناء مجمع سكني عبارة عن غرف متجاورة يجمعها ممرات طويلة

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

هل يعقل أنه عندما نريد الوصول إلى غرفة ما أن نبدأ بقراءة أسماء الغرف واحدة تلو الأخى حتى نصل إلى الغرفة المعنية

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

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

عدا عن ذلك ماذا لو اضطر الأمر لتغيير بعض الأسماء أو إعادة ترتيبها ستسبب لخبطة وارتباك

من هنا تم إيجاد طريقة جديدة للتنظيم وهي إعطاء أرقام تسلسلية للغرف تبدأ من 0 أو 1 وتزيد واحدا واحدا حتى الوصول إلى نهاية الحجرات

وفي مثالنا يمكن إعطاء ما يلي غرفة0 ، غرفة1، غرفة2 ... إلخ

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

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

كمثال لتعريف وحجز متغير مصفوفي

  • احجز لي متغير مصفوفي اسمه غرفة وحجمه 500

والآن نستخدم كل حجرة من خلال الاسم والرقم

مثال :

غرفة(4)

غرفة(124)

وهكذا

قس على ذلك مثال صناديق البريد كيف يعطى لها أرقام

أو خزائن طلاب الجامعة أو أرقام المكاتب في المجمعات التجارية

وهكذا

وإلى لقاء متجدد إن شاء الله

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

14

أحب أن أسميها منظومة array لتميزها عن المصفوفة الرياضية matrix. وهذا الإصطلاح قرأته في عدد من الكتب المترجمة.

توفر اللغات العالية أنواع من منها مثل

  • المجموعة Set: يمكن الإضافة لها والحذف منها وفحص الإنتماء بسرعة (قيمة O هي 1 أو logN) والسير عليها دون ترتيب محدد (لا تحتفظ بمعلومات الترتيب)

  • المنظومة Array أو القائمة List يمكن الإضافة والحذف والسير عليها بالترتيب أو القفز للحصول على العنصر رقم كذا لكن فحص الإنتماء مكلف

  • القاموس Dictionary أو المقابلة Mapping يربط مفتاح بقيمة. يمكن فحص انتماء المفتاح بسرعة وكذلك يمكن جلب القيمة المقابلة له ويمكن السير على كل المفاتيح والقيم دون ترتيب (بعض اللغات توفر الترتيب)

  • المنظومة الفراغية Sparse Array يمكن أن نقول أنها تحتوي عدد قليل من العناصر غير الخالية مقارنة بحجمها

معلومات قيمة جدا،تشكر أستاذ مؤيد

سعدت بإثراءك أخي مؤيد

والحقيقة أنه في كل لغة يكون هناك أنماط معينة من بنى المعطيات Data Structurs

فمثلا في الدوت نت يوجد بالإضافة إلى ما ذكرت بنى متقدمة تكون مبنية على الانواع المختلفة القياسية

مثل Stack Quieue HashTable KeyedList LinkedList وغيرها

وطبعا بإمكان المبرمج أن يبني لوائح خاصة به لتؤدي مهام معينة قد لا تكفي واحدة من تلك الجاهزة لتنفيذها

مشكور على الشرح الجميل

في بايثون يوجد نوعان أو يمكن أن نقول أنها ثلاثة أنواع من المصفوفات فيوجد List و Tuple و هما متشابهتين في معظم الخصائص و لكن اﻹختلاف الوحيد بينهما هي أن List قابلة للتغيير،أي بمعنى أنه أثناء سير العمل يمكننا إضافة عناصر جديدة لها في حين Tuple غير ممكن،تتم كتابة List عن طريق الأقواس المربعة [ ] في حين تكتب tuple عن طريق الأقواس العادية ( ) أما الخصائص اﻷخرى مثل الترتيب فهما نفس الشيء.

النوع الثالث و هو القاموس Dictionary فهو مصفوفة غير مرتبة آليا بمعنى أن المبرمج عليه ترتيب هته المصفوفة بنفسه عن طريق ما يسمى الفهرس Index

كتطبيق بسيط للدرس سأستخدم List تحوي 500 عنصر تمثل الغرف...

rooms = [range(501)]
for i in rooms:
    print "This is the list of rooms "+str(i)

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

room = range(501)
for r in room:
    print "This is room number: "+str(r)

عليكم معرفة لماذا استخدمنا (range(501 و لم نستخدم 500 فقط

مقدمة السلسلة

الدرس السابق 13

الدرس التالي 15