تمرين - تنفيذ عبارة تبديل
- 11 دقائق
العبارة switch هي عبارة تحديد C# التي توفر بديلا لبناء if-elseif-else تفريع.
switch توفر العبارة if-elseif-else مزايا على بنية عند تقييم قيمة واحدة مقابل قائمة بالقيم المتطابقة المعروفة.
ضع في اعتبارك السيناريو التالي:
- أنت تعمل على تطبيق يتعلق بتغذية الطعام. قسم من التعليمات البرمجية يتعامل مع الفواكه.
- تتضمن التعليمات البرمجية متغيرا يسمى
fruitيستخدم للاحتفاظ باسم أنواع مختلفة من الفاكهة. - لديك قائمة ب 20 ثمرة يركز عليها تطبيقك.
- تريد تفريع التعليمات البرمجية الخاصة بك استنادا إلى القيمة المعينة إلى
fruit.
في هذا السيناريو، يمكنك استخدام عبارة switch لإنشاء فرع منفصل لكل نوع من أنواع الفاكهة.
كيف تعمل عبارة التبديل؟
switch تختار العبارة قسما واحدا من التعليمات البرمجية لتنفيذه من قائمة مقاطع التبديل المحتملة. يتم اختيار مقطع التبديل المحدد استنادا إلى تطابق نمط مع تعبير مطابقة العبارة.
ضع في اعتبارك عينة التعليمات البرمجية التالية التي تعرض البنية الأساسية للبيانات switch :
switch (fruit)
{
case "apple":
Console.WriteLine($"App will display information for apple.");
break;
case "banana":
Console.WriteLine($"App will display information for banana.");
break;
case "cherry":
Console.WriteLine($"App will display information for cherry.");
break;
}
تعبير المطابقة (الذي يمكن الإشارة إليه أيضا باسم تعبير التبديل) هو القيمة التي تتبع switch الكلمة الأساسية ، في هذه الحالة (fruit). يتم تعريف كل مقطع تبديل بواسطة نمط حالة. يتم إنشاء أنماط الحالة باستخدام الكلمة الأساسية case متبوعة بقيمة. نمط الحالة الأولى في هذا المثال هو: case "apple":. أنماط الحالة هي تعبيرات منطقية يتم تقييمها إما إلى true أو false. يتضمن كل مقطع تبديل عددا صغيرا من أسطر التعليمات البرمجية التي سيتم تنفيذها إذا كان نمط الحالة مطابقة لتعبير المطابقة. في هذا المثال، إذا fruit تم تعيين قيمة "apple"، تقييم نمط الحالة الأولى على أنه true وسيتم تنفيذ قسم التبديل هذا.
يجب أن تتضمن عبارة التبديل مقطع تبديل واحد على الأقل، ولكن عادة ما تحتوي على ثلاثة مقاطع تبديل أو أكثر.
يتم استخدام مفتاح التبديل على أفضل نحو عندما:
- لديك قيمة واحدة (متغير أو تعبير) تريد مطابقتها مع العديد من القيم المحتملة.
- لأي تطابق معين، تحتاج إلى تنفيذ سطرين من التعليمات البرمجية على الأكثر.
إشعار
هذا المثال الأول من العبارة switch بسيط عن قصد وكان فحصك لبناء الجملة موجزا. سوف تقوم بفحص ميزات إضافية من العبارة switch عند العمل من خلال بعض السيناريوهات الأكثر تقدما في الأقسام أدناه.
حان الوقت لإعداد بيئة الترميز الخاصة بك والبدء في تطوير عباراتك الخاصة switch .
إعداد بيئة الترميز الخاصة بك
تتضمن هذه الوحدة أنشطة عملية ترشدك خلال عملية إنشاء التعليمات البرمجية التوضيحية وتشغيلها. نحن نشجعك على إكمال هذه الأنشطة باستخدام Visual Studio Code كبيئة التطوير الخاصة بك. سيساعدك استخدام Visual Studio Code لهذه الأنشطة على أن تصبح أكثر راحة في كتابة التعليمات البرمجية وتشغيلها في بيئة مطور يستخدمها المحترفون في جميع أنحاء العالم.
افتح Visual Studio Code.
يمكنك استخدام القائمة Windows (أو مورد مكافئ لنظام تشغيل آخر) لفتح Visual Studio Code.
في قائمة Visual Studio Code File ، حدد Open Folder.
في مربع الحوار فتح مجلد ، انتقل إلى مجلد سطح مكتب Windows.
إذا كان لديك موقع مجلد مختلف حيث تحتفظ بمشاريع التعليمات البرمجية، يمكنك استخدام موقع المجلد هذا بدلا من ذلك. لهذا التدريب، الشيء المهم هو أن يكون لديك موقع يسهل تحديد موقعه وتذكره.
في مربع الحوار فتح مجلد ، حدد تحديد مجلد.
إذا رأيت مربع حوار أمان يسألك عما إذا كنت تثق بالمؤلفين، فحدد نعم.
في قائمة Visual Studio Code Terminal ، حدد New Terminal.
لاحظ أن موجه الأوامر في لوحة Terminal يعرض مسار المجلد للمجلد الحالي. على سبيل المثال:
C:\Users\someuser\Desktop>إشعار
إذا كنت تعمل على جهاز الكمبيوتر الخاص بك بدلا من بيئة الاختبار المعزولة أو البيئة المستضافة وأكملت وحدات Microsoft Learn الأخرى في سلسلة C# هذه، فربما تكون قد أنشأت بالفعل مجلد مشروع لعينات التعليمات البرمجية. إذا كان الأمر كذلك، يمكنك تخطي الخطوة التالية، والتي تستخدم لإنشاء تطبيق وحدة تحكم في مجلد TestProject.
في موجه الأوامر Terminal، لإنشاء تطبيق وحدة تحكم جديد في مجلد محدد، أدخل المطالبة التالية:
dotnet new console -o ./CsharpProjects/TestProjectيستخدم أمر .NET CLI هذا قالب برنامج .NET لإنشاء مشروع تطبيق وحدة تحكم C# جديد في موقع المجلد المحدد. ينشئ الأمر مجلدات CsharpProjects وTestProject نيابة عنك، ويستخدم TestProject كاسم لملفك
.csproj.إذا تم عرض رسالة تخبرك بأن الملفات موجودة بالفعل، فتابع الخطوات التالية. ستقوم بإعادة استخدام ملفات المشروع الموجودة.
في طريقة عرض EXPLORER، قم بتوسيع المجلد CsharpProjects .
يجب أن تشاهد مجلد TestProject وملفين، ملف برنامج C# المسمى Program.cs وملف مشروع C# يسمى TestProject.csproj.
في قائمة Visual Studio Code File ، حدد Open Folder.
في مربع الحوار فتح مجلد ، حدد المجلد CsharpProjects ، ثم حدد تحديد مجلد.
في طريقة عرض EXPLORER، قم بتوسيع المجلد TestProject، ثم حدد Program.cs.
حذف أسطر التعليمات البرمجية الموجودة.
ستستخدم مشروع وحدة تحكم C# هذا لإنشاء نماذج التعليمات البرمجية وبنائها وتشغيلها أثناء هذه الوحدة النمطية.
أغلق لوحة Terminal.
إنشاء جملة تبديل واختبارها
تأكد من فتح Visual Studio Code وعرضه Program.cs في لوحة المحرر.
إشعار
يجب أن يكون Program.cs فارغا. إذا لم يكن كذلك، فحدد جميع أسطر التعليمات البرمجية واحذفها.
اكتب التعليمات البرمجية التالية في محرر Visual Studio Code:
int employeeLevel = 200; string employeeName = "John Smith"; string title = ""; switch (employeeLevel) { case 100: title = "Junior Associate"; break; case 200: title = "Senior Associate"; break; case 300: title = "Manager"; break; case 400: title = "Senior Manager"; break; default: title = "Associate"; break; } Console.WriteLine($"{employeeName}, {title}");في قائمة Visual Studio Code File ، حدد Save.
يجب حفظ ملف Program.cs قبل إنشاء التعليمات البرمجية أو تشغيلها.
في لوحة EXPLORER، لفتح Terminal في موقع مجلد TestProject، انقر بزر الماوس الأيمن فوق TestProject، ثم حدد Open in Integrated Terminal.
سيتم فتح لوحة Terminal. يجب أن تتضمن المحطة الطرفية موجه أوامر يظهر أن المحطة الطرفية مفتوحة لموقع مجلد TestProject.
في موجه الأوامر Terminal، لتشغيل التعليمات البرمجية، اكتب dotnet run ثم اضغط على Enter.
إشعار
إذا رأيت رسالة تقول "تعذر العثور على مشروع لتشغيله"، فتأكد من أن موجه الأوامر Terminal يعرض موقع مجلد TestProject المتوقع. على سبيل المثال:
C:\Users\someuser\Desktop\csharpprojects\TestProject>ينبغي أن تشاهد المخرج التالي:
John Smith, Senior Associateخذ دقيقة لمراجعة العبارة
switchالتي أدخلتها.لاحظ أن العبارة
switchتحدد كتلة تعليمة برمجية واحدة.switchتعرف العبارة كتلة تعليمة برمجية واحدة تتضمن قائمة بأقسام التبديل. إلى يمينswitchالكلمة الأساسية عبارة عن تعبير تبديل محاط بين أقواس.لاحظ قائمة أقسام التبديل داخل كتلة التعليمات البرمجية.
switchتحتوي كتلة التعليمات البرمجية على قائمة بأقسام التبديل، كل منها يتضمن تسميات تبديل واحدة أو أكثر. بالإضافة إلى ذلك، يتضمن كل مقطع تبديل قائمة عبارات سيتم تنفيذها إذا كانت التسمية مساوية لتعبير التبديل المحدد في أعلى عبارة التبديل.يتم تقييم تعبير التبديل مقابل تسميات الحالة من أعلى إلى أسفل حتى يتم العثور على قيمة مساوية لتعبير التبديل. إذا لم تكن أي من التسميات متطابقة، تنفيذ قائمة العبارات للحالة
default. إذا لم يتم تضمين أي افتراضي، يتم نقل عنصر التحكم إلى نقطة نهاية عبارة التبديل. يجب أن توفر كل تسمية نوع قيمة يطابق النوع المحدد في تعبير التبديل.إشعار
يمكن أن تظهر التسمية الاختيارية
defaultفي أي موضع ضمن قائمة أقسام التبديل. ومع ذلك، يختار معظم المطورين وضعها الأخير لأنه من المنطقي أكثر (منطقيا) وضعهاdefaultكخيار نهائي. بغض النظر عن الموقف،defaultسيتم تقييم القسم الأخير.في مثالنا التالي:
- تعبير التبديل هو
(employeeLevel) - يحتوي كل مقطع تبديل على تسمية تبديل واحدة (
caseأوdefault). - يتم تعريف قسم التبديل المطابق بواسطة
case: 200، منذemployeeLevel = 200.
- تعبير التبديل هو
لاحظ أن كل مقطع تبديل مفصول عن المقطع التالي.
يسمح بتنفيذ مقطع تبديل واحد فقط. وهذا يعني أن تنفيذ مقطع التبديل غير مسموح له ب "الانتقال" إلى مقطع التبديل التالي.
breakالكلمة الأساسية هي واحدة من عدة طرق لإنهاء مقطع التبديل قبل أن تصل إلى القسم التالي. إذا نسيتbreakالكلمة الأساسية (أو، اختياريا،returnالكلمة الأساسية) فسينشئ المحول البرمجي خطأ.
تغيير قيمة متغير المستوى لمعرفة كيفية تقييم عبارة التبديل لها
لممارسة الحالة الافتراضية، دعنا نغير مستوى الموظف عن طريق تعديل تعيين القيمة.
لتعديل القيمة المعينة إلى
employeeLevel، قم بتحديث التعليمات البرمجية الخاصة بك كما يلي:int employeeLevel = 201;احفظ ملف التعليمات البرمجية، ثم استخدم Visual Studio Code لتشغيل التعليمات البرمجية الخاصة بك.
أدخل
dotnet runمن موجه الأوامر Terminal لتشغيل التعليمات البرمجية الخاصة بك.لاحظ أن الإخراج قد تغير.
الآن، عند تشغيل التعليمات البرمجية، يجب أن ترى العنوان الأكثر عمومية المستخدمة.
John Smith, AssociateemployeeLevelنظرا لأن لا يتطابق مع أي تسميات، تتم مطابقة التسميةdefault.
تعديل مقطع تبديل لتضمين تسميات متعددة
لنفترض أن شركتنا قررت منح جميع موظفي المستوى 100 لقب "مساعد أول" -- نفس لقب الموظفين من المستوى 200. بصفتك المطور، تقرر تنفيذ ذلك عن طريق إزالة مقطع التبديل الأول الذي ينتمي إلى التسمية case 100:، وبدلا من ذلك تسمح لكل case 100: من التسميات و case 200: بتنفيذ نفس قسم التبديل.
لتعديل القيمة المعينة إلى
employeeLevel، قم بتحديث التعليمات البرمجية الخاصة بك كما يلي:int employeeLevel = 100;لتعيين تسميات متعددة إلى قسم التبديل الأول، قم بتحديث التعليمات البرمجية الخاصة بك كما يلي:
case 100: case 200: title = "Senior Associate"; break;عند الانتهاء من إجراء التغييرات، يجب أن تتطابق تعديلاتك مع التعليمات البرمجية التالية:
int employeeLevel = 100; string employeeName = "John Smith"; string title = ""; switch (employeeLevel) { case 100: case 200: title = "Senior Associate"; break; case 300: title = "Manager"; break; case 400: title = "Senior Manager"; break; default: title = "Associate"; break; } Console.WriteLine($"{employeeName}, {title}");احفظ ملف التعليمات البرمجية، ثم استخدم Visual Studio Code لتشغيل التعليمات البرمجية الخاصة بك.
أدخل
dotnet runمن موجه الأوامر Terminal لتشغيل التعليمات البرمجية الخاصة بك.ينبغي أن تشاهد المخرج التالي:
John Smith, Senior Associateيتم الآن إقران كل من تسميات
100الحالة و200مع قسم التبديل الذي يعين العنوان إلى قيمةSenior Associateالسلسلة .
خلاصة
فيما يلي الدروس المستفادة الرئيسية التي تعلمتها حول عبارة التبديل:
- استخدم العبارة
switchعندما يكون لديك قيمة واحدة مع العديد من التطابقات المحتملة، كل تطابق يتطلب فرعا في منطق التعليمات البرمجية. - يمكن مطابقة مقطع تبديل واحد يحتوي على منطق التعليمات البرمجية باستخدام تسمية واحدة أو أكثر محددة
caseبواسطة الكلمة الأساسية . - استخدم الكلمة الأساسية الاختيارية
defaultلإنشاء تسمية وقسم تبديل سيتم استخدامه عند عدم تطابق تسميات حالة أخرى.