Python Code Example: Print Queue Simulation - كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 - المملكة العربية السعودية

الكتاب: كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 | المادة: الذكاء الإصطناعي | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

الدرس: Python Code Example: Print Queue Simulation

📚 معلومات الصفحة

الكتاب: كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 | المادة: الذكاء الإصطناعي | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

نوع المحتوى: example

مستوى الصعوبة: متوسط

📝 ملخص الصفحة

تحتوي هذه الصفحة على مثال برمجي بلغة Python لمحاكاة قائمة انتظار الطباعة. يوضح الكود كيفية إدارة المستندات في قائمة انتظار باستخدام وظائف مثل `addDocument` لإضافة المستندات و`printDocument` لمعالجتها. يتضمن الكود وظيفة `printQueueSizeMessage` التي تعرض رسائل ديناميكية بناءً على حجم قائمة الانتظار، مثل الإشارة إلى عدم وجود مستندات أو وجود مستند واحد أو أكثر. يظهر قسم مخرجات البرنامج أمثلة على كيفية إرسال المستندات (مثل Document A وB وC) وتحديث حالة قائمة الانتظار، مما يساعد في فهم كيفية عمل هياكل البيانات في البرمجة. هذا المثال مفيد لتعلم مفاهيم البرمجة الأساسية وتطبيقات هياكل البيانات في سيناريوهات عملية.

📄 النص الكامل للصفحة

--- SECTION: Python Print Queue Simulation Code --- print() return printDocument = printQueue.get() time.sleep(1) # wait one second print ("OK - ", printDocument, " is printed.") printQueueSizeMessage() # print a message with the size of the queue def printQueueSizeMessage(): printQueueSize = printQueue.qsize() if printQueueSize == 0: print ("There are no documents waiting for printing.") elif printQueueSize == 1: print ("There is 1 document waiting for printing.") else: print ("There are ", printQueueSize, " documents waiting for printing.") print() # the main program # send documents to the print queue for printing addDocument("Document A") addDocument("Document B") addDocument("Document C") addDocument("Document D") addDocument("Document E") addDocument("Document F") addDocument("Document G") printDocument() addDocument("Document H") printDocument() addDocument("Document I") printDocument() addDocument("Document J") addDocument("Document K") printDocument() printDocument() printDocument() printDocument() printDocument() printDocument() --- SECTION: Program Output --- Document A sent to print queue. There is 1 document waiting for printing. Document B sent to print queue. There are 2 documents waiting for printing. Document C sent to print queue. There are 3 documents waiting for printing. --- SECTION: Page Footer --- وزارة التعليم Ministry of Education 41 2023 - 1447

🎴 بطاقات تعليمية للمراجعة

عدد البطاقات: 5 بطاقة لهذه الصفحة

ما هي الوظيفة الأساسية لـ `printQueue.get()` في محاكاة طابعة بايثون؟

الإجابة: تقوم `printQueue.get()` بسحب أول مستند مضاف إلى قائمة الانتظار (طابور الطباعة) لمعالجته وطباعته.

الشرح: عند استدعاء `printQueue.get()`، يتم استرجاع العنصر الأول الموجود في الطابور، مما يمثل بدء عملية طباعة المستند.

تلميح: فكر فيما يحدث عندما يطلب نظام الطباعة مهمة طباعة جديدة من الطابور.

ما هو الغرض من الدالة `printQueueSizeMessage()` في الكود المقدم؟

الإجابة: الغرض من الدالة هو طباعة رسالة توضح عدد المستندات المتبقية حاليًا في طابور الطباعة، مع مراعاة حالات العدد (صفر، واحد، أو أكثر).

الشرح: تقوم الدالة بفحص حجم الطابور (`printQueue.qsize()`) ثم تطبع رسالة مناسبة بناءً على هذا الحجم، مما يوفر معلومات للمستخدم حول حالة الطباعة.

تلميح: انظر إلى النص الذي يتم طباعته داخل الدالة وكيف يتغير بناءً على حجم الطابور.

كيف يتعامل الكود مع حالة وجود مستند واحد فقط في طابور الطباعة؟

الإجابة: عند وجود مستند واحد فقط، يطبع الكود الرسالة: "There is 1 document waiting for printing."

الشرح: الدالة `printQueueSizeMessage()` تحتوي على عبارة شرطية (`elif printQueueSize == 1:`) مخصصة للتعامل مع هذه الحالة وطباعة الرسالة المناسبة.

تلميح: ابحث عن الشرط الذي يتحقق عند ما يكون عدد المستندات في الطابور مساويًا لواحد.

ما هي وظيفة `time.sleep(1)` في سياق محاكاة طابعة بايثون؟

الإجابة: تُستخدم `time.sleep(1)` لإيقاف تنفيذ البرنامج لمدة ثانية واحدة، لمحاكاة الوقت الذي تستغرقه الطابعة لطباعة المستند.

الشرح: يمثل `time.sleep(1)` تأخيرًا في المعالجة، مما يجعل المحاكاة أكثر واقعية من خلال الإشارة إلى أن عملية الطباعة تستغرق وقتًا.

تلميح: ماذا يفعل الأمر `sleep` عادةً في لغات البرمجة؟ وما هو السياق الذي يظهر فيه هذا الأمر؟

إذا تم استدعاء `printDocument()` عدة مرات متتالية دون إضافة مستندات جديدة، فما هو السلوك المتوقع؟

الإجابة: إذا كان طابور الطباعة فارغًا عند استدعاء `printDocument()`، فلن يحدث شيء فعلي (لن يتم طباعة أي مستند) وقد تظهر رسالة تفيد بأن الطابور فارغ إذا تم استدعاء `printQueueSizeMessage()` لاحقًا.

الشرح: الكود يتحقق أولاً مما إذا كان هناك مستند في الطابور باستخدام `printQueue.get()`. إذا كان الطابور فارغًا، فإن `printQueue.get()` قد ينتظر (إذا تم تكوينه بذلك) أو يثير خطأ، ولكن في هذا المثال البسيط، إذا كان فارغًا، فإن استدعاء `printDocument` المتكرر بعد استنفاد الطابور لن ينتج عنه طباعة أخرى.

تلميح: فكر فيما يحدث داخل `printDocument()` عندما لا يكون هناك شيء في الطابور. هل سيحاول طباعة شيء غير موجود؟