0

آموزش برنامه نویسی جاوا

 
hosseinb68
hosseinb68
کاربر طلایی1
تاریخ عضویت : بهمن 1389 
تعداد پست ها : 1269
محل سکونت : بوشهر

آموزش برنامه نویسی جاوا - قسمت ۱۹: به کارگیری دستور break در شرط ها
شنبه 28 دی 1392  3:00 PM

 

  1. import java.util.Scanner;
  2.  
  3. public class BreakStatement {
  4. public static void main(String[] args) {
  5. Scanner keyboardInput = new Scanner(System.in);
  6. System.out.print("Please enter the number of your birth month: ");
  7. int monthNumber = keyboardInput.nextInt();
  8. switch (monthNumber) {
  9. case 1 :
  10. System.out.println("You were born in Farvardin.");
  11. break;
  12. case 2 :
  13. System.out.println("You were born in Ordibehesht.");
  14. break;
  15. case 3 :
  16. System.out.println("You were born in Khordad.");
  17. break;
  18. case 4 :
  19. System.out.println("You were born in Tir.");
  20. break;
  21. case 5 :
  22. System.out.println("You were born in Mordad.");
  23. break;
  24. case 6 :
  25. System.out.println("You were born in Shahrivar.");
  26. break;
  27. case 7 :
  28. System.out.println("You were born in Mehr.");
  29. break;
  30. case 8 :
  31. System.out.println("You were born in Aban.");
  32. break;
  33. case 9 :
  34. System.out.println("You were born in Azar.");
  35. break;
  36. case 10 :
  37. System.out.println("You were born in Day.");
  38. break;
  39. case 11 :
  40. System.out.println("You were born in Bahman.");
  41. break;
  42. case 12 :
  43. System.out.println("You were born in Esfand.");
  44. break;
  45. }
  46. }
  47. }
  48.  
  49.  

در واقع پس از وارد کردن عددی در بخش Console و زدن دکمه Enter این داده ورودی وارد برنامه می شود و از طریق کلاس Scanner در متغیر int که ایجاد کردیم و نام آن را monthNumber گذاشتیم ذخیره می شود. سپس متغیر خود را در دستور switch فرا می خوانیم. در اولین فاز، دستور switch می سنجد که ببیند آیا داده متغیرش معادل با case 1 می باشد یا خیر. چنانچه معادل با عدد یک بود در این مرحله شرط موجود در case 1 که دستور System.out.println("You were born in Farvardin."); می باشد را انجام می دهد. به محض اینکه این دستور انجام شد، دستور break به برنامه می گوید که دیگر نیازی به اجرای دستورات بعدی نبوده و بلافاصله می بایست برود به آخر برنامه. حال فرض کنیم که عدد ورودی 7 است. در این صورت برنامه اول به سراغ اولین شرط می رود و مشاهده می کند که عدد 7 با case 1 مطابقت ندارد پس دستور break از برنامه می خواهد که به سراغ دومین شرط برود و باز هم می بیند که نیازش برآورده نمی شود و این کار آنقدر تکرار می شود تا به مورد هفتم می رسد. در این مرحله برنامه می بیند که تطبیق صورت گرفت پس دستور break برنامه ما را وادار می سازد تا مابقی شروط را نادیده گرفته و مستقیماً به آخر برنامه برود. حال ببینیم که اگر دستورات break را نداشته باشیم چه اتفاقی خواهد افتاد! برای همین منظور می توانیم یا کلیه دستورات break را به صورت Comment در آوریم و یا از برنامه حذف کنیم که در اینجا مورد اول منطقی تر به نظر می رسد که در این صورت کد ما به شکل زیر در خواهد آمد:

  1. import java.util.Scanner;
  2.  
  3. public class MySwitchClass {
  4. public static void main(String[] args) {
  5. Scanner keyboardInput = new Scanner(System.in);
  6. System.out.print("Please enter the number of your birth month: ");
  7. int monthNumber = keyboardInput.nextInt();
  8. switch (monthNumber) {
  9. case 1 :
  10. System.out.println("You were born in Farvardin.");
  11. // break;
  12. case 2 :
  13. System.out.println("You were born in Ordibehesht.");
  14. // break;
  15. case 3 :
  16. System.out.println("You were born in Khordad.");
  17. // break;
  18. case 4 :
  19. System.out.println("You were born in Tir.");
  20. // break;
  21. case 5 :
  22. System.out.println("You were born in Mordad.");
  23. // break;
  24. case 6 :
  25. System.out.println("You were born in Shahrivar.");
  26. // break;
  27. case 7 :
  28. System.out.println("You were born in Mehr.");
  29. // break;
  30. case 8 :
  31. System.out.println("You were born in Aban.");
  32. // break;
  33. case 9 :
  34. System.out.println("You were born in Azar.");
  35. // break;
  36. case 10 :
  37. System.out.println("You were born in Day.");
  38. // break;
  39. case 11 :
  40. System.out.println("You were born in Bahman.");
  41. // break;
  42. case 12 :
  43. System.out.println("You were born in Esfand.");
  44. // break;
  45. }
  46. }
  47. }
  48.  
  49.  

همانطور که در آموزش های پیشین توضیح داده شد برای Comment کردن بخشی از کد می توان نشانگر موس را روی خط مد نظر قرار دادن و دکمه کنترل را به همراه علامت / فشار می دهیم. در این مرحله مجدداً برنامه را اجرا می کنیم و عددی دلخواه را از میان 1 تا 12 وارد می سازیم و نتیجه ای عجیب مشابه تصویر زیر خواهیم دید:

920327-19-IMAGE 1.jpg

در واقع بدون حضور دستورات break برنامه هیچ مانعی بر سر راه خود برای اجرای کلیه دستورات نخواهد دید و آن ها را یکی پس از دیگری اجرا خواهد کرد مگر آنکه عدد 12 وارد شود. در حقیقت از آنجا که پس از case 12 دستور دیگری وجود ندارد برنامه ما فقط و فقط همان دستور را به نمایش در خواهد آورد و یا اگر عدد ورودی ما 10 باشد، برنامه مستقیماً به سراغ case 10 می رود و پس از اجرای آن و کلیه دستورات پس از آن که case 11 و case 12 می باشند به اتمام خواهد رسید و نتیجه ای مشابه تصویر زیر ارائه خواهد کرد:

920327-19-IMAGE 2.jpg

حال که با اهمیت دستور break آشنا شدیم می توانیم مجدداً با قرار دادن نشانگر موس خود روی خطوطی که این دستور در آن نوشته شده و فشردن هم زمان کلید های کنترل و علامت / آن ها را از حالت Comment بیرون در آوریم. نکته پایانی این قسمت از آموزش به بررسی این نکته می پردازد که زمان هایی ممکن است اتفاق افتد که کاربر به طور اشتباه عددی به غیر از 1 تا 12 را وارد می سازد مثلاً عدد 13 که در این صورت پس از اجرای برنامه خروجی زیر را خواهیم دید:

920327-19-IMAGE 3.jpg

در حقیقت از آنجا که هیچ گونه شرطی برای ورودی هایی به غیر از 1 تا 12 تعریف نکرده ایم، برنامه ما چیزی برای ارائه کردن در دست ندارد. برای رفع این مشکل می بایست از دستور default استفاده کنیم. در واقع این دستور حاکی از آن است که هر آنچه که به غیر از شروط case 1 تا case 12 وارد برنامه شد، می بایست شرط default اجرا شود. حال به تکمیل کد خود می پردازیم تا به برنامه دستور دهیم که اگر کاربری عددی به غیر از 1 تا 12 انتخاب کرد، جمله You made a mistake boy! را به معنی "پسر اشتباه کردی!" را نمایش دهد. برای همین منظور کد خود را به شکل زیر تکمیل می کنیم:

  1. import java.util.Scanner;
  2.  
  3. public class MySwitchClass {
  4. public static void main(String[] args) {
  5. Scanner keyboardInput = new Scanner(System.in);
  6. System.out.print("Please enter the number of your birth month: ");
  7. int monthNumber = keyboardInput.nextInt();
  8. switch (monthNumber) {
  9. case 1 :
  10. System.out.println("You were born in Farvardin.");
  11. break;
  12. case 2 :
  13. System.out.println("You were born in Ordibehesht.");
  14. break;
  15. case 3 :
  16. System.out.println("You were born in Khordad.");
  17. break;
  18. case 4 :
  19. System.out.println("You were born in Tir.");
  20. break;
  21. case 5 :
  22. System.out.println("You were born in Mordad.");
  23. break;
  24. case 6 :
  25. System.out.println("You were born in Shahrivar.");
  26. break;
  27. case 7 :
  28. System.out.println("You were born in Mehr.");
  29. break;
  30. case 8 :
  31. System.out.println("You were born in Aban.");
  32. break;
  33. case 9 :
  34. System.out.println("You were born in Azar.");
  35. break;
  36. case 10 :
  37. System.out.println("You were born in Day.");
  38. break;
  39. case 11 :
  40. System.out.println("You were born in Bahman.");
  41. break;
  42. case 12 :
  43. System.out.println("You were born in Esfand.");
  44. break;
  45. default:
  46. System.out.println("You made a mistake boy!");
  47. break;
  48. }
  49. }
  50. }
  51.  

حال پس از اجرای برنامه و وارد کردن عددی به غیر از اعداد 1 تا 12 برنامه ما به درستی کار کرده و به ما اخطار خواهد داد:

920327-19-IMAGE 4.jpg

در پایان این قسمت از آموزش به برنامه نویسان مبتدی پیشنهاد می شود که از Copy کردن کدها از داخل آموزش خودداری نموده و سعی کنند خود کد ها را در محیط اکلیپس بنویسند چرا که با این کار هم می توانند مهارت سریع تایپ کردن خود را بهبود بخشیده و در ضمن راحت تر خواهند توانست به منطق پشت هر خط از کد پی ببرند زیرا در حین کدنویسی حتماً می بایست در مورد کاری که انجام می دهیم فکر کنیم که در غیر این صورت ممکن است بیشتر مرتکب اشتباه شویم.

تشکرات از این پست
دسترسی سریع به انجمن ها