سوف نتطرّق في هذا المقال إلى لغة البرمجة بايثون المستخدمة لبرمجة مختلف التّطبيقات المعتمدة على الرّاسبيري باي.

الرّاسبيري باي Raspberry Pi:

الرّاسبيري باي هو كمبيوتر حجمه بحجم بطاقة الائتمان، منخفض التّكلفة نسبيّاً، ويستخدم لتنفيذ مختلف المشاريع والتّطبيقات.  يَستخدم الكثير من المطوّرين لوحة الرّاسبيري باي من أجل تطبيقاتهم المختلفة – على سبيل المثال في مجال الميديا – ومنهم من طوّر مشغّلات ألعاب الفيديو الّتي تحاكي أنظمة الألعاب القديمة وآلات ألعاب الأركيد Arcade Machines مثل: Sega Genesis, Atari 2600, Nintendo 64، وغيرها الكثير منالمشاريع الأخرى.
يُدعى نظام تشغيل الرّاسبيري باي بالرّاسبيان، يُثبّت هذا النظام على كرت ذاكرة MicroSD card، والذي يمكن وصله إلى جهاز الكومبيوتر الشخصي، ويعتبر نظام الرّاسبيان نسخة أخف من نظام التّشغيل Debian Linux الذي بُني ليناسب بنية ARM الذّي هو نوع من المعالجات الدّقيقة الذي يتعرّف على أعداد محدودة من الأوامرRISC، ويتضمّن بعض الحزم المفيدة.

لغة البرمجة بايثون:

تعدّ لغة البرمجة بايثون لغة فعّالة سهلة التّعلّم، وُضِعت في نهايات 1980، وتُعتبر لغة مدعومة من قبل شريحة واسعة من المستخدمين، وتُستخدَم في يومنا هذا على نطاق واسع. نستطيع كتابة وتشغيل أي كود برمجي بلغة البايثون لتنفيذ التّطبيق الذي نريده، كما يوجد المئات من النّماذج البرمجيّة المتاحة مجّاناً التي يمكن الاستفادة منها لتنفيذ مختلف المشاريع والتّطبيقات، بالإضافة لنماذج تتيح التّفاعل مع منافذ الـ GPIO والكاميرا وغيرها.

إعداد الجزء المادّي للرّاسبيري باي:

علينا أوّلاً الحصول على عُدّة راسبيري باي التّي تحتوي على لوحة راسبيري باي، محوّل تيّار متناوب AC ذو منفذ microUSB ،كبل شبكة (إيثرنت)، مقياس آفو وأسلاك وغيرها من العناصر.
يُعتبر الراسبيري باي العنصر الأهمّ في هذه المجموعة بعد نزعه من الكيس البلاستيكي ووضعه بحذر على سطح أملس، نلاحظ أنّه يكون مثبّتاً على حامل بلاستيكي مع لوحة اختبار breadboard ، ومن أجل عمليّة الإعداد نحتاج إلى تغذية ولوحة مفاتيح وفأرة وشبكة وشاشة عرض.
بداية نقوم بتوصيل لوحة مفاتيح USB والفأرة.

  B+ الشّكل(1): توصيل نموذج راسبيري باي

                                                     الشّكل(1): توصيل نموذج راسبيري باي B+

بعد ذلك نصل كبل الـHDMI بين الرّاسبيري باي وشاشة العرض، ثمّ نصل كبل الشّبكة بين الرّاسبيري باي وأحد نقاط الشّبكة في مكان العمل، وبهذا يصبح الراسبيري باي جاهزاً للتشغيل، وما أن نصل محوّل التيّار المتناوب microUSB AC سنشاهد عمليّة إقلاع الرّاسبيري باي تُعرَض على شاشة العرض.
بعد ذلك نقوم بتسجيل الدّخول إلى الرّاسبيري باي باستخدام اسم مستخدم (science.uoit.ca) وكلمة مرور.

ملاحظة:

اسم المستخدم هو بطاقة التّعريف الطّلابيّة الخاصّة بك ID، وكذلك بالنّسبة لكلمة السّر التّي هي أيضاً ID الطّلابيّة يتبعها إشارة ( _ ).

كمثال:

Password Username Banner ID
100000001_ 100000001 100000001
100000002_ 100000002 100000002
بعد تسجيل الدّخول يُفضّل أخذ نظرة عامة عن كافّة التّطبيقات الموجودة على سطح المكتب أو في قائمة التّطبيقات (والتي يمكن الوصول إليها من الزّاوية السّفليّة اليسرى كما هو حال قائمة البداية في نظام التّشغيل ويندوز).
ننقر نقراً مزدوجاً على الأيقونة الموجودة على سطح المكتب‘IDLE’ لبدء تشغيل بيئة التّطوير الخاصّة بلغة البرمجة بايثون.

تشغيل البايثون على الرّاسبيري باي:

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

2+9<<<

(مع الانتباه لعددم كتابة الرمز <<< عند كتابة الأمر البرمجيّ الذي نريده).

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

(“…print(“testing 1 2 3

من قائمة file نختار save as ونحفظ الملف على جهاز الكمبيوتر باسم (basics.py) على سبيل المثال، ثمّ نضغط المفتاح F5 لتنفيذ البرنامج حيث يظهر لدينا الخرج ‘testing 1 2 3…’ ضمن نافذة IDLE، وبالإسهاب في النّظر في هذه النّافذة نرى أنّ لها وظائف محرّرات النّص الشّائعة بالإضافة إلى بعض ميّزات بيئة البرمجة الأساسيّة (مثل Comment Out Region).

مدخل إلى لغة البرمجة بايثون:

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

x = 8
( print(x<<<
8
(print(x * 2<<<
16
نلاحظ أنّ خَرْج البرنامج تمَّتْ طباعته بعد كل سطر، والآن نفتح نافذة محرر النّصوص ونكتب الكود البرمجي التّالي :

x = 8
(print(x
(print(x * 2
نحفظ هذا الكود بدلاً من الكود المحفوظ باسم basics.py في الجزء السّابق، وننفّذه بالضّغط على F5،نلاحظ أنّ البرنامج لا يتمّ تنفيذه سطرا سطرا، إنّما يتمّ تنفيذه ككلّ بمجرد الضّغط على المفتاح F5. نُضيف بعض المتغيّرات الأخرى:

“name = “Raspberry Pi
length = 14.5
width = 7.25
يتمّ التّعامل مع ثلاثة أنواع مختلفة من المتغيّرات في برنامجنا هذا وهي : integer و floating point و String, نُضيف الكود البرمجيّ التّالي:

(” :Print (“x
(Print (x
Print (“Name:”, name
( , “: Print (“width
(Print (width
((Print (“length:” + str (length

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

(,”:print(“width

الآن سنتناول كيفيّة التّعامل مع الشّروط:

x = 8
:if x<10
(“print(“x is small
:elif X < 20
(“print(“x is medium
else:
(“print(“x is large

نقوم بإسناد قيم مختلفة للمتغيّر X من أجل فهم كيفيّة عمل الشّروط.

ملاحظة:

تستخدم البايثون الفراغات من أجل هيكلة الكود البرمجيّ (في لغة ال C++ نبدأ الكود البرمجي بـ } وننهيه بـ{ )، ولكن في لغة البايثون نستخدم مسافات إزاحة ضمن الكود البرمجيّ الخاص بنا، لذلك يجب الحرص على أن تكون الفراغات في الكود متّسقة حتّى لا يختلط الأمر على البايثون فيما إذا كان الكود البرمجيّ ينتمي لداخل البلوك البرمجي الخاص به أم لا.

سنتناول الآن حلقة while وكما قلنا سابقاً فإن الاختلاف الأساسي مع لغة C++ هو في استعمال مسافات الإزاحة في الكود المتوضِّع داخل الحلقة.

x = 8
:while x> 0
(print(x
x = x – 1
أمّا بالنّسبة لحلقات for فإنّها تعمل في لغة بالبايثون اعتماداً على القوائم، والقائمة هي مجموعة من العناصر التي هي من نفس النّوع وتكون محاطة بأقواس مربّعة (مثل: [1, 2, 3, 4, 5])، ويمكننا استخدام الحلقة للمرور على أيّ قائمة.

[“names = [“Bob”, “Sally”, “Kunal”, “Ahmed”,”Carla”]
: for name in names
(print(name

يوّلّد التّابع () range قائمة يمكننا الاستفادة منها في حلقات for، يمكن تمرير ثلاثة بارامترات إلى التّابع  range: القيمة الصغرى ، القيمة الكبرى، ومقدار خطوة الانتقال. عندئذٍ سيولّد () range قائمة تبدأ عند القيمة الصّغرى (قيمتها الافتراضية 0) انتهاءً بالقيمة الكبرى التي حدّدناها، يتمّ الانتقال إلى القيمة التّالية بإضافة القيمة الحاليّة إلى قيمة خطوة الانتقال (ذات القيمة الافتراضية 1) لحين الوصول إلى القيمة النّهائية max.
ونكتب كمثال عن التابع () range :

((list (range (10<<<
((list (range (5, 10<<<
((list (range (5, 15, 2<<<

وبذلك يمكننا استخدام الحلقة for بصيغة أخرى :

:(for val in range(0, 20
(print(val

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


المصدر: هنا
ترجمة: ميّ همدر , مراجعة: محمد مرتكوش , تدقيق لغوي: سلام أحمد , تصميم : علي العلي ، تحرير: قحطان غانم.