Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 3

تصميم تمارين تحليل المشكلات وتقسيمها المنطقي

Recommended resources

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

الآن، سننتقل من شرح المفهوم إلى تعليم المهارة. هدفنا اليوم هو تحقيق المخرج التعليمي التالي: "تصميم تمارين لتحليل المشكلات وتقسيمها إلى خطوات منطقية متسلسلة". هذا هو جوهر مهارة التفكيك (Decomposition) التي ناقشناها في الدرس الأول، وتطبيقها العملي هو التفكير الخوارزمي.

سنركز على أنواع التمارين التي يمكنك استخدامها في منهجك، وكيفية تصميمها لتكون فعالة وجذابة للمبتدئين، مع التركيز على فصل مهارة "حل المشكلة" عن مهارة "كتابة الكود".

1. نقطة البداية: التمارين غير المتصلة (Unplugged Activities)

أفضل طريقة لتعليم المبتدئين تحليل المشكلات هي إزالة عائق كتابة الكود والتركيز كلياً على المنطق. الأنشطة غير المتصلة بالحاسوب (Unplugged Activities) هي أداة رائعة لتحقيق ذلك.

الفيديو التالي من أسبوع البرمجة الأوروبي يعرض أفكاراً ممتازة يمكنك تبنيها مباشرة في دروسك.

Coding without computers (unplugged), by Alessandro Bogliolo

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

شاهد من البداية حتى الدقيقة 4:04. ركز على النقاط التالية: فكرة 'الإنسان الآلي' (Human Robot) وكيف تجبر الطالب على التفكير في تعليمات أساسية (تقدم، انعطف يميناً، انعطف يساراً). أهمية تقسيم الإجراء إلى تعليمات أولية ودقيقة. أفكار الألعاب مثل 'السائح' (The Tourist) و 'المبارزة' (The Duel) كنماذج لتمارين تفاعلية وتنافسية.

الفائدة التربوية لهذه الأنشطة واضحة:

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

يمكنك تصميم أوراق عمل بسيطة لدعم هذه الأنشطة. انظر إلى هذين المثالين.

Problem Decomposition Worksheet for Beginners
هذه الورقة تطلب من الطالب تفكيك مهمة يومية مثل "الاستعداد للمدرسة" إلى أجزاء (Parts) ثم خطوات (Steps). هذا الهيكل يعلّم الطالب بشكل مباشر كيفية تنظيم تفكيره.
Algorithmic Thinking Worksheet: Daily Routine Problem
هنا، يتم دمج التفكيك مع التفكير الخوارزمي. المشكلة هي "توصيل الطفل للمدرسة، ثم شراء الحليب، والعودة للمنزل". يجب على الطالب كتابة الخوارزمية باستخدام الأسهم ثم رسم المسار على الخريطة لاختبارها.

هذه الأمثلة تريك كيف يمكن تحويل فكرة بسيطة إلى تمرين منظم له أهداف تعليمية واضحة.


2. المستوى التالي: تمارين الألغاز المنطقية

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

لعبة "خمن رقمي" (Guess My Number) هي مثال كلاسيكي ممتاز. الفيديو التالي يشرح كيفية استخدامها لتعليم استراتيجيات حل المشكلات.

Computational Thinking and problem solving, by Miles Berry

يستخدم هذا الفيديو لعبة 'خمن رقمي' لشرح كيفية تحليل مشكلة بشكل منهجي ومقارنة الخوارزميات المختلفة لحلها. هذا مثال رائع لتدريب الطلاب على استراتيجية 'فرّق تسد' (Divide and Conquer).

شاهد من الدقيقة 2:30 إلى 6:41. ركز على: كيفية تحويل اللعبة من تخمين عشوائي إلى عملية منهجية. مقارنة الخوارزميات الثلاث: التخمين العشوائي، البحث الخطي، واستراتيجية 'فرّق تسد' (البحث الثنائي). كيف يمكن تكييف هذا التمرين لمستويات مختلفة من الطلاب (من مجرد اللعب إلى برمجة اللعبة).

كيف تصمم تمرينًا بناءً على هذا الفيديو؟

  1. المرحلة الأولى (للمبتدئين جداً): العب اللعبة معهم. قل "لقد اخترت رقماً بين 1 و 100. يمكنكم فقط طرح أسئلة إجابتها نعم/لا". دعهم يكتشفون بأنفسهم أن أسئلة مثل "هل الرقم أكبر من 50؟" أكثر فعالية من "هل هو 37؟".
  2. المرحلة الثانية (بعد فهم المفهوم): اطلب منهم كتابة "استراتيجيتهم الفائزة" كخوارزمية (قائمة من الخطوات). هذا يجبرهم على صياغة عملية التفكير التي توصلوا إليها.
  3. المرحلة الثالثة (متقدم): اطلب منهم كتابة برنامج حاسوبي (Pseudocode أو كود فعلي) ينفذ هذه الاستراتيجية.

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


3. صياغة التمارين المكتوبة: من الواقع إلى الخوارزمية

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

المورد التالي، وهو عبارة عن تصميم لوحدة تعليمية باللغة العربية، يحتوي على أمثلة ممتازة يمكنك استلهامها.

التفكير الحاسوبي

يحتوي هذا المورد على أمثلة عملية لأسئلة تقويمية يمكنك تكييفها. هذه الأسئلة مصممة لطلاب المرحلة الثانوية ولكن يمكن تبسيطها.

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

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

  • مثال أجرة التاكسي: "كم المبلغ الذي سيدفعه الراكب لسيارة أجرة... إذا علم أن العداد يبدأ من مبلغ X وكل كيلو متر يزيد Y علماً بأن الرحلة وصلت لمسافة N كيلومتراً، اكتبي الخوارزمية التي تطبع المبلغ...".

    • لماذا هو جيد؟ يجبر الطالب على:
      1. تحديد المدخلات (Inputs): المبلغ الابتدائي (X)، تكلفة الكيلومتر (Y)، المسافة (N).
      2. تحديد المخرجات (Output): المبلغ الإجمالي.
      3. تحديد العملية (Process): المبلغ_الإجمالي = X + (N * Y).
    • إنه تمرين بسيط ومباشر يربط بين مشكلة واقعية وصيغة رياضية.
  • مثال مساحة الدائرة: "اكتبي الخوارزمية لإيجاد مساحة ومحيط دائرة نصف قطرها معلوم R".

    • لماذا هو جيد؟ مشابه للمثال السابق، لكنه يتطلب من الطالب معرفة أو البحث عن الصيغ الرياضية الصحيحة، مما يضيف خطوة "جمع المعلومات" إلى عملية حل المشكلة.

يمكنك تصميم العديد من التمارين المماثلة:

  • حساب متوسط مجموعة من الأرقام.
  • تحويل درجة الحرارة من مئوية إلى فهرنهايت.
  • حساب المبلغ المتبقي بعد شراء عدة سلع من متجر.

4. الإطار التربوي: فصل التخطيط عن التنفيذ

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

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

A theory of instruction for introductory programming skills

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

اقرأ قسم 'Instruction on writing templates (S4)' وخاصة الفقرة التي تبدأ بـ 'To differentiate between misunderstandings...'. ثم انظر إلى المثال في قسم 'The post-test...' الذي يصف مشكلة 'check digit'. لاحظ كيف أن حل المشكلة مقسم إلى خطوات واضحة: كتابة خطة، ثم كتابة الكود، ثم كتابة التعليقات.

الاستراتيجية التربوية: "الخطة أولاً" (Plan-First Approach)
عندما تعطي طلابك مشكلة برمجية، اطلب منهم تسليم الحل على مرحلتين (أو ثلاث):

  1. المرحلة الأولى: الخطة (The Plan)

    • اطلب من الطالب أن يكتب بلغته الطبيعية أو بالشفرة الزائفة (Pseudocode) الخطوات التي سيتبعها لحل المشكلة.
    • هذه هي مرحلة تحليل المشكلة والتفكير الخوارزمي.
    • مثال: لمشكلة أجرة التاكسي، قد تكون الخطة:
      1. اقرأ المبلغ الابتدائي.
      2. اقرأ تكلفة الكيلومتر.
      3. اقرأ المسافة.
      4. احسب التكلفة الإضافية (التكلفة * المسافة).
      5. احسب المبلغ الإجمالي (الابتدائي + الإضافي).
      6. اطبع المبلغ الإجمالي.
  2. المرحلة الثانية: الكود (The Code)

    • الآن فقط، اطلب من الطالب ترجمة خطته إلى لغة برمجة فعلية.

لماذا هذه الاستراتيجية فعالة جداً؟

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

صمم تمرينًا بسيطًا باستخدام استراتيجية "الخطة أولاً". المشكلة هي: "اكتب برنامجًا يأخذ عمر شخص بالسنوات ويحسب عمره بالأيام". كيف ستصيغ هذا التمرين لطلابك؟

اقتراح للتصميم

يمكنك تقديمه بالطريقة التالية:

المهمة: حساب العمر بالأيام

المرحلة 1: الخطة (10 درجات)
اكتب باللغة العربية الخطوات اللازمة لحل المشكلة التالية:
"نريد كتابة برنامج يسأل المستخدم عن عمره بالسنوات، ثم يحسب ويعرض عمره بالأيام."
ملاحظة: افترض أن السنة دائمًا 365 يومًا لتبسيط المشكلة.

المرحلة 2: الكود (15 درجة)
الآن، قم بترجمة خطتك من المرحلة الأولى إلى كود برمجي.


تحليل التصميم:

  • هذا التصميم يفصل بوضوح بين التفكير (الخطة) والتنفيذ (الكود).
  • تخصيص درجات لكل مرحلة يؤكد للطلاب أن مرحلة التخطيط لها نفس أهمية مرحلة البرمجة، إن لم تكن أكثر.
  • "التبسيط" المذكور في الملاحظة هو أسلوب تربوي مهم أيضاً، حيث يزيل التعقيدات (مثل السنوات الكبيسة) للسماح للطالب بالتركيز على المنطق الأساسي أولاً.

خلاصة وخطوتك التالية

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

ملخص الأفكار التعليمية الرئيسية:

  • ابدأ بالأنشطة غير المتصلة (Unplugged): لعزل مهارة التفكير المنطقي عن تعقيدات البرمجة.
  • استخدم الألغاز المنطقية: لتدريب الطلاب على تطبيق التفكير المنهجي على مشاكل مجردة.
  • صمم تمارين مكتوبة واقعية: تبدأ من مشكلة بسيطة وتتطلب تحديد المدخلات والعمليات والمخرجات.
  • اعتمد استراتيجية "الخطة أولاً": اجعل التخطيط جزءاً رسمياً ومقيّماً من عملية حل المشكلات لتعزيز مهارات التحليل والتفكيك.

ماذا بعد؟
لقد تعلمنا الآن كيف نعلّم الطلاب تفكيك المشاكل إلى خطوات منطقية يمكن للكمبيوتر اتباعها. في الدرس القادم، سنتعمق أكثر في "لماذا" هذا ضروري. سنتناول المخرج التعليمي: "توضيح الفرق بين التفكير البشري والتفكير الحاسوبي بأسلوب مناسب للمبتدئين". سيساعدك هذا على شرح الأساس الفلسفي وراء كل ما تعلمناه حتى الآن.