أهلا ومرحبا. في هذه المحاضرة أريد أن أتحدث عن بيان التبديل.
إنه بديل لبيان if ، ولكنه
يستخدم عادة في مواقف محددة فقط.
لكنها تحتوي على بعض النحو الجميل والرائع للقيام ببعض التكرار في بيان if الخاص بك.
لذا فإن المعامل الشرطي وعبارات if than else تجعل
من السهل كتابة البرامج التي تختار بين بديلين.
من السهل جدًا طرح الأسئلة واتخاذ القرارات.
ومع ذلك ، في كثير من الأحيان
، يحتاج البرنامج إلى اختيار واحد من عدة بدائل.
وهذا سيكون في الأساس if
if if if if if if if if if if if if؟ if if if if if if؟
إنه فوضوي لأنه من الواضح أنه يمكنك تنفيذ ذلك باستخدام عبارة if عندما
يكون لديك عدة بدائل ، ولكن يمكن
أن يكون لديك مئات ifs أخرى. لذا فهي مملة ، وعرضة للأخطاء ، وهي في
الحقيقة مجرد ألم في المؤخرة. إنها مثل كتابة مجموعة من التعليمات البرمجية المعيارية.
لذا فإن البديل لهذه البنية وكل ما يمكنك القيام
به في التبديل يمكنك القيام به في if.
لكنها أكثر نظافة وأسهل وهي أكثر فاعلية في الواقع أيضًا.
لذلك عندما تتم مقارنة قيمة المتغير بنجاح مع قيم مختلفة ، استخدم تعليمة
التبديل.
وماذا يعني هذا إذا كان لديك عبارة if ثم لديك جملة أخرى إذا ، وإلا إذا ، وإلا
إذا ، وإلا إذا ، استخدم بيان التبديل.
الآن إذا كانت هذه التعبيرات المنطقية أكثر تعقيدًا بعض الشيء.
لا يمكنك استخدام بيان التبديل. لا يمكنك استخدام
جملة switch إلا عند المقارنة بقيمة ، مثل الثابت.
لا يمكن أن يكون التعبير معقدًا.
ولكن استخدام تعليمة التبديل أكثر ملاءمة وكفاءة ، كما أن معظم اللغات
لديها هذه البنية أيضًا. ونرى أنه لطيف للغاية. الشيء الوحيد الذي تلاحظه
في الكثير من اللغات سيبنى على أساس c.
إذا كنت قد برمجت قبل أن ترى الكثير
من هذه التركيبات وتكون على دراية
بها لأنها ظهرت في الأصل في c أو تكون ، اللغة من قبل.
إذن ، هذا هو بناء جملة بيان التبديل. لديك مفتاح التبديل.
ثم داخل المفتاح ، لديك هذين القوسين الأيسر والأيمن
، وهو التعبير. لذلك يبدو تمامًا مثل عبارة if في البداية
باستثناء أنه بدلاً من الكلمة الأساسية if لديك كلمة switch.
ثم لديك القوس الأيسر.
الأقواس اليسرى مطلوبة. هذا القوس الأيسر يبدأ جسم المفتاح.
وترى قوس النهاية الأيمن في الأسفل ، والذي ينهي جسم المفتاح.
الشيء الآخر المهم هنا هو حالة الكلمات الرئيسية هذه.
الحالة تشبه في الواقع عبارة
if نفسها. لذا ، فإن مفتاح التبديل
هو في الواقع يبحث في تعبير ، ليس ما
إذا كان بالضرورة صحيحًا أم خطأ.
يمكن أن يكون المفتاح مجرد النظر إلى متغير أو شيء ما.
وبعد ذلك ستقوم بتقييم هذا المتغير في عبارات الحالة.
لذلك إذا كانت القيمة 1 تساوي تعبيرًا ،
إذا كانت القيمة n تساوي تعبيرًا.
لكن يمكنك أن تنظر إلى هذا على أنه
مثل التبديل في المستوى الأعلى ثم كل حالة عبارة عن عبارة if ، تقارن
القيم مقابل التعبيرات الموجودة في التبديل.
حتى الحالات هي أيضا الكلمات الرئيسية. تلاحظ أيضًا القولون بعد الحالة.
إذن لديك حالة ومن ثم لديك القيمة الخاصة بك.
ثم في الداخل ، يمكن أن يكون لديك العديد من بيانات البرنامج.
ثم في النهاية ، لديك كلمة رئيسية فاصلة. هذه كلمة رئيسية أخرى. إذن ، هناك ثلاث كلمات رئيسية
هنا ، أربعة في الواقع. هناك الكلمة الأساسية للتبديل ، والكلمة الأساسية لحالة الأحرف ، والكلمة الأساسية
للكسر ، ثم الكلمة الأساسية الافتراضية في الأسفل.
لذا فهذه هي الأشياء المهمة التي يجب ملاحظتها. سنستعرض مثالاً مفصلاً ، ولكن
يمكن أن يكون لديك حالات مختلفة. ومرة أخرى ، هذا مجرد شيء إذا كان آخر ، إذا كان آخر ، إذا كان آخر ، إذا.
لذلك إذا كانت القيمة الأولى عبارة عن تعبير متساوٍ ، فنفّذ الكود.
وإلا إذا كانت القيمة اثنين تساوي تعبيرًا
، فاحسب ذلك. وإلا إذا كانت القيمة ثلاثة تساوي تعبيرًا ، فاحسب ذلك.
وإلا إذا كانت القيمة n تساوي تعبيرًا ، فقم بتنفيذ الكود داخل تلك الكتلة.
والكتلة للحالات تبدأ بالقولون وتنتهي بالكسر.
وإذا لم يكن لديك هذا الاستراحة هناك ،
فسوف يسقط في الحالات الأخرى. سوف نتحدث عن ذلك مرة أخرى.
ثم آخر شيء مهم هنا هو هذه الكلمة الأساسية الافتراضية. هذا هو في الأساس الأمر else
، وإلا إذا ، وإلا إذا ، وإلا إذا ، ثم آخر في الأسفل.
لذلك يتم تعيين هذا إذا لم يتم تقييم أي من الحالات الأخرى للتعبير.
لذلك دعونا نتحدث عن بعض تلك التفاصيل التي ذكرتها.
يتم بنجاح مقارنة التعبير المضمن داخل الأقواس بالقيم.
مرة أخرى ، إذا
رجعنا إلى بناء الجملة ، تتم مقارنة التعبير بجميع القيم.
وإذا كانت تساوي أيًا من القيم ، فأنت تقوم بتنفيذ الكود داخل تلك القيمة.
يجب أن تكون الحالات عبارة عن ثوابت بسيطة أو تعبيرات ثابتة
، وتعبيرات يتم تقييمها إلى ثابت.
لذا يمكنك تشغيل x زائد y لأنه إذا
كانت x تساوي 5 فسيتم تشغيل 10 وستقارن القيم بـ 10.
لكن عادة ، تقوم بتشغيل متغير يساوي نوعًا ما من الأرقام.
إذا تم العثور على حالة تكون قيمتها مساوية لقيمة التعبير ، فسيتم
تنفيذ العبارات التي تتبع الحالة.
عندما يتم تضمين أكثر من عبارة واحدة ، لا يلزم إغلاقها داخل الأقواس.
هذا يعني فقط أنه عند تضمين
أكثر من عبارة واحدة ، لا توجد أقواس
مطلوبة لبيانات الحالة.
تذكر ، بالنسبة لبيان if ، يجب أن يكون لدينا دائمًا
تلك الأقواس ، لكن هذا ليس هو الحال. يمكنك فقط وضعهم سطرًا تلو الآخر ، المفتاح هو الفاصل هناك.
يشير بيان الاستراحة إلى نهاية حالة معينة
ويتسبب في إنهاء تنفيذ البيان ، ويقفز
للخارج.
إذا لم يكن لديك استراحة هناك ، فسوف تنهار الحالة التالية.
لذا فأنت تريد تضمين نهاية بيان الاستراحة لكل حالة. عندما لا تقوم بتضمين فترات الراحة ، فعادةً
ما يعني ذلك وجود خطأ أو شيء من هذا القبيل.
السبب الوحيد وراء رغبتك في تضمين فاصل هو إذا كان لديك عدة شروط تريد
تنفيذ التعليمات البرمجية. لذا ، إذا كانت لديك عدة حالات ،
تقول بشكل أساسي ما إذا كان التعبير
هو هذه الحالة ، أو هذه الحالة أو تلك الحالة ، فافعل
الشيء نفسه ، ثم ستأخذ فترات
الراحة.
لذا كن حذرًا مع الفواصل لأن الفواصل يمكن أن تسبب مشكلات
سواء تم تنفيذ كتل معينة أم لا في الحالة التالية.
يتم تنفيذ الحالة الاختيارية الخاصة التي تسمى الحالة الافتراضية إذا
كانت قيمة التعبير لا تتطابق مع أي من الحالات. إنه نفس السقوط وإلا يحدث إذا لم
تكن أي من الحالات صحيحة.
إذن ، هذا مثال رائع حيث ننشئ مفتاحًا لتقييم التعداد.
في هذه الحالة ، لدينا نوع تعداد يسمى أيام الأسبوع ، والذي
يتم تحديده فقط من خلال جميع أيام الأسبوع.
ثم أنشأنا متغيرًا من نوع enum weekday وقمنا بتعيينه على الاثنين
ثم نبدأ اليوم.
بناءً على قيمة المتغير اليوم ، سيتم تنفيذ
إحدى عبارات الحالة.
إذا كان اليوم يساوي الأحد ، فسيتم طباعته
اليوم الأحد ثم القفز.
إذا كان اليوم يساوي يوم الاثنين ، فسيتم طباعته اليوم وهو الإثنين والقفز.
إذا لم يكن يساوي أيًا منهم ، فسيتم
الانتقال إلى الحالة الافتراضية. لذلك دعونا نجري هذا المثال في كتل التعليمات البرمجية.
هنا لدينا نموذج الكود الخاص بنا. وسترون ذلك لأن اليوم يساوي الاثنين
، إذا كان يوم الاثنين سيتم
تقييمه وسترى الناتج اليوم هو الاثنين.
لذلك دعونا نمضي قدمًا ونبني هذا الكود ونشغله. وهذا ما سنراه ، اليوم هو
الإثنين.
لأن ما يحدث هنا اليوم سيكون يوم الإثنين. تضع هذا التعبير الذي
تريد تقييم المتغير اليوم ثم تقيمه.
الأشياء الأساسية التي يجب تذكرها هنا
هي أن لديك قوس لبدء عبارة التبديل في السطر 16 في قوس
نهاية لإنهاء اسم التبديل في السطر 29.
يمكن أن يكون لديك عدة أسطر داخل كل بيان حالة دون استخدام الأقواس.
لنرى الآن ما سيحدث إذا سحبنا بيان
الاستراحة بعد يوم الاثنين.
لأن تذكر ، كسر سوف يقفز مباشرة للخروج من القضية. ولكن إذا قمنا بإزالته
، فإن ما سيحدث هو أنه سيستمر
حتى يوم الثلاثاء وستشاهد كلا المطبوعين يتم تنفيذهما
ليوم الاثنين اليوم واليوم هو الثلاثاء.
الآن عندما ندير البرنامج ، نرى
أن اليوم هو الإثنين ، واليوم هو الثلاثاء.
هذه هي أهمية بيان الاستراحة.
الاستراحة تقفز.
لذلك قد يكون هذا مفيدًا إذا كنت تريد نفس الناتج ليومي الاثنين والثلاثاء.
على سبيل المثال ، سترى أحيانًا
عبارات حالة مثل هذه ، حالة الثلاثاء لأنك تريد نفس
المخرجات ولا يهم ما يساوي المتغير.
لذلك قد ترى أشياء من هذا القبيل ، ولكن عندما يكون لديك عبارات حالة
منفصلة لها تنفيذ مختلف ، يجب عليك إضافة هذا الفاصل هناك.
لذلك نحن ننظر فقط إلى الأحد والاثنين والثلاثاء.
ماذا يحدث إذا حددنا قيمة اليوم تساوي الأحد
لأنه لا توجد حالات تطابق ذلك.
حسنًا ، ما سيحدث هو أنها ستنخفض إلى المستوى الافتراضي وستقوم بطباعة أي شيء.
لذلك دعونا نحاول تشغيل هذا مرة أخرى.
ونرى اليوم الأحد.
عذرا ، اضبطه على المتغير الخطأ. أريد أن أضبطه ، دعنا نقول
فقط ، يوم الأربعاء. كانت لدينا قضية ليوم الأحد.
لذلك سنرى الآن أنه يطبع أي شيء لأنه لا يتطابق
مع أي من الحالات.
لذلك كل ما عليك فعله للتبديل هو حفظ بناء الجملة حقًا.
يتحول التعبير إلى أقواس وهذا ما ستقيمه.
يجب أن تتطابق الحالات مع التعبير. لذلك عادة ما تقوم بعمل متغيرات لهذا السبب
يجب أن تكون ثوابت أو تعابير يتم تقييمها على قيمة ثابتة محددة.
ثم لديك حالات لكل شيء ثم حالة افتراضية ، ولا تنسَ الفواصل.
دعنا نعود إلى الوراء ونتحدث قليلاً ومثال آخر على إنشاء التبديل
مع الحالات.
في المثال التالي ، الأمر مختلف قليلاً.
ما نقوم به هنا هو أننا نحصل على بيانات من المستخدم ثم نقوم بتشغيل ذلك.
لذلك في هذا المثال في وظيفتنا الرئيسية ، يبدأ في
إنشاء زوج من العوامات ثم يقوم بإنشاء عامل تشغيل حرف ثم يطلب من
المستخدم إدخال قيمة وعامل وقيمة اثنين.
وهي تستخدم محددات التنسيق للتمييز ، ولديهم جميعًا عنوان علامات العطف.
اعتمادًا على الحرف الذي تدخله للمشغل ، سواء كان علامة زائد ناقص أو نجمة ، فهذا
ما تريد تضمينه في حالة التبديل الخاصة بك.
لذلك إذا أدخل المستخدم علامة الجمع
، هكذا ترى في العمود التالي هنا ، بنية التبديل ، يتم تشغيل عامل التشغيل.
سيقارن قيمة عامل التشغيل وقيمة العامل المتغير بكل واحدة
من عبارات الحالة هذه. وستلاحظ أن عبارات الحالة هذه تحتوي
على علامات اقتباس مفردة حولها لأننا نقارن الأحرف.
لذلك يمكنك مقارنة الأرقام
والمتغيرات بقيم ثوابت أو أحرف معينة بثوابت معينة.
ثم داخل كل بيان حالة ، نقوم بطباعة تنسيق معين.
القيمة واحد زائد القيمة اثنين ، والقيمة واحد ناقص القيمة اثنين.
نحن في الواقع نجري عملية حسابية في طباعتنا.
ثم مرة أخرى ، ترى عبارات التوقف المهمة تلك تقفز
للخارج ، وهي مطلوبة إذا كنت لا تريد الوقوع في أي من الحالات الأخرى.
تلاحظ أيضًا أنه في بيان الحالة الأخيرة حيث تحتوي على شرطة مائلة للأمام ، يكون الفاصل
، لدينا عبارة if.
ليس لدينا أي أقواس حول القضية لأنه يمكن
أن يكون لدينا عبارات متعددة في كل حالة بدون أقواس.
إذن ، الحالة الأخيرة التي نقولها: إذا كانت القيمة اثنين تساوي
0 ، فإننا نجري فحصًا بسيطًا للتأكد من أننا لا نقسم على 0.
وإذا لم نقسم على 0 ، فسنقوم بالقسمة.
ثم في نهاية هذه الحالة ، لدينا استراحة أخرى.
تقول حالتنا الافتراضية أنك أدخلت عاملًا لا نعرف كيف نتعامل معه.
لكن بيان التبديل فعال للغاية.
إنها سريعة جدًا في الكتابة عندما تقارن العديد
من القيم المختلفة بمتغير معين ثم تريد القيام بأشياء مختلفة.
آخر شيء أردت أن أذكره هو بيان الانتقال فيما يتعلق باتخاذ القرار.
إنه ليس بيان قرار مباشر ،
إنه يتعلق بالقفز إلى سطر مختلف من التعليمات البرمجية ، باستخدام
ملصق ، ولكنه متاح في c ، ولهذا السبب أردت ذكره.
هناك جزءان في عبارة go to: التسمية و go to الكلمة الأساسية.
الآن بالنسبة لأولئك الذين تمت برمجتهم من
قبل بلغات فورتران أو بعض اللغات الأساسية الأخرى ، فمن المحتمل أنك ستتعرف على
هذا وربما استخدمته كثيرًا.
الآن ننتقل إلى c ، ليست هناك حاجة لاستخدامه
حقًا. هناك حالتان رأيت أنهما مفيدان
جدًا ، وسأشرحهما في غضون ثانية ، ولكن الانتقال إلى بعض التعليمات البرمجية ، ويمكنك
الانتقال إلى أي سطر من التعليمات البرمجية.
أحد الأسباب التي تجعل الناس لا يحبون استخدامه لأنه من الصعب جدًا متابعته.
عندما تقوم بصيانة برنامج وإذا كان متسلسلاً ، فأنت تسير سطراً بسطر
، إذا كانت العبارات في حلقات while.
إنه أمر سيء بما يكفي عندما يكون لديك عبارات if في حلقات while.
ولكن الآن إذا كان لديك شيء ما حيث تكون في الأساس على السطر 27 من شفرة المصدر
الخاصة بك وستنتقل إلى السطر 800 دون سبب سوى الانتقال إلى الكلمة الأساسية ، فجأةً ستتخطى الكثير
من التعليمات البرمجية ، ومن الصعب جدًا صيانتها ومتابعتها.
إذن ، الجزءان المراد الانتقال إليهما واسم التصنيف. تسمية التسمية باتباع نفس
الاصطلاح لتسمية متغير ، أحرف أبجدية رقمية ، لا يمكنك البدء بالأرقام
، يمكنك البدء بالشرطات السفلية.
يمكنك البدء بالشرطات السفلية.
في الأساس ، ما عليك سوى استخدام الانتقال إلى الكلمة الأساسية وتنتقل إلى بعض المعرفات
، الجزء الثاني. الجزء الثاني عبارة عن تسمية في مكان ما.
لذلك من أجل القفز إلى هذا السطر من التعليمات البرمجية ، عليك تسمية هذا السطر من التعليمات البرمجية.
يجب أن يكون هناك بيان يقول الجزء الثاني.
سأريكم الآن مثالاً على ذلك ، لكن لا يجب أن تستخدموا هذا أبداً
بسبب المشاكل المرتبطة بالصيانة.
ومع ذلك ، أردت أن أذكرها إذا كنت قد برمجتها من قبل وكنت معتادًا على استخدامها.
في c ، لا تحتاج حقًا إلى استخدامه كثيرًا.
هناك حالة استخدام واحدة رأيتها قد تكون مفيدة.
كنت أعمل في ذلك اليوم مع زميل مبرمج ، وكان لديه
مجموعة من الحلقات المتداخلة أو عبارات
if المتداخلة.
لكن الحلقات هي أفضل مثال حقًا. الحلقات ، تذكر ، تكرار التعليمات البرمجية. كان لديه الكثير من الحلقات المتداخلة.
وفي الحلقة المتداخلة الداخلية ، مثل الحلقة الخامسة
، أراد القفز من جميع الحلقات لأنه كان يعاني من حالة ما.
ولذا اعتاد الذهاب للقفز من كل تلك الحلقات.
الآن الطريقة الأخرى للقفز من الحلقات هي استخدام الكلمة الرئيسية
للفرامل ، لكن الفرامل ستقفز فقط من الجزء الداخلي.
لذلك لم تكن هناك طريقة فعالة بدون وضع مجموعة من الأعلام
والحصول على مجموعة من عبارات if للخروج من كل حلقة ، لذلك
اعتاد الذهاب إلى. وكانت تلك إحدى الحالات التي اعتقدت أنها
كانت مفيدة جدًا لأنها قللت من كمية الكود الذي كان عليك كتابته وكان واضحًا جدًا بشأن ما كان يحدث.
كنت تقفز للتو من جميع الحلقات المتداخلة لأنك
استوفيت شرطًا معينًا.
وهذه حالة واحدة. ولكن بالنسبة للجزء الأكبر ، لا تحتاج حقًا إلى الذهاب
إلى الموقع ولأسباب ذكرت أنها مشكلة كبيرة ، فمن الصعب اتباع التعليمات البرمجية عندما تقفز في كل مكان.
لكن الانتقال إلى يشبه تمامًا استخدامه تمامًا كما تستخدمه في اللغات الأخرى.
لديك الذهاب إلى الكلمة الأساسية مع اسم التسمية.
وما سيحدث في التعليمات البرمجية الخاصة بك هو أنك ستنتقل إلى هذا السطر من التعليمات البرمجية مع التسمية.
لذا يمكنك تخطي جميع أنواع التعليمات البرمجية.
في هذا المثال هنا ، لدينا تسمية تسمى top ، ولها علامة
نقطتين. هكذا تعرف أنها تسمية.
وأعلى لديه بعض البيانات. وفي نهاية الأمر
، لديك عبارة if. وأنت تقول إذا كان الحرف يساوي y ، فانتقل إلى الأعلى.
مرة أخرى ، ترى كيف يمكنك القفز في كل مكان في التعليمات البرمجية الخاصة بك وهذا يجعل من الصعب جدًا متابعتها.
لذلك لا تستخدمه بشكل أساسي ، إلا إذا كان لديك العديد والعديد والعديد من الحلقات المتداخلة
وتريد القفز من جميع الحلقات. شكرًا لك.