📄 النص الكامل للصفحة
--- SECTION: تطبيقات على الطابور Queue Applications --- تطبيقات على الطابور Queue Applicationsأحد الأمثلة على تطبيقات الطابور في علوم الحاسوب هو طابور الطباعة. على سبيل المثال، لديك معمل حاسب به 30 جهاز حاسب متصلين بطابعة واحدة. عندما يرغب الطلبة في طباعة المستندات، ستتشكل مهام الطباعة طابورًا لمعالجتها وفق قاعدة إضاف أولاً يخرج أولاً (FIFO)، أي أن تلك المهام ستنجز بالترتيب الزمني الذي أرسلت به إلى الطابعة. المهمة المرسلة أولاً ستطبع قبل المهمة المرسلة بعدها ولن تطبع المهمة في نهاية الطابور قبل طباعة كل المهام التي قبلها. عندما تنتهي الطابعة من أحد الأوامر، ستبحث في الطابور لمعرفة ما إن كانت هناك أوامر أخرى لمعالجتها.--- SECTION: المكدس والطابور باستخدام وحدة الطابور النمطية Stack and Queue Using Queue Module --- المكدس والطابور باستخدام وحدة الطابور النمطية Stack and Queue Using Queue Moduleيمكن اعتبار القائمة في لغة البايثون بمثابة طابور وكذلك مكدس. تقدم لغة البايثون الوحدة النمطية للطابور (Queue Module) وهي طريقة أخرى لتنفيذ هيكلي البيانات الموضحين. تتضمن الوحدة النمطية للطابور بعض الدوال الجاهزة للاستخدام التي يمكن تطبيقها على كل من المكدس والطابور.--- SECTION: جدول 1.5: طرائق الوحدة النمطية للطابور --- جدول 1.5: طرائق الوحدة النمطية للطابور--- SECTION: Python Queue Code ---
from queue import *myQueue = Queue()
# add the elements in the queue myQueue.put("a")
myQueue.put("b")
myQueue.put("c")
myQueue.put("d")
myQueue.put("e")# print the elements of the queue for element in list(myQueue.queue):
print(element)a b
c d
eعليك استيراد الوحدة النمطية للطابور في بداية المقطع البرمجي.--- SECTION: تُستخدم طرائق الوحدة النمطية للطابور مع كل من المكدس والطابور. --- تُستخدم طرائق الوحدة النمطية للطابور مع كل من المكدس والطابور.في هذا المثال عليك:
• استيراد الوحدة النمطية للطابور (Queue) لاستخدام طرائق الطابور.
• إنشاء طابور فارغ باسم myQueue (طابوري).
• إضافة العناصر a, b, c, d, e إلى الطابور myQueue (طابوري).
• طباعة عناصر الطابور.2025 - 1447--- VISUAL CONTEXT ---
**TABLE**: جدول 1.5: طرائق الوحدة النمطية للطابور
Description: Table listing methods of the Queue module with their descriptions.
Table Structure:
Headers: الطريقة | الوصف
Rows:
Row 1: queueName = queue.Queue() | تنشئ طابورًا جديدًا اسمه queueName.
Row 2: queueName.put(x) | تضيف العنصر x إلى الطابور.
Row 3: queueName.qsize() | تعود بقيمة حجم الطابور.
Row 4: queueName.get() | تعرض وتحذف العنصر الأول من الطابور والعنصر الأخير من المكدس.
Row 5: queueName.full() | تعود بقيمة True (صحيح) إن كان الطابور ممتلئًا، وقيمة False (خطأ) إن كان الطابور فارغًا، ويمكن تطبيقها على المكدس كذلك.
Row 6: queueName.empty() | تعود بقيمة True (صحيح) إن كان الطابور فارغًا والقيمة False (خطأ) إن كان الطابور ممتلئًا، ويمكن تطبيقها على المكدس كذلك.
Context: Provides a reference for the functions available in Python's Queue module for managing queues and stacks.**FIGURE**: Python Code Example for Queue Operations Description: A Python code snippet demonstrating the creation of a queue, adding elements, and printing them.
Key Values: from queue import *, myQueue = Queue(), myQueue.put("a"), myQueue.put("b"), myQueue.put("c"), myQueue.put("d"), myQueue.put("e"), for element in list(myQueue.queue):, print(element)
Context: Illustrates the practical application of the Queue module methods in Python.**FIGURE**: Output of the Python Code Description: The output of the Python code, showing the elements 'a' through 'e' printed in order, demonstrating FIFO behavior.
Key Values: a, b, c, d, e Context: Confirms the successful execution of the queue operations and the order of elements.
🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 5 بطاقة لهذه الصفحة
اذكر مثالاً تطبيقياً على استخدام الطوابير (Queues) في علوم الحاسوب، مع شرح مبسط لكيفية عملها.
الإجابة: أحد الأمثلة الشائعة هو طابور الطباعة. عندما ترسل عدة مستندات للطباعة في معمل حاسب به طابعة واحدة، يتم وضع مهام الطباعة في طابور. تعالج الطابعة هذه المهام بترتيب "إدخال أولاً يخرج أولاً" (FIFO)، مما يعني أن المهمة التي أُرسلت أولاً تُطبع أولاً، وتتبعها المهام الأخرى بالترتيب الزمني لإرسالها.
الشرح: يوضح هذا المثال كيف يمكن للطوابير إدارة الموارد المشتركة بكفاءة، حيث يتم خدمة الطلبات بالترتيب الذي تم تلقيها به، مما يضمن العدالة وتجنب التداخل.
تلميح: فكر في سيناريو يتطلب معالجة طلبات بترتيب وصولها، مثل انتظار دور في خدمة ما.
ما هو المبدأ الأساسي الذي تعمل به الطوابير (Queues) في تنظيم المهام؟
الإجابة: المبدأ الأساسي للطوابير هو "إدخال أولاً يخرج أولاً" (FIFO - First-In, First-Out). هذا يعني أن العنصر الذي يتم إدخاله إلى الطابور أولاً هو العنصر الذي سيتم استخراجه أو معالجته أولاً.
الشرح: يعكس مبدأ FIFO طبيعة الطوابير المستخدمة في العديد من التطبيقات، حيث يجب معالجة الطلبات بالترتيب الذي وصلت به للحفاظ على النظام والعدالة.
تلميح: ما هو الاختصار الذي يشير إلى أن أول عنصر يدخل هو أول عنصر يغادر؟
كيف يمكن استخدام القوائم في لغة بايثون كبديل لتنفيذ هيكلي البيانات "المكدس" و "الطابور"؟
الإجابة: يمكن استخدام القوائم في بايثون لتنفيذ كل من المكدس والطابور. لإضافة عنصر، نستخدم دالة `.append()`، ولإزالة عنصر (من نهاية القائمة للمكدس أو من بدايتها للطابور)، نستخدم دالة `.pop(0)` للطابور أو `.pop()` للمكدس.
الشرح: على الرغم من أن القوائم مرنة، إلا أن استخدام `.pop(0)` في القوائم لإزالة عناصر من البداية قد يكون غير فعال مع القوائم الكبيرة، حيث يتطلب ذلك إعادة ترتيب العناصر المتبقية. لهذا السبب، تقدم بايثون وحدات نمطية مخصصة لهياكل البيانات.
تلميح: ما هي الدالة التي تسمح بإضافة عنصر إلى نهاية القائمة؟ وما هي الدالة التي تسمح بإزالة عنصر من موقع معين؟
اشرح الغرض من استيراد "الوحدة النمطية للطابور" (Queue Module) في لغة بايثون.
الإجابة: تُستخدم "الوحدة النمطية للطابور" (Queue Module) في بايثون لتقديم طريقة فعالة لتنفيذ هياكل بيانات الطابور والمكدس. تحتوي هذه الوحدة على دوال جاهزة للاستخدام تبسط عملية إضافة العناصر واستخراجها وإدارة حالة الطابور أو المكدس.
الشرح: توفر الوحدة النمطية للطابور أدوات محسّنة ومخصصة لإدارة الطوابير والمكدسات، مما يجعل الكود أكثر وضوحًا وكفاءة مقارنةً بالاعتماد فقط على القوائم العادية لبعض العمليات.
تلميح: لماذا قد نحتاج إلى استيراد شيء ما في بداية البرنامج؟ وماذا يوفر هذا الشيء؟
اذكر اثنتين من الطرائق (Methods) التي توفرها "الوحدة النمطية للطابور" في بايثون، مع وصف موجز لوظيفتهما.
الإجابة: 1. `put(x)`: تضيف العنصر `x` إلى نهاية الطابور. <br> 2. `get()`: تعرض وتحذف العنصر الأول من الطابور (أو العنصر الأخير من المكدس).
الشرح: هذه الطرائق هي الأساسية للتعامل مع الطوابير والمكدسات. `put()` تزيد من حجم الهيكل، بينما `get()` تقلل من حجمه وتعيد القيمة التي تمت إزالتها.
تلميح: ابحث في الجدول المقدم عن الدوال التي تتعامل مع إضافة العناصر وإخراجها.