در آموزش گذشته به بررسی مقدمهای از دستورات شرطی پرداخته و دستور if
را معرفی کردیم و دیدیم که چگونه میتوان دستوری شرطی تعریف کرد که در صورت برقرار بودن شرط مذکور یکسری دستورات خاص در برنامۀ مورد نظر اجرا شوند اما در این آموزش قصد داریم تا به معرفی دستور else
و نحوۀ عملکرد آن بپردازیم. به طور کلی، با بهكارگيری دستور else
میتوان برنامهای طراحی کرد که چنانچه شرط تعیینشده برای برنامه true
نباشد، مفسر جاوا به سراغ دستورات مرتبط با else
رفته و آنها را اجرا کند.
پیش از بحث پیرامون دستور else
در این بخش از آموزش میخواهیم یک دستور if
تعریف کنیم تا مقادیر عددی منتسب به دو متغیر را با یکدیگر مقایسه کرده و در صورت برقرار بودن شرط تعیینشده، یکسری دستور مورد نظر اجرا گردند. برای این منظور، پروژهای جدید در محیط اکلیپس تحت عنوان IfElse ایجاد کرده سپس کلاسی تحت عنوان ElseIfClass
در آن میسازیم که در ابتدا کدی به صورت زیر خواهیم داشت:
public class ElseIfClass {
public static void main(String[] args) {
}
}
حال با استفاده از دیتا تایپ int
دو متغیر تحت عناوین suv
و bus
تعریف کرده و به ترتیب هر یک از اعداد 4 و 40 را به آنها منتسب میکنیم:
public class ElseIfClass {
public static void main(String[] args) {
int suv = 4, bus = 40;
}
}
همانطور که مشاهده میکنیم، تعریف دو متغیر برنامه را به منظور خلاصهسازی سورسکد ادغام نمودهایم (در این مثال، suv مخفف واژگان Sport and Utility Vehicle به معنی «ماشین شاسیبلند» بوده و واژۀ bus نیز به معنی «اتوبوس» میباشد که هر یک از اعداد 4 و 40 نیز به منزلۀ ظرفیت مسافر آنها در نظر گرفته شدهاند.) بدین ترتیب، قصد داریم تا با استفاده از دستور if
ظرفیت دو وسیلۀ نقلیۀ مذکور را با یکدیگر مقایسه کنیم که برای این منظور برنامۀ فوق را به صورت زیر تکمیل مینماییم:
public class ElseIfClass {
public static void main(String[] args) {
int suv = 4, bus = 40;
if (suv < bus) {
System.out.println("An SUV has less capacity.");
}
}
}
در کد فوق، در مقابل دستور if
و مابین علائم ( )
شرط مورد نظر را بدین صورت تعریف کردهایم که چنانچه مقدار منتسب به متغیر suv
از مقدار اختصاصیافته به متغیر bus
کوچکتر بود، شرط برقرار بوده و دستورات مرتبط با آن اجرا شوند که در آن گقتهایم استرینگ «.An SUV has less capacity» در کنسول چاپ شود که با اجرای برنامۀ فوق در خروجی خواهیم داشت:
An SUV has less capacity.
در واقع، از آنجایی که مقادیر عددی 4 و 40 را به ترتیب به هر یک از متغیرهای suv
و bus
اختصاص دادهایم، شرط تعریفشده در برنامه برقرار بوده و استرینگ مورد نظر در کنسول چاپ میشود.
در فرآیند توسعۀ اپلیکیشن، برخی مواقع نیاز به طراحی برنامهای داریم که در صورت برقرار بودن شرط مورد نظر یکسری دستور را اجرا کرده و در غیر این صورت برخی دستورات دیگر اجرا شوند که در چنین شرایطی میتوانیم از دستور else
استفاده کنیم تا در صورت true
نبودن شرط مذکور، دستورات مرتبط با آن اجرا گردند.
برای روشنتر شدن این مطلب، سناریویی را مد نظر قرار میدهیم که در آن سن کاربر را تعریف کرده و یک دستور شرطی تعریف میکنیم که در صورت برقراری شرط مد نظر استرینگی با مضمون سن کاربر کوچکتر از حد مجاز قانونی میباشد و در غیر این صورت استرینگ مرتبط با قانونی بودن سن وِی را در کنسول چاپ کند. در همین راستا، مثال فوق را حذف کرده و کد جدید را به شکل زیر در سورسکد خود پیادهسازی میکنیم:
public class ElseIfClass {
public static void main(String[] args) {
int boy = 18;
if (boy >= 18) {
System.out.println("You have reached your majority.");
} else {
System.out.println("Sorry, you are too young!");
}
}
}
در کد فوق، با استفاده از دیتا تایپ int
متغیری تحت عنوان boy
تعریف کرده و مقدار عددی 18 معادل سن کاربر را برای آن در نظر گرفتهایم سپس در یک دستور شرطی مقابل علائم ( )
شرط مورد نظر خود را بدین صورت تعریف کردهایم که چنانچه مقدار منتسب به متغیر boy
بزرگتر یا مساوی با عدد 18 بود، شرط برقرار بوده و استرینگ «.You have reached your majority» و در غیر این صورت دستورات مرتبط با else
اجرا شده و استرینگ «!Sorry, you are too young» در کنسول نمایش داده شود. حال برنامۀ فوق را اجرا مینماییم و در خروجی خواهیم داشت:
You have reached your majority.
در واقع، با اجرای برنامۀ فوق مقدار عددی 18 به متغیر boy
منتسب شده و شرط if
چک میشود بدین صورت که آیا مقدار منتسب به این متغیر برابر با عدد 18 یا بزرگتر از آن است یا خیر که میبینیم شرط مذکور true
ارزیابی شده و از همین روی دستورات مرتبط با آن اجرا شده و استرینگ مورد نظر در کنسول چاپ میگردد. در ادامه، تغییری در برنامۀ خود اِعمال میکنیم بدین صورت که مقدار منتسب به متغیر boy
را به عدد 13 کاهش میدهیم به طوری که داریم:
public class ElseIfClass {
public static void main(String[] args) {
int boy = 13;
if (boy >= 18) {
System.out.println("You have reached your majority.");
} else {
System.out.println("Sorry, you are too young!");
}
}
}
با اجرای کد فوق میبینیم که شرط تعریفشده برقرار نبوده و از همین روی مفسر جاوا دستورات مرتبط با else
را اجرا مینماید که در نتیجه استرینگ «!Sorry, you are too young» در کنسول نمایش داده میشود:
Sorry, you are too young!
در واقع، با اجرای برنامۀ فوق، مقدار منتسب به متغیر boy
در دستور if
بررسی میشود که اگر مقداری برابر با عدد 18 یا بزرگتر از آن داشته باشد، شرط تعریفشده برقرار میباشد اما این در حالی است که مقداری معادل با عدد 13 به متغیر مذکور اختصاص داده شده است و از همین روی دستور شرطی برابر با مقدار بولین false
ارزیابی شده و مفسر به سراغ اجرای دستورات مرتبط با else
رفته و در نهایت استرینگ فوق در کنسول چاپ میگردد.
نحوۀ سادهسازی دستورات شرطی در زبان برنامهنویسی جاوا
به عنوان راهکاری جایگزین میتوانیم از ساختاری استفاده کنیم تا دستورات شرطی فوقالذکر را به شکل سادهتری پیادهسازی نماییم که بدین ترتیب دستورات مرتبط با if
و همچنین else
در یک سطر نوشته شده و منجر به سادگی سورسکد میگردند. برای آشنایی با این موضوع، دستورات شرطی مربوط به مثال قبل را به صورت زیر بازنویسی میکنیم:
public class ElseIfClass {
public static void main(String[] args) {
int boy = 18;
System.out.println(boy >= 18 ? "You have reached your majority." : "Sorry, you are too young!");
}
}
همانطور که میبینیم، در سطر چهارم، ابتدا شرط مورد نظر را نوشته سپس یک علامت ?
قرار داده و در ادامه دستورات مرتبط با if
را درج نمودهایم که در صورت true
بودن شرط مذکور اجرا میشوند و در آن گفتهايم استرينگ «.You have reached your majority» توسط متد ()ptintln
در كنسول چاپ شود. در ادامه، یک علامت :
قرار داده و در نهایت دستورات مرتبط با else
را نوشتهایم که در صورت false
بودن شرط تعریفشده در برنامه اجرا شده و استرینگ «!Sorry, you are too young» در کنسول نمایش داده میشود. حال پس از اجرای کد فوق، خروجی زیر را مشاهده خواهیم کرد:
You have reached your majority.
با اجرای برنامۀ فوق، عدد 18 به متغیر boy
منتسب شده و شرط مورد نظر نیز true
ارزیابی میشود و از همین روی استرینگ فوق در کنسول چاپ میگردد. حال مقدار متغیر boy
را به 17 کاهش میدهیم و کد خود را به شکل زیر بازنویسی میکنیم:
public class ElseIfClass {
public static void main(String[] args) {
int boy = 17;
System.out.println(boy >= 18 ? "You have reached your majority." : "Sorry, you are too young!");
}
}
در واقع، مقدار منتسب به متغیر boy
از مقدار تعیینشده در شرط مورد نظر کمتر بوده و از همین روی شرط مذکور برابر با مقدار بولین false
ارزیابی میشود که در نتیجه دستور مرتبط با else
پس از علامت :
اجرا شده و استرینگی به صورت زیر در کنسول نمایش داده میشود:
Sorry, you are too young!
به طور کلی، میتوان گفت که در صورت خلاصهسازی دستورات شرطی به روش فوق، جملۀ اول مربوط به دستورات بدنۀ داخلی if
و جملۀ دوم به دستورات بدنۀ داخلی else
مربوط میشوند.
به علاوه، در برخی مواقع میتوان چندین دستور شرطی را به صورت تودرتو تعریف کرده و بدین طریق دستورات مورد نظر را با بررسی برخی شرایط خاص اجرا کرد که در آموزش آتی به بررسی نحوۀ پیادهسازی دستورات شرطی تودرتو خواهیم پرداخت.