لعبة "ماذا أرى"

من ويكي أضِف
اذهب إلى التنقل اذهب إلى البحث

▶ أساسيات البرمجة - جلسة 3

مقدمة

تُعَرِّف هذه اللعبة الطلاب بدون استخدام الحواسيب بمفهوم الخوارزميات و كيفية تحويلها إلى برمجيات، كما توضح العلاقة و الفرق بين الاثنين (الخوارزمية و البرمجية). تتعرض هذه اللعبة أيضا لباقي مفاهيم التفكير الحوسبي من تجزئة للمشكلة و تحديد للأنماط و تجريد و توضح ماهية الدوال كوحدة بناء برمجية و كيفية استخدام الدوال كتطبيق عملي لمفهوم التجريد.

الأهداف

  1. فهم مكونات التفكير الحوسبي من تحليل (تجزئة) للمشكلة و تحديد للأنماط و تجريد و تصميم للخوارزميات.
  2. فهم ماهية الخوارزميات
  3. فهم و تطبيق العملية العقلية المطلوبة لتحويل فكرة إلى خوارزمية و إدراك ما يكتنف هذه العملية من تعقيدات و ما تستلزمه من دقة في فهم الأفكار و التعبير عنها لتجنب الأخطاء.
  4. فهم العلاقة بين الخوارزميات و البرمجيات.
  5. التعرف على مفهوم الدوال و دورها في تبسيط عملية البرمجة و زيادة الأدوات المتاحة للمبرج.
  6. تطبيق مفهوم التجريد بشكل عملي عن طريق انتقاء مهام متشابهة تُشَكّل نمطاً و وصف هذه المهام بشكل مُجَرّد ثم تصميم خوارزمية تصلح للقيام بأي من هذه المهام و تنفيذ هذه الخوارزمية على شكل دالة.

مهارات و معارف الطلاب اللازمة للاستفادة من الجلسة

  • القراءة
  • العد و الحساب
  • تحديد الاحداثيات على اوراق الرسم البياني

الفئة العمرية

اثنى عشر عاماً فأكثر

متطلبات اللعبة

يحتاج تنفيذ اللعبة إلى المساعدات التالية لكل مجموعة من الطلاب:

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

شرح اللعبة

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

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

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

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

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

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

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

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

  1. يبدأ الطلاب بالبحث عن أنماط في الرسوم المقدمة إليهم (على سبيل المثال تكرار لعدد من الأشكال المتشابهة مثل المربعات أو المستطيلات أو المثلثات، إلخ...) و تحليل الرسم بناء على الأنماط المكتشفة.
  2. يقوم الطلاب بتحويل هذه الأنماط إلى عمليات مجردة بحيث يحددوا الأجزاء الثابتة في تنفيذ كل عملية و تلك التي تختلف عند تطبيق العملية في الحالات المختلفة. على سبيل المثال، فإن عملية رسم مستطيل تستلزم رسم اربعة خطوط يبدأ كل منها عند نهاية الأخر و يُكَوّن أي خطين متلامسين فيما بينهما زاوية قائمة، و هذا ثابت لأي مستطيل، بينما تتغير احداثيات تلامس الخطوط من مستطيل إلى أخر.
  3. يحول الطلاب العمليات المجردة إلى دوال عن طريق ابتكار الخوارزمية اللازمة لتنفيذ كل عملية مع تحديد مدخلات كل دالة بناء على الاختلافات الممكنة في كل نمط.

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

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

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


الخطوات

  1. قبل بدء الجلسة، يطوي الميسر الأوراق التي تحتوي على الرسوم بحيث لا يظهر أي جزء من الرسم، و يضع علامات بحيث يستطيع تمييز الرسوم البسيطة من تلك الأكثر تعقيداً. يلاحظ ألا يتكرر أي رسم أكثر من مرة.
  2. يوزع على الطلاب أوراق التعليمات و أوراق الرسم البياني و الرسوم البسيطة يطلب منهم عدم فض الرسوم المطوية في هذه اللحظة.
  3. يعرض الميسر على الطلاب نموذج لرسم بسيط و يوضح أن في الأوراق المطوية التي معهم رسوم مشابة و لكن غير مطابقة لهذا الرسم. و يوضح أنه سيوزعهم على مجموعات كل منها من طالبين و أن المطلوب من كل واحد منهم هو كتابة تعليمات لزميله توجهه لرسم نفس الشكل الموجود في الورقة التي معه.
  4. يسأل الميسر الطلاب عن آراءهم في الكيفية التي يمكن أن يكتبوا هذه التعليمات.
  5. يدير الميسر النقاش مستمعاً إلى آراءهم و موضحا أننا نحتاج إلى تحليل الرسوم إلى عناصر اساسية أولية و كتابة تعليمات لوصف كيفية رسم كل عنصر من هذه العناصر.
  6. يشير الميسر إلى أن ابسط الطرق الممكنة هي تحليل الرسم إلى خطوط و وصف كيفية رسم كل خط من هذه الخطوط.
  7. يوزع الميسر نسخة من دليل البرمجة على كل طالب و يشرح معنى كل أمر من أوامر اللغة، و يوضح أن هذه الأوامر تمكننا من كتابة تعليمات لرسم خطوط و بالتالي كتابة التعليمات اللازمة لرسم الشكل.
  8. يوزع الطلاب على المجموعات و يطلب من طالبي كل مجموعة الجلوس بحيث يكون ظهر كل منهم للأخر.
  9. يطلب الميسر من الطلاب فض الأوراق المطوية و التي تحتوي على الرسوم و كتابة قائمة من التعليمات لتوجيه زملاءهم لرسم الشكل على ورقة التعليمات.
  10. يترك الميسر للطلاب عشر دقائق، ثم يطلب من طالبي كل مجموعة تبادل التعليمات التي كتبوها و محاولة رسم الشكل المطلوب طبقاً لتعليمات.
  11. يترك الميسر للطلاب خمس دقائق ثم يطلب من الطلاب عرض الرسوم الأصلية على زملاءهم.
  12. يطلب الميسر ممن نجح في رسم شكل مطابق للرسم الأصلي رفع أيديهم.
  13. يناقش الميسر الطلاب في ما واجههم من صعوبات في كتابة التعليمات و في اسباب فشل بعضهم في تنفيذ الرسم، و يوضح أن تحويل الفكرة المجردة التي يمثلها الشكل المرسوم في كل ورقة إلى خطوات محددة و منظمة لتنفيذ هذه الفكرة هي عملية عقلية تحتاج إلى تدريب مستمر لإتقانها.
  14. يسأل الميسر الطلاب إذا كانت لغة البرمجة البسيطة الموجودة في دليل البرمجة هي الطريقة الوحيدة الممكنة لكتابة التعليمات، و يناقشهم في ذلك و يوضح أن من الممكن ابتكار أي عدد من اللغات لكتابة نفس التعليمات.
  15. يطلب الميسر من الطلاب اقتراح أوامر اخرى تشكل لغة بديلة لكتابة التعليمات و يناقشهم في افكارهم و يعرض عليهم بعض الأفكار البديلة.
  16. يوضح الميسر أن الخطوات المجردة اللازمة لرسم الشكل يمكن كتابتها بأي لغة قادرة على رسم الخطوط، و يوضح أن هذه الخطوات لا تتأثر باختلاف اللغة.
  17. يوضح الميسر أن الخطوات المجردة اللازمة لتنفيذ مهمة، سواء كانت رسم الشكل كما هو الحال في اللعبة أو أي مهمة أخرى نعرض لها في عالم الحواسيب أو حتى في حياتنا العادية، يطلق عليها اسم الخوارزمية، بينما يطلق على التعليمات المكتوبة بلغة محددة لتنفيذ هذه الخطوات اسم البرنامج، و يضرب أمثلة لخوارزميات يعرض لها الطلاب في حياتهم اليومية مثل خوارزمية "وضع الطعام في الثلاجة" أو خوارزمية "إعداد كعكة"
  18. يشير الميسر إلى أن في أغلب الأحيان يوجد أكثر من خوارزمية لتحقيق نفس الهدف، و يطلب من الطلاب تصور عدد من الخوارزميات المختلفة لرسم الأشكال التي في أيديهم و يناقشهم في تصوراتهم.
  19. يوضح الميسر أننا إن اخترنا معايير لمقارنة هذه الخوارزميات المختلفة و تحديد أفضلية بعضها عن الأخرى، فسنرى أنها تتفاوت في ما بينها في كفائتها في تحقيق الهدف، على سبيل المثال، فإن اختيار عدد الخطوات اللازمة لرسم الشكل كمعيار للكفاءة يوضح أن بعض هذه الخوارزميات أفضل من الأخرى.
  20. يوضح الميسر أيضاً أن من الممكن كتابة أي من الخوارزميات باستخدام أي لغة من لغات البرمجة، أي أن الخوارزمية مستقلة تماما عن البرنامج المستخدم لتنفيذها.
  21. يشير الميسر إلى أننا سنبدأ الأن في لعب شوط جديد من هذه اللعبة، و يقوم بتوزيع الأوراق التي تحتوي على الأشكال الأكثر تعقيداً على الطلاب.
  22. يسأل الميسر إن كان من الممكن تصميم خوارزميات لرسم هذه الأشكال، ثم يوضح أنه على الرغم من إمكانية ذلك، إلا أن هذه الخوارزميات ستتكون من عدد كبير من الخطوات و كتابة برنامج لتنفيذ هذه الخوارزمية سيكون عملية منهكة و مضجرة.
  23. يطلب الميسر من الطلاب التفكير في طرق لتبسيط الخوارزميات المطلوبة و البرامج اللازمة لتنفيذها.
  24. يوجه الميسر الطلاب من خلال النقاش إلى ملاحظة وجود أنماط ناشئة عن تكرار وحدات أولية كالمربعات و المثلثات أو تركيبات محددة من الخطوط مرات عديدة في كل رسم باختلافات بسيطة بين كل وحدة و أخرى، ثم يسألهم كيف يمكن الاستفادة من هذا التكرار في تبسيط الخوارزمية.
  25. يوضح الميسر أن بإمكاننا كتابة خوارزمية ابسط عن طريق استخدام خطوات ترسم هذه الأشكال الأولية في خطوة واحدة دون الحاجة لرسم كل خط من خطوطها بشكل منفصل، كما يشير إلى أن هذه الخطوات يجب أن تأخذ في الأعتبار الفروق بين كل تكرار من تكرارات الشكل.
  26. يوضح الميسر كيفية تنفيذ ذلك باستخدام أحد الأشكال المتكررة كمثال مع توضيح أهمية استخدام مفهوم المعطيات (arguments) للتعامل مع الفروق بين التكرارات المختلفة.
  27. يدعو الميسر الطلاب إلى تسمية الأشكال الأخرى التي تكون بتكرارها أنماطاً في ما معهم من رسوم و اقتراح خطوات مناسبة للتعامل مع هذه الأنماط مع توضيح كيفية تعامل هذه الخطوات مع الاختلافات بين التكرارات المختلفة لكل شكل، ثم يكتب على اللوحة أمام الطلاب أسماء هذه الأشكال مع شرح للخطوات المقترحة لرسمها و المعطيات المطلوبة لتنفيذ كل خطوة بشكل صحيح.
  28. يوضح الميسر أننا سنحتاج إلى إضافة أوامر جديدة للغة البرمجة التي استخدمناها سلفاً لتدعم رسم هذه الأشكال، و يدعو الطلاب لاقتراح شكل هذه الأوامر و يناقشهم وصولاً للأتفاق على شكل هذه الأوامر، ثم يكتب الأوامر المتفق عليها على اللوحة بجوار الشرح المكتوب سلفاً.
  29. يطلب الميسر من كل طالب كتابة البرنامج اللازم لرسم الشكل الذي معه باستخدام اللغة الموسعة التي تكونت بعد إضافة الأوامر الجديدة، و كتابة اسماءهم أعلى ورقة التعليمات.
  30. يعطي الميسر الطلاب ربع ساعة لكتابة البرنامج، ثم يجمع الأوراق و يعيد توزيعها على الطلاب بشكل عشوائي بحيث لا يحصل أي طالب على ورقته الأصلية أو على ورقة أي من الطلاب المجاورين له و ذلك بهدف تقليل احتمال وجود فكرة مسبقة لدى أي من الطلاب عن الأشكال المطلوبة منهم، ثم يطلب من كل منهم رسم الشكل المطلوب عن طريق تنفيذ التعليمات المكتوبة.
  31. يعطي الميسر للطلاب ثلث ساعة، ثم يطلب من كل طالب الإطلاع على الشكل الأصلي الموجود مع الطالب المسمى أعلى ورقة التعليمات و مطابقته بالشكل الذي رسمه.
  32. يطلب الميسر أن يرفع من نجح في رسم الشكل بدقة يده.
  33. يسأل الميسر الطلاب إن كانوا يعتقدون أن استخدام الأوامر الجديدة قد سهل فعلاً كتابة البرامج، و يشير إلى مقدار الزيادة في عدد الخطوات إذا لم تستخدم هذه الأوامر الجديدة للدلالة على قيمة هذه الأوامر.
  34. يشير الميسر إلى أن إضافة أوامر جديدة إلى لغات البرمجة الحاسوبية هي أحد الممارسات الهامة في البرمجة، و أن بناء هذه الأوامر الإضافية يتم باستخدام ما يسمى الدوال(Functions).
  35. يسأل الميسر الطلاب عن تصورهم للكيفية التي تستطيع بها لغة البرمجة تحقيق الهدف من كل أمر من هذه الأوامر الجديدة المعرفة كدوال.
  36. يوضح الميسر من خلال النقاش أن هذه الدوال في جوهرها هي برامج تقوم بتنفيذ خوارزميات تحقق الهدف المطلوب، و أن تعريف كل دالة من هذه الدوال في حد ذاته يشمل ابتكار خوارزمية تحقق هذا الهدف و كتابة هذه الخوارزمية كبرنامج، على هذا، ففي بعض الأحيان يطلق على الدوال اسماً أخر و هو البرامج الفرعية (Sub Routine)

خطوات شرح المفاهيم

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

ختام اللعبة

  1. يختم الميسر اللعبة بتلخيص ما تم تعلمناه من خلال اللعبة و هو:
    • عناصر التفكير الحوسبي
    • كيفية ابتكار الخوارزميات و ما يتطلبه ذلك من دقة و تفكير منظم.
    • العلاقة بين الخوارزمية و البرنامج
    • كيفية تطبيق مفهوم التجريد بشكل عملي في لغات البرمجة.
  2. يوضح الميسر أن هناك العديد من الرسوم الإضافية لمن يرغب في إعادة هذه اللعبة لاحقاً.

تنويعات على اللعبة

تنويعة لتضمين مفهوم الحلقات و التكرار

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

قراءات و تدريبات إضافية

  1. https://www.youtube.com/watch?v=itrWB6mvtLU
  2. http://www.kwmath.com/?p=538