📄 النص الكامل للصفحة
لبرمجة الخطوات الموضحة بالأعلى بلغة البايثون، ستُستخدم قائمة البايثون لتنفيذ هيكل الطابور، كما فعلت في المكدس.
myQueue=[1,21,32,45]
print("Initial queue: ", myQueue)
myQueue.pop(0)
myQueue.pop(0)
print("The new queue after pop: ", myQueue)
myQueue.append(78)
print("The new queue after push: ", myQueue)
Initial queue: [1, 21, 32, 45]
The new queue after pop: [32, 45]
The new queue after push: [32, 45, 78]
لكي تشاهد ما قد يحدث عندما تحاول حذف عنصر من طابور فارغ، عليك أولاً أن تُفرغ الطابور من العناصر.
myQueue=[1,21,32,45]
print("Initial queue: ", myQueue)
a=len(myQueue)
print("size of queue ",a)
# empty the queue
for i in range(a):
myQueue.pop(0)
print(myQueue)
myQueue.pop(0)
Initial queue: [1, 21, 32, 45]
size of queue 4
[]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
Input In [6], in <cell line: 9>()
7 myQueue.pop()
8 print(myQueue)
----> 9 myQueue.pop()
IndexError: pop from empty list
عليك أن تتحقق دوماً من وجود عناصر في الطابور قبل محاولة حذف عنصر منه.
ظهر الخطأ: لأنك حاولت حذف عنصر من طابور فارغ.
وزارة التعليم
Ministry of Education
2023 - 1447
36
--- VISUAL CONTEXT ---
**FIGURE**: توضيح الخطأ
Description: A blue rectangular highlight box with a line pointing towards the error message in the code output. The box contains Arabic text explaining the reason for the error.
Context: Explains that the error occurred because an attempt was made to remove an element from an empty queue.
**FIGURE**: نصيحة برمجية
Description: A pink rectangular highlight box containing Arabic text providing a programming best practice.
Context: Advises programmers to always check for the presence of elements in a queue before attempting to delete an element from it.
**IMAGE**: شعار وزارة التعليم
Description: The official logo of the Ministry of Education, with text in both Arabic 'وزارة التعليم' and English 'Ministry of Education' along with the years '2023 - 1447'.
Context: Indicates the official source or publisher of the educational material.
🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 4 بطاقة لهذه الصفحة
ما هي بنية البيانات التي يتم استخدامها في لغة بايثون لمحاكاة هيكل الطابور (Queue) في هذا المثال؟
الإجابة: تُستخدم قائمة البايثون (Python list) لمحاكاة هيكل الطابور في هذا المثال.
الشرح: قوائم البايثون مرنة وتسمح بعمليات الإضافة (append) والحذف (pop) من نهاياتها، مما يمكن استغلاله لمحاكاة سلوك الطابور.
تلميح: ما هي التركيبة الأساسية التي تمكننا من إضافة عناصر وحذفها بترتيب معين؟
في سياق الطابور، ما هي العملية المستخدمة لإضافة عنصر جديد؟
الإجابة: تُستخدم عملية `append()` لإضافة عنصر جديد إلى نهاية الطابور.
الشرح: في تطبيق الطابور باستخدام قائمة بايثون، `append(item)` تضيف العنصر `item` إلى النهاية، مما يحافظ على مبدأ "من يدخل أولاً يخرج أولاً" (FIFO) عند إجراء عمليات الحذف من البداية.
تلميح: فكر في الإجراء الذي يضع شيئاً جديداً في نهاية الصف.
عند استخدام قائمة البايثون لمحاكاة الطابور، ما هي العملية المستخدمة لحذف عنصر؟ وما هو الفهرس الذي يجب تحديده لحذف العنصر الأول؟
الإجابة: تُستخدم عملية `pop()` لحذف عنصر. لحذف العنصر الأول (الأقدم)، يجب تحديد الفهرس 0، أي `pop(0)`.
الشرح: عملية `pop(0)` تزيل العنصر الموجود في بداية القائمة (الفهرس 0)، وهو ما يمثل العنصر الأول الذي تم إدخاله في الطابور، متبعةً مبدأ "من يدخل أولاً يخرج أولاً" (FIFO).
تلميح: إذا كنت تحاكي طابوراً، فأي طرف يجب أن تبدأ الحذف منه ليحافظ على مبدأ FIFO؟ وما هو الفهرس المرتبط بالبداية؟
ما هو الخطأ الذي ينتج عن محاولة حذف عنصر من طابور فارغ باستخدام قائمة البايثون، وكيف يمكن تجنب هذا الخطأ؟
الإجابة: يحدث خطأ `IndexError: pop from empty list` عند محاولة حذف عنصر من قائمة فارغة. لتجنب ذلك، يجب التحقق دائماً من أن الطابور يحتوي على عناصر قبل محاولة الحذف.
الشرح: محاولة استدعاء `pop()` على قائمة فارغة تفشل لأن القائمة لا تحتوي على أي عناصر يمكن حذفها. إضافة شرط للتحقق من حجم القائمة (`if len(myQueue) > 0:`) قبل استدعاء `pop()` يمنع حدوث هذا الخطأ.
تلميح: ماذا يحدث عندما تحاول أخذ شيء غير موجود؟ وما هي الخطوة المنطقية التي يجب اتخاذها قبل الأخذ؟