دانش بایت

ورود ورود

ساختارهای شرطی در زبان جاوا اسکریپت

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

برای مثال تصور کنید که می‌خواهید برنامه‌ای بنویسید تا درصورتی که نمره‌ی یک دانشجو کمتر از ۱۰ باشد برای او پیغامی نمایش داده شود و او مطلع شود که نمره‌ی قبولی این درس را نگرفته است.

با درنظر گرفتن مثال بالا، کد مربوط به نمایش پیغام به دانشجو همیشه نباید اجرا شود و تنها زمانی باید آن کد اجرا شود که دانشجو نمره‌ی قبولی درس موردنظر را نگرفته باشد.

یک برنامه‌نویس مثال بالا را برای خود با این جمله توصیف می‌کند : «اگر نمره کمتر از ۱۰ بود پیغام را نمایش می‌دهم».

پس ما برای حل مثال بالا به یک ساختار شرطی نیازی داریم. ساختاری که بخشی از کدهای ما را در شرایط خاصی اجرا کند.

این ساختار را در زبان جاوا اسکریپت با دستور if می‌توانیم بنویسیم. به کد زیر توجه کنید: 

let score = 8;

if( score < 10){
    console.log("شما پاس نشدید");
}
شما پاس نشدید

در کد بالا ابتدا متغیری با نام score تعریف کردیم و فرض کردیم نمره‌ی دانشجو در این متغیر قرار دارد و برای همین منظور عدد 8 را هم در این متغیر ذخیره کردیم. سپس با دستور if بررسی کردیم که آیا محتوای داخل این متغیر کوچک‌تر از عدد ۱۰ است یا نه؟

درصورتی که محتوای score کوچکتر از عدد ۱۰ باشد پیغام «شما پاس نشدید» در کنسول به کاربر نمایش داده می‌شود. 

آیا نوشتن آکولادها در ساختار شرطی if اجباری است؟

با نوشتن علامت‌های آکولاد باز و بسته محدوده‌ی کدهای مشروط خود را مشخص می‌کنیم ولی استفاده از علامت‌های آکولاد در شرایطی اختیاری است. اگر فقط یک خط کد داخل بخش if نوشته بودید، نیازی به استفاده از علامت‌های آکولاد ندارید و استفاده از آن‌ها کاملا اختیاری می‌شود، ولی اگر بیش از یک خط بین دو آکولاد داشتید، دیگر نمی‌توانید آکولادها را حذف کنید چون هنگام اجرای برنامه جاوا اسکریپت به‌صورت پیش‌فرض اولین خط نوشته‌شده را به عنوان بدنه‌ی ساختار if انتخاب می‌کند و بقیه‌ی کدهای شما در هر شرایطی اجرا خواهند شد چرا که از نگاه جاوا اسکریپت آن‌ها بیرون شرط if قرار دارند. به مثال زیر توجه کنید : 

let a = 17;
if(a == 15)
console.log('عدد وارد شده ۱۵ است');
console.log('عدد ۱۵ را وارد کرده‌اید');
عدد ۱۵ را وارد کرده‌اید

همانطور که در کد بالا مشاهده کردید، حذف علامت‌های آکولاد باعث شد تا جاوا اسکریپت فقط اولین log را به عنوان بخش داخلی if انتخاب کند و log دوم چون بیرون از ساختار if تصور شده است، پس در هر شرایطی اجرا می‌شود، حتی اگر شرط غلط باشد.

دستور else در جاوا اسکریپت

در مثال قبلی، تصورکنید که می‌خواهیم اگر دانشجو نمره‌ی قبولی را دریافت کرده‌بود، به او یک پیام تبریک نمایش دهیم. با دانسته‌های قبلی خود اگر پس از دستور if پیام تبریک را قرار دهیم، دانشجوی موردنظر چه نمره‌ی قبول را گرفته باشد و چه نگرفته باشد، پیام تبریک به اون نمایش داده خواهدشد.

برای جلوگیری از این اتفاق،‌ از دستور else استفاده می‌کنیم. واژه‌ی else در زبان فارسی به معنی «درغیراین‌صورت» است و ما هم برای همین‌منظور می‌خواهیم از این دستور استفاده کنیم. به کد زیر توجه کنید:

let score = 12;

if(score < 10){
	console.log("شما پاس نشدید");
}else{
	console.log("تبریک می‌گویم شما پاس شدید");
}
تبریک می‌گویم شما پاس شدید

کد بالا پس از اجرا شدن پیام «تبریک می‌گویم شما پاس شدید» را به کاربر نمایش می‌دهد.

اکنون اگر نمره‌ی کمتر از عدد ۱۰ را در متغیر score ذخیره کنیم، فقط پیام «شما پاس نشدید» به کاربر نمایش داده می‌شود. به کد زیر توجه کنید:

let score = 7;

if(score < 10){
	console.log("شما پاس نشدید");
}else{
	console.log("تبریک می‌گویم شما پاس شدید");
}
شما پاس نشدید

آیا می‌توانیم آکولادهای دستور else را هم ننویسیم؟

بله، همان‌طور که می‌توانستیم آکولادهای دستور if را ننویسیم، می‌توانیم آکولادهای مربوط به else را هم ننویسیم. فقط دوباره یادآوری می‌کنیم که اگر چندین خط کد برای بخش else نوشته‌اید نمی‌توانید آکولادهای را حذف کنید چون در این حالت جاوا اسکریپت به‌صورت پیش‌فرض تصور می‌کند که تنها اولین خط برای ساختار else است و بقیه‌ی کدها را خارج از else تصور می‌کند.

دستور else if در جاوا اسکریپت

تا به این‌جای کار ما یاد گرفته‌ایم که یک دوراهی در کدهای خودمان ایجاد کنیم که برای مثال «اگر فلان شرط درست بود، این کدها اجرا شوند و در غیراین‌صورت کدهای دیگری اجرا شوند»، ولی بخواهیم شرایط دیگری را هم بسنجیم و راه‌های دیگری هم ایجاد کنیم چطور؟ آیا با دانسته‌های فعلی می‌توانیم چنین کاری انجام دهیم؟

دستور else if برای همین منظور استفاده می‌شود و معنی فارسی این دستور، عبارت «درغیراین‌صورت اگر» است که با استفاده از این دستور می‌توانیم در یک ساختار شرطی، بیش از دو حالت را بررسی کنیم. برای مثال تصور کنید عددی از کاربر دریافت کرده‌ایم و اکنون می‌خواهیم بررسی کنیم که آیا این عدد مثبت است،‌ منفی است و یا صفر است. همانطور که مشخص است، شرطی باید بنویسیم که سه حالت را بررسی کند (مثبت بودن، منفی بودن،‌ صفر بودن) و در هر یک از حالت‌ها پیام مناسبی را به کاربر نمایش دهد. برای نوشتن و حل مسئله‌ی بالا از دستور else if استفاده خواهیم کرد. به کد زیر توجه کنید :

let number = 5;
if(number > 0){
	console.log("it is positive"); // مثبت است
}else if(number < 0){
	console.log("it is negative"); // منفی است
}else{
	console.log("it is zero"); // صفر است
}
it is positive

برای درک بهتر کدهای مثال بالا و پاسخ دادن به سوالات احتمالی در ذهن شما، به نکات زیر توجه کنید:

  • در یک ساختار شرطی می‌توان به تعداد دلخواه از دستور else if استفاده کرد.
  • هر ساختار شرطی با دستور if آغاز می‌شود.
  • استفاده از دستور else دلخواه است و فقط یک بار، آن هم در انتهای ساختار شرطی می‌توان از آن بهره برد.
  • در یک ساختار شرطی، کدهای مربوط به دستور else تنها زمانی اجرا می‌شوند که هیچ‌کدام از شرط‌های مربوط به if و else if قبلی برقرار نباشند و هیچ‌کدام از کدهای مربوط به آن بخش‌ها اجرا نشده باشند.
  • کدهای مربوط به دستور else if تنها زمانی اجرا می‌شوند که هیچ‌کدام از شرط‌های مربوط به if و else if قبلی برقرار نباشند و شرط نوشته‌شده براش خودش هم صحیح و برقرار باشد.
  • اگر شرط مربوط به if برقرار باشد و کدهای آن بخش اجرا شوند، دیگر هیچ‌کدام از کدهای مربوط به else if و else مربوط به آن شرط اجرا نخواهند شد.

آیا می‌توان چندین ساختار شرطی را به‌صورت تودرتو نوشت؟

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

let x = -5;
if(x > 0){
	if(x%2 == 0){
		console.log("x is positive and even"); // مثبت و زوج است
	}else{
		console.log("x is positive and odd"); // مثبت و فرد است
	}
}else if(x < 0){
	if(x%2 == 0){
		console.log("x is negative and even"); // منفی و زوج است
	}else{
		console.log("x is negative and odd"); // منفی و فرد است
	}
}else{
	console.log("x is zero"); // صفر است
}
x is negative and odd
برچسب‌ها :
جاوا اسکریپت | javascript