المهارات الرقمية فصل أول

التاسع

icon

الجملُ الشرطيةُ المُركَّبةُ
(  Nested Conditional Statements )

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

 

الجملُ الشرطيةُ  ( Conditional Statement )
تُعرَّفُ الجملُ الشرطيةُ بأنَّها لَبِناتٌ برمجيةٌ تُناطُ بها مهمةُ اتِّخاذِ القراراتِ في البرامجِ بناءً على شروطٍ
مُعيَّنةٍ. ومنْ ثَمَّ، فإنَّ هذهِ الجملَ تُمكِّنُ البرنامجَ منْ تنفيذِ مجموعةٍ مُعيَّنةٍ منَ الأوامرِ إذا تحقَّقَ شرطٌ
مُعيَّنٌ، وتنفيذِ مجموعةٍ أُخرى منَ الأوامرِ إنْ لمْ يتحقَّقِ الشرطُ نفسُهُ.
تُعَدُّ الجملُ الشرطيةُ منْ أساسياتِ البرمجةِ؛ لأنَّها تتيحُ التحكُّمَ في تدفُّقِ العملياتِ، واتِّخاذَ القراراتِ
المناسبةِ في مختلفِ المواقفِ.
توجدُ أنواعٌ مختلفةٌ منْ لَبِناتِ التحكُّمِ ( Control Blocks )في برمجيةِ سكراتش ( Scratch )ولكلٍّ
منْ هذهِ اللَّبِناتِ دورٌ في التحكُّمِ في تدفُّقِ البرنامجِ واستمرارِهِ، أنظرُ الشكلَ ) 2- 1( الذي يعرضُ
أمثلةً على لَبِناتِ التحكُّمِ المُستخدَمةِ في برمجيةِ سكراتش ( Scratch ) مثلَ: لَبِنةِ  إذا... إذنْ  ولَبِنةِ
 إذا... وإلّّا... ولَبِناتِ حلقاتِ التكرارِ.

الشكلُ ( 2- 1) أمثلةٌ على لَبِناتِ التحكُّمِ في برمجيةِ سكراتش  Scratch

التحكُّمُ المُتقدِّمُ (Advanced Control Flow)

يُبيِّنُ الشكلُ (2- 2) كتلةً برمجيةً في برمجيةِ سكراتش Scratch  استُخدِمَتْ فيها الجملُ الشرطيةُ مَرَّتينِ؛ الأولى: عندَ تحقُّقِ الشرطِ الخارجيِّ (مفتاح a مضغوط) والثانيةُ:عندَ تحقُّقِ الشرطِ الداخليِّ (مفتاح b مضغوط) إذِ انتقلَ تدفُّقُ البرنامجِ منَ الشرطِ الخارجيِّ إلى الشرطِ الداخليِّ. ويُطلَقُ
على هذا النوعِ منَ الكتلِ البرمجيةِ اسمُ التحكُّمِ المُتقدِّمِ 

 

وَعَوْدًا إلى مشروعِ لعبةِ كرةِ القدمِ الذي بدأْنا بهِ الدرسَ السابقَ، فإنَّنا سنعملُ الآنَ على تحسينِ هذا المشروعِ؛ بأنْ نجعلَهُ يُصدِرُ نغمةً موسيقيةً عندَ إحرازِ أيِّ هدفٍ. وكذلكَ التحكُّمُ في طريقةِ المشيِ لكلِّ لاعبٍ؛ بأنْ نجعلَهُ يُكرِّرُ عددًا مُعيَّنًا منَ الخطواتِ، أوْ يتحرَّكَ باستخدامِ مفاتيحِ الأسهمِ الموجودةِ في لوحةِ المفاتيحِ. وهذا كلُّهُ يتطلَّبُ استخدامَ لَبِناتِ التحكُّمِ المُتقدِّمِ

في ما يخصُّ برمجيةَ سكراتش( Scratch) فإنَّ التحكُّمَ المُتقدِّمَ فيها يشيرُ إلى استخدامِ الأوامرِ البرمجيةِ التي تتيحُ للمُستخدِمينَ تنفيذَ منطقٍ برمجيٍّ أكثرَ تعقيدًا وتحكُّمًا ودِقَّةً في تدفُّقِ البرنامجِ، علمًا بأنَّ هذا النوعَ منَ التحكُّمِ يحوي عددًا منَ المفاهيمِ والأدواتِ، مثلَ:

الجملِ الشرطيةِ المُركَّبةِ (المتداخلة ) Nested Conditional Statements   وحلقاتِ التكرارِ المُتداخِلةِ Nested Loops 

 

الجملُ الشرطيةُ المركبة (المتداخلة)(Nested Conditional Statements)

تشيرُ الجملُ الشرطيةُ المُركَّبةُ إلى سيناريو يتضمَّنُ وضعَ شرطٍ داخلَ شرطٍ آخرَ. وفي هذا السيناريو، يُنفَّذُ الشرطُ الداخليُّ فقطْ إذا تحقَّقَ الشرطُ الخارجيُّ؛ ما يتيحُ إنشاءَ تفاعلاتٍ مُعقَّدةٍ بناءً على شروطٍ مُتعدِّدةٍ.

مثالٌ:
أتخيَّلُ وجودَ برنامجٍ يُقدِّمُ تقريرًا عنِ الأعداد، ويُحدِّدُ إذا كانَ أحدُها موجبًا، أوْ سالبًا، أوْ صفرًا.

في هذهِ الحالةِ، فإنَّ سيناريو الأوامرِ البرمجيةِ يكونُ على النحوِ المُبيَّنِ في الشكلِ ( 2- 3 )

الحل :

  الخطأ في الشرط الداخلي   حيث  كتب وليد                              

  إذا  الإجابة  =  0   قل  هذا عدد سالب                      

التصحيح : 

إذا  الإجابة <  0   قل  هذا عدد سالب 

الحل : 

اكتشافُ الأخطاءِ البرمجيةِ وتصحيحُها  (Debugging)

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

الحل : 

 

أسلوبُ التطويرِ التكراري للبرمجياتِ  ( Iterative Development )

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

الحل : 

أسلوب التطوير المتكرر (Iterative Development) ودورة حياة تطوير البرمجيات (Software Development Life Cycle - SDLC) مرتبطان بشكل كبير، حيث يمثل أسلوب التطوير المتكرر أحد الأنماط المستخدمة لتنفيذ دورة حياة تطوير البرمجيات.  والعلاقة بينهما:

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

هناك عدة نماذج لدورة حياة تطوير البرمجيات مثل نموذج الشلال (Waterfall) والنموذج الرشيق (Agile )


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

العلاقة بينهما:

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

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

 

يتعيَّنُ عليَّ مراعاةُ ما يأتي بعدَ دراسةِ موضوعِ (الجملُ الشرطيةُ المُركَّبةُ):
- احترامُ حقوقِ المُلْكيةِ: أحرصُ عندما أستخدِمُ الأغانيَ والمقطوعاتِ الموسيقيةَ في برمجيةِ
سكراتش   Scratch   على احترامِ حقوقِ المُلْكيةِ الفكريةِ، وذلكَ باختيارِ الموسيقى المُرخَّصِ
بتداولِها على نحوٍ صحيحٍ، وتوثيقِ مصادرِها، أوْ إنشاءِ مقطوعاتٍ موسيقيةٍ خاصةٍ بي؛ فهذا يضمنُ
عدمَ انتهاكِ قوانينِ المُلْكيةِ الفكريةِ، ويُسهِمُ في نشرِ بيئةٍ رقميةٍ آمنةٍ ومُبتكَرةٍ تحترمُ حقوقَ الجميع.