آموزش دستور شرطی switch case در C ، C++ و آردوینو

دستور switch – case
در این مقاله با دستور switch case در زبان C ، C++ به کمک یک مثال آشنا می شیم. همینطور در این سری مقالات توجه ویژه به بحث Embedded C و نحوه کاربردی زبان C برای میکروکنترلرها و سایر پلتفرم هایی نظیر آردوینو که از زبان برنامه نویسی C استفاده می کنند خواهیم داشت.
دستور switch به ما این امکان رو می دهد که تنها یک بلوک از کدها رو در میان بلوک های دیگر اجرا کنیم.
این کار رو می شه با استفاده از ترکیب if … else if … ها نیز پیاده سازی کرد. گرچه استفاده از سینتکس دستور switch بسیار راحت تر هست.
آموزش ویدئویی switch-case
سینتکس دستور switch – case
switch (mode) { case constant1: // statements break; case constant2: // statements break; . . . default: // default statements }
دستور switch – case چطور کار می کنه
مقدار mode در هر لحظه با یکی از عبارات موجود در برچسب های case مقایسه می شه.
اگر مقدار mode با یکی از case ها برابر باشه، بلوک کد مربوطه در برچسب case اجرا می شه. برای مثال اگر مقدار mode برابر با constant2 باشه، بلوک کد مربوط به case constant2: هست اجرا می شه تا زمانی که به دستور break برسه.
اگر هیچ تطابقی بین mode و case ها پیش نیاید، بخش default به صورت پیش فرض اجرا می شه.
اگر در هر case بعد از پایان یافتن بلوک کد مربوطه از break استفاده نکنیم، بلوک کدهای زیرین آن هم اجرا خواهد شد.
این در حالی هست که عبارت default درون دستور switch کاملا اختیاری است و می تونه نوشته نشه.
از آنجایی که دستور switch – case جزء دستورات و قوائد پایه ای در زبان C هست، تفاوتی در استفاده از این دستور در زبان C و C++ و پلتفرم هایی نظیر آردوینو و … ندارد و نحوه ی استفاده همگی کاملا یکسان است.
منابع پیشنهادی جهت یادگیری بیشتر
لینک های مرتبط
جهت ارتقاء سطح و کیفیت آموزش ها نظرات خودتون رو راجع به این مطلب، از قسمت نظرات پایین همین صفحه، با ما در میان بگذارید.
درباره مرتضی زندی
خلق کردن شماره 1 علاقه مندی های من هست. برنامه نویسی بهترین ابزاری بوده که تا الان برای این کار پیدا کردم. بیس الکترونیک دارم و دستی بر آتش در دنیای رشته های مجاور. تجربه سال ها فعالیت در تیم های R&D رو دارم، در این بین در حوزه ی امبدد سیستم ها فعالیتم پررنگ تر هست. عاشق یادگیری و یاد دادن هستم و تلاش می کنم تجربیاتم رو به زبانی ساده از طریق EasyMCU.org به نحوی کاربردی و موثر با علاقه مندان این حوزه به اشتراک بذارم.
نوشته های بیشتر از مرتضی زندیمطالب زیر را حتما مطالعه کنید
آموزش نصب و راه اندازی سیستم عامل Free RTOS برای آردوینو Arduino
آموزش نصب و راه اندازی سیستم عامل Free RTOS روی STM32
آموزش FreeRTOS نحوه استفاده از میوتکس Mutex
آموزش Free RTOS نحوه استفاده از سمافور Semaphore
آموزش STM32 راه اندازی وقفه خارجی EXTI
معرفی کتاب ARM
16 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
دیدگاهتان را بنویسید لغو پاسخ
This site uses Akismet to reduce spam. Learn how your comment data is processed.
سلام!
ببخشید من یک سوال داشتم:
اگر بخواهیم جلوی case از علامت های * و / و + و – استفاده کنیم باید چی کار کنیم؟
برای برنامه ماشین حساب می خواهم.
درود بر شما.
کافیه به صورت استرینگ درنظرشون بگیرید یعنی بین این علامت ” ”
در دوره آردوینو این مثال بررسی و آموزش داده شده.
با آرزوی بهترین ها.
ممنونم
خواهش میکنم.
با آرزوی بهترین ها
با سلام
جناب مهندس زندی
در انتهای هر case قبل از break میشه از goto برای بازگشت به اول همان case استفاده کرد؟
میخوام هر case یه حلقه بسته بشه و تا شرط case دیگه محقق نشده ، روند برنامه در همان case باقی باشه. یعنی نه به خاطر وجود break از کل از switch خارج بشه و نه به خاطر نبودش به case بعدی بره.
ممنون از توجه شما
درود بر شما.
ابزار goto یک ابزار تاریخ مصرف گذشته هست و توصیه منابع اینه که از این ابزار در برنامه نویسی استفاده نشود مگر برای موارد خاص.
موردی رو که اشاره کردید، در برنامه نویسی تحت عنوان state machine یا ماشین حالت عنوان میشه که پیاده سازیش با تصویر اجرایی شما متفاوت هست، اما خواسته شما رو برآورده میکند. در این رابطه نیاز هست تحقیق کنید، آموزش ببینید و اطلاعات کسب کنید. در قالب کامنت قابل بیان نیست.
با آرزوی بهترین ها.
با سلام
بسیار از توجه و راهنمایی شما سپاسگزارم.
اوقات خوش
خواهش میکنم.
با آرزوی بهترین ها
با سلام و وقت بخیر
جناب مهندس ، در داخل هر case باید تمام ساختار برنامه هر سنسور ، اعم از هدر و ستاپ و لوپ و ... گذاشته بشه ، یا نه فقط لوپ اجرای هر سنسور ، باید قرار داده بشه؟
ممنون از توجه شما
ارادتمند بابک
درود بر شما.
خیر به این روش در زبان C قابل پیاده سازی نیست. اگر در هر لحظه فقط یکی از سنسورها قراره پردازش بشه، در این صورت بهتر است یک فلگ متناظر با سنسور تعیین کنید یا به صورت state machine پیاده سازی کنید. پیشنهاد میکنم قبل از اقدام به پیاده سازی پروژه، حتما یک آموزش پایه ای از زبان C مشاهده بفرمایید.
لینک زیر یک دوره آموزش رایگان آردوینو هست
https://easymcu.org/fa/product/arduino-basic/
با آرزوی بهترین ها.
با سلام
جناب مهندس زندی
ممنون از راهنمایی تون
اوقات خوشی داشته باشید.
درود بر شما.
خواهش میکنم. سپاس.
با آرزوی بهترین ها
با سلام
جناب مهندس زندی
ممنون از راهنمایی تون ، امیدوارم اوقات خوشی داشته باشید.
درود بر شما.
خواهش میکنم. سپاس.
پاینده باشید.
با سلام
خدمت شما کارشناس گرامی
بنده میخوام ، روی یک آردوینو تعدادی سنسور ببندم و به همان تعداد میکروسوییچ براشون داشته باشم و بعد از فشردن میکروسوییچ مربوطه کد مربوط به همون سنسور اجرا بشه.
آیا با دستور switch case امکان پذیره؟
در ضمن برای هر سنسور نمایش روی LCD هم دارم…
ممنون اگر راهنمایی بفرمایید
اوقات خوشی داشته باشید.
درود بر شما.
بله با استفاده از دستور شرطی if و switch-case میتونید همچین پیاده سازی ای داشته باشید.
پیشنهاد میکنم آموزش آردوینو موجود در سایت رو ببینید، خیلی میتونه کمکتون کنه.
با آرزوی بهترین ها