ساختار شرطی if و عملگر های مقایسه ای در آردوینو
if (ساختار شرطی) و == ، =!، <، > (عملگرهای مقایسه)
ساختار if به همراه یک عملگر مقایسه، چک میکند که آیا یک شرط برآورده شده است یا نه. حاصل if صحیح یا غلط (true or false) خواهد بود. مثلا آیا یک ورودی از یک عدد معین بیشتر است؟ فرمت نوشتن یک if اینگونه است:
if (someVariable > 50) { // در این قسمت کاری که می خواهیم در هنگام درست بودن شرط اجرا شود را مینویسیم. }
این قطعه کد بررسی میکند که آیا مقدار متغییر someVariable از 50 بیشتر است یا نه. اگر باشد، برنامه کار خاصی را انجام میدهد. به زبانی دیگر اگر جملهی درون پرانتز درست باشد، جملههای درون براکت اجرا میشوند. وگرنه برنامه از اجرای این بلاک کد صرف نظر میکند. (هر چیزی که بین دو براکت ({}) نوشته شود، یک بلاک محسوب میشود.) براکت را میشود از ساختار if حذف کرد. در این صورت فقط خط بعد از if تا رسیدن به “;” جزء ساختار شرطی خواهد بود. برای مثال، کدهای زیر، همه یک نوع هستند و یک کار ثابت را انجام میدهند. نوشتن هر کدام از این انواع، صحیح است:
if (x > 120) digitalWrite(LEDpin, HIGH); if (x > 120) digitalWrite(LEDpin, HIGH); if (x > 120){ digitalWrite(LEDpin, HIGH); } if (x > 120){ digitalWrite(LEDpin1, HIGH); digitalWrite(LEDpin2, HIGH); } // all are correct
عملگرهای مقایسهای:
جملهی دورن پرانتز که ارزیابی میشود، به یک یا چند عملگر مقایسهای نیاز دارد. عملگرهای مقایسهای این 6 عدد هستند: == : مساوی بودن =!: مخالف بودن، برابر نبودن <: بیشتر بودن، بزرگتر بودن >: کمتر بودن، کوچکتر بودن =<: بیشتر مساوی بودن =>: کمتر مساوی بودن نحوهی استفاده:
x == y (x is equal to y) x != y (x is not equal to y) x < y (x is less than y) x > y (x is greater than y) x <= y (x is less than or equal to y) x >= y (x is greater than or equal to y)
نکته: = با == تفاوت دارد. تک مساوی (=) عملگر انتساب است. مثلا در چنین کدی:
if (x = 10)
علمگر تک مساوی، مقدار 10 را در متغییری با نام X قرار میدهد. اما دو مساوی (==) عملگر مقایسهای است و در چنین کدی:
if (x == 10)
بررسی میکند که آیا در متغییر X مقدار 10 قرار دارد یا نه. (آیا x مساوی 10 است یا نه.) این کد وقتی True میشود که X مساوی 10 باشد. اما کد قبل همیشه True خواهد بود. چرا؟ این نتیجه به خاطر نحوهی ارزیابی این جمله توسط زبان c است. زبان c جمله را اینگونه ارزیابی میکند: متغییر X مقدار 10 میگیرد. (تک مساوی علامت انتساب است.) پس الان X مقدار 10 را در خود دارد. سپس if شرطی، 10 را ارزیابی میکند. نتیجهی این ارزیابی همیشه True خواهد بود. چون 10 عددی غیر صفر است و در شرطها هر عدد غیر صفر به منزله True خواهد بود. در نتیجه این جمله همیشه حاصل صحیح خواهد داشت که این حاصل همیشه صحیح، برای ایجاد شرط مناسب نخواهد بود. علاوه بر این، در چنین جملهای مقدار X عوض میشود که این عمل هم ممکن است در ادامهی برنامه باعث ایجاد مشکل شود. if با استفاده از ساختار if…else میتواند جزئی از ساختارهای کنترلی منشعب شونده نیز باشد.