سرفصل‌های آموزشی
آموزش جاوا
آشنایی با دستور else در زبان برنامه نویسی جاوا

آشنایی با دستور else در زبان برنامه نویسی جاوا

در آموزش گذشته به بررسی مقدمه‌ای از دستورات شرطی پرداخته و دستور 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 مربوط می‌شوند.

به علاوه، در برخی مواقع می‌توان چندین دستور شرطی را به صورت تودرتو تعریف کرده و بدین طریق دستورات مورد نظر را با بررسی برخی شرایط خاص اجرا کرد که در آموزش آتی به بررسی نحوۀ پیاده‌سازی دستورات شرطی تودرتو خواهیم پرداخت.

online-support-icon