آردوینو – دستورات کنترلی

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

شکل زیر یک ساختار معمول تصمیم گیری است که در اکثر زبان های برنامه نویسی یافت می شود :

دستورات کنترلی ، عناصری موجود در سورس کد هستند که جریان اجرای برنامه را کنترل می کنند.

 

1- دستور If :

این شرط می تواند در قالب  پرانتز یا عبارت یا شرط دیگری بیان شود . اگر این دستور صحیح باشد ، شرط یا شروط اجرا می شوند ، در غیر این صورت از این شرط یا شروط عبور می کند .

اشکال مختلف دستور If :

فرمت 1 :

if (expression)
   statement;

اگر یک جمله دارید می توانید از دستور if استفاده کنید بدون استفاده از براکت ها.

فرمت 2 :

if (expression) {
   Block of statements;
}

دستور if – دنباله ی اجرایی :

مثال:

/* Global variable definition */
int A = 5 ;
int B = 9 ;

Void setup () {

}

Void loop () {
   /* check the boolean condition */
   if (A > B) /* if condition is true then execute the following statement*/
   A++;
   /* check the boolean condition */
   If ( ( A < B ) && ( B != 0 )) /* if condition is true then execute the following statement*/ { 
      A += B;
      B--;
   }
}

2- دستور If …else :

جمله شرطی if را می توان با دستور اختیاری else دنبال کرد ، این دستور اختیاری زمانی اجرا می شود که دستور شرطی if نادرست باشد.

صورت دستوری if … else :

if (expression) {
   Block of statements;
}
else {
   Block of statements;
}

دستور if … else – دنباله ی اجرایی :

مثال :

/* Global variable definition */
int A = 5 ;
int B = 9 ;

Void setup () {

}

Void loop () {
   /* check the boolean condition */
   if (A > B) /* if condition is true then execute the following statement*/ {
      A++;
   }else {
      B -= A;
   }
}

3- دستور If…else if …else :

عبارت else if…else می تواند به صورت اختیاری و دل بخواه در حلقه if به کار رود . این عبارت ( else if…else ) برای مواقعی که حالت های متعددی برای بررسی در حلقه if داریم بسیار مفید . به درد بخور است.

هنگام استفاده از دستورات  if…else if…else  ، به خاطر داشته باشید :

  • یک if می تواند دستور else داشته باشد یا نداشته باشد (در صورتی که دستور else را داشته باشد ، باید بعد از else if بیاید.)
  • دستور if می تواند از دستور else if تشکیل نشده باشد یا از بسیاری دستور else if تشکیل شده باشد ولی حتما باید قبل از دستور else قرار بگیرد.
  • هنگامی که شرط دستوری یک else if درست باشد ، هیچ یک از دستورات else if یا else باقی مانده  آزمایش نمی شود.

صورت های دستوری if … else if …else :

if (expression_1) {
   Block of statements;
}

else if(expression_2) {
   Block of statements;
}
.
.
.

else {
   Block of statements;
}

دنباله ی اجرایی دستور if … else if … else :

مثال :

/* Global variable definition */
int A = 5 ;
int B = 9 ;
int c = 15;

Void setup () {

}

Void loop () {
   /* check the boolean condition */
   if (A > B) /* if condition is true then execute the following statement*/ {
      A++;
   }
   /* check the boolean condition */
   else if ((A == B )||( B < c) ) /* if condition is true then 
      execute the following statement*/ {
      C = B* A;
   }else
      c++;
}

4- دستور switch case :

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

کلید واژه break باعث می شود که از دستور سوئیچ خارج شود و به طور معمول در انتهای هر مورد استفاده می شود. بدون عبارت break ، دستور سوئیچ اجرای عبارات “falling-through” را تا زمان وقفه (break) یا پایان یافتن دستور سوئیچ ادامه خواهد یافت.

صورت دستوری Switch Case :

switch (variable) { 
   case label:
   // statements
   break;
}

case label: { 
   // statements
   break;
}

default: { 
   // statements
   break;
}

دنباله ی اجرایی دستور switch case :

مثال :

اینجا یک مثال ساده با switch داریم . فرض کنید سه حالت مختلف ( 0 ، 1 و 2 ) برای یک حلقه switch داریم که هر کدام از این حالت ها متناظر با یک تابع یا رویداد هستند . به این ترتیب با برقرار بودن شرایط هر کدام از این حالت ها به زیربرنامه متناظر با آن حالت هدایت می شویم :

switch (phase) {
   case 0: Lo(); break;
   case 1: Mid(); break;
   case 2: Hi(); break;
   default: Message("Invalid state!");
}

 

5- عملگر شرطی : (? : conditional operator)

عملگر شرطی :؟ : تنها عملگر سه گانه در زبان C است.

صورت نحوی عملگر شرطی :

expression1 ? expression2 : expression3

expression1 ابتدا ارزیابی می شود. اگر مقدار آن صحیح باشد ، expression2 محاسبه می شود و expression3 نادیده گرفته می شود. اگر expression1 به عنوان نادرست ارزیابی شود ، سپس expression3 محاسبه می شود و expression2 نادیده گرفته می شود. نتیجه بسته به اینکه کدام یک از این مقادیر صحیح ارزیابی شوند ، مقداری از expression2 یا expression3 خواهد بود.

عملگر شرطی را می توان از راست به چپ نیز نوشت.

مثال :

/* Find max(a, b): */
max = ( a > b ) ? a : b;
/* Convert small letter to capital: */
/* (no parentheses are actually necessary) */
c = ( c >= 'a' && c <= 'z' ) ? ( c - 32 ) : c;

قوانین عملگر شرطی :

  • expression1 باید مقیاس پذیر باشد و expression2 و expression3 باید از یکی از قوانین زیر پیروی کنند.
  • هر دو عبارت باید از نوع حسابی باشند.
  • expression2 و expression3 در معرض تبدیل های حسابی معمول قرار می گیرند ، که نوع نتیجه را تعیین می کند.
  • هر دو عبارت باید بدون نوع باشند بنابراین نتیجه نیز بدون نوع است.

 

منبع : https://b2n.ir/504417

مطالعه بیشتر