logo

بيان التبديل C

عبارة التبديل في لغة C هي بديل لبيان سلم if-else-if الذي يسمح لنا بتنفيذ عمليات متعددة لقيم محتملة مختلفة لمتغير واحد يسمى متغير التبديل. هنا، يمكننا تعريف عبارات مختلفة في الحالات المتعددة لقيم مختلفة لمتغير واحد.

بناء جملة بيان التبديل في لغة سي ويرد أدناه:

 switch(expression){ case value1: //code to be executed; break; //optional case value2: //code to be executed; break; //optional ...... default: code to be executed if all cases are not matched; } 

قواعد بيان التبديل في لغة C

  1. ال تبديل التعبير يجب أن يكون من نوع عدد صحيح أو حرف.
  2. ال قيمة القضية يجب أن يكون عددًا صحيحًا أو حرفًا ثابتًا.
  3. ال قيمة القضية يمكن استخدامه فقط داخل بيان التبديل.
  4. ال بيان كسر في حالة التبديل لا يجب. إنه اختياري. إذا لم يتم العثور على بيان استراحة في الحالة، فسيتم تنفيذ جميع الحالات الموجودة بعد الحالة المطابقة. إنه شائع مثل وقع خلال حالة بيان التبديل C.

دعونا نحاول أن نفهم ذلك من خلال الأمثلة. نحن نفترض أن هناك المتغيرات التالية.

 int x,y,z; char a,b; float f; 
تبديل صالحالتبديل غير صالححالة صالحةحالة غير صالحة
التبديل (خ)التبديل (و)الحالة 3؛الحالة 2.5؛
التبديل (س> ص)التبديل (س + 2.5)الحالة 'أ'؛الحالة س؛
التبديل (أ + ب-2)الحالة 1+2؛الحالة س+2؛
التبديل (وظيفة (س، ص))الحالة 'x'>'y';الحالة 1،2،3؛

مخطط انسيابي لبيان التبديل في C

تدفق بيان التبديل في ج

عمل بيان حالة التبديل

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

كيف يعمل بيان التبديل C؟

دعنا نستعرض العملية خطوة بخطوة لكيفية عمل عبارة التبديل في لغة C:

النظر في ما يلي بيان التبديل :

برنامج ج:

 #include int main() { int num = 2; switch (num) { case 1: printf('Value is 1
'); break; case 2: printf('Value is 2
'); break; case 3: printf('Value is 3
'); break; default: printf('Value is not 1, 2, or 3
'); break; } return 0; } 

انتاج |

 Value is 2 

عملية خطوة بخطوة:

  1. ال رقم التبديل المتغير تم التقييم. في هذه الحالة، على واحد تتم تهيئة مع القيمة 2 .
  2. ال القيمة المقدرة رقم (2). تتم مقارنتها بالثوابت المحددة في كل تسمية حالة داخل ملف كتلة التبديل .
  3. ال بيان التبديل يطابق القيمة المقدرة (2) مع الثابت المحدد في الحالة الثانية (الحالة 2) . نظرًا لوجود تطابق، ينتقل البرنامج إلى كتلة التعليمات البرمجية المرتبطة بـ حالة المطابقة (الحالة 2) .
  4. كتلة التعليمات البرمجية المرتبطة بها الحالة 2 يتم تنفيذه، والذي يطبع 'القيمة هي 2' إلى وحدة التحكم.
  5. ال 'استراحة' الكلمة الأساسية موجودة في كتلة التعليمات البرمجية الخاصة بـ الحالة 2 . ونتيجة لذلك، يخرج البرنامج من بيان التبديل مباشرة بعد تنفيذ كتلة التعليمات البرمجية.
  6. يستمر التحكم في البرنامج بعد بيان التبديل ، وأي تصريحات بعد بيان التبديل يتم إعدامهم. في هذه الحالة، لا توجد أي بيانات بعد التبديل، وبالتالي ينتهي البرنامج.
  7. ال بيان التبديل تم تقييم قيمة رقم متغير ، وعثر على تطابق مع الحالة 2، ونفذ كتلة التعليمات البرمجية المقابلة، ثم خرج من الملف كتلة التبديل بسبب وجود بيان 'كسر'. .

مثال على بيان التبديل في C

دعونا نرى مثالاً بسيطًا لبيان تبديل لغة C.

 #include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equals to 10'); break; case 50: printf('number is equal to 50'); break; case 100: printf('number is equal to 100'); break; default: printf('number is not equal to 10, 50 or 100'); } return 0; } 

انتاج |

صور icloud على الروبوت
 enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50 

حالة التبديل مثال 2

 #include int main() { int x = 10, y = 5; switch(x>y && x+y>0) { case 1: printf('hi'); break; case 0: printf('bye'); break; default: printf(' Hello bye '); } } 

انتاج |

 hi 

فاصل والكلمة الأساسية الافتراضية في بيان التبديل

دعونا نشرح ونحدد 'استراحة' و الكلمات الرئيسية 'الافتراضية'. في سياق عبارة التبديل، جنبًا إلى جنب مع مثال التعليمات البرمجية والمخرجات.

1. كسر الكلمة الرئيسية:

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

مثال:

لنأخذ برنامجًا لفهم استخدام كسر الكلمة الأساسية شركة.

 #include int main() { int num = 3; switch (num) { case 1: printf('Value is 1
'); break; // Exit the switch statement after executing this case block case 2: printf('Value is 2
'); break; // Exit the switch statement after executing this case block case 3: printf('Value is 3
'); break; // Exit the switch statement after executing this case block default: printf('Value is not 1, 2, or 3
'); break; // Exit the switch statement after executing the default case block } return 0; } 

انتاج |

 Value is 3 

توضيح:

في هذا المثال، بيان التبديل يقيم قيمة رقم متغير (الذي 3 ) ويطابقها الحالة 3 . كتلة التعليمات البرمجية المرتبطة بها الحالة 3 يتم تنفيذه والطباعة 'القيمة هي 3' إلى وحدة التحكم. ال بيان 'كسر'. داخل الحالة 3 يضمن خروج البرنامج من بيان التبديل مباشرة بعد تنفيذ كتلة الحالة هذه، مما يمنع تنفيذ أي حالات أخرى.

2. الكلمة الرئيسية الافتراضية:

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

مثال:

لنأخذ برنامجًا لفهم استخدام الكلمة الأساسية الافتراضية شركة.

 #include int main() { int num = 5; switch (num) { case 1: printf('Value is 1
'); break; case 2: printf('Value is 2
'); break; case 3: printf('Value is 3
'); break; default: printf('Value is not 1, 2, or 3
'); break; // Exit the switch statement after executing the default case block } return 0; } 

انتاج |

 Value is not 1, 2, or 3 

توضيح:

في هذا المثال، بيان التبديل يفحص قيمة رقم متغير (الذي 5 ). نظرًا لعدم وجود حالة تطابق الرقم، يقوم البرنامج بتنفيذ كتلة التعليمات البرمجية المرتبطة بالرقم حالة 'افتراضية'. . ال بيان 'كسر'. داخل حالة 'افتراضية'. يضمن خروج البرنامج من بيان التبديل بعد تنفيذ 'تقصير' كتلة القضية.

كلا ال 'استراحة' و الكلمات الرئيسية 'الافتراضية'. لعب أدوارًا أساسية في التحكم في تدفق التنفيذ ضمن بيان التبديل. ال بيان 'كسر'. يساعد على منع سلوك السقوط، في حين أن حالة 'افتراضية'. يوفر طريقة للتعامل مع الحالات التي لا مثيل لها.

عبارة C Switch غير مكتملة

في لغة C، يتم تنفيذ عبارة التبديل؛ هذا يعني أنه إذا لم تستخدم عبارة Break في حالة التبديل، فسيتم تنفيذ جميع الحالات بعد الحالة المطابقة.

دعونا نحاول فهم بيان حالة التبديل من خلال المثال الموضح أدناه.

 #include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equal to 10
'); case 50: printf('number is equal to 50
'); case 100: printf('number is equal to 100
'); default: printf('number is not equal to 10, 50 or 100'); } return 0; } 

انتاج |

 enter a number:10 number is equal to 10 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100 

انتاج |

 enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100 

بيان حالة التبديل المتداخل

يمكننا استخدام أي عدد نريده من عبارة التبديل داخل عبارة التبديل. يسمى هذا النوع من العبارات ببيانات حالة التبديل المتداخلة. النظر في المثال التالي.

 #include int main () { int i = 10; int j = 20; switch(i) { case 10: printf('the value of i evaluated in outer switch: %d
',i); case 20: switch(j) { case 20: printf('The value of j evaluated in nested switch: %d
',j); } } printf('Exact value of i is : %d
', i ); printf('Exact value of j is : %d
', j ); return 0; } 

انتاج |

 the value of i evaluated in outer switch: 10 The value of j evaluated in nested switch: 20 Exact value of i is : 10 Exact value of j is : 20 

مزايا بيان التبديل:

هناك العديد من المزايا لل بيان التبديل في C. بعض المزايا الرئيسية لبيان التبديل هي كما يلي:

    سهولة القراءة والوضوح:ال بيان التبديل يوفر طريقة موجزة ومباشرة للتعبير المتفرعة متعددة الاتجاهات في الكود. يمكن أن يؤدي التعامل مع حالات متعددة إلى جعل التعليمات البرمجية أكثر تنظيماً وأسهل في القراءة من الحالات المتعددة عبارات if-else المتداخلة .كفاءة:ال بيان التبديل بشكل عام أكثر كفاءة من سلسلة من إذا كان آخر البيانات عند التعامل مع ظروف متعددة. يعمل بمثابة د طاولة القفز الصحيحة مما يجعله أسرع وأكثر تحسينًا من حيث وقت التنفيذ.المنطق القائم على الحالة:ال بيان التبديل يناسب بشكل طبيعي السيناريوهات التي يحتاج فيها البرنامج إلى اتخاذ قرارات بناءً على قيم محددة لمتغير واحد. إنها طريقة بديهية ومباشرة لتنفيذ المنطق القائم على الحالة.

ال بيان التبديل يدعم استخدام الحالة الافتراضية التي تكون بمثابة ملف خيار التقاط الكل للقيم التي لا تتطابق مع أي حالات مقدمة. هذا الحالة الافتراضية يتعامل مع المدخلات أو الظروف غير العادية التي لم يتم النص عليها صراحة.

عيوب بيان التبديل:

هناك عدة عيوب لل بيان التبديل في C. بعض العيوب الرئيسية لبيان التبديل هي كما يلي:

    تعبيرات محدودة:التعبير المستخدم في بيان التبديل يجب أن يؤدي إلى القيمة المتكاملة (char، int، enum) أو نوع بيانات متوافق. لا يمكنه التعامل مع المزيد تعبيرات معقدة أو غير ثابتة ، الحد منه المرونة في بعض السيناريوهات.عدم القدرة على مقارنة النطاقات:على عكس إذا كان آخر البيانات ، ال بيان التبديل لا يمكن التعامل مع نطاقات القيم مباشرة. تمثل كل حالة في بيان التبديل قيمة ثابتة محددة، مما يجعل من الصعب التعامل مع مجموعة من القيم بكفاءة.لا يوجد دعم لأرقام الفاصلة العائمة:ال بيان التبديل يقبل فقط أنواع التكامل (الأعداد الصحيحة) والقيم من التعدادات ; ولا يقبل أرقام الفاصلة العائمة. لا التعامل معها أنواع البيانات غير المتكاملة يحب الأعداد الصحيحة ذات الفاصلة العائمة ، والتي قد تكون مشكلة في بعض الظروف.سلوك السقوط: تبديل البيانات يملك 'وقع خلال' السلوك بشكل افتراضي مما يعني أنه إذا كانت الحالة لا تتضمن a بيان 'كسر'. ، سوف يتم التنفيذ 'وقع خلال' إلى كتلة الحالة التالية. إذا لم تتم إدارتها بشكل مناسب، فقد يؤدي ذلك إلى سلوك غير مرغوب فيه.رمز مكرر:باستخدام أ بيان التبديل قد يؤدي ذلك إلى تكرار التعليمات البرمجية في بعض الظروف، خاصة عندما تتطلب العديد من الحالات نفس الإجراءات. إذا لم تتم إدارتها بشكل صحيح، فقد يؤدي ذلك إلى تكرار التعليمات البرمجية.يمكن أن تصبح المحولات المتداخلة معقدة:عند التعامل مع متداخلة تبديل البيانات ، يمكن أن تصبح التعليمات البرمجية معقدة وأقل قابلية للقراءة. قد يتطلب الأمر بذل جهد إضافي لفهم هذه الهياكل المتداخلة والحفاظ عليها.