الدرس الأول: مقدمة إلى المايكروبت (٣)
انظر إلى واجهة البرمجة بالأعلى: السطر الأول يحدد متغيراً باسم MyAge ويخزن فيه القيمة 12، والسطر الثاني يعرض هذه القيمة على شاشة المايكروبت باستخدام الأمر basic.show_number. يمكنك إدخال أي قيمة تريدها للمتغير حسب رغبتك. انظر الآن إلى الجزء الأسفل الذي يمثل المحاكي الافتراضي للمايكروبت، حيث يشير السهم إلى زر التشغيل الأخضر الصغير. اضغط على هذا الزر لتشغيل واختبار عمل المقطع البرمجي الذي كتبته، لتراقب كيف تظهر القيمة على شاشة المصابيح الصغيرة.
يقوم الدرس على برمجة جهاز المايكروبت باستخدام لغة بايثون والمتغيرات. الفكرة الأساسية هي تخزين البيانات في الذاكرة عبر المتغيرات العددية والنصية، واستخدام الأوامر الأساسية لعرضها على شاشة الليد. انظر إلى تعريف المتغير MyAge = 12، حيث يخزن القيمة اثني عشر، ثم يأتي الأمر basic.show_number(MyAge) لعرض هذه القيمة على الشاشة. ينقسم نطاق المتغيرات إلى محلية وعامة، حيث تُعرّف المتغيرات العامة خارج الدوال لتصبح مرئية في كل البرنامج عبر الأمر global، بينما تُعرّف المتغيرات المحلية داخل الدالة وحدها ولا ترى خارجها. تتيح هذه الأدوات التحكم في سير التنفيذ ومعالجة المدخلات من الأزرار والمستشعرات بكفاءة عالية وفق بنية برمجية واضحة.
الفكرة الأساسية
تدور فكرة الدرس حول التعامل مع المتغيرات وأنواعها في برمجة المايكروبت باستخدام لغة بايثون، وكيفية تخزين القيم واسترجاعها وتعديلها عبر الأوامر البرمجية المختلفة مع فهم نطاق استخدامها.
الشرح
المتغيرات هي أماكن في الذاكرة تُستخدم لتخزين البيانات مثل الأرقام والنصوص. لا يقتصر استخدام المتغيرات على الأرقام فقط، بل يمكن استخدامها لتخزين النصوص أيضاً وتسمى المتغيرات التي تخزين النصوص متغيرات نصية، ولتعيين نص إلى متغير يجب وضع النص داخل علامات الاقتباس. لتغيير قيمة متغير عددي، نستخدم الأمر item change الموجود في فئة أوامر Variables لتغيير قيمة المتغير بمقدار محدد مثل الزيادة والنقصان. يتم تصنيف المتغيرات إلى متغيرات محلية ومتغيرات عامة بناء على نطاقها، ونطاق المتغير هو الجزء من المقطع البرمجي الذي يمكن من خلاله الوصول إلى المتغير ورؤيته واستخدامه. يتم تعريف المتغيرات المحلية داخل دالة ولذا تنتمي فقط إلى هذه الدالة المحددة ولا يمكن الوصول إليها إلا من خلال تلك الدالة التي تم تعريفها داخلها. أما المتغيرات العامة فيتم تعريفها خارج أي دالة ويمكن الوصول إليها بشكل عام في المقطع البرمجي بأكمله، وبمعنى آخر يمكن استخدامها في أي مكان في المقطع البرمجي وليس فقط في النطاق الذي تم تحديده كداخل الدالة على سبيل المثال. لاستخدام متغير عام داخل دالة يتغير، نستخدم الأمر global للدلالة على أنه متغير عام، مما يعني أن تعيين قيمة داخل الدالة يغير ما سيُعرض عند استخدام القيمة في القسم الرئيس من المقطع البرمجي.
مثال محلول خطوة بخطوة
لإنشاء مقطع برمجي بحيث تتغير قيمة المتغير myVar بمقدار واحد في كل مرة تضغط فيها على زر A من المايكروبت، نكتب الكود التالي:
- نكتب في السطر الأول: myVar = 0 لتعريف متغير عام بقيمة صفر.
- ننشئ دالة بالسطر الثالث: def on_button_pressed_a():
- نكتب في السطر الرابع داخل الدالة: global myVar للإشارة إلى أن المتغير عام.
- نكتب في السطر الخامس: myVar += 1 لزيادة قيمة المتغير بمقدار واحد.
- نكتب في السطر السادس: basic.show_number(myVar) لعرض قيمة المتغير الجديدة.
- نربط الدالة بالزر A في السطر السابع عبر الأمر: input.on_button_pressed(Button.A, on_button_pressed_a).
أخطاء شائعة
- نسيان وضع علامات الاقتباس عند إسناد قيمة نصية للمتغير، مما يؤدي إلى حدوث خطأ برمجي في بايثون.
- محاولة استخدام متغير عام داخل دالة وتعديله من دون كتابة الأمر global قبله.
- نسيان تعريف المتغير أو إعطائه قيمة قبل محاولة استخدامه في طباعة أو معالجة.
سؤالان للتدريب مع الإجابة
السؤال الأول: ما الفرق الأساسي بين نطاق المتغيرات المحلية والمتغيرات العامة؟ الإجابة: المتغيرات المحلية لا يمكن الوصول إليها إلا داخل الدالة التي عُرفت فيها فقط، بينما المتغيرات العامة يمكن الوصول إليها واستخدامها في أي مكان في المقطع البرمجي بأكمله ومن جميع الدوال. السؤال الثاني: ما الذي يفعله الأمر basic.show_string("Hello" + MyName) برمجياً؟ الإجابة: يقوم بدمج النص الثابت Hello مع قيمة المتغير النصي MyName ثم عرض الناتج النصي كاملاً على شاشة المايكروبت.