سبد (0)

آموزش دستور if در جاوا

دستور if ساده ترین دستوری است که می توانیم در زبان برنامه نویسی جاوا از آن استفاده کنیم. به عنوان مثال، فرض کنید یک متغیر صحیح(integer ) به نام quizScore تعریف کرده باشیم و بخواهیم وقتی که مقدار  این متغیر برابر با 10 شد، یک پیغام را نمایش دهیم. در  تصویر زیر، با استفاده از تصمیم گیری، این خروجی تولید می شود. توجه کنید که از عملگر (==) برای بررسی اینکه آیا دو مقدار با یکدیگر برابر هستند یا نه، استفاده می شود.  تصویر 5.3 یک دستور شرطی if را به همراه فلوچارت آن نشان می دهد:

 در مثال بالا، اگر متغیر quizScore حاوی مقدار 10 باشد، ارزش عبارت بولی quizScore == 10 برابر با true می شود و دستور پس از آن یعنی تابع ()println اجرا می شود و پیغامی را چاپ می کند. اما اگر چنین نباشد،  ارزش عبارت بولی quizScore == 10 برابر با false می شود، و تابع ()println اجرا نمی شود. 

 در دستور if، همواره از یک جفت پرانتز استفاده می شود. در داخل این پرانتزها می توانیم یک عبارت بولی قرار دهیم(یعنی هر عبارتی که مقادیر true یا false) ایجاد کند. اغلب از عملگرهای رابطه ای که در فصل 2 آنها را بررسی کردیم، در دستور if استفاده می شود. عملگرهایی مثل ==, <, >, <=, >=,  !=  . همچنین می توانیم در داخل پرانتزهای دستور if، یک متغیر قرار دهیم که مقادیر true یا false در داخل آن قرار دارد. و یا می توانیم یک متد قرار دهیم که یک مقدار بولی را برمی گرداند. 


 عواقب اشتباه  قرار دادن یک سمی کالن در دستور if در جاوا

 در دستور if در زبان برنامه نویسی جاوا، عبارت های بولی مثل (quizScore == 10) باید در داخل یک جفت پرانتز قرار گیرند. همان طور که در تصویر 5.3 (در بالا) مشاهده می کنید، در انتهای اولین خط دستور if، سمی کالن قرار ندارد، زیرا دستور if قرار نیست در آنجا پایان یابد. در تصویر مذکور، پس از دستور ()println یک سمی کالن به عنوان انتهای دستور if قرار داده ایم. 

اگر کل این دستور if را در یک خط بنویسیم، به درستی اجرا خواهد شد. اما رسم بر این است که دستور if را در دو خط بنویسیم زیرا خوانایی کدها افزایش پیدا خواهد کرد. بنابراین براین، معمولا دستور if و عبارت بولی مربوط به آن، در یک خط نوشته می شود و سپس کلید Enter فشار داده می شود تا به خط بعدی برویم. سپس برای ایجاد تو رفتگی، چند باز کلید space را فشار می دهیم و بعد از آن کدهایی که باید اجرا شوند(در صورت true شدن شرط) را قرار می دهیم. اگر هنگام نوشتن دستور if به صورت دو خطی، اشتباها در پایان خط اول یک عدد سمی کالن تایپ کنیم، نتیجه ی دلخواه به دست نخواهد آمد. به تصویر 5.4 توجه کنید:

 

 شماره 1: این سمی کالن اشتباهی قرار داده شده است. 

شماره 2: این تو رفتگی هیچ تاثیر خاصی ندارد. 

شماره 3: مقدار quizScore هرچه که باشد، این عبارت اجرا خواهد شد(چون سمی کالن اشتباه قرار گرفته است). 


 در تصویر 5.4، وقتی که ارزش عبارت بولی برابر با true می شود، یک عبارت دستوری خالی که تنها حاوی یک سمی کالن است، اجرا می شود. ارزش عبارت دستوری مورد نظر، چه true باشد و چه false، تصمیم گیری بلافاصله پایان می یابد و اجرای کدها ی پس از دستور if یعنی دستور println ادامه می یابد. در این مورد، به دلیل اینکه سمی کالن اشتباه قرار داده شده است، دستور if هیچ کاری انجام نمی دهد. 

 


 عواقب استفاده از عملگر انتساب به جای عملگر برابری در جاوا

 

در زبان برنامه نویسی جاوا، اگر برنامه نویس به جای عملگر == یا همان برابر بودن، از عملگر = یا همان انتساب، استفاده کند، با خطا و مشکل مواجه خواهد شد. بعنوان مثال، به عبارت زیر توجه کنید: 

quizScore = 10

با استفاده از عبارت بالا، نمی توانیم بررسی کنیم که آیا متغیر quizScore برابر با 10 است یا نه. بلکه این عبارت مقدار 10 را در داخل متغیر quizScore قرار می دهد(انتساب می دهد). 

اگر عبارت quizScore = 10 را در دستور if به کار ببریم، یک عمل غیرقانونی انجام داده ایم زیرا تنها عبارت هایی که مقدار بولین تولید می کنند، مجاز هستند که در دستور if به کار بروند. 


نکته: عبارت (if(x = true تنها زمانی کامپایل می شود که x یک متغیر بولی باشد؛ زیرا انتساب مقدار true به x صحیح و قانونی است. اما چنین انتسابی بی فایده است زیرا مقدار این عبارت هیچ وقت نمی تواند false شود. 


 به عنوان یک روش جایگزین برای دستور quizScore == 10 می توانیم عبارت بولی خودمان را در داخل یک متغیر از نوع Boolean قرار دهیم. به عنوان مثال اگر متغیر isPerfectScore از نوع Boolean باشد، دستور زیر متغیر quizScore را با 10 مقایسه می کند و مقادیر true یا false را در داخل متغیر isPerfectScore ذخیره می کند: 

isPerfectScore = (quizScore == 10);

حالا می توانیم دستور if را به صورت زیر مورد استفاده قرار دهیم: 

if(isPerfectScore)
  System.out.println("The score is perfect");

 

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