آموزش برنامه نویسی جاوا - قسمت ۱۴: عبارت شرطی برای چک کردن تعداد بطری های آب
شنبه 28 دی 1392 2:52 PM
زمانیکه ما یک برنامه جاوا می نویسیم، یکسری دستورات تحت عنوان Statement به کامپیوتر خود داده که کامپیوتر ما با توجه به تقدم و تاخر این دستورات آن ها را یکی پس از دیگری انجام می دهد(اصطلاحاً به این حالت الگوریتم گفته می شود و جالت است بدانیم که واژه الگوریتم از روی نام دانشمند معروف ایرانی خوارزمی گرفته شده است). زمان هایی در برنامه نویسی برای ما پیش می آیند که می بایست این وظیفه را به عهده کامپیوتر بگذاریم تا با توجه به شرایط خاصی تصمیم متفاوتی را اتخاذ کند. به طور مثال فرض کنیم که برنامه ای می نویسیم تا حساب ماهیانه ما را مورد بررسی قرار دهد. در این برنامه می توانیم از یکسری دستورات شرطی استفاده کنیم مبنی بر اینکه مثلاً اگر مانده حساب از 100 هزار تومان کمتر شد به ما اخطار دهد.
در زبان برنامه نویسی جاوا برای انجام اینکار از دستورات شرطی if, else, switch استفاده می کنیم. در واقع رایج ترین نوع شرط در زبان برنامه نویسی جاوا استفاده از دستورات if است. در حقیقت با استفاده از چنین دستوراتی ما از برنامه می خواهیم که بسنجد که آیا یک شرط true یا false است و بسته به اینکه true یا false باشد دستور مد نظر ما را اجرا کند.
برای روشن شدن مطالب فوق همانطور که قبلاً آموزش داده شد یک پروژه جدید در محیط برنامه نویسی اکلیپس تحت عنوان 14th Session به معنی جلسه چهاردهم ایجاد کرده و کلاسی به اسم IfClass در آن ایجاد می کنیم (لازم به ذکر است این نام ها اختیاری هستند فقط می بایست توجه داشته باشیم که نحوه نام گذاری صحیح باشد). فراموش نکنیم که در حین ساخت این کلاس گزینه public static void main را تیک بزنیم و بعد به ادامه مطلب برویم!
پیش از نوشتن هرگونه دستوری کد ما به شکل زیر خواهد بود:
حال نیاز داریم تا متغیری از جنس int در برنامه خود با مقدار Value اولیه ایجاد کنیم تا بتوانیم به وسیله آن دستورات if را اجرا کنیم. برای همین منظور کد فوق را به صورت زیر تکمیل می کنیم:
متغیر ما تحت عنوان waterAmount به معنی مقدار آب می باشد که Value آن معادل با 11 است(می توانیم به طور فرضی واحد آب را لیتر یا بطری در نظر بگیریم). حال در این مرحله از برنامه نویسی با استفاده از جملات شرطی if می خواهیم مقدار آب را با شرایطی که در نظر می گیریم مقایسه کرده و با توجه به نتیجه به دست آمده چیزی مرتبط را در بخش Console محیط برنامه نویسی اکلیپس چاپ کنیم. اکنون کد خود را به شکل زیر تکمیل می کنیم:
به منظور استفاده از دستورات if می بایست همانطور که در کد بالا مشاهده می شود از ساختار if(){} استفاده کنیم به این صورت که شرط خود را داخل پرانتزها نوشته و دستوری که می بایست در صورت true بودن شرط if اجرا گردد را داخل دو علامت {} قرار می دهیم. در حقیقت ما در این برنامه خود می خواهیم به کامپیوتر دستور دهیم که اگر تعداد بطری های آب از 20 عدد کمتر بود، جمله ای مبنی بر اینکه بایستی آب خریداری شود در بخش Console نمایش داده شود. برای همین منظور به صورت زیر کد خود را تکمیل می کنیم:
در کد فوق waterAmount < 20 نشانگر این مطلب است که اگر Value متغیر waterAmount از عدد 20 کمتر بود دستور زیر که حاکی از نمایش جمله Go and buy some water! به معنی برو و مقداری آب بخر! روی صفحه مانیتور می باشد.(علامت < به معنی کمتر از می باشد). برنامه ما پس از اجرا به صورت زیر مشاهده خواهد شد:
حال اگر عدد 20 را به عدد 7 تغییر دهیم مشاهده خواهیم کرد که در بخش Console هیچ چیزی نمایش داده نخواهد شد چرا که جواب شرط waterAmount < 7 به صورت false است زیرا مقدار اولیه که برای مقدار آب در نظر گرفته شده است معادل با 11 می باشد و از آنجا که 11 از 7 بزرگتر است پس جواب شرط ما true نخواهد شد که دستور داخل { } اجرا شود. حال زمان هایی برای ما پیش خواهد آمد که نیاز داریم تا مقدار یک متغیر را به گونه ای بسنجیم که ببینیم آیا کمتر از یا مساوی با یک مقدار خاصی است یا خیر که برای این منظور از علامت <= استفاده می کنیم. در واقع اگر بخواهیم ببینیم که آیا تعداد بطری های آب موجود کمتر از 11 یا مساوی با 11 است یا خیر کد خود را به شکل زیر بازنویسی می کنیم:
در پرانتز مقابل if دیده می شود که waterAmount <= 11 نوشته شده است به این معنی که اگر تعداد بطری های آب موجود کمتر از 11 بطری بود دستور داخل { } را نمایش بده و اگر تعداد بطری های آب برابر با 11 هم بود باز هم جمله برو و مقداری آب بخر! را روی صفحه مانیتور نمایش بده. با اجرای برنامه فوق ما مجدداً می بینیم که جمله شرطی در بخش Console به نمایش در می آید چرا که شرطی که ما معین کرده ایم true است. حال ممکن است بخواهیم شرطی را در برنامه خود تعیین کنیم مبنی بر اینکه اگر تعداد بطری های آب دقیقاً معادل با 11 بود جمله We do not need water! به معنی ما به آب نیاز نداریم! را در بخش Console نمایش دهد. برای این منظور خیلی از برنامه نویسان مبتدی جاوا ممکن است که کد فوق را به صورت زیر بازنویسی کنند:
به محض اینکه ما کد خود را به صورت فوق بازنویسی کنیم، مشاهده خواهیم کرد که اکلیپس از ما ایراد خواهد گرفت و دور عبارت waterAmount = 11 خط چین قرار می دهد. این بدان معنا است که برنامه ما دچار مشکل است. در واقع در زبان برنامه نویسی جاوا بر خلاف قوانین ریاضیاتی علامت = نشانگر برابر بودن نبوده و صرفاً جهت اختصاص دادن مقادیر به متغیرها مورد استفاده قرار می گیرد. به طور مثال اگر بخواهیم مقدار 11 را به متغیری از جنس int تحت عنوان waterAmount اختصاص دهیم از علامت = استفاده می کنیم. حال اگر بخواهیم در زبان برنامه نویسی جاوا برابر بودن را نشان دهیم می بایست از دو علامت مساوی پشت سر هم به صورت = = استفاده کنیم. اکنون با دانستن این نکته کد فوق را می توانیم به شکل زیر بازنویسی کنیم و مشاهده می کنیم که کلیه خطاهای برنامه رفع خواهند شد:
در این مرحله پس از اجرای برنامه، شرطی که ما در برنامه خود قرار داده ایم می سنجد که آیا مقدار بطری های آب آیا دقیقاً برابر با 11 است یا خیر، اگر پاسخ true بود جمله We do not need water! نمایش داده خواهد شد:
حال اگر مقدار متغیر waterAmount که در بخش بالای کد خود تعریف کردیم را به عددی به غیر از عدد 11 تغییر دهیم(خواه این عدد کمتر از 11 باشد خواه بیشتر) جواب شرط ما false خواهد شد و چیزی در بخش Console به نمایش در نخواهد آمد. علاوه بر علامت = = علامت دیگری نیز وجود دارد که در برنامه نوسی جاوا و اندروید به کرات مورد استفاده قرار می گیرد و آن هم != به معنی نابرابر با می باشد. به طور مثال اگر در برنامه خود بخواهیم یک Statement یا دستوری را اجرا کنیم مبنی بر اینکه اگر مقدار متغیر waterAmount معادل با 100 نبود جمله The no of water bottles in not 100! به معنی تعداد بطری های آب معدل با 100 نیست! کد خود را به صورت زیر بازنوسی می کنیم:
در حقیقت عبارت waterAmount != 100 می سنجد که آیا مقدار Value اختصاص داده شده به متغیر waterAmount معادل با 100 است یا خیر و چنانچه این مقدار معادل با 100 نباشد جواب شرط ما true خواهد بود چرا که در شرط خود قید کرده ایم waterAmount != 100 به معنی اگر مقدار متغیر waterAmount مخالف با 100 باشد که در این صورت جواب این شرط true است چرا که مقدار متغیر ما معادل با 11 است از این رو جمله داخل دو علامت " " در بخش Console به نمایش در خواهد آمد و چیزی همچون تصویر زیر مشاهده خواهیم کرد:
همانطور که در تصویر فوق مشاهده می شود عبارت The no of water bottles is not 100! به معنی تعداد بطری های آب صد عدد نیست! نمایش داده می شود. به منظور اینکه بخواهیم شرطی قرار دهیم مبنی بر اینکه مقدار متغیری بیشتر از، بیشتر و یا معادل با مقدار خاصی باشد به ترتیب از > و >= نیز استفاده می کنیم. نکته ای که حتماً می بایست به خاطر داشته باشیم این است که به منظور مقایسه کردن string ها همانطور که قبلاً آموزش داده شد می بایست از متد equals() استفاده کرد و به هیچ وجه نمی توان از علائم < > و غیره استفاده کرد. در حقیقت زمان هایی در برنامه نویسی رخ می دهد که ما تمایل داریم که اگر جواب به شرطtrue بود دستوری انجام شود و اگر جواب false بود کار دیگری انجام شود که این کار را به سهولت با ادغام دستورات if و else می تواند انجام داد که در جلسه آتی با این مسئله در عبارت شرطی آشنا خواهیم شد.
مدیر تالار های: