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


زمانی که ما یک برنامه جاوا می نویسیم، یکسری دستورات به کامپیوتر خود داده که کامپیوتر ما با توجه به تقدم و تاخر این دستورات آن ها را یکی پس از دیگری انجام می دهد (اصطلاحاً به این فرایند انجام دستورات الگوریتم گفته می شود و جالب است بدانیم که واژه الگوریتم از روی نام دانشمند معروف ایرانی خوارزمی گرفته شده است.) زمان هایی در برنامه نویسی برای ما پیش می آیند که می بایست این وظیفه را به عهده نرم افزار بگذاریم تا با توجه به شرایط خاصی، تصمیم متفاوتی را اتخاذ کند. به طور مثال فرض کنیم که برنامه ای می نویسیم تا حساب ماهیانه ما را مورد بررسی قرار دهد. در این برنامه می توانیم از یکسری دستورات شرطی استفاده کنیم مبنی بر اینکه مثلاً اگر مانده حساب از 100 هزار تومان کمتر شد به ما اخطار دهد.

در زبان برنامه نویسی جاوا برای انجام اینکار از دستورات شرطی if, else, switch استفاده می کنیم. در واقع رایج ترین نوع شرط در زبان برنامه نویسی جاوا استفاده از دستورات if است. در حقیقت با استفاده از چنین دستوراتی، ما از برنامه می خواهیم که بسنجد که آیا یک شرط true یا false است و بسته به این که true یا false بود، دستور مد نظر ما را اجرا کند.

برای روشن شدن مطالب فوق، همان طور که قبلاً آموزش داده شد یک پروژه جدید در محیط برنامه نویسی اکلیپس تحت عنوان If ایجاد کرده و کلاسی به اسم IfClass در آن می سازیم (لازم به ذکر است این نام ها اختیاری هستند فقط می بایست توجه داشته باشیم که نحوه نام گذاری ها صحیح باشند.) فراموش نکنیم که در حین ساخت این کلاس، گزینه public static void main را تیک بزنیم. پیش از نوشتن هرگونه دستوری، کد ما به شکل زیر خواهد بود:

public class IfClass {
    public static void main(String[] args) {

    }
}

حال نیاز داریم تا متغیری از جنس int در برنامه خود با یک مقدار اولیه ایجاد کنیم تا بتوانیم به وسیله آن دستورات if را اجرا کنیم. برای همین منظور کد فوق را به صورت زیر تکمیل می کنیم:

public class IfClass {
    public static void main(String[] args) {
 	int waterAmount = 11;
    }
}


متغیر ما تحت عنوان waterAmount به معنی مقدار آب می باشد که مقدار آن معادل با 11 است (می توانیم به طور فرضی واحد آب را لیتر یا بطری در نظر بگیریم.) در این مرحله از برنامه نویسی پروژه ی خود، با استفاده از دستورات شرطی می خواهیم مقدار آب را با شرایطی که در نظر می گیریم مقایسه کرده و با توجه به نتیجه به دست آمده چیزی مرتبط را در بخش کنسول محیط برنامه نویسی اکلیپس چاپ کنیم. اکنون کد خود را به شکل زیر تکمیل می کنیم:

public class IfClass {
    public static void main(String[] args) {
	int waterAmount = 11;
	if() {			
			
	}
    }
}

به منظور استفاده از دستورات if می بایست همانطور که در کد بالا مشاهده می شود از ساختار ()if سپس علامت های { } استفاده کنیم به این صورت که شرط خود را داخل پرانتزها نوشته و دستوری که می بایست در صورت true بودن شرط if اجرا گردد را داخل دو علامت { } قرار می دهیم. در حقیقت ما در این برنامه خود می خواهیم به کامپیوتر دستور دهیم که اگر تعداد بطری های آب از 20 عدد کمتر بود، جمله ای مبنی بر این که بایستی آب خریداری شود در کنسول نمایش داده شود. برای همین منظور به صورت زیر کد خود را تکمیل می کنیم:

public class IfClass {
    public static void main(String[] args) {
	int waterAmount = 11;
	if (waterAmount < 20) {
	    System.out.println("Go and buy some water!");
	}
    }
}

در کد فوق waterAmount < 20 نشانگر این مطلب است که اگر مقدار متغیر waterAmount از عدد 20 کمتر بود دستور زیر که حاکی از نمایش جمله !Go and buy some water به معنی برو و مقداری آب بخر! در کنسول می باشد (علامت < به معنی کمتر از می باشد.) برنامه ما پس از اجرا به صورت زیر مشاهده خواهد شد:

حال اگر عدد 20 را به عدد 7 تغییر دهیم مشاهده خواهیم کرد که در کنسول هیچ چیزی نمایش داده نخواهد شد چرا که جواب شرط waterAmount < 7 به صورت false است زیرا مقدار اولیه که برای مقدار آب در نظر گرفته شده است معادل با 11 می باشد و از آنجا که 11 از 7 بزرگتر است پس جواب شرط ما true نخواهد شد که دستور داخل { } اجرا شود. 

زمان هایی برای ما پیش خواهد آمد که نیاز داریم تا مقدار یک متغیر را به گونه ای بسنجیم که ببینیم آیا کمتر از یا مساوی با یک مقدار خاصی است یا خیر که برای این منظور از علامت <= استفاده می کنیم. در واقع اگر بخواهیم ببینیم که آیا تعداد بطری های آب موجود کمتر از 11 یا مساوی با 11 است یا خیر، کد خود را به شکل زیر بازنویسی می کنیم:

public class IfClass {
    public static void main(String[] args) {
	int waterAmount = 11;
	if (waterAmount <= 11) {
	    System.out.println("Go and buy some water!");
	}
    }
}

در پرانتز مقابل if دیده می شود که waterAmount <= 11 نوشته شده است به این معنی که اگر تعداد بطری های آب موجود کمتر از 11 بطری بود دستور داخل { } را نمایش بده و اگر تعداد بطری های آب برابر با 11 هم بود باز هم جمله برو و مقداری آب بخر! را در کنسول نمایش بده. با اجرای برنامه فوق ما مجدداً می بینیم که جمله شرطی در بخش کنسول به نمایش در می آید چرا که شرطی که ما معین کرده ایم true است. حال ممکن است بخواهیم شرطی را در برنامه خود تعیین کنیم مبنی بر این که اگر تعداد بطری های آب دقیقاً معادل با 11 بود جمله !We do not need water به معنی ما به آب نیاز نداریم! را در بخش کنسول نمایش دهد. برای این منظور خیلی از برنامه نویسان مبتدی جاوا ممکن است که کد فوق را به صورت زیر بازنویسی کنند:

به محض این که ما کد خود را به صورت فوق بازنویسی کنیم، مشاهده خواهیم کرد که اکلیپس از ما ایراد خواهد گرفت و دور عبارت waterAmount = 11 خط چین قرار می دهد. این بدان معنا است که برنامه ما دچار مشکل است.

نکته
در واقع در زبان برنامه نویسی جاوا بر خلاف قوانین ریاضیاتی علامت = نشانگر برابر بودن نبوده و صرفاً جهت اختصاص دادن مقادیر به متغیرها مورد استفاده قرار می گیرد. به طور مثال، اگر بخواهیم مقدار 11 را به متغیری از جنس int تحت عنوان waterAmount اختصاص دهیم از علامت = استفاده می کنیم. حال اگر بخواهیم در زبان برنامه نویسی جاوا برابر بودن را نشان دهیم می بایست از دو علامت مساوی پشت سر هم به صورت == استفاده کنیم.

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

public class IfClass {
    public static void main(String[] args) {
	int waterAmount = 11;
	if (waterAmount == 11) {
	    System.out.println("We don not need water!");
	}
    }
}

در این مرحله پس از اجرای برنامه، شرطی که ما در برنامه خود قرار داده ایم می سنجد که آیا مقدار بطری های آب آیا دقیقاً برابر با 11 است یا خیر، اگر پاسخ true بود جمله ی !We do not need water نمایش داده خواهد شد:

حال اگر مقدار متغیر waterAmount که در بخش بالای کد خود تعریف کردیم را به عددی به غیر از عدد 11 تغییر دهیم (خواه این عدد کمتر از 11 باشد خواه بیشتر) جواب شرط ما false خواهد شد و چیزی در کنسول به نمایش در نخواهد آمد.

علاوه بر علامت == علامت دیگری نیز وجود دارد که در برنامه نوسی جاوا و توسعه ی اپلیکیشن برای سیستم عامل اندروید به کرات مورد استفاده قرار می گیرد و آن هم =! به معنی نابرابر با می باشد. به طور مثال اگر در برنامه خود بخواهیم یک دستوری را اجرا کنیم مبنی بر این که اگر مقدار متغیر waterAmount معادل با 100 نبود جمله ی !The no of water bottles in not 100 به معنی تعداد بطری های آب معادل با 100 نیست! کد خود را به صورت زیر بازنویسی می کنیم:

public class IfClass {
    public static void main(String[] args) {
	int waterAmount = 11;
	if (waterAmount != 100) {
	    System.out.println("The no of water bottles is not 100!");
	}
    }
}

در حقیقت عبارت waterAmount != 100 می سنجد که آیا مقدار  اختصاص داده شده به متغیر waterAmount معادل با 100 است یا خیر و چنانچه این مقدار معادل با 100 نباشد جواب شرط ما true خواهد بود چرا که در شرط خود قید کرده ایم waterAmount != 100 به معنی اگر مقدار متغیر waterAmount مخالف با 100 باشد که در این صورت جواب این شرط true است چرا که مقدار متغیر ما معادل با 11 است از این رو جمله داخل دو علامت " " در بخش کنسول به نمایش در خواهد آمد و چیزی همچون تصویر زیر مشاهده خواهیم کرد:

به منظور این که بخواهیم شرطی قرار دهیم مبنی بر این که مقدار متغیری بیشتر از، بیشتر و یا معادل با مقدار خاصی باشد به ترتیب از > و >= نیز استفاده می کنیم. نکته ای که حتماً می بایست به خاطر داشته باشیم این است که به منظور مقایسه کردن رشته ها، همان طور که قبلاً آموزش داده شد می بایست از متدی تحت عنوان ()equals استفاده کرد و به هیچ وجه نمی توان از علائم < > و غیره استفاده کرد.

در حقیقت زمان هایی در برنامه نویسی رخ می دهد که ما تمایل داریم که اگر جواب به شرط true بود یک دستور اجرا شود و اگر جواب false بود دستور دیگری اجرا شود که این کار را به سهولت با ادغام دستورات if و else می توان انجام داد که در جلسه آتی با این مسئله در عبارت شرطی آشنا خواهیم شد.

دانلود فایل‌های تمرین
لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
red fire
red fire
ببخشید برنامه eclipse من موقع export کردن گزینه android نداره
تو رو خدا کمک کنین
saman-s
saman-s
با سلام
من یه کلاس اسکنر ایجاد کردم و یه متغیر . خواستم یک عددی رو از کاربر بگیرم و در صورت درستی یک جمله و نادرستی جمله دیگر رو بهم نشون بده اینم با if خواستم. ولی تو condition جمله if کلاس اسکنر رو مساوی با متغیرم قرار میدم و میکم اگه این اسکنر با متغیر مساوی باشه این جماه و اگه نبود جمله دیگری رو نشون بده ولی نمی دونم چرا تو hf ارور نشون میده و می نویسه incomparable types: Scanner and int.
کمکم کنید

import java.util.Scanner;

public class HelloWorld {
public static void main(String[] args) {
Scanner waterAmount = new Scanner(System.in);
System.out.print("Please Enter Your Bottle Number That You Have : ");
int bottleNumber = 11 ;
if ( waterAmount == bottleNumber ) {
System.out.println("We need Some Water. Please Pour it on"); }
else {
System.out.println("We don not need water!");
}
}
}
javanoob
javanoob
if condition باید به این صورت نوشته شود
if (wateramount.nextint() == bottlenumber) {a

در پاسخ به

کاربر میهمان
کاربر میهمان
با عرض سلام و خسته نباشید خدمت دوستان خوبم و تیم این سایت خوب
اگر کسی برنامه اندروید مینویسه میتونم کمکتون کنم فقط برای پاسخ به سوالاتتون کمی صبر و بردباری کنید
این آی دی تلگرام بنده @makanyp
و این ایمیلم هست yaser.allahdadi@gmail.com
همچنین در نواختن گیتار مهارت حرفه ای دارم و رئیس تیم اهنگ جام هستم
اگر کسی علاقه داشت از مبتدی تا نیمه حرفه ای آموزش میدهیم
ازین که وقت خود را صرف نظر بنده کردید بسیار تشکر میکنم
masoudhp
masoudhp
البته میخوام همه ش توی یه دستور if باشه.
masoudhp
masoudhp
سلام و خسته نباشید به همه و مخصوصا تیم سکان آکادمی.
ببخشید من یه مشکلی دارم و اینه که میخوام به برنامه بگم اگر این مقدار و این مقدار آب بود مثلا اگر 22 و 23 بود جواب درست باشه چجوری این کار را کنم؟
با تشکر.
@HOSEIN@
@HOSEIN@
اقادمتونگرم واقعاسایت قشنگی دارید
من خیلی وقت بوددنبال یه سایت کامل آموزش برنامه نویسی میگشتم .....وبالاخره این سایتوپیداکردم
باتشکرازهمه...........
کاربر میهمان
کاربر میهمان
با تشکر از آموزش های بسیار مفید و خوبتون
تنها چیزی که باعث میشه به سایتتون سر بزنم اینه که کپی پیست نمی کنید
این بلوک کد هایی که داخش کد نویسی میکنه چه تمیه؟ xml رو هست دانلود کنیم؟ خیلی قشنگه
ادمین سایت
ادمین سایت
با سلام
برای دانلود تم سورس کدها می توانید به لینک زیر مراجعه نمایید:
https://highlightjs.org/

با تشکر
ارادتمند
تیم سکان آکادمی

در پاسخ به

کاربر میهمان
کاربر میهمان
با درود و سپاس فراوان بابت آموزش و محتوایی که آماده کرده اید میدانم که آماده کردن این حجم محتوا و اندیشیدن به اینکه چه چیز را بگوئید و چگونه بگوئید کار سخت و زمانگیری است دست مریزاد و خدا قوت، و ای کاش در انتهای پست ها دو دکمه تعبیه می کردید برای رفتن به بخش بعدی آموزش و بخش قبلی آموزش !
کاربر میهمان
کاربر میهمان
خسته نباشید.آیا کتابی به همین تفصیل در زمینه جاوا منتشر نکردید؟
Sina Deuxshiri
Sina Deuxshiri
سلام.
خیر. سکان آکادمی در این زمینه کتابی منتشر نکرده.

در پاسخ به

کاربر میهمان
کاربر میهمان
خسته نباشید.آیا کتابی به همین تفصیل در زمینه جاوا منتشر نکردید؟
امیرحسین مختاری
امیرحسین مختاری
Great
محمد عقبائی فرهنگ
محمد عقبائی فرهنگ
کارتون عالیه همیشه پاینده باشین.
با اجازتون بنده هم یک بندی رو به آموزش اضافه میکنم که فکر میکنم مفید باشه.
دوستان اگر بعد از if از {} استفاده نکنید در این صورت اگر شرت داخل if درست(true) باشد فقط اولین خط بعد از if اجرا خواهد شد. و اگر شرط درست نباشد کامپایلر به بعد از اولین خط از if پرش (jump) خواهد کرد.
موفق باشید.