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

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

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

الدرس: محاكاة طابور الطباعة

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

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

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

نوع المحتوى: درس تعليمي

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

📝 ملخص الصفحة

تقدم هذه الصفحة خوارزمية لمحاكاة طابور أوامر الطباعة باستخدام هياكل البيانات، حيث يتم إنشاء طابور وإدراج الملفات من A إلى G فيه. ثم تُنفذ سلسلة من العمليات لإخراج الملفات وإدراج ملفات جديدة، مثل إخراج A وإدراج H، وإخراج B وإدراج I، وإخراج C وإدراج J، وأخيرًا إخراج الملفات المتبقية واحدًا تلو الآخر.

يتم شرح كل خطوة من الخوارزمية مع مخططات توضيحية تُظهر حالة الطابور في كل مرحلة، مما يساعد على فهم كيفية عمل عمليات الإدخال والإخراج في هياكل البيانات مثل الطوابير. تُستخدم مكتبة queue في Python لتنفيذ هذه المحاكاة، مع توضيح كيفية إدارة حجم الطابور والتحقق من حالته.

تهدف هذه المحاكاة إلى تعليم المفاهيم الأساسية للخوارزميات وهياكل البيانات، مع التركيز على تطبيقات عملية في إدارة المهام مثل طباعة المستندات، مما يجعلها مناسبة للطلاب في مراحل تعليمية متوسطة.

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

يمكنك استخدام الخوارزمية الآتية:--- SECTION: 1 --- 1 أنشئ طابور أوامر الطباعة.--- SECTION: 2 --- 2 أدرج الملفات من A إلى G في طابور أوامر الطباعة.--- SECTION: 3 --- 3 أخرج الملف A وأدرج الملف H.--- SECTION: 4 --- 4 أخرج الملف B وأدرج الملف I.--- SECTION: 5 --- 5 أخرج الملف C وأدرج الملف J.--- SECTION: 6 --- 6 أخرج الملفات التي تمت طباعتها (D-E-F-G-H-I-J) واحدًا تلو الآخر.# import the queue library from queue import * # import the time library to use the sleep function import time # initialize the variables and the queue printDocument = "" printQueueSize = 0 printQueueMaxSize = 7 printQueue = Queue(printQueueMaxSize) # add a document to print the queue def addDocument(document): printQueueSize = printQueue.qsize() if printQueueSize == printQueueMaxSize: print("!! ", document, " was not sent to print queue.") print("The print queue is full.") print() return printQueue.put(document) time.sleep(0.5) #Wait 5.0 seconds print(document, " sent to print queue.") printQueueSizeMessage() # print a document from the print queue def printDocument(): printQueueSize = printQueue.qsize() if printQueueSize == 0: print("!! The print queue is empty.")2023 - 1447--- VISUAL CONTEXT --- **DIAGRAM**: طابور الطباعة الأولي Description: مخطط يوضح طابور طباعة يحتوي على الملفات من A إلى G، مرتبة من 0 إلى 6. كل ملف ممثل بمربع يحمل حرفًا، وتحته رقم يمثل موقعه في الطابور. Data: الصفوف في الطابور هي: A (0), B (1), C (2), D (3), E (4), F (5), G (6). Key Values: A, B, C, D, E, F, G, 0, 1, 2, 3, 4, 5, 6 Context: يمثل هذا المخطط الحالة الأولية لطابور الطباعة بعد إضافة الملفات من A إلى G، كما هو مطلوب في الخطوة 2 من الخوارزمية.**DIAGRAM**: طابور الطباعة بعد إخراج A وإدراج H Description: مخطط يوضح طابور الطباعة بعد إخراج الملف A وإدراج الملف H. الملف A يظهر كـ 'تمت طباعته' خارج الطابور. الطابور الآن يحتوي على B إلى H، مع إزاحة الملفات السابقة إلى الأمام. Data: الملف A تمت طباعته. الصفوف في الطابور هي: B (0), C (1), D (2), E (3), F (4), G (5), H (6). Key Values: تمت طباعته, A, B, C, D, E, F, G, H, 0, 1, 2, 3, 4, 5, 6 Context: يوضح هذا المخطط حالة طابور الطباعة بعد تنفيذ الخطوة 3، حيث يتم إخراج الملف الأول (A) وإضافة ملف جديد (H) إلى نهاية الطابور، مما يمثل عملية 'dequeue' و 'enqueue'.**DIAGRAM**: طابور الطباعة بعد إخراج B وإدراج I Description: مخطط يوضح طابور الطباعة بعد إخراج الملف B وإدراج الملف I. الملف B يظهر كـ 'تمت طباعته' خارج الطابور. الطابور الآن يحتوي على C إلى I، مع إزاحة الملفات السابقة إلى الأمام. Data: الملف B تمت طباعته. الصفوف في الطابور هي: C (0), D (1), E (2), F (3), G (4), H (5), I (6). Key Values: تمت طباعته, B, C, D, E, F, G, H, I, 0, 1, 2, 3, 4, 5, 6 Context: يوضح هذا المخطط حالة طابور الطباعة بعد تنفيذ الخطوة 4، حيث يتم إخراج الملف التالي (B) وإضافة ملف جديد (I) إلى نهاية الطابور.**DIAGRAM**: طابور الطباعة بعد إخراج C وإدراج J Description: مخطط يوضح طابور الطباعة بعد إخراج الملف C وإدراج الملف J. الملف C يظهر كـ 'تمت طباعته' خارج الطابور. الطابور الآن يحتوي على D إلى J، مع إزاحة الملفات السابقة إلى الأمام. Data: الملف C تمت طباعته. الصفوف في الطابور هي: D (0), E (1), F (2), G (3), H (4), I (5), J (6). Key Values: تمت طباعته, C, D, E, F, G, H, I, J, 0, 1, 2, 3, 4, 5, 6 Context: يوضح هذا المخطط حالة طابور الطباعة بعد تنفيذ الخطوة 5، حيث يتم إخراج الملف التالي (C) وإضافة ملف جديد (J) إلى نهاية الطابور.**DIAGRAM**: طابور الطباعة النهائي Description: مخطط يوضح طابور الطباعة بعد إخراج الملفات D-E-F-G-H-I-J واحدًا تلو الآخر. الطابور الآن يحتوي على D إلى J، مرتبة من 0 إلى 6. Data: الصفوف في الطابور هي: D (0), E (1), F (2), G (3), H (4), I (5), J (6). Key Values: D, E, F, G, H, I, J, 0, 1, 2, 3, 4, 5, 6 Context: يمثل هذا المخطط الحالة النهائية لطابور الطباعة بعد إخراج جميع الملفات المتبقية (D-J) واحدًا تلو الآخر، كما هو مطلوب في الخطوة 6، مما يوضح أن الطابور لا يزال يحتوي على هذه الملفات بعد إخراج الملفات السابقة.

📝 أسئلة اختبارية

عدد الأسئلة: 7

سؤال تمرين: افترض أن سعة الطابعة هي فقط 7 ملفات، ولكن في الوقت نفسه، تحتاج إلى طباعة 10 ملفات من الملف A إلى الملف L. اكتب برنامجًا يمثل طابور الطباعة منذ بدء أمر الطباعة الأول A حتى الانتهاء من كل أوامر الطباعة. أضف اللبنة التي تؤكد أن طابور أوامر الطباعة لا يتجاوز السعة.

الإجابة الصحيحة: انظر الأسئلة الفرعية

الشرح: هذا سؤال رئيسي يحتوي على خطوات خوارزمية فرعية لتنفيذ البرنامج

تلميح: راجع الخطوات الفرعية للخوارزمية أدناه

سؤال تمرين: أنشئ طابور أوامر الطباعة.

  • أ) استخدام list لتمثيل الطابور
  • ب) استخدام مكتبة queue لإنشاء طابور بحجم أقصى 7
  • ج) استخدام dictionary لتخزين الملفات
  • د) استخدام set لتمثيل الطابور

الإجابة الصحيحة: استخدام مكتبة queue لإنشاء طابور بحجم أقصى 7

الشرح: يجب إنشاء طابور باستخدام Queue من مكتبة queue في Python، مع تحديد الحجم الأقصى كـ 7

تلميح: تذكر استخدام from queue import * و Queue(maxsize)

سؤال تمرين: أدرج الملفات من A إلى G في طابور أوامر الطباعة.

  • أ) إضافة الملفات من A إلى L مباشرة
  • ب) إضافة الملفات A, B, C, D, E, F, G إلى الطابور باستخدام put()
  • ج) إضافة الملفات H إلى L فقط
  • د) تخطي هذه الخطوة والبدء بالملف A مباشرة

الإجابة الصحيحة: إضافة الملفات A, B, C, D, E, F, G إلى الطابور باستخدام put()

الشرح: يجب إدخال الملفات السبعة الأولى (A-G) في الطابور لملء السعة القصوى

تلميح: استخدم حلقة for أو put() لكل ملف على حدة

سؤال تمرين: أخرج الملف A وأدرج الملف H.

  • أ) تجاهل الملف A وإدراج H فقط
  • ب) إخراج H وإدراج A
  • ج) استخدام get() لإخراج A ثم put() لإدراج H
  • د) إدراج H قبل إخراج A

الإجابة الصحيحة: استخدام get() لإخراج A ثم put() لإدراج H

الشرح: عملية dequeue للملف A تليه عملية enqueue للملف H، مع الحفاظ على السعة

تلميح: تذكر أن get() يزيل العنصر الأول من الطابور

سؤال تمرين: أخرج الملف B وأدرج الملف I.

  • أ) إخراج I وإدراج B
  • ب) تخطي B والانتقال إلى C
  • ج) استخدام get() لإخراج B ثم put() لإدراج I
  • د) إدراج I قبل إخراج B

الإجابة الصحيحة: استخدام get() لإخراج B ثم put() لإدراج I

الشرح: استمرار العملية: dequeue لـ B و enqueue لـ I

تلميح: كرر الخطوة السابقة مع الملفات B و I

سؤال تمرين: أخرج الملف C وأدرج الملف J.

  • أ) إخراج J وإدراج C
  • ب) توقف عند C وعدم إدراج J
  • ج) استخدام get() لإخراج C ثم put() لإدراج J
  • د) إدراج J قبل إخراج C

الإجابة الصحيحة: استخدام get() لإخراج C ثم put() لإدراج J

الشرح: dequeue لـ C و enqueue لـ J، مع اكتمال إضافة الملفات حتى J

تلميح: هذه آخر عملية إدراج للملفات الجديدة

سؤال تمرين: أخرج الملفات التي تمت طباعتها (D-E-F-G-H-I-J) واحدًا تلو الآخر.

  • أ) تجاهل الملفات المتبقية
  • ب) إخراجها جميعًا مرة واحدة باستخدام clear()
  • ج) استخدام get() في حلقة لإخراج جميع الملفات المتبقية حتى يصبح الطابور فارغًا
  • د) إخراجها بترتيب عكسي

الإجابة الصحيحة: استخدام get() في حلقة لإخراج جميع الملفات المتبقية حتى يصبح الطابور فارغًا

الشرح: بعد الخطوات السابقة، الطابور يحتوي على D إلى J، ويجب إخراجهم جميعًا باستخدام get() متكرر

تلميح: استخدم while loop أو for loop مع qsize() لتفريغ الطابور

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

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

ما هو الغرض الرئيسي من إنشاء طابور أوامر الطباعة في هذه الخوارزمية؟

الإجابة: الغرض الرئيسي هو تنظيم وإدارة عملية الطباعة للملفات، حيث يتم إدراج الملفات في الطابور ثم طباعتها بالترتيب الذي دخلت به، مما يضمن سير العمل بكفاءة.

الشرح: الطوابير تُستخدم لترتيب المهام حسب وصولها، وهذا يمنع التداخل ويضمن طباعة كل ملف في وقته المناسب.

تلميح: فكر في طريقة عمل الطابور (FIFO) وكيف يطبق ذلك على مهام الطباعة.

ما هي عملية "dequeue" في سياق طابور الطباعة؟

الإجابة: عملية "dequeue" تعني إزالة العنصر الأول (أو الملف الأول) من مقدمة الطابور، مما يمثل الانتهاء من طباعة هذا الملف وجاهزيته للإخراج.

الشرح: عندما تتم طباعة ملف، يتم إخراجه من مقدمة الطابور لتفسح المجال للملف التالي.

تلميح: تذكر أن الطوابير تعمل بمبدأ 'من يدخل أولاً يخرج أولاً'.

ما هي عملية "enqueue" في سياق طابور الطباعة؟

الإجابة: عملية "enqueue" تعني إضافة عنصر جديد (ملف جديد) إلى نهاية الطابور، مما يضعه في قائمة الانتظار ليتم طباعته لاحقًا.

الشرح: الملفات الجديدة التي ترغب في طباعتها يتم إضافتها إلى نهاية الطابور.

تلميح: فكر أين يتم وضع الملفات الجديدة في الطابور.

إذا كان حجم طابور الطباعة الأقصى هو 7، ماذا يحدث إذا حاولت إضافة ملف ثامن؟

الإجابة: إذا حاولت إضافة ملف ثامن ولم يتم إخراج أي ملف قبل ذلك، فإن الملف الثامن لن يتم إرساله إلى طابور الطباعة وسيعتبر الطابور ممتلئًا.

الشرح: الطابور له سعة قصوى محددة، وعند الوصول إليها، لا يمكن إضافة المزيد من العناصر حتى يتم إخلاء مساحة.

تلميح: ماذا يحدث عندما تحاول إضافة شيء إلى حاوية مليئة؟

ما هي العلاقة بين الملفات A, B, C والملفات H, I, J في سياق الخوارزمية؟

الإجابة: الملفات A, B, C هي الملفات التي تم إخراجها أولاً من الطابور (dequeue)، بينما H, I, J هي الملفات الجديدة التي تم إدراجها في الطابور (enqueue) بعد إخراج الملفات الأصلية.

الشرح: الخوارزمية توضح استراتيجية إخراج العناصر القديمة وإدخال عناصر جديدة بشكل مستمر، مما يغير محتويات الطابور.

تلميح: ركز على تسلسل العمليات: إخراج ثم إدخال.