بک لینک

چگونگی قرار گرفتن چندین شرط در کنار یکدیگر در قالب پروژه تخفیف شهریه دانشگاه

Java_Logo
به نام خدا
آموزش شانزدهم
پس از آشنایی با مقدمات دستورات شرطی، حال نوبت با آشنایی با Nested If Statement
ها، Else if و مورد بررسی قرار دادن چندین شرط در کنار یکدیگر می رسد که در این آموزش
کلیه این موارد مورد بررسی قرار خواهند گرفت.
16 به معنی “جلسه th برای شروع این آموزش نیاز داریم تا پروژه ای تحت عنوان Session
شانزدهم” ایجاد کرده سپس کالسی با نام NestedIfStatement در آن ایجاد کنیم)در واقع
هدف از انتخاب این نام صرفاً مرتبط بودن با موضوع آموزش است(. حال برای درک بهتر
موضوع آموزش این بخش نیاز به یک سناریو داریم”
فرض کنیم که می خواهیم برنامه ای طراحی کنیم که شهریه دانشگاه را بر اساس معیارهای
خاصی تعیین کند. در واقع در این برنامه از دانشجویان می خواهیم تا اطالعات خود را وارد کرده
و برنامه بر اساس اطالعات ورودی ایشان یک درصد تخفیف شهریه ترمیک را برای هر دانشجو
در نظر بگیرد. در این برنامه دو عنصر میزان IQ و معدل ترم قبل سنجیده شده و بر آن اساس میزان
درصد تخفیف محاسبه خواهد شد.
برای این منظور نیاز داریم تا دو متغیر یکی برای IQ و دیگری برای معدل ترم قبل ایجاد کنیم
ولی از آنجا که ممکن است مقادیر این متغیرها رند نباشند از متغیری از جنس double استفاده
می کنیم که می تواند اعداد اعشاری را در خود جای دهد)الزم به ذکر است که از متغیری از
جنس float هم می توان برای اعداد اعشاری استفاده کرد اما نکته اینجا است که دقت متغیر
double بیشتر است(. برای شروع کار کدی به شکل زیر خواهیم داشت:
public class NestedIfStatement {
public static void main(String[] args) {
double intelligenceQuotient = 100;
double termMean = 17.3;
}
}
در کد فوق متغیر اول تحت عنوان intelligenceQuotient دارای مقدار 100 بوده و متغیر
دوم تحت عنوان termMean دارای مقداری معادل با 17.3 می باشد)در حقیقت واژه IQ
مخفف واژگان Intelligence Quotient به معنی “میزان هوش” بوده و نام termMean
از واژگان term به معنی “ترم” و mean به معنی “میانگین” می باشد(.
حال کد خود را به شکل زیر تکمیل می کنیم:
public class NestedIfStatement {
public static void main(String[] args) {
double intelligenceQuotient = 100;
double termMean = 17.3;
if (intelligenceQuotient > 110 && termMean > 18) {
System.out.println(“You have 30 percent discount.”);
} else if (intelligenceQuotient > 100 && termMean > 17) {
System.out.println(“You have 20 percent discount.”);
} else {
System.out.println(“You have no discount.”);
}
}
}
در کد فوق چند نکته جدید وجود دارد که به تفصیل مورد بررسی قرار خواهند گرفت. در واقع

و
جمله شرطی که برای اولین if نوشته شده است حاوی عالمت && می باشد که به معنای ”
می باشد)این عالمت مابین برنامه نویسان تحت عنوان Ampersand شناخته می شود(. به طور
خالصه ما در این شرط دستور می دهیم که اگر IQ بیش از 111 بود “و” میانگین ترمی بیش از
به که System.out.println(“You have 30 percent discount.”) دستور بود 11
معنای “شما 03 درصد تخفیف دارید” اجرا گردد.
حال به بررسی دومین نکته جدید در کد فوق می رسیم که عبارت است از else if که به طور
خالصه به معنای “و یا اینکه اگر” می باشد. شرطی که برای else if در نظر گرفته شده است
حاکی از آن است که اگر IQ بیش از 111 بود “و” میانگین ترمی بیش از 11 بود دستور
03 شما” معنای به که System.out.println(“You have 20 percent discount.”)
درصد تخفیف دارید” اجرا گردد.
نکته ای که در اینجا می بایست مد نظر قرار داده شود این است که ما به هر تعداد که نیاز داشته
باشیم می توانیم از شروط else if در برنامه خود استفاده کنیم. حال در نهایت یک شرطelse
قرار می دهیم مبنی بر اینکه اگر کلیه شروط فوق چه از if گرفته چه از هر تعداد else if که
داشته باشیم که دارای جواب false باشند، دستور قرار گرفته در else اجرا خواهد شد که در
مثال فوق معادل با (“.System.out.println(“You have no discount به معنای “به
شما هیچ تخفیفی تعلق نمی گیرد” می باشد. حال اگر کد فوق را اجرا کنیم با نتیجه ای
مشابه تصویر زیر رو به رو خواهیم شد:
در واقع از آنجا که میزان IQ معادل با 100 است و میزان معدل معادل با 17.3 است مسلماً
دستور شرط if که اجرا نخواهد شد چرا که در شرط آمده است که میزان IQ بیش از 111 باشد
و میزان معدل باالی 11 باشد. از سوی دیگر دستور شرط else if هم دارای جواب false خواهد
بود چرا که میزان IQ در نظر گرفته شده بیش از 111 است و این در صورتی است که میزان IQ
در متغیر ما خود عدد 111 است و دیگر اینکه میزان معدل باالی 11 در نظر گرفته شده است.)اگر
چه که شرط در مورد معدل دارای جواب true است، اما از آنجا که ما در شرط خود قید کرده
ایم که هم جواب شرط IQ”و” هم جواب شرط معدل بایستی true باشد پس این شرط در کل
false خواهد شد(. در نهایت وقتی جواب به شروط ifو else if معادل با false باشد برنامه به
سراغ آخرین گزینه که else می باشد می رود و هر دستوری که در آن باشد را اجرا خواهد کرد.
حال با تغییر مقادیر متغیرهای این برنامه خواهیم توانست کلیه شروط برنامه را مورد بررسی قرار
دهیم.
یکی از نکات جدیدی که در این آموزش مورد بررسی قرار گرفت استفاده از عالمت && به
معنای “و” در داخل شرط بود. حال زمانی را تصور کنیم که روسای دانشگاه تصمیم گرفته اند تا
کمی در مورد سیاست تخفیف شهریه سهل گیرتر عمل کنند و برای همین منظور گفته اند که اگر
کسی بخواهد که 01 درصد تخفیف بگیرد یا بایستی دارای IQ بیش از 111 باشد و یا دارای
معدل بیش از 11 باشد. از سوی دیگر کسانیکه بخواهند 01 درصد تخفیف شامل ایشان شود می
بایست یا دارای IQ بیش از 111 باشند و یا معدل ایشان بیش از 11 باشد. در نهایت کسانیکه هیچ
یک از این چهار حالت شامل حال ایشان نشود هیچ گونه تخفیف شهریه ای نخواهند گرفت. در
این صورت می بایست کد خود را به شکل زیر بازنویسی کنیم:
public class NestedIfStatement {
public static void main(String[] args) {
double intelligenceQuotient = 100;
double termMean = 17.3;
if (intelligenceQuotient > 110 || termMean > 18) {
System.out.println(“You have 30 percent discount.”);
} else if (intelligenceQuotient > 100 || termMean > 17) {
System.out.println(“You have 20 percent discount.”);
} else {
System.out.println(“You have no discount.”);
}
}
}
در کد فوق تنها بخشی که بازنویسی شده است استفاده از عالمت || به جای عالمت && داخل
شروط ifو else if می باشد. به عبارت دیگر عالمت || که از فشردن هم زمان دو بار کلید
Shift و دکمه ای که باالی دکمه Enter در کیبوردهای استاندارد قرار دارد ایجاد می شود به
معنای “یا” می باشد. حال دانشجویی که در کد پیشین هیچ گونه تخفیفی شامل حالش نمی شد،
در این برنامه جدید 01 درصد تخفیف خواهد گرفت چرا که یکی از دو شرط else if شامل
حال وی می شود)به عبارت دیگر از آنجا که معدل ایشان معادل با 17.3 است شرط معدل که می
بایست باالی 17 باشد در مورد ایشان صدق کرده و بالتبع دستور شرط else if برای ایشان که
همان 01 درصد تخفیف است اجرا خواهد شد(. نتیجه برنامه جدید همانند نتیجه ای است که در
تصویر زیر مشاهده می شود:
در قسمت پایانی این آموزش به توضیح Nested If Statement ها می رسیم. به طور خیلی
ساده می توان گفت که Nested If Statement ها به شرط های if گفته می شود که داخل
یک شرط if دیگر قرار می گیرند. حال برای توضیح Nested If Statement ها کد فوق را به
صورت زیر تغییر می دهیم:
public class NestedIfStatement {
public static void main(String[] args) {
int age = 30;
}
}
در کد فوق یک متغیر از جنس int تحت عنوان age به معنای “سن” داریم که Value
اختصاص داده شده به آن معادل با 01 است. حال می خواهیم شرطی قرار دهیم مبنی بر اینکه اگر
مقدار متغیر ما بیش از 01 بود دستوری اجرا شود مبنی بر اینکه جمله You are older than
.40 به معنای “شما بیش از 03 سال سن دارید” در بخش Console نمایش داده شود و در
غیر این صورت جمله .You are not older than 40 به معنای “شما بیش از 03 سال
سن ندارید” نمایش داده شود. برای همین منظور کد خود را به شکل زیر تکمیل می کنیم:
public class NestedIfStatement {
public static void main(String[] args) {
int age = 30;
if (age > 40) {
System.out.println(“You are older than 40.”);
} else {
System.out.println(“You are not older than 40.”);
}
}
}
حال پس از اجرای کد نتیجه ای مشابه نتیجه تصویر زیر مشاهده خواهیم کرد:
از آنجا که مقدار متغیر age معادل با 01 تعریف شده است و در شرط خود قرار داده ایم < age
40 پس جواب به این شرط false بوده و در نهایت دستور قرار گرفته در else اجرا می شود.
حال می خواهیم تا یک شرط دیگر را داخل شرط اصلی بگنجانیم مبنی بر اینکه ببینیم با اینکه شما
بیش از 01 سال سن ندارید آیا زیر 01 سال می باشید یا باالی 01 سال. از این رو کد خود را به
شکل زیر تکمیل می کنیم:
public class NestedIfStatement {
public static void main(String[] args) {
int age = 30;
if (age > 40) {
System.out.println(“You are older than 40.”);
} else {
System.out.println(“You are not older than 40.”);
if (age < 20) {
System.out.println(“You are under 20.”);
} else {
System.out.println(“You are over 20.”);
}
}
}
}
در صورت false بودن شرط if که درکد فوق مشاهده می شود، در بخش else دستوری آمده
است که جمله .You are not older than 40 را نشان خواهد داد. حال بالفاصله یک دستور
شرطی دیگر پس از else قرار گرفته مبنی بر اینکه حاال که شما بیش از 01 سال سن ندارید می
خواهیم ببینیم که سن شما زیر 01 سال است یا باالی 01 سال. به همین خاطر در شرط مقابل if
دوم برنامه می نویسیم age < 20 که اگر جواب به آن true باشد جمله You are under
.20 به معنای “شما زیر 03 سال سن دارید” نمایش داده خواهد شد و در غیر این صورت
دستور else دوم که .You are over 20 که به معنای “شما بیش از 03 سال سن دارید”
می باشد اجرا خواهد شد. پس از اجرای برنامه نتیجه زیر مشاهده خواهد شد:
به طور خالصه در شرط اول مشخص می شود که “سن شما بیش از 03 سال نیست” و در if
دومی که داخل if اصلی قرار گرفته است مشخص می شود که “شما بیش از 03 سال سن
دارید”.
همانطور که در آموزش دوازدهم گفتیم، به منظور درک بهتر متدهای boolean کالس
Scanner نیاز به آشنایی با دستورات if داریم. حال که به دستورات if تسلط پیدا کرده ایم،
خواهیم توانست تا در قالب پروژه ای این متدها را مورد بررسی قرار دهیم. در حقیقت در آموزش
آتی پروژه ای به این صورت تعریف می کنیم که کاربر می بایست برای ورود به حساب کاربری
خود یک رمز عبور وارد کند. حال برنامه ما می سنجد که آیا این عدد از جنس یک عدد صحیح
است یا خیر اگر عدد صحیح است آیا با رمز برنامه نیز خوانی دارد یا خیر که در صورت true
بودن هر دو شرط کاربر خواهد توانست وارد حساب کاربری خود شود.

دیدگاهتان را بنویسید

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