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

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

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

الدرس: تمارين تطبيقية على هياكل البيانات: المكدس والطابور

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

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

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

نوع المحتوى: تمارين وأسئلة

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

📝 ملخص الصفحة

تقدم هذه الصفحة تمارين عملية لتعزيز فهم هياكل البيانات الأساسية، مع التركيز على المكدس والطابور. في القسم 4، يُطلب من الطالب العمل على مكدس به ست مساحات فارغة، حيث يتم إضافة الحروف C و Eg و D و A في المواقع من 0 إلى 4، ثم تنفيذ سلسلة من العمليات (pop و push) باستخدام الحروف K و X، مع عرض المخرج النهائي للإشارة إلى موقع المؤشر العلوي. يتضمن هذا القسم أيضًا كتابة برنامج بلغة بايثون لإنشاء المكدس وتنفيذ العمليات باستخدام مكتبة الطابور القياسية.

في القسم 5، يُعرض تسلسل رقمي مكون من 4 و 8 و 2 و 5 و 9 و 13، ويُطلب من الطالب تحديد العملية المستخدمة لإضافة هذه العناصر إلى الطابور، وإكمال الطابور بعد الإضافة، وتحديد العملية المستخدمة لحذف العناصر، وحساب عدد مرات تنفيذ العملية لحذف العنصر الذي قيمته 5. كما يتضمن كتابة مقطع برمجي بلغة بايثون لإنشاء الطابور.

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

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

--- SECTION: 4 --- لديك مكدس به ست مساحات فارغة. ستضيف الحروف الآتية C و Eg و D و A في المواقع من 0 إلى 4. املأ المكدس الذي يشير إلى موقع المؤشر الأعلى. نفذ العمليات التالية: pop -> push K -> push X -> pop -> pop اظهر المخرج النهائي بعد تنفيذ العمليات السابقة للإشارة إلى موقع المؤشر العلوي. اكتب البرنامج الذي يُنشئ المكدس الموضح بالأعلى، ثم نفذ العمليات المذكورة أعلاه باستخدام مكتبة الطابور القياسية.--- SECTION: 5 --- لديك التسلسل الرقمي الآتي: 4 و 8 و 2 و 5 و 9 و 13. ما العملية المستخدَمة لإضافة العناصر الموضحة بالأعلى إلى الطابور؟ أكمل الطابور بعد إضافة العناصر. ما العملية المستخدَمة لحذف العناصر من الطابور؟ كم مرة يجب تنفيذ العملية الموضحة بالأعلى لحذف العنصر الذي قيمته 5؟ أكتب المقطع البرمجي بلغة البايثون لإنشاء الطابور السابق.--- SECTION: Page Footer --- 2023 - 1447--- VISUAL CONTEXT --- **TABLE**: المكدس والمخرج النهائي Description: A table showing the initial state of a stack and its corresponding final output, with values from 0 to 5. Table Structure: Headers: المكدس | المخرج النهائي Rows: Row 1: 5 | 5 Row 2: 4 | 4 Row 3: 3 | 3 Row 4: 2 | 2 Row 5: 1 | 1 Row 6: 0 | 0 Calculation needed: This table represents the initial state of a stack and its expected final state, likely for comparison or as a reference for the operations described in question 4. Data: The table has two columns, 'المكدس' (Stack) and 'المخرج النهائي' (Final Output). Both columns list numbers from 5 down to 0, indicating the state of a stack. Key Values: 5, 4, 3, 2, 1, 0 Context: Provides a visual representation of a stack's state before and after operations, relevant to understanding data structures.**TABLE**: الطابور بعد إضافة العناصر Description: A table with numbered columns from 0 to 5, intended to be filled with elements of a queue after addition operations. Table Structure: Headers: 0 | 1 | 2 | 3 | 4 | 5 Rows: Row 1: EMPTY | EMPTY | EMPTY | EMPTY | EMPTY | EMPTY Empty cells: All cells in the row are empty and need to be filled based on the queue addition operations (enqueue) for the sequence 4, 8, 2, 5, 9, 13 as described in question 5. Calculation needed: The cells need to be filled by applying queue addition operations (enqueue) to the sequence 4, 8, 2, 5, 9, 13. Data: The table has headers 0 through 5, representing indices or positions in a queue. The cells below the headers are empty, awaiting data entry. Context: Serves as a visual aid for students to demonstrate their understanding of queue data structure operations by filling in the elements.

✅ حلول أسئلة الكتاب الرسمية

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

سؤال 4: لديك مكدس به ست مساحات فارغة. ستضيف الحروف الآتية C و Eg و D و A في المواقع من 0 إلى 4. املأ المكدس الذي يشير إلى موقع المؤشر الأعلى. نفذ العمليات التالية: pop -> push K -> push X -> pop -> pop اظهر المخرج النهائي بعد تنفيذ العمليات السابقة للإشارة إلى موقع المؤشر العلوي. اكتب البرنامج الذي يُنشئ المكدس الموضح بالأعلى، ثم نفذ العمليات المذكورة أعلاه باستخدام مكتبة الطابور القياسية.

الإجابة: س4: البرنامج: إنشاء مكدس LIFO، إدخال C,B,E,A,D، تنفيذ العمليات.

خطوات الحل:

  1. **الخطوة 1 (المعطيات):** لنفهم أولاً طبيعة المكدس (Stack)؛ هو هيكل بيانات يتبع مبدأ "آخر من يدخل هو أول من يخرج" (LIFO). لدينا مكدس بسعة 6 مواقع، وسنضيف العناصر بالترتيب: C, B, E, A, D. - الموقع 0: C - الموقع 1: B - الموقع 2: E - الموقع 3: A - الموقع 4: D المؤشر العلوي (Top) حالياً يشير إلى الموقع 4.
  2. **الخطوة 2 (تتبع العمليات):** لننفذ العمليات المطلوبة خطوة بخطوة: 1. **pop**: نحذف العنصر الأخير (D). المكدس يصبح [C, B, E, A]، والمؤشر عند 3. 2. **push K**: نضيف K. المكدس يصبح [C, B, E, A, K]، والمؤشر عند 4. 3. **push X**: نضيف X. المكدس يصبح [C, B, E, A, K, X]، والمؤشر عند 5. 4. **pop**: نحذف العنصر الأخير (X). المكدس يصبح [C, B, E, A, K]، والمؤشر عند 4. 5. **pop**: نحذف العنصر الأخير (K). المكدس يصبح [C, B, E, A]، والمؤشر عند 3.
  3. **الخطوة 3 (النتيجة والكود):** إذن المخرج النهائي للمؤشر العلوي هو **الموقع 3**. **البرنامج بلغة بايثون:** python stack = ['C', 'B', 'E', 'A', 'D'] stack.pop() # pop stack.append('K') # push K stack.append('X') # push X stack.pop() # pop stack.pop() # pop print("المؤشر العلوي النهائي عند الموقع:", len(stack) - 1)

سؤال 5: لديك التسلسل الرقمي الآتي: 4 و 8 و 2 و 5 و 9 و 13. ما العملية المستخدَمة لإضافة العناصر الموضحة بالأعلى إلى الطابور؟ أكمل الطابور بعد إضافة العناصر. ما العملية المستخدَمة لحذف العناصر من الطابور؟ كم مرة يجب تنفيذ العملية الموضحة بالأعلى لحذف العنصر الذي قيمته 5؟ أكتب المقطع البرمجي بلغة البايثون لإنشاء الطابور السابق.

الإجابة: س5: Enqueue (إضافة إلى نهاية الطابور) س5: Dequeue (إزالة من مقدمة الطابور) س5: 4 مرات س5: الكود: إنشاء طابور FIFO، إضافة 4,8,2,5,9,13

خطوات الحل:

  1. **الخطوة 1 (المفهوم):** نتذكر أن الطابور (Queue) يتبع مبدأ "أول من يدخل هو أول من يخرج" (FIFO). العناصر تُضاف من الخلف وتُحذف من الأمام.
  2. **الخطوة 2 (التطبيق):** - العملية المستخدمة للإضافة هي **Enqueue**. - الطابور بعد الإضافة: `[4, 8, 2, 5, 9, 13]` (حيث 4 في المقدمة). - العملية المستخدمة للحذف هي **Dequeue**. - لحذف العنصر (5)، يجب حذف العناصر التي تسبقه أولاً: (نحذف 4، ثم 8، ثم 2، ثم نحذف 5).
  3. **الخطوة 3 (النتيجة):** إذن عدد مرات تنفيذ عملية الحذف للوصول للعنصر 5 هو **4 مرات**. **المقطع البرمجي:** python from collections import deque queue = deque([4, 8, 2, 5, 9, 13]) # لإضافة عنصر: queue.append(value) # لحذف عنصر: queue.popleft()

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

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

سؤال 4: لديك مكدس به ست مساحات فارغة. ستضيف الحروف الآتية C و Eg و D و A في المواقع من 0 إلى 4. املأ المكدس الذي يشير إلى موقع المؤشر الأعلى. نفذ العمليات التالية: pop -> push K -> push X -> pop -> pop اظهر المخرج النهائي بعد تنفيذ العمليات السابقة للإشارة إلى موقع المؤشر العلوي. اكتب البرنامج الذي يُنشئ المكدس الموضح بالأعلى، ثم نفذ العمليات المذكورة أعلاه باستخدام مكتبة الطابور القياسية.

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

الشرح: هذا سؤال رئيسي يحتوي على أسئلة فرعية حول تنفيذ عمليات المكدس

تلميح: راجع الأسئلة الفرعية أدناه

سؤال 5: لديك التسلسل الرقمي الآتي: 4 و 8 و 2 و 5 و 9 و 13. ما العملية المستخدَمة لإضافة العناصر الموضحة بالأعلى إلى الطابور؟ أكمل الطابور بعد إضافة العناصر. ما العملية المستخدَمة لحذف العناصر من الطابور؟ كم مرة يجب تنفيذ العملية الموضحة بالأعلى لحذف العنصر الذي قيمته 5؟ اكتب المقطع البرمجي بلغة البايثون لإنشاء الطابور السابق.

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

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

تلميح: راجع الأسئلة الفرعية أدناه

سؤال 4: املأ المكدس الذي يشير إلى موقع المؤشر الأعلى بعد إضافة الحروف C و Eg و D و A في المواقع من 0 إلى 4

  • أ) [C, Eg, D, A, فارغ, فارغ] مع المؤشر عند 3
  • ب) [A, D, Eg, C, فارغ, فارغ] مع المؤشر عند 3
  • ج) [C, Eg, D, A, فارغ, فارغ] مع المؤشر عند 4
  • د) [A, D, Eg, C, فارغ, فارغ] مع المؤشر عند 4

الإجابة الصحيحة: المكدس بعد الإضافة: [A, D, Eg, C, فارغ, فارغ] مع المؤشر الأعلى عند الموضع 3

الشرح: يتم إضافة العناصر بدءًا من الموضع 0: C في 0، Eg في 1، D في 2، A في 3. الموضعان 4 و5 يبقان فارغين

تلميح: تذكر أن الإضافة تبدأ من الموضع 0 وتتجه للأعلى

سؤال 4: اظهر المخرج النهائي بعد تنفيذ العمليات: pop -> push K -> push X -> pop -> pop

  • أ) [A, D, K, فارغ, فارغ, فارغ] مع المؤشر عند 2
  • ب) [A, D, X, فارغ, فارغ, فارغ] مع المؤشر عند 2
  • ج) [A, D, K, X, فارغ, فارغ] مع المؤشر عند 3
  • د) [A, D, فارغ, فارغ, فارغ, فارغ] مع المؤشر عند 1

الإجابة الصحيحة: المكدس النهائي: [A, D, K, فارغ, فارغ, فارغ] مع المؤشر الأعلى عند الموضع 2

الشرح: pop يزيل A، push K يضيف K، push X يضيف X، pop يزيل X، pop يزيل K. يبقى [A, D, K] مع المؤشر عند 2

تلميح: تابع العمليات خطوة بخطوة بدءًا من المكدس بعد الإضافة الأولية

سؤال 4: اكتب البرنامج الذي يُنشئ المكدس الموضح بالأعلى، ثم نفذ العمليات المذكورة أعلاه باستخدام مكتبة الطابور القياسية

  • أ) import queue stack = queue.LifoQueue(6) stack.put('C') stack.put('Eg') stack.put('D') stack.put('A') stack.get() stack.put('K') stack.put('X') stack.get() stack.get() print(list(stack.queue))
  • ب) import queue stack = queue.Queue(6) stack.put('C') stack.put('Eg') stack.put('D') stack.put('A') stack.get() stack.put('K') stack.put('X') stack.get() stack.get() print(list(stack.queue))
  • ج) stack = [] stack.append('C') stack.append('Eg') stack.append('D') stack.append('A') stack.pop() stack.append('K') stack.append('X') stack.pop() stack.pop() print(stack)
  • د) import collections stack = collections.deque(maxlen=6) stack.append('C') stack.append('Eg') stack.append('D') stack.append('A') stack.pop() stack.append('K') stack.append('X') stack.pop() stack.pop() print(list(stack))

الإجابة الصحيحة: import queue stack = queue.LifoQueue(6) stack.put('C') stack.put('Eg') stack.put('D') stack.put('A') stack.get() stack.put('K') stack.put('X') stack.get() stack.get() print(list(stack.queue))

الشرح: يستخدم LifoQueue من مكتبة queue لتمثيل المكدس، put للpush وget للpop

تلميح: تذكر استخدام LifoQueue للمكدس وليس Queue العادي

سؤال 5: ما العملية المستخدَمة لإضافة العناصر الموضحة بالأعلى إلى الطابور؟

  • أ) عملية push (إضافة إلى الأعلى)
  • ب) عملية enqueue (الإضافة إلى نهاية الطابور)
  • ج) عملية append (إضافة إلى القائمة)
  • د) عملية insert (إدراج في موضع)

الإجابة الصحيحة: عملية enqueue (الإضافة إلى نهاية الطابور)

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

تلميح: فكر في مبدأ FIFO (أول ما يدخل أول ما يخرج) للطابور

سؤال 5: أكمل الطابور بعد إضافة العناصر

  • أ) [4, 8, 2, 5, 9, 13]
  • ب) [13, 9, 5, 2, 8, 4]
  • ج) [4, 2, 8, 5, 13, 9]
  • د) [9, 13, 5, 2, 8, 4]

الإجابة الصحيحة: الطابور: [4, 8, 2, 5, 9, 13] مع المؤشر الأمامي عند 4 والمؤشر الخلفي عند 13

الشرح: يتم إضافة العناصر بالتسلسل المحدد: 4 ثم 8 ثم 2 ثم 5 ثم 9 ثم 13، وفقًا لمبدأ FIFO

تلميح: استخدم الجدول المرئي المرفق لتمثيل الطابور

سؤال 5: ما العملية المستخدَمة لحذف العناصر من الطابور؟

  • أ) عملية pop (حذف من الأعلى)
  • ب) عملية dequeue (الحذف من مقدمة الطابور)
  • ج) عملية remove (حذف عنصر محدد)
  • د) عملية delete (حذف من الموضع)

الإجابة الصحيحة: عملية dequeue (الحذف من مقدمة الطابور)

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

تلميح: تذكر أن الطابور يتبع مبدأ FIFO (أول ما يدخل أول ما يخرج)

سؤال 5: كم مرة يجب تنفيذ العملية الموضحة بالأعلى لحذف العنصر الذي قيمته 5؟

  • أ) 3 مرات
  • ب) 4 مرات
  • ج) 5 مرات
  • د) 6 مرات

الإجابة الصحيحة: 4 مرات

الشرح: لحذف العنصر 5، يجب حذف العناصر التي قبله أولاً: 4 ثم 8 ثم 2 ثم 5 (المرة الرابعة)

تلميح: تذكر أن الطابور يتبع مبدأ FIFO، فلا يمكن حذف العنصر 5 مباشرة

سؤال 5: اكتب المقطع البرمجي بلغة البايثون لإنشاء الطابور السابق

  • أ) import queue q = queue.Queue() q.put(4) q.put(8) q.put(2) q.put(5) q.put(9) q.put(13) print(list(q.queue))
  • ب) q = [] q.append(4) q.append(8) q.append(2) q.append(5) q.append(9) q.append(13) print(q)
  • ج) import collections q = collections.deque() q.append(4) q.append(8) q.append(2) q.append(5) q.append(9) q.append(13) print(list(q))
  • د) q = queue.LifoQueue() q.put(4) q.put(8) q.put(2) q.put(5) q.put(9) q.put(13) print(list(q.queue))

الإجابة الصحيحة: import queue q = queue.Queue() q.put(4) q.put(8) q.put(2) q.put(5) q.put(9) q.put(13) print(list(q.queue))

الشرح: يستخدم Queue من مكتبة queue لتمثيل الطابور، وput لعملية enqueue

تلميح: استخدم مكتبة queue القياسية في بايثون

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

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

لدينا مكدس به ست مساحات فارغة، ونضيف إليه الحروف C و Eg و D و A في المواقع من 0 إلى 4. ما هي العملية الأساسية المستخدمة لوضع العناصر في المكدس؟

الإجابة: العملية الأساسية المستخدمة لوضع العناصر في المكدس هي 'push'.

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

تلميح: فكر في الكلمة التي تعني 'دفع' أو 'وضع' عنصر فوق العناصر الموجودة في المكدس.

في سياق العمليات على المكدس، ما هي العملية المستخدمة لإزالة العنصر الموجود في أعلى المكدس؟

الإجابة: العملية المستخدمة لإزالة العنصر الموجود في أعلى المكدس هي 'pop'.

الشرح: عملية 'pop' تزيل العنصر الموجود في قمة المكدس وتعيده.

تلميح: ابحث عن الكلمة التي تعني 'سحب' أو 'إزالة' العنصر العلوي.

ما هي العملية الأساسية المستخدمة لإضافة عناصر إلى الطابور (Queue)؟

الإجابة: العملية الأساسية المستخدمة لإضافة عناصر إلى الطابور هي 'enqueue' (أو 'إضافة').

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

تلميح: فكر في مصطلح عملية إضافة عنصر إلى نهاية الطابور.

ما هي العملية الأساسية المستخدمة لحذف عناصر من الطابور (Queue)؟

الإجابة: العملية الأساسية المستخدمة لحذف عناصر من الطابور هي 'dequeue' (أو 'حذف').

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

تلميح: ابحث عن مصطلح عملية إزالة العنصر من مقدمة الطابور.

ما هي العمليتان الأساسيتان في بنية بيانات الطابور (Queue)؟

الإجابة: العملية المستخدمة لإضافة العناصر إلى الطابور هي عملية الإدخال (enqueue)، والعملية المستخدمة لحذف العناصر من الطابور هي عملية الإخراج (dequeue).

الشرح: الطابور (Queue) هو بنية بيانات خطية تتبع مبدأ FIFO (أول ما يدخل أول ما يخرج)، حيث تتم إضافة العناصر من الخلف (enqueue) وإزالتها من الأمام (dequeue).

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

التصنيف: تعريف | المستوى: سهل