دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart
دستورات جریان کنترل (Control flow statements) یا به عبارتی دستورات شرطی و حلقه ها در زبان برنامه نویسی Dart ، موضوعی است که در این مقاله از تجاری اپ قصد داریم به آموزش آن بپردازیم. جریان کنترل Control Flow در زبان برنامه نویسی دارت نیز همانند بسیاری از زبان های برنامه نویسی دیگر است.
دستورات جریان کنترل در زبان برنامه نویسی دارت درواقع همان دستورات شرطی و حلقه هایی هستند که می توانند جریان اجرای کدهای برنامه را برای ما کنترل کنند.
شما می توانید جریان اجرای کدهای برنامه خود را با استفاده از یکی از موارد زیر کنترل کنید:
برای نوشتن و اجرای کدهای تست و یادگیری دستورات Control flow می توانید ادیتور آنلاین زبان برنامه نویسی دارت را باز کنید .
ابتدا به دستورات شرطی در زبان برنامه نویسی دارت (Dart) و در انتها به حلقه ها در زبان برنامه نویسی دارت (Dart) می پردازیم.
همانطور که قبلا هم گفتیم دستور if و else جزو دستورات شرطی است و این امکان را به شما می دهد که در حالت های مختلف دستورات مختلفی را اجرا کنید.
if(true){
print(“true block!”);
}
اگر به دستورات فوق توجه کنید، می بینید که عبارت شرطی یا ورودی شرط if باید یک boolean باشد. چرا که شرط به این صورت عمل می کند. اگر عبارت شرطی مقدار true را برگرداند وارد بلاک if می شود و در غیر این صورت به بلاک بعدی و یا دستور بعدی می رود. در دستور فوق ما مستقیما true را نوشته ایم یا به عبارتی گفتیم حتما بلاک if اجرا شود اما می توان دستور فوق را به این صورت تغییر داد.
var x = 20
if(x == 20){
print(“true block!”);
}
حالا ما ورودی if را تغییر داده ایم اما باز هم true برمیگرداند. ما بجای اینکه مستقیما بنویسیم if(true) یک متغیر با مقدار ۲۰ تعریف کرده ایم. و به عنوان عبارت شرطی if هم، خروجی مقایسه متغیر x و عدد ۲۰ را معیار شرط قرار داده ایم که البته خروجی این مقایسه true خواهد بود و کدهای درون بلاک if اجرا می شود.
حال میتوان شرط را به این صورت تغییر داد:
var x = 20
if(x == 21){
print(“true block!”);
}
پس از اجرای این دستور خواهید دید کدهای درون بلاک if اجرا نمی شود و ادامه دستورات پس از بلاک if اجرا خواهند شد. زیرا خروجی مقایسه متغیر x با عدد ۲۱ چیزی جز false نخواهد بود. اما می توان یک دستور else برای شرط خود در نظر گرفت که اگر شرط به هر دلیلی برقرار نبود، کدهای درون بلاک else اجرا شود.
مثال:
var x = 20
if(x == 21){
print(“true block!”);
}else{
print(“else block!”);
}
حال خواهید دید که کدهای درون بلاک else اجرا می شود، چرا که شرط برقرار نیست.
حالا می خواهیم به مثال فوق دستور else if اضافه کنیم که در واقع یک دستور if دیگری است که در صورت اجرا نشدن دستور if اول، بررسی می شود.
مثال:
var x = 20;
if(x == 21){
print(“true block!”);
}else if(x == 20){
print(“else if block!”);
}else{
print(“else block!”);
}
ابتدا دستور if بررسی می شود و همانطور که مشخص است اجرا نخواهد شد، سپس دستور else if اجرا می شود که مجددا شرطی را بررسی می کند و تنها در صورت true بودن ورودی if بلاک مربوطه اجرا می شود و در ادامه درصورتی که هیچ یک از دو شرط فوق برقرار نبود کدهای درون بلاک else اجرا می شود.
پس به خاطر داشته باشید که اگر می خواهید دستور خاصی در حالتی که شرط (یا شرط ها) برقرار نبود، حتما اجرا شود باید از else کمک بگیرید و دستور خود را درون بلاک مربوط else بنویسید.
نکته: شما می توانید بی نهایت if و else if داشته باشید. اما اگر بیشتر از ۳ بار می خواهید از else if استفاده کنید بهتر است از دستور switch بجای if استفاده کنید.
عملکرد دستور شرطی switch بسیار شبیه به دستور if است. تفاوتی که وجود دارد این است که شرط های خیلی پیچیده را نمی تواند مدیریت کند. و برای شرط های پیچیده و چند مقایسه ای بهتر است از دستور if استفاده کنیم.
روند کار دستور switch درواقع به این صورت است که یک یا چند ورودی دریافت می کند و ما میتوانیم برای انواع حالات آن ورودی دستورات خاصی را برای اجرا بنویسیم.
مثال:
var x = 20;
switch(x){
case 21 :
print(“case 21 block”);
break;
case 20:
print(“case 20 block”);
break;
default :
print(“default block”);
}
اگر به مثال فوق دقیق توجه کنید خواهید دید که ما درواقع همان مثالی که برای دستور شرطی if و else پیاده کرده بودیم را، مجددا برای switch هم پیاده کرده ایم دقیقا با همان عملکرد.
دستور switch ورودی x را دریافت می کند که در ابتدای کدها مقدار ۲۰ را به عنوان مقدار اولیه دریافت کرده است. و در درون بلاک switch ما برای هر حالتی که ممکن است برای متغیر x رخ دهد یک case نوشته ایم. درون هر case می توان هر تعداد خط دستوراتی که قصد داریم اجرا شود را بنویسیم.
همچنین هر switch می توانید یک بلاک default داشته باشد که درواقع عملکرد else (در if و else) دارد. به این صورت که در حالتی که هیچ یک از case ها برقرار نبودند و اجرا نشدند، بلاک default صد در صد اجرا می شود.
هر case یک دستور break هم دارد که وظیفه متوقف کردن دستور switch را به عهده دارد. به این معنی که اگر case 20 اجرا شد، دیگر نیازی نیست case های بعد از آن و یا default اجرا شود، بلکه باید از کل کدهای بلاک switch رد شود و ادامه دستورات بعد از switch را اجرا کند.
نکته: اگر قصد دارید حالت OR را در switch پیاده کنید می توانید دو یا چند case که می خواهید با هم OR کنید را پشت سر یک دیگر بگذارید و دستوراتی که می خواهید برای این حالات اجرا شود را فقط در بلاک case آخر بنویسد و بلاک case های دیگر را خالی رها کنید. همچنین فراموش نکنید که دستور break را هم برای case آخر حتما بنویسید.
دستورات شرطی در زبان برنامه نویسی دارت (Dart) را به صورت کامل و به همراه مثال توضیح دادیم. در ادامه حلقه ها در زبان برنامه نویسی دارت (Dart) را توضیح می دهیم.
با استفاده از دستورات تکرار یا حلقه ها، می توانید دستورات خاصی را به تعدادی که مشخص می کنید تکرار کنید. یکی از دستورات محبوب و معروف حلقه، دستور for است که بی شک دفعات زیادی از آن در پروژه های خود استفاده خواهید کرد.
مثال:
for(int i=0 ; i<10 ; i++){
print(i);
}
اگر دستور فوق را (درون main ) اجرا کنید، اعداد 0 تا 9 را در خروجی خواهید دید.
مشخص است که دستور print دقیقا ۱۰ بار تکرار شد و مقدار i هم در هر تکرار دقیقا همان مقداری است که در خروجی مشاهده می کنید.
نکته: متغیر i را می توان هر نامی در نظر گرفت. درواقع این متغیر چیزی جز شمارنده حلقه شما نیست و به نوعی مدیریت حلقه شما را به عهده دارد.
دستور while هم مانند for برای تکرار استفاده می شود، اما ساختار متفاوتی دارد.
مثال:
var i=0;
while(i<10){
i++;
print(i);
}
همانطور که می بینید دستور while بسیار شبیه به دستور for است.
همانطور که می بینید دستور while یک پارامتر ورودی دارد که به عبارتی شرط پایان حلقه است. به این معنا که اگر خروجی boolean این شرط مقدار true را برگرداند مجددا کدهای بلاک while اجرا می شود. و در غیر این صورت از این بلاک رد می شود و ادامه دستورات اجرا می شود.
نکته: توجه کنید که شرط ورودی while همیشه در نقطه ای به پایان برسد وگرنه سیستم شما دچار loop بی نهایت می شود و هیچ گاه این حلقه تمام نمی شود.
نوع دیگر دستور while به این صورت است:
var i=0;
do{
i++;
print(i);
}while(i<10);
همانطور که می بینید ما ابتدا دستور do را نوشته ایم و سپس while .
تفاوت این حالت با حالت قبل که ابتدا دستورات while را می نوشتیم و شرط را بررسی می کردیم در چیست؟
در حالتی که ما do را ابتدای دستورات می نویسیم درواقع می خواهیم دستورات ما برای دور اول حتما اجرا شود و سپس شرط while را برای اجرای مجدد کدهای بلاک while بررسی کند. یعنی اگر حتی شرط ما برقرار نبود، حلقه ما یک بار اجرا می شود و دیگر تکرار نخواهد شد. در صورتی که در حلقه while معمولی کدهای ما حتی یک بار هم اجرا نمی شد.
ما دستور break را برای شما با مثال توضیح دادیم و گفتیم که اگر می خواهید از بلاکی که درون آن هستید خارج شوید و ادامه دستورات بعد از بلاک اجرا شود باید از break استفاده کنید.
نکته: دستور break علاوه بر switch می تواند برای if هم استفاده شود.
دستور continue به نوعی شبیه به دستور break است با این تفاوت که برخلاف دستورر break که از کل بلاک خارج می شد، فقط از اجرای کدهای بعد از continue صرف نظر می کند ولی از بلاک خارج نمی شود.
مثال:
for(int i=0 ; i<10 ; i++){
if(i==3){
continue;
}
print(i);
}
خروجی:
0
1
2
4
5
6
7
8
9
همانطور که می بینید زمانی که i برابر با 3 است، دستور print اجرا نمی شود و از دستور جاری به نوعی رد می شود و تکرار بعدی (که i برابر با 4 است) اجرا می شود.
در طول توسعه اپلیکیشن، می توانید اجرای برنامه را با استفاده از دستور assert زمانی که یک شرط مقدار false بر می گرداند، متوقف کنید.
ساختار دستور assert به صورت زیر است
;assert(condition, optionalMessage)
پارامتر اول دستور Assert، یک شرط است که بر اساس این شرط اجرای برنامه متوقف می شود و یا ادامه پیدا می کند. به عبارتی پارامتر اول دستور Assert هر شرطی می تواند باشد درصورتی که مقدار بولین بر گرداند. پارامتر دوم نیز یک پیغام اختیاری است که در صورت متوقف شدن برنامه توسط دستور Assert نمایش داده می شود.
در این مقاله به طور کامل و به زبان ساده و همراه با مثال دستورات شرطی و حلقه ها در زبان برنامه نویسی Dart را توضیح دادیم. همچنین دیگر آموزش های ما در زمینه فلاتر و زبان برنامه نویسی Dart را در لیست زیر می توانید مشاهده کنید.
دیگر مقالات در زمینه آموزش فلاتر یا Flutter و زبان برنامه نویسی Dart