بک لینک

علت به کارگیری دستور break; در شرط ها switch

68440690937250408047

علت به کارگیری دستور break; در شرط ها switch و نحوه به کار گیری دستور default در قالب پروژه ماه تولد(ادامه جلسه هجدهم)
به نام خدا
آموزش هجدهم
پس از آشنایی با دستورات شرطی if حال نوبت به آشنایی با مبحث switchدر زبان برنامه نویسی
جاوا می رسد. در حقیقت switch بیانگر شرط در برنامه نویسی جاوا اما به شکل دیگری است. به
عبارت دیگر استفاده از دستورات ifو else برای زمان هایی مناسب تراست که ما دو احتمال بیشتر
نداشته باشیم. به طول مثال یا سن شما باالی 03 است و یا زیر 03 است. حال اگر بخواهیم تعداد
احتماالت را افزایش دهیم می بایست از دستور switch استفاده کنیم اما فراموش نکنیم که با
استفاده از دستورات ifو else نیز می توانیم احتماالت بیش از دو مورد را مورد سنجش قرار دهیم
اما این در حالی است که باید کد بیشتری بنویسیم. برای روشن شدن کاربرد دستور switch
سناریویی به شکل زیر تعریف می کنیم:
فرض کنیم می خواهیم برنامه ای بنویسیم که در ابتدای برنامه از کاربر می خواهیم که عدد مربوط
به ماهی که در آن متولد شده است را وارد کند. پس از آنکه کاربر این کار را انجام داد، برنامه ای
که ما طراحی کرده ایم نام ماه انتخابی را برای کاربر به نمایش در خواهد آورد.)ممکن است برخی
از برنامه نویسان مبتدی این سوال برایشان پیش آید که فایده نوشتن چنین برنامه ای چیست. در پاسخ
به سوال فوق بایستی گفت که در موارد بسیاری به خصوص در ثبت نام های اینترنتی مثل ثبت نام
آنالین دانشگاه پیش می آید که از شما خواسته می شود تا یکسری فرم را پر نمایید. بخشی از این
فرم مربوط به تاریخ تولد شما است که شما صرفاً اجازه دارید تا یکی از 21 ماه سال را انتخاب کنید
ویا از شما خواسته می شود تا کد مربوط به شهر محل تولد خود را انتخاب نمایید. پس از پر کردن
کلیه فضاهای خالی فرم، از شما خواسته می شود تا دکمه تایید را فشار دهید. پس از این کار صفحه
ای برای شما نمایش داده می شود که کلیه اطالعات وارده توسط شما را پیش روی شما قرار می
دهد تا در صورت تایید شما و فشردن دکمه تایید نهایی اطالعات به سرور فرستاده شوند. حال در
این صفحه دوم دیده می شود که در بخش تاریخ تولد به جای به طور مثال نوشتن شماره ماه)مثالً
شماره 21 (، نام ماه که اسفند می باشد نمایش داده می شود و یا به جای نشان دادن کد شهری که
در آن متولد شده اید نام آن شهر )مثالً اراک( را برای شما نمایش می دهد. امید است با این توضیح
فایده فراگیری چنین دستوری به خوبی مشخص شده باشد.(
18 به معنی جلسه هجدهم در محیط برنامه نویسی th اکنون پروژه جدیدی با نام Session
اکلیپس ایجاد کرده، کالسی در آن تحت عنوان MySwitchClass یا هر نام دیگری می
سازیم)به خاطر داشته باشیم که حرف اول نام کالس می بایست با حرف بزرگ نوشته شود و اجازه
نداریم تا از کاما و یا خط تیره و دیگر عالئم در نام کالس خود استفاده کنیم. البته استفاده از _ یا
اصطالحاً Underscore بالمانع است(. به خاطر داشته باشیم که در حین ساخت کالس، گزینه
public static void main را تیک بزنیم. پس از باز کردن فایل کالسی که ایجاد کرده ایم،
کلیه Comment ها را حذف کرده و کدی مشابه کد زیر خواهیم داشت:
public class MySwitchClass {
public static void main(String[] args) {
}
}
در این مرحله از کدنویسی، کالسی تحت عنوان Scanner را وارد برنامه خود می کنیم. در واقع
این کالس امکان استفاده از کیبورد پی سی و یا لپ تاپ را به ما داده و اطالعات ورودی از
کیبورد را به برنامه ما ارسال می کند)جهت آشنایی بیشتر با این کالس، می توانید به آموزش های
قسمت یازدهم، دوازدهم و سیزدهم رجوع نمایید(.
کد تکمیل شده در این مرحله از کار به شکل زیر خواهد بود:
import java.util.Scanner;
public class MySwitchClass {
public static void main(String[] args) {
Scanner keyboardInput = new Scanner(System.in);
}
}
در این کد ما یک Instance یا به عبارتی یک “شیئ” از کالس Scanner را خواهیم ساخت.
برای همین منظور، کلید واژه Scanner را نوشته و نامی برای آن انتخاب می کنیم. در اینجا نام
keyboardInput به معنی “ورودی کیبورد” را انتخاب شده است. توجه داشته باشید که
نحوه نوشتن این نام به صورت camelCase می باشد)برای آشنایی بیشتر با نحوه نام گذاری
اسامی متغیرها و کالس ها، به آموزش قسمت دهم رجوع نمایید(.
پس از عالمت = کلید واژه new را نوشته)توجه داشته باشید که حرف اول این واژه بایستی به
صورت کوچک باشد( و مجدداً واژه Scanner را می نویسیم. در حقیقت با این کار ما یک
Object یا شیئ جدید از جنس کالس Scanner که از قبل در API زبان برنامه نویسی جاوا
طراحی شده است ایجاد می کنیم. داخل پرانتزی که مقابل واژه Scanner قرار دارد می نویسیم
System.in که به این معنی است که ورودی سیستم که همان کیبورد است را هدف قرار
دهد)توجه داشته باشید که واژه سیستم به حرف بزرگ نوشته شده است(. در این مرحله خواهید
دید که محیط برنامه نویسی اکلیپس دور هر دو واژه Scanner نقطه چین قرار می دهد که به
معنی وجود مشکلی در برنامه می باشد. با قرار دادن نشانگر موس روی یکی از نقطه چین ها
صفحه ای باز خواهد شد که داری یکسری پیشنهاد برای رفع این مشکل است. این صفحه به شکل
زیر خواهد بود:
اولین پیشنهادی که اکلیپس به ما می دهد (Import ‘Scanner’ (java.util می باشد که دقیقا
مد نظر ما هم همین پیشنهاد است. پس از انتخاب این گزینه با کلیک کردن بر روی آن، مشاهده
می کنیم که ;import java.util.Scanner در باالی کد ما ظاهر می شود. حال
کاری که این خط از کد انجام می دهد این است که کالس Scanner که قبالً در API زبان
برنامه نویسی جاوا ایجاد شده است را در کد ما فرا می خواند و از این پس ما خواهیم توانست در
هر جای کد خود از این کالس به سهولت استفاده کنیم. الزم به ذکر است که پس از استفاده
مکرر از این کالس، خواهیم دید که این خط از کد ملکه ذهن ما شده و خودمان هم به صورت
دستی بدون نیاز به استفاده از گزینه Import می توانیم آن را در بخش فوقانی کد نوشته و مشکل
را رفع کنیم)به عنوان راه کار دیگر، می توان برای Import کردن این کالس در برنامه خود،
پس از نوشتن آن به طور هم زمان کلیدهای Ctrl+Shift+O را فشار دهیم(.
پس از این کار نیاز داریم تا جمله ای را روی صفحه مانیتور به نمایش در آوریم مبنی بر اینکه
عدد ماه تولد خود را درج نمایید. برای همین منظور کد خود را به شکل زیر تکمیل می کنیم:
import java.util.Scanner;
public class MySwitchClass {
public static void main(String[] args) {
Scanner keyboardInput = new Scanner(System.in);
System.out.print(“Please enter the number of your birth month: “);
}
}
جمله داخل پرانتز به معنی “لطفاً عدد ماه تولد خود را وارد نمایید:” می باشد. در این
مرحله از کار ما می توانیم پروژه خود را اجرا کنیم اما تنها خروجی برنامه نشان دادن همین جمله
است که در باال توضیح داده شد. حال یک متغیر از جنس int تحت عنوان monthNumber به
معنی “شماره ماه” ایجاد می کنیم. هر متغیر نیاز به یک Value یا مقدار می باشد که در این جا
به طور مثال با قرار دادن یک عالمت = و عددی همچون 21 می توان این مقدار را برای متغیر
خود تعریف کرد. اما کاری که در اینجا می خواهیم انجام دهیم این است که مقدار متغیر خود را
به صورت دینامیک وارد برنامه خود کنیم و به همین خاطر است که از کالس Scanner استفاده
می کنیم. برای این منظور کد خود را به شکل زیر تکمیل می کنیم:
import java.util.Scanner;
public class MySwitchClass {
public static void main(String[] args) {
Scanner keyboardInput = new Scanner(System.in);
System.out.print(“Please enter the number of your birth month: “);
int monthNumber = keyboardInput.nextInt();
}
}
در اینجا به جای آنکه پس از عالمت = یک عدد وارد نماییم، شئیی از کالس Scanner تحت
عنوان keyboardInput که در مرحله پیش ایجاد کردیم را فرا می خوانیم. سپس یک نقطه به
دنبال آن قرار داده و بالفاصله پنجره ای به شکل زیر نمایان می شود و اگر این اتفاق نیفتاد می
توان دکمه های کنترل و Space را به طور هم زمان می فشاریم:
در این پنجره برای تکمیل کد تعدادی پیشنهاد مشاهده می شود که از میان آن ها متد ()nextInt
مورد نیاز ما است چرا که متغیر ما از جنس int است. الزم به ذکر است که اگر زمانی نیاز داشتیم
تا اعداد اعشاری را از طریق کیبورد وارد برنامه خود کنیم، پس از انتخاب متغیری از جنس
double می بایست در این مرحله گزینه ()nextDouble را انتخاب کنیم. )برای آشنایی بیشتر
با متدهای کالس Scanner به آموزش قسمت دوازدهم رجوع نمایید(.
پس از کلیک کردن بر روی گزینه ()nextInt یک عالمت ; در انتهای Statement خود قرار
می دهیم تا آن را به پایان برسانیم.
در این مرحله از آموزش، مطلب جدید که همان استفاده از switch است را توضیح خواهیم داد.
در واقع ساختار switch همانند ساختار if است به عبارت دیگر به صورت {}()switch نوشته
می شود که داخل پرانتز می بایست پارامتر ورودی که در اینجا همان شماره ماه است وارد شود و
داخل دو عالمت {} می بایست دستورات شرطی قرار گیرند. برای ادامه کار، نام متغیر خود که
همان monthNumber است را داخل پرانتز می نویسیم و کد خود را به شکل زیر تکمیل می
کنیم:
import java.util.Scanner;
public class MySwitchClass {
public static void main(String[] args) {
Scanner keyboardInput = new Scanner(System.in);
System.out.print(“Please enter the number of your birth month: “);
int monthNumber = keyboardInput.nextInt();
switch(monthNumber){
}
}
}
حال مابین دو عالمت {} قرار گرفته مقابل switch می بایست case ها و یا “مواردی” را
تعریف کنیم که بر اساس آن، نام ماه انتخابی در مرحله قبل مشخص شده و سپس روی صفحه
مانیتور نمایش داده شود. برای همین منظور کد خود را به شکل زیر تکمیل می کنیم:
import java.util.Scanner;
public class MySwitchClass {
public static void main(String[] args) {
Scanner keyboardInput = new Scanner(System.in);
System.out.print(“Please enter the number of your birth month: “);
int monthNumber = keyboardInput.nextInt();
switch (monthNumber) {
case 1 :
System.out.println(“You were born in Farvardin.”);
break;
}
}
}
در واقع با تکمیل کد خود به این شکل به کامپیوتر دستور می دهیم که اگر Value ورودی از
طریق کیبورد به متغیری از جنس int تحت عنوان monthNumber معادل با 1 بود، جمله
.You were born in Farvardin به معنی “شما در ماه فروردین متولد شدید.”
نمایش داده شود. در این مرحله دستور ;break را توضیح نخواهیم داد چرا که در آموزش بعد به
اهمیت آن بیشتر پی خواهیم برد)به خاطر داشته باشیم که پس از کلید واژه case می بایست
عالمت : قرار داد و پس از کلید واژه break عالمت ; قرار داد(. حال با copy و paste کردن
بخش جدید کد به تعداد یازده بار دیگر، دستورات شرطی را برای کلیه ماه های سال ایجاد می
کنیم و آن ها را برای یازده ماه دیگر ویرایش می کنیم و در نهایت کد ما به شکل زیر در خواهد
آمد:
import java.util.Scanner;
public class MySwitchClass {
public static void main(String[] args) {
Scanner keyboardInput = new Scanner(System.in);
System.out.print(“Please enter the number of your birth month: “);
int monthNumber = keyboardInput.nextInt();
switch (monthNumber) {
case 1 :
System.out.println(“You were born in Farvardin.”);
break;
case 2 :
System.out.println(“You were born in Ordibehesht.”);
break;
case 3 :
System.out.println(“You were born in Khordad.”);
break;
case 4 :
System.out.println(“You were born in Tir.”);
break;
case 5 :
System.out.println(“You were born in Mordad.”);
break;
case 6 :
System.out.println(“You were born in Shahrivar.”);
break;
case 7 :
System.out.println(“You were born in Mehr.”);
break;
case 8 :
System.out.println(“You were born in Aban.”);
break;
case 9 :
System.out.println(“You were born in Azar.”);
break;
case 10 :
System.out.println(“You were born in Day.”);
break;
case 11 :
System.out.println(“You were born in Bahman.”);
break;
case 12 :
System.out.println(“You were born in Esfand.”);
break; } }
حال می توانیم برنامه خود که تا نود درصد تکمیل شده است را اجرا کنیم. پس از زدن دکمه
Run نرم افزار اکلیپس پنجره ای به شکل زیر ظاهر می شود:
حال با کلیک کردن داخل Console یک عدد از 2 تا 21 را وارد می کنیم. به طور مثال عدد 2
را وارد می کنیم سپس دکمه Enter را می زنیم. پس از اجرای برنامه نتیجه ای مشابه تصویر زیر
خواهیم دید:
چنانچه برنامه را مجدد اجرا کرده و عددی دیگری همچون 7 را وارد برنامه کنیم، برنامه case
مرتبط با آن را فرا خواهد خواند. حال اگر کاربر عددی به غیر از اعداد 2 تا 21 را وارد کند چه
اتفاقی خواهد افتاد:
همانطور که در تصویر فوق مشاهده می شود با وارد کردن عدد 13 که جزو case ها برنامه ما
نیست، برنامه هیچ چیزی نمایش نخواهد داد چرا دستوری برای چنین شرایطی تعریف نکرده ایم.
در قسمت نوزدهم پیرامون دستور break توضیحاتی خواهیم داد و عالوه بر آن خواهیم دید که
دستور default چگونه بر مشکلی که در تصویر فوق پیش آمده فائق خواهد شد.

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

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