switch در زبان C – ساختار شرط
switch در زبان C
switch در زبان C مشابه ساختار شرط هست و ساختار کلی اون بصورت مقابله:
عبارت (در خط اول) سوئیچ ارزیابی میشه ، بعد نتیجه ارزیابی از بالا به پایین با مقـادیر ذکـر شـده (مقـدار 1 ،مقـدار2 و…) مقایسه میشه. اگر نتیجه ارزیابی با یکی از مقادیر case برابر بشه دستورات داخل آن case اجرا میشود و بعد با استفاده از دستور break از این ساختار سوئیچ خارج میشه. اگر نتیجـه ارزیـابی بـا هیچکـدام از مقـادیر case برابـر نباشد مجموعه دستورات default اجرا میشه.
1 2 3 4 5 6 7 8 9 10 11 |
switch (عبارت) { case 1مقدار : مجموعه دستورات ; break; case 2مقدار : مجموعه دستورات ; break; ... default: مجموعه دستورات ; } |
برای switch در زبان C به نکات زیر توجه کنید !
1 -عبارت جلوي سوئیچ باید از نوع صحیح یا کاراکتری باشه.
2 -مقادیر جلوي caseها نباید باهم مساوی باشن.
3 -اگر در یک case از دستور break استفاده نشه پس از اجراي دستورات مربوط به این case ،مجموعه دستورات موجود در case بعدی هم اجرا میشه.
فرض میگیریم 3 مقدار سوئیچ داریم ،اگر عبارت برابر با مقدار 2 باشه ، از مجموعه دستورات کیس اول رد میشه و کیس دوم اجرا میشه. اما اگر از دستور break در انتهای کیس دوم استفاده نکنیم چی میشه ؟ درواقع تمامی کیس های دیگه به ترتیب اجرا میشه! پس حتما اگر میخواین یک کیس اجرا بشه و بعد بره بیرون از دستورات سوئیچ ، break رو فراموش نکنید.
4 -اگر بخواهیم دو یا چند شرط را در ساختار سوئیچ با هم or کنیم کافیه چند case را که میخواهیم باهم or کنیم ، پشت سرهم قرار بدیم.
خروجی برنامه زیر به ازای مقادیر مختلف case چیست؟
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
main () { char op; int i=0; op= getche (); switch (op) { case '+': i++; case '-': i++; case '*': i++; } printf ("%d", i); } |
پاسخ:
اگر عملگر ورودی ‘+’ باشد مقدار i برابر 3 میشود.
اگر عملگر ورودی ‘-’ باشد مقدار i برابر 2 میشود.
اگر عملگر ورودی ‘*’ باشد مقدار i برابر 1 میشود.
مثال برای نکته 4 :قسمت مشخص شده به معناي or است. یعنی عمل ضرب به ازای وارد کردن عملگر ‘*’ یا ‘x‘ انجام میشود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <stdio.h> main(){ int x,y; char b; printf("enter first number, operator,"); printf("enter second number \n"); scanf("%d %c %d", &x, &b, &y); switch (b) { case '+': printf("jam=%d", x+y); break; case '*': case 'x': printf ("zarb= %d", x*y); break; } } |
در این مثال or کردنِ دستور کیس رو برای عمل ضرب انجام دادیم.
در این برنامه یک عدد بعنوان ورودی اول و بعد از اون عملگر و بعد عدد دوم به عنوان ورودی دریافت میشه و نسبت به عملگری که در ورودی اومده عملیات جمع یا ضرب روی اعداد انجام میشه.
مثال بعدی:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <conio.h> #include <stdio.h> main(){ int x,y; char b; printf("enter first number, operator,"); printf("enter second number \n"); scanf("%d %c %d", &x, &b, &y); switch (b) { case '*': printf ("zarb= %d", x*y); break; case '/': if (y == 0) printf ("no answer"); else printf ("taghsim=%d", x/y); break; case '+': printf ("jam=%d", x+y); break; case '-': printf ("tafrigh=%d", x-y); break; default: printf ("Bug!\n"); } } |
در این برنامه درواقع اومدیم همون برنامه قبلی رو کامل کردیم ،یعنی هم عمل تفریق و تقسیم رو اضافه کردیم و یعنی اگر به عنوان عملگر مقداری جز اپراتور های – + * در ورودی قرار بگیره برنامه ارور نشون میده روی صفحه و یا برای تقسیم بر صفر که جوابش مبهمه هم ارور در نظر گرفتیم و پیغام no answer رو به کاربر نشون میدیم.
تمامی کد هارو در نرم افزار devc++ میتونید امتحان کنید!
switch در زبان C هم به پایان رسید و در جلسه بعد آموزش زبان c رو ادامه میدیم 🙂