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

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

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

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

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

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

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

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

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

📝 ملخص الصفحة

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

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

تمرينات--- SECTION: 1 --- حدد الجملة الصحيحة والجملة الخاطئة فيما يلي: 1. تتكون دالة الاستدعاء التكرارية من حالتين. Options: a. صحيحة b. خاطئة 2. تستدعي دالة الاستدعاء التكرارية دالة أخرى. Options: a. صحيحة b. خاطئة 3. دوال الاستدعاء التكرارية أسرع في التنفيذ. Options: a. صحيحة b. خاطئة 4. استدعاء الدوال يجعل لبنة المقطع البرمجي أصغر حجماً. Options: a. صحيحة b. خاطئة 5. كتابة مقطع برمجي متكرر يتطلب استدعاءً ذاتياً أقل. Options: a. صحيحة b. خاطئة--- SECTION: 2 --- ما الاختلافات بين التكرار والاستدعاء الذاتي؟--- SECTION: 3 --- متى يجب استخدام الاستدعاء الذاتي؟2025 - 1447--- VISUAL CONTEXT --- **TABLE**: حدد الجملة الصحيحة والجملة الخاطئة فيما يلي: Description: A table presenting five statements, each with two options: 'صحيحة' (correct) and 'خاطئة' (incorrect), indicated by radio buttons for selection. Table Structure: Headers: | صحيحة | خاطئة Rows: Row 1: 1. تتكون دالة الاستدعاء التكرارية من حالتين. | radio_button | radio_button Row 2: 2. تستدعي دالة الاستدعاء التكرارية دالة أخرى. | radio_button | radio_button Row 3: 3. دوال الاستدعاء التكرارية أسرع في التنفيذ. | radio_button | radio_button Row 4: 4. استدعاء الدوال يجعل لبنة المقطع البرمجي أصغر حجماً. | radio_button | radio_button Row 5: 5. كتابة مقطع برمجي متكرر يتطلب استدعاءً ذاتياً أقل. | radio_button | radio_button Data: Each row contains a numbered statement and two columns for marking it as correct or incorrect. Context: This table is part of an exercise designed to test the student's understanding of concepts related to recursive functions and programming constructs by identifying the correctness of given statements.Context: This is a standard branding element found at the bottom of educational materials, indicating the source or publisher.

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

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

سؤال 1: حدد الجملة الصحيحة والجملة الخاطئة فيما يلي: 1. تتكون دالة الاستدعاء التكرارية من حالتين. 2. تستدعي دالة الاستدعاء التكرارية دالة أخرى. 3. دوال الاستدعاء التكرارية أسرع في التنفيذ. 4. استدعاء الدوال يجعل لبنة المقطع البرمجي أصغر حجماً. 5. كتابة مقطع برمجي متكرر يتطلب استدعاءً ذاتياً أقل.

الإجابة: 1. صحيحة 2. خاطئة 3. خاطئة 4. صحيحة 5. خاطئة

خطوات الحل:

  1. **الشرح:** لنفهم هذا السؤال عن دوال الاستدعاء التكرارية (الاستدعاء الذاتي). 1. تتكون دالة الاستدعاء التكرارية من حالتين: هذه الجملة صحيحة. أي دالة استدعاء ذاتي يجب أن تحتوي على حالتين: الحالة الأساسية (base case) التي توقف الاستدعاء، والحالة التكرارية (recursive case) التي تستدعي الدالة نفسها. 2. تستدعي دالة الاستدعاء التكرارية دالة أخرى: هذه الجملة خاطئة. الفكرة الأساسية في الاستدعاء الذاتي هي أن الدالة تستدعي نفسها، وليس دالة أخرى. 3. دوال الاستدعاء التكرارية أسرع في التنفيذ: هذه الجملة خاطئة. عادةً ما تكون الحلقات التكرارية (مثل for و while) أسرع في التنفيذ من الاستدعاء الذاتي بسبب تكلفة استدعاء الدالة في الذاكرة. 4. استدعاء الدوال يجعل لبنة المقطع البرمجي أصغر حجماً: هذه الجملة صحيحة. استخدام الدوال يسمح بإعادة استخدام الكود، مما يقلل من حجم البرنامج ويجعله أكثر تنظيماً. 5. كتابة مقطع برمجي متكرر يتطلب استدعاءً ذاتياً أقل: هذه الجملة خاطئة. العكس هو الصحيح - كتابة مقطع برمجي متكرر (باستخدام حلقات) عادةً ما يتطلب استدعاءً ذاتياً أقل أو لا يتطلبه على الإطلاق، بينما الاستدعاء الذاتي هو طريقة أخرى لتنفيذ التكرار. إذن الإجابة هي: **1. صحيحة، 2. خاطئة، 3. خاطئة، 4. صحيحة، 5. خاطئة**

سؤال 2: ما الاختلافات بين التكرار والاستدعاء الذاتي؟

الإجابة: س2: التكرار: حلقات (for/while) وتكرار حتى التوقف (أسرع). الاستدعاء الذاتي: دالة تستدعي نفسها وتتطلب حالة أساس (أبطأ).

خطوات الحل:

  1. **الخطوة 1 (المفهوم):** لنبدأ بتعريف المفهومين: - **التكرار (Iteration)**: هو استخدام الحلقات مثل for أو while لتكرار تنفيذ مجموعة من الأوامر حتى يتحقق شرط التوقف. - **الاستدعاء الذاتي (Recursion)**: هو أن تستدعي الدالة نفسها ضمن تعريفها، مع وجود حالة أساسية توقف هذا الاستدعاء.
  2. **الخطوة 2 (الاختلافات الرئيسية):** الاختلافات بينهما: 1. **الآلية**: التكرار يستخدم الحلقات، بينما الاستدعاء الذاتي يستدعي الدالة نفسها. 2. **السرعة والأداء**: التكرار عادةً أسرع وأكثر كفاءة في استخدام الذاكرة لأنه لا يتطلب تكرار استدعاء الدالة. 3. **التعقيد**: بعض المشاكل (مثل التعامل مع الأشجار أو البحث العميق) تكون أكثر سهولة ووضوحاً باستخدام الاستدعاء الذاتي. 4. **التوقف**: في التكرار، التوقف يكون بشرط في الحلقة. في الاستدعاء الذاتي، التوقف يكون بالوصول للحالة الأساسية.
  3. **الخطوة 3 (النتيجة):** إذن الاختلافات هي: **التكرار يستخدم الحلقات (for/while) ويكون أسرع، بينما الاستدعاء الذاتي يستدعي الدالة نفسها ويتطلب حالة أساسية ويكون أبطأ عادةً**

سؤال 3: متى يجب استخدام الاستدعاء الذاتي؟

الإجابة: س3: عند تقسيم المشكلة لنسخ أصغر (مثل الأشجار/DFS). بشرط وجود حالة أساس وعمق استدعاء مناسب.

خطوات الحل:

  1. **الخطوة 1 (المفهوم):** الاستدعاء الذاتي هو أسلوب برمجي حيث تستدعي الدالة نفسها. لكن متى نستخدمه؟
  2. **الخطوة 2 (شروط الاستخدام المناسب):** يجب استخدام الاستدعاء الذاتي عندما: 1. يمكن تقسيم المشكلة إلى مشاكل أصغر من نفس النوع (مثل عمليات على الأشجار، أو البحث العميق، أو حساب العاملي). 2. توجد حالة أساسية واضحة (base case) تضمن توقف الاستدعاءات. 3. عمق الاستدعاء ليس كبيراً جداً لتجنب مشاكل تجاوز سعة المكدس (stack overflow).
  3. **الخطوة 3 (النتيجة):** إذن يجب استخدام الاستدعاء الذاتي: **عندما يمكن تقسيم المشكلة إلى نسخ أصغر من نفسها (مثل في هياكل الأشجار أو خوارزميات البحث)، بشرط وجود حالة أساسية واضحة وعمق استدعاء مناسب**

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

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

سؤال 1: حدد الجملة الصحيحة والجملة الخاطئة فيما يلي:

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

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

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

سؤال 2: ما الاختلافات بين التكرار والاستدعاء الذاتي؟

  • أ) التكرار يستخدم الحلقات فقط، بينما الاستدعاء الذاتي لا يستخدم أي حلقات
  • ب) الاستدعاء الذاتي أسرع دائماً من التكرار في جميع الحالات
  • ج) التكرار والاستدعاء الذاتي متطابقان تماماً في الأداء والوظيفة
  • د) الاستدعاء الذاتي يتطلب ذاكرة أقل من التكرار دائماً

الإجابة الصحيحة: التكرار يستخدم الحلقات (مثل for، while) لتنفيذ المهام المتكررة، بينما الاستدعاء الذاتي يستدعي الدالة نفسها لحل المشكلة. التكرار عادة أسرع وأقل استهلاكاً للذاكرة، بينما الاستدعاء الذاتي أكثر وضوحاً رياضياً وأسهل في كتابة بعض الخوارزميات.

الشرح: الاختلافات الرئيسية: 1) الآلية: التكرار يستخدم الحلقات، الاستدعاء الذاتي يستخدم استدعاء الدالة نفسها. 2) الأداء: التكرار أسرع وأقل استخداماً للذاكرة. 3) الوضوح: الاستدعاء الذاتي أكثر وضوحاً للمشاكل الرياضية والتكرارية. 4) التعقيد: الاستدعاء الذاتي قد يؤدي إلى فيض المكدس إذا لم يكن مصمماً بشكل صحيح.

تلميح: قارن من حيث الآلية، الأداء، الوضوح، والتعقيد

سؤال 3: متى يجب استخدام الاستدعاء الذاتي؟

  • أ) يجب استخدامه دائماً لأنه أفضل من التكرار في جميع الحالات
  • ب) يجب استخدامه فقط عندما تكون المشكلة بسيطة ولا تحتاج إلى تقسيم
  • ج) يجب استخدامه عندما تكون المشكلة معقدة جداً ولا يمكن حلها بالتكرار
  • د) يجب استخدامه عندما يكون عمق التكرار غير معروف أو غير محدود

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

الشرح: استخدام الاستدعاء الذاتي مناسب في: 1) المشاكل ذات الطبيعة التكرارية الطبيعية (مثل شجرة العائلة، الملفات المجلدية). 2) الخوارزميات الرياضية (مثل حساب المضروب، متتالية فيبوناتشي). 3) عندما يكون الكود أكثر قابلية للقراءة والفهم. 4) عندما يكون عمق التكرار محدوداً ومعروفاً.

تلميح: فكر في أنواع المشاكل التي تكون طبيعتها تكرارية

سؤال 1: تتكون دالة الاستدعاء التكرارية من حالتين.

الإجابة الصحيحة: صحيحة

الشرح: دالة الاستدعاء التكرارية تتكون عادة من حالتين: الحالة الأساسية (base case) التي توقف التكرار، والحالة التكرارية (recursive case) التي تستدعي الدالة نفسها.

تلميح: فكر في هيكل الدوال التكرارية النموذجي

سؤال 1: تستدعي دالة الاستدعاء التكرارية دالة أخرى.

الإجابة الصحيحة: خاطئة

الشرح: دالة الاستدعاء التكرارية تستدعي نفسها (ذاتياً) وليس دالة أخرى. هذا هو جوهر مفهوم الاستدعاء الذاتي.

تلميح: ما هو تعريف الدالة التكرارية؟

سؤال 1: دوال الاستدعاء التكرارية أسرع في التنفيذ.

الإجابة الصحيحة: خاطئة

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

تلميح: قارن بين الأداء الزمني للتكرار والاستدعاء الذاتي

سؤال 1: استدعاء الدوال يجعل لبنة المقطع البرمجي أصغر حجماً.

الإجابة الصحيحة: صحيحة

الشرح: استدعاء الدوال يسمح بإعادة استخدام الكود وتقسيم البرنامج إلى وحدات أصغر، مما يجعل كل لبنة برمجية أكثر تركيزاً وأصغر حجماً.

تلميح: فكر في فوائد استخدام الدوال في البرمجة

سؤال 1: كتابة مقطع برمجي متكرر يتطلب استدعاءً ذاتياً أقل.

الإجابة الصحيحة: خاطئة

الشرح: كتابة مقطع برمجي متكرر يتطلب استدعاءً ذاتياً أكثر، حيث أن الطبيعة التكرارية تعتمد على استدعاء الدالة نفسها بشكل متكرر لحل المشكلة.

تلميح: ما هو المبدأ الأساسي للبرمجة التكرارية؟

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

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

ما هي الحالات الأساسية التي يجب أن تتكون منها دالة الاستدعاء التكراري (Recursive Function) لتجنب الحلقات اللانهائية؟

الإجابة: تتكون دالة الاستدعاء التكراري من حالتين رئيسيتين: حالة الأساس (Base Case) وهي الشرط الذي يوقف التكرار، وحالة التكرار (Recursive Step) حيث تقوم الدالة باستدعاء نفسها مع مدخلات جديدة تقترب من حالة الأساس.

الشرح: حالة الأساس تضمن أن الدالة ستتوقف في النهاية، بينما حالة التكرار تضمن تقدم الحل نحو حالة الأساس. بدون حالة أساس، ستستمر الدالة في الاستدعاء الذاتي بشكل لا نهائي.

تلميح: فكر في الشرط الذي يمنع الدالة من استدعاء نفسها إلى ما لا نهاية.

في سياق البرمجة، كيف تختلف دالة الاستدعاء الذاتي (Recursion) عن التكرار (Iteration)؟

الإجابة: التكرار يستخدم حلقات (مثل for أو while) لتنفيذ مجموعة من التعليمات بشكل متكرر، بينما الاستدعاء الذاتي يجعل الدالة تستدعي نفسها لحل مشكلة معقدة عن طريق تقسيمها إلى مشكلات فرعية أصغر من نفس النوع، مع وجود حالة أساس لوقف التكرار.

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

تلميح: قارن بين استخدام الحلقات واستخدام استدعاء الدالة لنفسها.

متى يكون استخدام الاستدعاء الذاتي خيارًا مفضلاً أو مناسبًا في تصميم البرمجيات؟

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

الشرح: الاستدعاء الذاتي يتألق في المشكلات التي تتبع نمطاً متكرراً حيث يمكن وصف الحل العام بناءً على حلول للمشكلات الأصغر. الأمثلة الشائعة تشمل حساب مضروب الأعداد (factorial) أو تسلسل فيبوناتشي.

تلميح: فكر في أنواع المشكلات التي يمكن حلها بتقسيمها إلى أجزاء أصغر من نفس النوع.

هل استدعاء الدوال (بشكل عام) يجعل لبنة المقطع البرمجي أصغر حجماً؟ وضح ذلك.

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

الشرح: تجميع التعليمات المتكررة في دالة واحدة ثم استدعائها من أماكن متعددة يؤدي إلى تقليل إجمالي عدد الأسطر البرمجية في الملف الرئيسي، وجعل الشيفرة منظمة أكثر.

تلميح: فكر في مبدأ 'تقسيم العمل' وكيف يقلل من تكرار الشيفرة في أماكن مختلفة.