منطق شرطی-IF ها
برنامه نویسی ای که در حال حاضر انجام می دهید، برنامه نویسی پی در پی(sequential) است، یعنی کد از بالا تا پایین اجرا می شود و از اولین خطی که شما نوشته اید اجرا شده و در آخرین خط نوشته شده توسط شما به پایان می رسد و یک مسیر بالا به پایین خطی را طی کرده و همه کد های نوشته شده توسط شما اجرا می شوند. اما ما همیشه چنین چیزی را نمی خواهیم. برای مثال وقتی می خواهیم اگر سن یک فرد بالای یک عددی بود، یک پیغام برای او چاپ شود و اگر پایین آن عدد بود، پیغام دیگری برای او چاپ شود، باید یک تکه از کد اجرا نشود. پس باید جریان اجرای برنامه را به دست بگیریم. این کار را می توان با استفاده از شرط ها انجام داد.
تمام منطق شرطی در اصل به معنای کلمه IF(اگر) برمی گردد. IF(اگر) کاربر سنش بیشتر از ۲۰ است، یک پیغام چاپ شود، و IF(اگر) کاربر سنش کمتر از ۲۰ است، پیغام دیگری برای او چاپ شود. خوشبختانه استفاده از منطق شرطی در جاوا بسیار ساده است. اینجا با IF شروع می کنیم:
IF:
در برنامه نویسی، اجرای یک تکه از کد در زمانی که یک اتفاق به جای دیگری رخ می دهد امر بسیار شایعی است که به کمک IF ها انجام می شود. ساخنار IF در جاوا بدین صورت است:
if(شرط){ }
از واژه if استفاده کرده و در مقابل آن پرانتز باز و بسته می گذاریم. سپس کدی که می خواهم در صورت برقراری شرط اجرا شود را بین دو علامت “}” و “{” می نوسیم. شرط مورد نظر هم در میان دو پرانتز نوشته می شود:
if(user<18){ }
شرط ما در بالا این است که اگر متغیر user کوچکتر از ۱۸ است، تکه کد مورد نظر اجرا شود که کوچکتر بودن را با علامت “>” نشان داده ایم. حال برای مثال کد مورد نظر در صورت درست بودن شرط می تواند نمایش یک پیغام باشد:
if(user<18){ System.out.println("User is less than 18"); }
اگز user کوچکتر از ۱۸ نباشد، شرط برقرار نبوده و کد داخل براکت ها اجرا نشده و از ادامه آن بخش کد دیگر کد ها تا آخرین خط اجرا می شوند. هر آنچه که شما داخل براکت های IF می نویسید در صورتی اجرا می شوند که شرط، برقرار باشد. همانند بالا می توانید این بار بزرگتر بودن user از ۱۸ را چک کنید برای این کار کافیست از علامت بزرگتر(“>”) استفاده کنید:
if(user>18){ System.out.println("User is greater than 18"); }
حال اگر بخواهیم بررسی کنیم که user بزرگتر از ۱۸ یا مساوی آن است، باید از دو علامت بزرگتر و مساوی(“=<“) استفاده کنیم:
if(user>=18){ System.out.println("User is greater than 18 or equal to 18"); }
برای بررسی کوچکتر یا مساوی بودن، باید از دو علامت کوچکتر و مساوی(“=>”) استفاده کنیم:
if(user<=18){ System.out.println("User is less than 18 or equal to 18"); }
حال تمامی این موارد را در برنامه ای ساده امتحان می کنیم:
یک پروژه جدید در Netbeans اینجاد کنید.(در پروژه ما نامی که برای package، انتخاب کردیم conditionallogic و نام کلاس اصلی IFStatements است.)
یک متغیر integer تعریف کردیم و مقدار ۱۷ را در آن ذخیره کرده ایم. شرط ما کوچکتر بودن user از عدد ۱۸ است که درست است و باید پیغام نوشته شده چاپ شود. برنامه را اجرا کنید و خروجی را مشاهده کنید:
حال مقداری که در user ذخیره کردید را از ۱۷ به ۱۸ تغییر دهید و برنامه را اجرا کنید و نتیجه را ببینید:
پس برنامه بدون هیچ خطایی اجرا شد. فقط پیغامی که نوشتیم چاپ نشد و این به دلیل برقرار نبودن شرط ماست.
[divider]
تمرین
- جای علامت کوچکتر را با کوچکترمساوی عوض کنید و پیغامی که چاپ می شود را عوض کنید و هر چه می خواهید بنویسید. برنامه را اجرا کنید، پیغامی که نوشتید چاپ شد؟
- مقدار ذخیره شده در user را به ۲۰ تغییر دهید، برنامه را اجرا کنید. پیغامی که نوشتید چاپ شد؟
در یک برنامه می توانید بیشتر از یک IF داشته باشید. کد زیر را امتحان کنید:
این بار دو IF Statement داریم. اولین شرط بررسی می کند که user کوچکتر یا برابر ۱۸ است یا نه و دومین شرط هم بررسی می کند که user بزرگتر از ۱۸ است یا خیر. خروجی را مشاهده کنید:
مقدار user را به ۲۰ تغییر می دهیم و خروجی را می بینیم:
پس می بینید که فقط یکی از آن ها پیغام را چاپ می کند زیرا شرط برای یکی از آن ها برقرار است اگر شرط ها را طوری می نوشتید که برای هر دو برقرار بود هر دو پیغام چاپ می شد.
در بخش بعد، منطق های شرطی را ادامه می دهیم.