المصفوفات والقوائم – الفهرس والإدراج والحذف والمرور على العناصر

علوم الحاسوبالخوارزميات وحل المشكلات15–16 سنة

جارٍ التحميل…

استخدمها مع صفي ✨ خصّصها بالذكاء الاصطناعي الإبلاغ عن مشكلة

تُعرض القائمة خلايا مرقّمة بفهارس ومعها مؤشر. يقرأ الطلاب العناصر ويكتبونها ويضيفونها إلى النهاية ويدرجونها ويحذفونها، ويشاهدون إزاحة العناصر وتغيّر الطول وظهور أخطاء تجاوز الحدود، ثم ينتقلون إلى مصفوفة ثابتة الحجم لمقارنتها بالقائمة الديناميكية. يتنقل وضع المصفوفة ثنائية الأبعاد خطوة بخطوة في المرور صفًا صفًا أو عمودًا عمودًا باستخدام grid[r][c]، ويبحث وضع القاموس عن القيم بمفاتيحها، ويُظهر وضع المراجع اسمين يشيران إلى قائمة واحدة. وتُعرض كل عملية بلغة Python أو Java أو بالشيفرة الزائفة.

الدرس: المصفوفات والقوائم: الفهرسة والإدراج والحذف والمرور على العناصر

ماذا تعرض

تخزّن المصفوفة العناصر في مواضع مرقّمة، لذا يمكن قراءة أي عنصر أو تغييره في خطوة واحدة باستخدام فهرسه. أما الإدراج أو الحذف في الوسط فأبطأ، لأن كل عنصر لاحق يجب أن يُزاح؛ ويجعل عدّاد النقلات هذه التكلفة مرئية. تنمو القائمة الديناميكية عند الحاجة، بينما تحتفظ المصفوفة ثابتة الحجم بطولها وتحتاج إلى عدّاد للخانات المستخدمة. وتغطي المحاكاة أيضًا المصفوفات ثنائية الأبعاد والمرور عليها بحلقات متداخلة، والقواميس التي تبحث عن القيم بالمفاتيح، والمراجع: بعد b = a يشير الاسمان إلى القائمة نفسها.

طريقة الاستخدام

اختر «الوضع» و«الترميز». في وضع القائمة، اكتب «الفهرس i» و«القيمة»، ثم انقر عملية مثل nums.insert(2, 15) لتشاهد العناصر تُزاح؛ وجرّب فهرسًا بعد النهاية لترى الخطأ. غيّر «البنية» إلى «مصفوفة ثابتة الحجم (10)» لتدرج العناصر وتحذفها يدويًا. في وضع المصفوفة ثنائية الأبعاد، اختر «ترتيب المرور» وانقر «خطوة». وجرّب أيضًا وضع القاموس ووضع المراجع.

المعاملات القابلة للتغيير

  • الوضع قائمة / مصفوفة أحادية البعد, مصفوفة ثنائية الأبعاد, قاموس (مفتاح ← قيمة), المراجع والأسماء المستعارة
  • البنية أحادية البعد قائمة ديناميكية (list، ArrayList), مصفوفة ثابتة الحجم (10)
  • ترميز الشيفرة Python, Java, شيفرة زائفة
  • عدد العناصر في البداية 3–10
  • صفوف المصفوفة ثنائية الأبعاد 2–6
  • أعمدة المصفوفة ثنائية الأبعاد 2–8
  • سرعة الحركة 1–5 خطوة/s

أسئلة للاستكشاف

  1. كم عنصرًا يجب أن يُزاح عند إدراج قيمة في بداية قائمة من 10 عناصر؟
  2. لماذا يسبب nums[len(nums)] خطأً في Python بينما لا يسببه nums[-1]؟
  3. بعد b = a، لماذا يغيّر تعديل b[0] القائمة a أيضًا، وكيف تتجنب ذلك؟