Arduino, C, آردوینو, آموزش های متنی

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

آموزش دستور شرطی if در 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++ و پلتفرم هایی نظیر آردوینو و … ندارد و نحوه ی استفاده همگی کاملا یکسان است.


منابع پیشنهادی جهت یادگیری بیشتر

آموزش جامع آردوینو Arduino
آموزش برنامه نویسی Embedded C برای میکروکنترلرها

لینک های مرتبط

آموزش حلقه for در C

آموزش دستور شرطی if در C


جهت ارتقاء سطح و کیفیت آموزش ها نظرات خودتون رو راجع به این مطلب، از قسمت نظرات پایین همین صفحه، با ما در میان بگذارید.


author-avatar

درباره مرتضی زندی

خلق کردن شماره 1 علاقه مندی های من هست. برنامه نویسی بهترین ابزاری بوده که تا الان برای این کار پیدا کردم. بیس الکترونیک دارم و دستی بر آتش در دنیای رشته های مجاور. تجربه سال ها فعالیت در تیم های R&D رو دارم، در این بین در حوزه ی امبدد سیستم ها فعالیتم پررنگ تر هست. عاشق یادگیری و یاد دادن هستم و تلاش می کنم تجربیاتم رو به زبانی ساده از طریق EasyMCU.org به نحوی کاربردی و موثر با علاقه مندان این حوزه به اشتراک بذارم.

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

  1. shaghayegh گفت:

    سلام!
    ببخشید من یک سوال داشتم:
    اگر بخواهیم جلوی case از علامت های * و / و + و – استفاده کنیم باید چی کار کنیم؟
    برای برنامه ماشین حساب می خواهم.

    1. درود بر شما.
      کافیه به صورت استرینگ درنظرشون بگیرید یعنی بین این علامت ” ”
      در دوره آردوینو این مثال بررسی و آموزش داده شده.
      با آرزوی بهترین ها.

      1. shaghayegh گفت:

        ممنونم

        1. خواهش میکنم.
          با آرزوی بهترین ها

  2. 595274682507 گفت:

    با سلام
    جناب مهندس زندی

    در انتهای هر case قبل از break میشه از goto برای بازگشت به اول همان case استفاده کرد؟
    می‌خوام هر case یه حلقه بسته بشه و تا شرط case دیگه محقق نشده ، روند برنامه در همان case باقی باشه. یعنی نه به خاطر وجود break از کل از switch خارج بشه و نه به خاطر نبودش به case بعدی بره.

    ممنون از توجه شما

    1. درود بر شما.
      ابزار goto یک ابزار تاریخ مصرف گذشته هست و توصیه منابع اینه که از این ابزار در برنامه نویسی استفاده نشود مگر برای موارد خاص.
      موردی رو که اشاره کردید، در برنامه نویسی تحت عنوان state machine یا ماشین حالت عنوان میشه که پیاده سازیش با تصویر اجرایی شما متفاوت هست، اما خواسته شما رو برآورده میکند. در این رابطه نیاز هست تحقیق کنید، آموزش ببینید و اطلاعات کسب کنید. در قالب کامنت قابل بیان نیست.
      با آرزوی بهترین ها.

      1. 595274682507 گفت:

        با سلام

        بسیار از توجه و راهنمایی شما سپاسگزارم.

        اوقات خوش

        1. خواهش میکنم.
          با آرزوی بهترین ها

  3. بابک گفت:

    با سلام و وقت بخیر
    جناب مهندس ، در داخل هر case باید تمام ساختار برنامه هر سنسور ، اعم از هدر و ستاپ و لوپ و .‌‌.. گذاشته بشه ، یا نه فقط لوپ اجرای هر سنسور ، باید قرار داده بشه؟

    ممنون از توجه شما

    ارادتمند بابک

    1. درود بر شما.

      خیر به این روش در زبان C قابل پیاده سازی نیست. اگر در هر لحظه فقط یکی از سنسورها قراره پردازش بشه، در این صورت بهتر است یک فلگ متناظر با سنسور تعیین کنید یا به صورت state machine پیاده سازی کنید. پیشنهاد میکنم قبل از اقدام به پیاده سازی پروژه، حتما یک آموزش پایه ای از زبان C مشاهده بفرمایید.
      لینک زیر یک دوره آموزش رایگان آردوینو هست
      https://easymcu.org/fa/product/arduino-basic/

      با آرزوی بهترین ها.

      1. بابک گفت:

        با سلام
        جناب مهندس زندی
        ممنون از راهنمایی تون

        اوقات خوشی داشته باشید.

        1. درود بر شما.
          خواهش میکنم. سپاس.
          با آرزوی بهترین ها

  4. بابک گفت:

    با سلام
    جناب مهندس زندی

    ممنون از راهنمایی تون ، امیدوارم اوقات خوشی داشته باشید.

    1. درود بر شما.
      خواهش میکنم. سپاس.
      پاینده باشید.

  5. بابک گفت:

    با سلام
    خدمت شما کارشناس گرامی
    بنده می‌خوام ، روی یک آردوینو تعدادی سنسور ببندم و به همان تعداد میکروسوییچ براشون داشته باشم و بعد از فشردن میکروسوییچ مربوطه کد مربوط به همون سنسور اجرا بشه.

    آیا با دستور switch case امکان پذیره؟
    در ضمن برای هر سنسور نمایش روی LCD هم دارم…

    ممنون اگر راهنمایی بفرمایید

    اوقات خوشی داشته باشید.

    1. درود بر شما.

      بله با استفاده از دستور شرطی if و switch-case میتونید همچین پیاده سازی ای داشته باشید.
      پیشنهاد میکنم آموزش آردوینو موجود در سایت رو ببینید، خیلی میتونه کمکتون کنه.

      با آرزوی بهترین ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

This site uses Akismet to reduce spam. Learn how your comment data is processed.