
آردوینو – دستورات کنترلی
ساختار تصمیم گیری مستلزم این است که برنامه نویس یک یا چند شرط را برای ارزیابی یا آزمایش توسط برنامه مشخص کند. اگر شرط مشخص باشد ، می بایست متشکل از دستور یا دستوراتی باشد که در صورت درست بودن شرط ، باید اجرا شوند و در صورت غلط بودن شرط ، می تواند شامل دستورات دیگری باشد که اجرا شوند .
شکل زیر یک ساختار معمول تصمیم گیری است که در اکثر زبان های برنامه نویسی یافت می شود :
دستورات کنترلی ، عناصری موجود در سورس کد هستند که جریان اجرای برنامه را کنترل می کنند.
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 :
/* 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++; }
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 در معرض تبدیل های حسابی معمول قرار می گیرند ، که نوع نتیجه را تعیین می کند.
- هر دو عبارت باید بدون نوع باشند بنابراین نتیجه نیز بدون نوع است.