📄 النص الكامل للصفحة
لتشاهد المثال في الشكل 1.15 في مفكرة جوبيتر:
1. أنشئ المكدس لتخزين مجموعة من الأرقام (45 ،32 ،21 ،1).
2. استخدم عملية حذف عنصر (Pop) من المكدس مرتين لحذف العنصرين الأخيرين منه.
3. استخدم عملية إضافة عنصر (Push) إلى المكدس لإضافة عنصر جديد إليه.
myStack=[1,21,32,45]
print("Initial stack: ", myStack)
print(myStack.pop())
print(myStack.pop())
print("The new stack after pop: ", myStack)
myStack.append(78)
print("The new stack after push: ", myStack)
نستخدم الدالة print(myStack.pop()) لعرض القيم المسترجعة من دالة myStack.Pop().
Initial stack: [1, 21, 32, 45]
45
32
The new stack after pop: [1, 21]
The new stack after push: [1, 21, 78]
myStack=[1,21,32,45]
print("Initial stack: ", myStack)
a=len(myStack)
print("size of stack",a)
# empty the stack
for i in range(a):
myStack.pop()
print(myStack)
myStack.pop()
تستخدم الدالة len لعرض طول المكدس.
يستخدم هذا الأمر لحذف كل العناصر من المكدس.
Initial stack: [1, 21, 32, 45]
size of stack 4
[]
---------------------------------------------------------------------------
IndexError
Input In [3], in <cell line: 9>()
7 myStack.pop()
8 print(myStack)
----> 9 myStack.pop()
IndexError: pop from empty list
يظهر الخطأ؛ لأن المكدس فارغ وأنت كتبت أمر حذف عنصر منه.
--- SECTION: خطأ الفهرس IndexError ---
ستلاحظ ظهور خطأ عندما كتبت أمر حذف عنصر من المكدس الفارغ وتسبب هذا في فيض المكدس (Stack Underflow). عليك دوما التحقق من وجود عناصر في المكدس قبل محاولة حذف عنصر منه.
وزارة التعليم
Ministry of Education
2023 - 1447
30
--- VISUAL CONTEXT ---
**IMAGE**: شعار وزارة التعليم
Description: شعار وزارة التعليم السعودية يتضمن اسم الوزارة باللغتين العربية والإنجليزية وتاريخ 2023 - 1447.
Context: شعار الجهة الناشرة للكتاب.
🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 5 بطاقة لهذه الصفحة
ماذا تمثل عملية `pop()` في سياق هياكل البيانات مثل المكدس؟
الإجابة: عملية `pop()` تُستخدم لحذف العنصر الأخير (الأعلى) من المكدس وإرجاع قيمته.
الشرح: في المكدس، يتم إضافة وحذف العناصر من طرف واحد، وهو الطرف الأعلى. عملية `pop()` تقوم بإزالة هذا العنصر الأخير وإعادته.
تلميح: فكر في وظيفة هذه العملية عندما تريد إزالة أحدث عنصر تم إضافته.
ماذا تمثل عملية `append()` (أو `push()`) عند استخدامها مع المكدس؟
الإجابة: عملية `append()` (أو `push()`) تُستخدم لإضافة عنصر جديد إلى نهاية (أعلى) المكدس.
الشرح: في المكدس، `append()` أو `push()` هي العملية التي تضيف عنصرًا جديدًا إلى قمة المكدس، مما يغير حجمه وطوله.
تلميح: عندما تريد وضع شيء جديد في قمة شيء موجود، ماذا تفعل؟
ما هو خطأ `IndexError: pop from empty list` الذي يمكن أن يحدث عند التعامل مع المكدس؟
الإجابة: يحدث هذا الخطأ عندما تحاول استدعاء عملية `pop()` على مكدس لا يحتوي على أي عناصر (فارغ).
الشرح: المكدس الفارغ لا يحتوي على عناصر ليتم حذفها، لذا فإن محاولة استخدام `pop()` عليها يؤدي إلى هذا الخطأ، ويُعرف هذا الفيض السفلي للمكدس (Stack Underflow).
تلميح: تخيل أنك تحاول أخذ شيء من صندوق فارغ، ماذا سيكون رد فعل الصندوق؟
ما هي الوظيفة التي تستخدم لقياس عدد العناصر الموجودة حاليًا في المكدس؟
الإجابة: تُستخدم الدالة `len()` لقياس وعرض طول المكدس، أي عدد العناصر التي يحتوي عليها.
الشرح: الدالة `len()` هي دالة قياسية في العديد من لغات البرمجة تُستخدم لمعرفة عدد العناصر في تسلسل أو مجموعة، بما في ذلك القوائم التي تمثل المكدس.
تلميح: إذا كنت تريد معرفة كم عدد الأشياء في سلة، فما الأداة التي قد تستخدمها؟
كيف يمكن التحقق من وجود عناصر في المكدس قبل محاولة حذف عنصر منه لتجنب خطأ `IndexError`؟
الإجابة: يمكن التحقق من وجود عناصر عن طريق مقارنة طول المكدس بالقيمة صفر، أو باستخدام شرط للتحقق مما إذا كان المكدس ليس فارغًا قبل استدعاء `pop()`.
الشرح: من الضروري التحقق من أن المكدس يحتوي على عناصر (أي أن طوله أكبر من صفر) قبل محاولة حذف عنصر منه لتجنب حدوث خطأ `IndexError` أو فيض سفلي للمكدس.
تلميح: إذا كنت تريد التأكد من أن الصندوق ليس فارغًا قبل أن تحاول أخذ شيء منه، ما الذي ستفكر فيه؟