لقد طال غيابنا في تقديم الدورات الخوارزيمة هذه أليس كذلك ؟ لا مشكلة ، لقد عدنا مجددا ، و كان السبب الرئيسي في غيابنا هو أن مقدم الدورة لم يجد الوقت الكافي لتقديم الدورة لكثرة الأعمال ، فقررت اخيرا ان اتخذ هذا المنصب و أكمل معكم دورة دراسة و تحليل الخوارزميات ، و أتمنى ان اكون في المستوى المطلوب لنكمل معا هذه الدورة حتى النهاية و نحلل و نجيب أيضا على خوارزميات اخرى من إبداعكم و لما لا .
سبق و طرحنا في موقعنا 4 مقالات و دورات في مجال الخوارزميات و دراستها ، و هي كالتالي :
- الجزء الأول : دورة دراسة و تحليل الخوارزميات - تمهيد
- - دورة دراسة و تحليل الخوارزميات الجزء الثاني : المتغيرات
- - دورة دراسة و تحليل الخوارزميات الجزء الثالث : مثال خوازرمية بإستخدام المتغيرات
- دورة دراسة و تحليل الخوارزميات الجزء الرابع: جمل التحكم و الدالة الشرطية if
و اليوم سأكمل معكم ما بدأه الأخ مقدم الدورة الأصلية ، لنستهل أول الدروس بالدالة الشرطية Switch و ما هيتها ، و كيف يمكننا إستخدامها و اخيرا مثال للكود بأحدى اللغات البرمجية .
- ما هي الجملة الشرطية Switch :
إن الجمل الشرطية Switch هي جمل إختيارية يتم إدراجها من أجل الإختيار الواحد ضمن مجموعة خيارات ، يمكن تنفيذ الجملة الشرطة Switch بإستخدام الجمل الشرطية سابقة الذكر If ، لكن سيكون الأمر صعبا جدا في تنفيذ هذا الأمر ناهيك عن طول الكود ، لذلك ، فمن الأسهل و الأبسط في حالات الإختيار المتعدد ان يتم إستخدام الجمل الشرطية Switch و ذلك لسهولتها و سنراجع هذا الأمر جيدا في الكود .
- بعض حالات إستخدام الجملة الشرطية Switch :
كما جاز الذكر سابقا فللجمل الشرطية مكانتها في الأكواد البرمجية ، و يجب إستخدامها في أماكن إستخدامها لا غير ، دعني أفرض انك تبرمج برنامجا مثلا و واجهت العائق التالي : " على المبرمج إنجاز قائمة طعام Menu ، و على المستخدم إختيار في الMenu خيار من 1 الى 7 ، ان اختار رقم 1 نقدم له مثلا كأس قهوة ، إن اختار 2 نقدم له عصير ، و إن إختار الرقم 3 نقدم له سلطة و هكذا دواليك " .
في هذه الحالة ، فإستخدام الIf ممكن و متاح ، لكن سيتوجب عليك إنجازها في العديد من الأسطر ، فكيف يمكننا ان نقوم بالأمر بروية و سهولة ؟ حسنا هذا ما سنشاهده في الفقرة القادمة .
إقرأ أيضا : كل ما تحتاج معرفته حول اللغة البرمجة Ruby و كيفية كتابة أول كود برمجي لك
- ما هي الSwitch برمجيا ؟
حان ، حان وقت إرضاخ كل المعلومات البسيطة أعلاه لتطبيقها في الكود ، سأقوم هذه المرة بتبسيط الكود و الخوارزمية بلغة الC ، و سنبقى دائما في المثال أعلاه الذي شرحته سابقا و هي المستخدم يطلب طلبا من الMenu ، دعني أولا أستعرض على المستخدم الMenu الخاصة بنا عبر الكود التالي :
حسنا ، الآن جيد ، دعونا نقوم بكتابة كود برمجي يسمح لنا بتطبيق خوارزميتنا الا وهي إظهار النتيجة المتعلقة بكل طلب من الطلبات ، لكن حتى نوضح لكم الفرق أكثر بين إستخدام كل من الIf و الSwitch ، فإني سأكتب الكود أولا بإستخدام If ثم نكتبه مجددا بإستخدام الSwitch لنعرف الفرق بينهما و سهولة الإستخدام في كل واحدة و نترجم الكود سطرا بسطر حينها ، إذن إليك حل الخوارزمية بإستخدام الIf :
كما ترى فهذا هو الكود ، لن أشرحه لك كثيرا ، و ننصحك بمراجعة الموضوع السابق الخاص بالIf إن لم تفهم الكود ، ببساطة ، قمت بعمل 7 خيارات ، حين يقوم المستخدم بإختيار احد الأرقام فإنه يعطيه الخيار المقابل لذلك الرقم ، لكن هذا الكود به العديد من المشاكل ، أولا ، لنفترض ان المستخدم قام بإعطاء رقم ليس ضمن القائمة ، مثلا 9 ، فهنا لن يحدث شيئ و سينتهي عمل البرنامج ، فكيف يمكننا صد هذا الأمر ؟ كما أن الكود هذا سيكون بطيئا قليلا أثناء التطبيق ، فإن إخترت الرقم 7 مثلا ، فسيتوجب عليه المرور سطر بسطر ، اي سيراجع السطر الأول و يجده غير مناسب ، ثم السطر الثاني ثم الثالث الى ان يجد المناسب ، و في هذه الحالة فالأمر مزعج و تهيأته سيئة من ناحية البيانات .
لنجرب الكود مجددا ، لكن هذه المرة بإستخدام الSwitch :
كما ترى فإستخدام الSwitch سهل جدا ، و سنشرح الكود خطوة بخطوة :
1 ) - في الأول قمنا بإستدعاء الدالة ()Switch هذه الدالة تقبل Parametre وهو الذي يتم القياس عليه ، في هذه الحالة ، بما اننا نقيس الأمر على الخيار الذي يدخله المستخدم ، هذا الخيار الذي نقوم بتخزينه في متغير choice .
2 ) - بعدها نقوم بإعطاء الإحتمالات او الخيارات و ذلك عبر كود Case ،هنا نقول له Case 1 اي إن إختار المستخدم الخيار الذي يحمل رقم 1 فأظهر له التالي ، و أمام الكود الStatement او الكود البرمجي الذي نريده ان يظهر للمستخدم أثناء إختياره ، و قد إخترت هنا ان اقوم بإظهار له إسم الطعام الذي إختاره من القائمة .
3 ) - كود Break ، في الSwitch و في معظم الحالات أيضا ، فإن الكود البرمجي يمر سطر بسطر ، اي انه يقرأ الحالة الأولى ، إن كانت خاطئة لا يظهرها و يمر للسطر التالي ، و إن كانت صحيحة ، فيظهرها أيضا ثم يمر لتكملة الكود البرمجي و هذا ما لا نريده ، فنحن نريده فور ان يجد الإجابة او الخيار الصحيح ان ينهي عمله و يتوقف و ذلك من أجل إختصار الوقت و تسريع الكود ، لذلك ، نستخدم كود Break في آخرة كل سطر برمجي من كل حالة .
لنجرب الكود مجددا ، لكن هذه المرة بإستخدام الSwitch :
كما ترى فإستخدام الSwitch سهل جدا ، و سنشرح الكود خطوة بخطوة :
1 ) - في الأول قمنا بإستدعاء الدالة ()Switch هذه الدالة تقبل Parametre وهو الذي يتم القياس عليه ، في هذه الحالة ، بما اننا نقيس الأمر على الخيار الذي يدخله المستخدم ، هذا الخيار الذي نقوم بتخزينه في متغير choice .
2 ) - بعدها نقوم بإعطاء الإحتمالات او الخيارات و ذلك عبر كود Case ،هنا نقول له Case 1 اي إن إختار المستخدم الخيار الذي يحمل رقم 1 فأظهر له التالي ، و أمام الكود الStatement او الكود البرمجي الذي نريده ان يظهر للمستخدم أثناء إختياره ، و قد إخترت هنا ان اقوم بإظهار له إسم الطعام الذي إختاره من القائمة .
3 ) - كود Break ، في الSwitch و في معظم الحالات أيضا ، فإن الكود البرمجي يمر سطر بسطر ، اي انه يقرأ الحالة الأولى ، إن كانت خاطئة لا يظهرها و يمر للسطر التالي ، و إن كانت صحيحة ، فيظهرها أيضا ثم يمر لتكملة الكود البرمجي و هذا ما لا نريده ، فنحن نريده فور ان يجد الإجابة او الخيار الصحيح ان ينهي عمله و يتوقف و ذلك من أجل إختصار الوقت و تسريع الكود ، لذلك ، نستخدم كود Break في آخرة كل سطر برمجي من كل حالة .
4 ) - لاحظ معي ، انه ليس بالضرورة ان يكون رقما فالCase ، فمثلا يمكنني ان احدد له ان يختار حرفا مثلا A او حتى كلمة او جملة و يمكن ان يتم إستخدام الSwitch بطريقة عادية في أي حالة تتطلب منك إختيار العديد من الحالات بسهولة .
5 ) - كود Default ، و هذا الكود يحدد لنا الرقم الخارج عن النطاق ، فإن إخترت الآن رقم 9 او 12 او -5 و هو ليس ضمن الCase Study اي الحالات التي ذكرناها ، فسيظهر له كود برمجي آخر و الذي إخترت ان يكون رسالة تخبر المستخدم انه إختار خيارا خاطئا ، يمكننا ان نمنح المستخدم فرصة أخرى للإختيار عبر خيار الDo While ، لكن لم نصل لهذا الأمر بعد و سنتجاوزه في الوقت الراهن .
- تمرين تطبيقي :
كالعادة في آخر كل شرح و جزء نتركك مع تمرين تطبيقي يمكنك من إستيعاب الدرس جيدا ، في هذا التمرين سنطلب منك صديقي تقديم خوارزيمة تمكن المستخدم من إختيار رقم بين 1 و 7 ، و يظهر لك أيام الأسبوع ، فمثلا ، إن إختار المستخدم رقم 1 يظهر له " الأحد " ، و إن إختثار رقم 4 ، يظهر له " الأربعاء " و هكذا ، يجب تطبيق الخوارزمية بإستخدام دالة الSwitch و يمكن كتابتها بأي لغة برمجية تريد .
الSwitch يمكن تطويرها أكثر بأكواد برمجية وسطها ، و يمكن ان تصير اكثر تطورا و منفعة ، و إن كنت تريد ان تطورها أكثر ، فإليك هذا التمرين الذي سيتوجب عليك من خلاله صناعة آلة حاسبة بإستخدام الSwitch ، يتم ذلك عبر إختيار نوع الحساب ( الجداء او الجمع او الطرح او القسمة ) ثم تعطي للمستخدم خيار إضافة رقمين ، ثم بعدها تظهر له النتيجة .
بالتوفيق للجميع و نلتقي في الدرس القادم بإذن الله .