جلسه ششم-عبارات انتخاب یا شرطی(Selection statements)

جلسه ششم : عبارات انتخاب یا شرطی(Selection statements)

جهت کنترل اجرای برنامه ها از عبارات کنترلی استفاده می شود که عبارات کنترلی در جاوا به ۳ دسته زیر تقسیم می شوند:

۱-انتخاب(Selection)

۲-تکرار(Iteration)

۳-پرش(Jump)

عبارات انتخاب یا selection statement به برنامه ها امکان می دهد تا مسیر های اجرایی مختلفی را بر اساس نتیجه یک جمله جبری یا وضعیت یک متغیر؛انتخاب کند. عبارات کنترل یا iteration statement به برنامه ها امکان می دهد تا یک یا چند عبارت را تکرار کند(ایجاد حلقه ها) و عبارات پرشjump statement به برنامه ها امکان می دهد تا به صورت غیر خطیnonlinear اجرا شوند.
عبارات انتخاب(Selection statements):

عبارات انتخابی جاوا:

۱-if

۲-switch

این عبارات امکان کنترل جریان اجرای برنامه ها را بر اساس شرایطی کهتنها در طی اجرای مشخص می شوند؛ فراهم می سازد.

 

شکل کلی دستورif:

If (condition) statement ;

Else statement ;

  • Statement در هر یک از دو حالت می تواند یک عبارت واحد یا چند عبارت در بین {} باشد یک Condition نیز می تواند هر شرطی با حاصل Boolean باشد. قسمتelse هم اختیاری است.
  • عبارت if به این شرح است: اگر حاصل condition مقدار true باشد در آن صورتstatement 1 اجرا می شود و در غیر این صورت؛)statement 2در صورت وجود) اجرا می گردد. تحت هیچ شرایطی دو عبارت با هم اجرا نمی شوند.

در بیشتر مواقع در شرط کنترلif از عملگرهای رابطه ای استفاده می شود اما این امر از نظر فنی ضرورت ندارد.

عبارتif را می توان همچون مثال زیر با یک مقدار بولی هم کنترل کرد:

boolean dataAvailable;

// …

if (dataAvailable)

ProcessData();

else

waitForMoreData();

If های تو در تو :

منظور از if تودرتو آن است که عبارتif دیگری؛ در یک if یا else دیگر قرار گیرد. Ifهای تودرتو در برنامه سازی بسیار متداول هستند. مهمترین نکته در مورد این نوعifها این است که باید به خاطر داشته باشید که هر عبارتelse همیشه به نزدیکترین عبارتif موجود در همان بلوکelse که باelse دیگری هم مرتبط نیست؛ ارجاع دارد.

 

if-else-if نردبانی :

یکی از ساختارهای برنامه سازی متداولی که بر اساس یک سری ifهای تودرتو بنا شده است؛ نردبانladder ؛if-else-if است که به صورت زیر نوشته می شود:

if(condition)

statement;

else if(condition)

statement;

else if(condition)

statement;

else

statement;

عبارات if از بالا به پایین اجرا می شوند .به محض اینکه حاصل یکی از شرطهای کنترل کننده if مقدار true باشد؛ عبارت مرتبط با آن if اجرا شده و از مابقی نردبان صرفنظر می شود.اگر هیچ یک از شرطها درست نباشد؛ آخرین عبارت else اجرا خواهد شد. آخرین else به صورت پیش فرض عمل می کند یعنی چنانچه هیچ یک از شرطها برقرار نباشد ؛ در آن صورت آخرین عبارت else اجرا می شود و اگر عبارتelse آخری موجود نباشد و مقدار تمام شرطها نیزfalse باشد در آن صورت هیچ عملی انجام نمی گیرد.

خروجی :

April is in the Spring

 

Switch:

عبارتswitch عبارت انشعاب چند شاخه ای جاوا است. این عبارت روش آسانی برای هدایت کنترل اجرای برنامه به قسمتهای مختلف بر اساس مقدار یک جمله جبری فراهم می سازد. بدین ترتیب؛جایگزین بهتری برای یک سری عبارات if-else-if طولانی به شمار می آید:

switch (expression) {

casevalue1:

// statement sequence

break;

casevalue2:

// statement sequence

break;

casevalueN:

// statement sequence

break;

default:

// default statement sequence

}

  • Expression باید از نوع byte,short ,int یا char باشد. هر یک ازvalue های مشخص شده در عبارات case باید از نظر نوع متناسب با expression باشند.(از مقادیر نوع enumeration که در آینده بررسی می شوند می توان برای کنترل switch استفاده نمود)
    هر یک از مقادیرcase باید یک لیترال منحصر به فرد باشد(باید یک مقدار ثابت باشد و نه متغیر).مقدار case نباید تکراری باشد.
    عملکردswitch به این شرح است:
    مقدارexpression با هریک از مقادیر لیترال عبارت case مقایسه می شود. اگر مقدار متناظری پیدا شود؛ عبارت یا عبارتهای پس از case اجرا می شود. اگر هیچ یک از مقادیر ثابت با مقدار expression برابر نباشد؛ در آن صورت عبارتdefault اجرا می شود. با این وجود عبارت مذبور اختیاری است. اگر مقدار متناظری پیدا نشود و عبارت default هم موجود نباشد در آن صورت هیچ عملی انجام نمی شود.
    از عبارتbreak درswitch برای پایان دادن به یک سری از عبارات استفاده می شود. وقتی نوبت به اجرای عبارتbreak می رسد؛ اجرای برنامه به نخستین سطر پس از کل عبارت switch هدایت می شود. بدین ترتیب کنترل از عبارت switch خارج می شود.
    حذف عبارتbreak کاربردهای عملی زیادی در برنامه های واقعی دارد.

مثال:

Output:

i is zero.

i is one.

i is two.

i is three.

i is greater than 3.

i is greater than 3

Switch تو در تو :

از عبارتswitch می توانید به عنوان یکی از عبارات یک switch دیگر استفاده کنید. ار آنجایی که هر عبارتswitch بلوک مخصوص به خود را تعریف می کند؛ هیچ تداخلی بین ثابت case های switch داخلی و خارجی پیش نمی آید.

سه ویژگی مهم و قابل توجه از عبارتswitch به طور خلاصه در ذیل فهرست شده اند:

عبارت switch بر خلاف عبارتif تنها قابلیت بررسی تساوی دو مقدار را دارد؛ در صورتی که if ها می توانندهر نوع جمله بولی را ارزیابی کنند. یعنی switch تنها مقداری را جستجو می کند که با یکی از ثابتهای case خود برابر باشد.

هیچکدام از ثابتهایcase در یک عبارتswitch نمی توانند با هم یکسان باشند.البته ثابتهای case یک عبارتswitch و عبارت switch داخل ن می توانند یکسان باشند.آآن می توانند یکسان باشند.

عبارتswitch معمولا کارآمد تر از مجموعه ای ازif های تودرتو است.

مثال:




پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

code