ساختار شرطی if و عملگر های مقایسه ای در آردوینو

ساختار شرطی if و عملگر های مقایسه ای در آردوینو

ساختار شرطی if و عملگر های مقایسه ای در آردوینو
ساختار شرطی if و عملگر های مقایسه ای در آردوینو

if (ساختار شرطی) و == ، =!، <، > (عملگر‌های مقایسه)

ساختار if به همراه یک عملگر مقایسه، چک می‌کند که آیا یک شرط برآورده شده است یا نه. حاصل if صحیح یا غلط (true or false) خواهد بود. مثلا آیا یک ورودی از یک عدد معین بیشتر است؟

فرمت نوشتن یک if این‌گونه است:

این قطعه کد بررسی می‌کند که آیا مقدار متغییر someVariable از 50 بیشتر است یا نه. اگر باشد، برنامه کار خاصی را انجام می‌دهد. به زبانی دیگر اگر جمله‌ی درون پرانتز درست باشد، جمله‌های درون براکت اجرا می‌شوند. وگرنه برنامه از اجرای این بلاک کد صرف نظر می‌کند. (هر چیزی که بین دو براکت ({}) نوشته شود، یک بلاک محسوب می‌شود.)

براکت را می‌شود از ساختار if حذف کرد. در این صورت فقط خط بعد از if تا رسیدن به “;” جزء ساختار شرطی خواهد بود.

برای مثال، کد‌های زیر، همه یک نوع هستند و یک کار ثابت را انجام می‌دهند. نوشتن هر کدام از این انواع، صحیح است:

 

 

عملگر‌های مقایسه‌ای:

جمله‌ی دورن پرانتز که ارزیابی می‌شود، به یک یا چند عملگر مقایسه‌ای نیاز دارد. عملگر‌های مقایسه‌ای این 6 عدد هستند:

== : مساوی بودن

=!: مخالف بودن، برابر نبودن

<: بیشتر بودن، بزرگتر بودن

>: کمتر بودن، کوچکتر بودن

=<: بیشتر مساوی بودن

=>: کمتر مساوی بودن

 

نحوه‌ی استفاده:

 

نکته: = با == تفاوت دارد. تک مساوی (=) عملگر انتساب است.  مثلا در چنین کدی:

علمگر تک مساوی، مقدار 10 را در متغییری با نام X قرار می‌دهد.

 

اما دو مساوی (==) عملگر مقایسه‌ای است و در چنین کدی:

بررسی می‌کند که آیا در متغییر X مقدار 10 قرار دارد یا نه. (آیا x مساوی 10 است یا نه.) این کد وقتی True می‌شود که X مساوی 10 باشد. اما کد قبل همیشه True خواهد بود. چرا؟

این نتیجه به خاطر نحوه‌ی ارزیابی این جمله توسط زبان c است. زبان c جمله را این‌گونه ارزیابی می‌کند: متغییر X مقدار 10 می‌گیرد. (تک مساوی علامت انتساب است.) پس الان X مقدار 10 را در خود دارد. سپس if شرطی، 10 را ارزیابی می‌کند. نتیجه‌ی این ارزیابی همیشه True خواهد بود. چون 10 عددی غیر صفر است و در شرط‌ها هر عدد غیر صفر به منزله True خواهد بود. در نتیجه این جمله همیشه حاصل صحیح خواهد داشت که این حاصل همیشه صحیح، برای ایجاد شرط مناسب نخواهد بود. علاوه بر این، در چنین جمله‌ای مقدار X عوض می‌شود که این عمل هم ممکن است در ادامه‌ی برنامه باعث ایجاد مشکل شود.

if با استفاده از ساختار if…else می‌تواند جزئی از ساختار‌های کنترلی منشعب شونده نیز باشد.

 

 

منبع

حمایت از Yalda

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

Yalda
Yalda

علاقه‌مند به یادگیری چیزهای جدید!

دیدگاه ها

9 دیدگاه

  • رضا
    ۲۱ دی ۱۳۹۹

    سلام من یک پروژه دنبال کننده خورشیدی ساختم که نحوه کارش به این صورته که میاد دو ولتاژو با هم مقایسه میکنه و با احتساب اینکه کدوم ولتاژ بزرگ تره موتور به سمت راست یا چپ میچرخه تا اینجا درست کار میکنه.
    اما مشکلم اینجاست که موتور با کوچک ترین تغیر ولتاژ مرتب به سمت راست یا چپ چرخش میکنه چجوری میتونم بدون استفاده از دستور delay این مشکل رو برطرف کنم
    ممنون میشم زود ر راهنماییم کنید.

    • Sisoog Os
      Sisoog Os
      ۲۱ دی ۱۳۹۹

      سلام اگر مشکلتون را درست متوجه شده باشم البته
      شما باید یه حدی را بزارید بعد به سمت چپ و راست حرکت کنه , و گرنه همیشه سیستم شما یک طرف بزرگتره یا کوچکتر و در حال کار هست
      اون حد هم باید جوری باشه که مشکلی تو کارکرد نداشته باشه

  • امیر
    ۱۵ تیر ۱۳۹۹

    سلام مرسی بابت مطالب مفیدتون
    یه سوال داشتم چطور میتونم یک دستور شرطی بنویسم که مثلا دارای دو شرط باشه و زمانی دستورات داخل شرط اجرا بشه که هر دو شرط انجام بشن
    مثلا چطور میتونم بنویسم زمانی که مقدار x و مقدار y کمتر مساوی 15 شود پین شماره 3 مقدارش یک بشه؟

    • Sisoog Os
      Sisoog Os
      ۱۶ تیر ۱۳۹۹

      سلام دوست عزیز
      شما میتونید دو شرط را داخل IF بگذارید و با گزاره && اونها را AND کنید
      مثلا
      If(x<15 && y<15

      • a
        ۴ بهمن ۱۳۹۹

        لطفا راهنمایی بفرمایید یشرط میخوام که اگر در برنامه اردینو رله اول وصل شد رله دوم وبقیه وصل شود در غیر این صورت کاری انجام نشود ممنون

        • Zeus ‌
          زئوس Zeus
          ۵ بهمن ۱۳۹۹

          خوب باید دید توی چه شرایطی رله اول وصل میشه ؟
          کنترل رله اول در اختیار شماست یا توسط دستگاه دیگری کنترل می شود ؟

          • amir
            ۳۰ تیر ۱۴۰۰

            بله در اختیار هر کسی است که شستی اول را میزند اما تا شستی اول را نزند نمیتواند بقیه را بزند فرض کنید سه نوار نقاله داریم به نام a,b,c تا نوار نقاله aراه نیفتد اجازه نداریم نوارbرا راه بیندازیم و همنینطورتاbراه نیفتد c را نمیتوانیم راه اندازی کنیم

            0
  • علی
    ۴ اردیبهشت ۱۳۹۹

    سلام
    این if که نوشتم به هیچ عنوان داخل آردوینو اجرا نمیشه:
    if (buff[0] == 0xA1 && buff[1] == 0xB1 )
    {

    Serial.write(buff,sizeof(buff));

    pwm1 = buff[2];
    pwm2 = buff[3];
    pwm3 = buff[4];
    pwm4 = buff[5];
    pwm5 = buff[6];

    a.write(pwm1);
    b.write(pwm2);
    c.write(pwm3);
    d.write(pwm4);
    e.write(pwm5);
    delay(500);
    }
    اگر امکانش هست راهنماییم کنید.
    ممنون.

    • Sisoog Os
      Sisoog Os
      ۸ اردیبهشت ۱۳۹۹

      سلام خب دوست عزیز ببنید این بافر دقیقا چطور داره پر میشه
      از طریق سریال یا …
      مطمئنا این دو بایت که نوشتید داخل این بافر وارد نمیشه

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

امنیت همیشه و در همه‌ی اعصار، مقوله‌ی مهم و قابل‌توجه‌ ای بوده و همیشه نوع بشر به دنبال امنیت بیشتر، دست به ابداعات و اختراعات گوناگونی زده است. ریموت کنترل یکی از این اختراعات است. در این مقاله، به بررسی امنیت انواع ریموت‌های کنترل خواهیم پرداخت....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 9 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 2 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک