آموزش آرایه و حلقه در جاوا

Array ها با loop ها در جای خود می آیند. در the previous section that مشاهده کردید که برای اختصاص دادن مقادیر به موقعیت های array از کد زیر استفاده می کردید:

aryNums[0] = 10;

اما اگر اعداد زیادی برای اختصاص دادن به یک array دارید، این کار اصلا عملی نمی باشد. به عنوان مثال یک برنامه ی قرعه کشی را در نظر بگیرید که باید اعداد 1 تا 49 را به موقعیت های یک array اختصاص دهد. به جای تایپ یک لیست طولانی از موقعیت ها و مقادیر array ، می توانید از یک loop استفاده کنید. در اینجا کدی را مشاهده می کنید که این کار را انجام می دهد:

آموزش Java

بنابراین یک array تنظیم می کنیم تا 49 مقدار صحیح را در خود حفظ کند. سپس کد loop قرار می گیرد. به شرط نهایی loop دقت داشته باشید.

i < lottery_numbers.length

Length یک پراپرتی از آبجکت های array می باشد که می توانید برای به دست آوردن اندازه ی array از آن استفاده کنید ( تعداد موقعیت هایی که دارد.). بنابراین، زمانی که مقدار در متغیر i کمتر از اندازه ی array می باشد، این loop به چرخش متداول خود ادامه خواهد داد.

برای اختصاص دادن مقادیر به موقعیت ها در array، می توان از خط زیر استفاده کرد:

lottery_numbers[i] = i + 1;

به جای مقدار hard-code بین کروشه های مربوط به نام array، متغیری به نام i داریم. به یاد داشته باشید که این متغیر هر بار با چرخش loop یک واحد افزایش می یابد. بنابراین هر موقعیت فقط با استفاده از مقدار loop قابل دسترسی می باشد. مقداری که به هر موقعیت اختصاص داده شده i + 1 می باشد. بنابراین مجددا مقدار افزایش یافته ی loop را داریم، این بار با یک واحد افزوده به آن. از آنجایی که مقدار loop از 0 شروع می شود، این برنامه اعداد 1 تا 49 را به شما ارائه خواهد داد.

خط دیگر در loop تنها مقداری را که در هر موقعیت قرار دارد، چاپ می کند. ( اگر تمایل داشتید می توانید کدی بنویسید که اعداد را در یک array قرار دهید. زمانی که مقادیر را در یک ردیف قرار دادید می توانید از 6 عدد اول به عنوان شماره های قرعه کشی استفاده کنید. از کد دیگری استفاده کنید برای مقایسه ی 6 شماره ی یک یوزر با شماره های برنده، اکنون یک برنامه ی قرعه کشی در اختیار دارید.)

 

  بازگشت به فهرست موضوعی: " آموزش گام به گام زبان شرین برنامه نویسی جاوا  "

آموزش آرایه ها در جاوا

اگر می خواهید که به طور موثر کد گذاری کنید، مفهومی که در برنامه نویسی باید به آن عادت کنید array می باشد. در این بخش در مورد array ها و چگونگی استفاده از آنها فراخواهید گرفت.

یک Array چیست؟

تاکنون با متغیرهایی کار کردید که فقط یک مقدار را در خود حفظ می کنند. متغیرهای صحیح که تنظیم کرده اید، فقط یک عدد را حفظ می کنند و متغیرهای رشته نیز فقط یک رشته از متن را در خود دارند. یک array (ردیف) روشی برای حفظ بیشتر از یک مقدار در یک زمان می باشد که در واقع شبیه لیستی از آیتم ها می باشد. یک array را می توان به عنوان ستون هایی در یک صفحه ی گسترده در نظر گرفت. شما می توانید یک صفحه ی گسترئه تنها با یک ستون و یا تعداد زیادی ستون داشته باشید. داده ای که در یک ردیف مجزا حفظ می شود می تواند مشابه تصویر زیر باشد:

آموزش Java

مانند یک صفحه ی گسترده، array ها برای هر ردیف دارای یک موقعیت عددی می باشند. این موقعیت ها در یک array از شروع شده و متداولا افزایش می یابند. هر موقعیت نیز در یک array می تواند یک مقدار در خود حفظ کند. در تصویر بالا موقعیت 0 دارای مقدار 10 و موقعیت 1 دارای 14، موقیت 2 دارای مقدار 36 و غیره می باشد.

برای برقراری یک array از اعداد، مشابه تصویر بالا، باید به Javaاعلام کنید که چه نوع داده ای قرار است وارد array شود ( اعداد صحیح، رشته ها، مقادیر Boolean و غیره). سپس لازم است که اعلام کنید که array دارای چند موقعین می باشد:

int[ ] aryNums;

تنها تفاوت بین برقراری یک متغیر عدد صحیح طبیعی و یک array یک جفت کروشه ای است که بعد از نوع داده قرار می گیرد. کروشه ها برای اعلام به Javaدر مورد این که شما قصد برقراری یک array را دارید، کافی هستند. نام array مربوط به تصویر بالا aryNums می باشد. درست مانند متغیرهای طبیعی، می توانید آنها را هر چیزی که می خواهید نام گذاری کنید ( با همان استثنائاتی که قبلا ذکر کردیم.)

اما این مورد فقط به Javaمی گوید که شما قصد تنظیم یک array عدد صحیح را دارید. این برنامه تعداد موقعیت هایی را که array باید حفظ کند، اعلام نمی کند. برای انجام این کار باید یک array object جدید تنظیم کنید:

aryNums = new int[6];

شما با نام array شروع کرده اید که با علامت تساوی دنبال می شود. پس از علامت تساوی به لغت کلیدی new و سپس مجددا نوع داده ی خود، نیاز دارید.پس از نوع داده یک جفت کروشه قرار می گیرد. بین کروشه ها نیاز به اندازه ی array دارید. اندازه در واقع تعداد موقعیت هایی است که array باید حفظ کند.

اگر تمایل دارید، می توانید همه ی آنها را روی یک قرار دهید:

int[ ] aryNums = new int[6];

بنابراین ما به جاوا اعلام می کنیم که یک array را با 6 موقعیت در آن تنظیم کند. پس از اجرای این خط، جاوا مقادیر پیش فرض را برای array اختصاص خواهد داد. از آنجایی که ما یک array مقدار صحیح تنظیم کرده ایم، مقادیر پیش فرض برای همه ی 6 موقعیت 0 خواهد بود.

برای اینکه در یک array مقادیر را به موقعیت های مختلف اختصاص دهید، این کار را به یک روش طبیعی انجام می دهید:

aryNums[0] = 10;

در اینجا مقدار 10 به موقعیت 0 در یک array به نام aryNums اختصاص داده می شود. مجددا کروشه ها برای اشاره به هر موقعیت استفاده می شوند. اگر بخواهید مقدار 14 را به یک array با موقعیت 1 اختصاص دهید، کد مربوط مانند زیر خواهید بود:

aryNums[1] = 14;

و کد مربوط به مقدار 36 برای موقعیت 2 مانند زیر خواهد بود:

aryNums[2] = 36;

فراموش نکنید که از آنجایی که array ها از 0 شروع می شوند، سومین موقعیت در یک array دارای عدد شاخص 2 می باشد.

اگر بدانید که چه مقادیری قرار است در یک array قرار گیرند، می توانید آنها را مانند زیر تنظیم کنید:

int[ ] aryNums = { 1, 2, 3, 4 };

این متود در حال تنظیم یک array با استفاده از کروشه ها بعد از علامت تساوی، می باشد.در بین کروشه ها مقادیری را تایپ می کنید که array خواهد گرفت. اولین مقدار در موقعیت 0 و دومین مقدار در موقعیت 1 و غیره خواهد بود. توجه داشته باشید که هنوز پس از int نیاز به کروشه دارید، اما نیازی به لغت کلیدی new یا تکرار نوع داده و یا کروشه ها ندارید. اما این فقط مربوط می شود به نوع داده های مقادیر int، رشته و مقادیر char. به عبارت دیگر نیاز به لغت کلیدی new دارید. بنابراین می توانید این کار را انجام دهید:

String[ ] aryStrings = {"Autumn", "Spring", "Summer", "Winter" };

اما این کار را نمی توانید انجام دهید:

boolean[ ] aryBools = {false, true, false, true};

برای تنظیم یک boolean array هنوز نیاز به لغت کلیدی new دارید:

boolean[ ] aryBools = new boolean[ ] {false, true, false, true};

برای به دست آوردن مقادیر مربوط به array، نام array را تایپ کنید که با موقعیت array در یک کروشه دنبال می شود. مانند زیر:

System.out.println( aryNums[2] );

کد بالا هر مقداری که در ردیفی با موقعت 2 در یک array به نام aryNums باشد را چاپ می کند. اما اجازه بدهید کمی کدگذاذی تمرین کنیم.

یک پروژه ی جدید آغاز کرده و آن را به میل خود نامگذاری کنید. فراموش نکنید که نام گروه را به یک مورد واضح تغییر دهید.

کد زیر را در متود جدید Main تایپ کنید:

آموزش Java

وقتی برنامه را اجرا می کنید باید تصویر زیر را در پنجره ی Output مشاهده کنید:

آموزش Java

موقعیت عددی array را در print line از 2 به 5 تغییر دهید و در عوض 18 باید چاپ شود.

 

  بازگشت به فهرست موضوعی: " آموزش گام به گام زبان شرین برنامه نویسی جاوا  "

آموزش حلقه while در جاوا

نوع دیگری از loop که می توانید در آموزش Javaاستفاده کنید While loop می باشد. درک While loop ها بسیار راحت تر از for loop می باشد. در اینجا مشاهده می کنید که چگونه به نظر می رسند:

1
2
while ( condition ) {
}

بنابراین با لغت while با حروف کوچک، آغاز می کنید. شرایطی را که می خواهید امتحان کنید بین پرانتز قرار می گیرد. یک جفت آکولاد نیز پس از آن قرار می گیرد و کدی را که می خواهید اجرا کنید بین آکولادها قرار می گیرد. به عنوان مثال در اینجا یک while loop را مشاهده می کنید که متنی را چاپ می کند:

1
int loopVal = 0;
 
1
2
3
4
while ( loopVal < 5) {
System.out.println("Printing Some Text");
loopVal++;
}

شرایط مورد امتحان بین پرانتزها قرار گرفته است. ما می خواهیم در حالیکه متغیری به نام loopVal کمتر از 5 می باشد، looping را ادامه دهیم. کد ما ابتدا در داخل آکولادها یک خط از متن را چاپ می کند. سپس نیاز به افزایش متغیر loopVal داریم. اگر این کار را انجام ندهیم یک loop نامحدود خواهیم داشت، همانطور که راهی برای loopVal وجود ندارد تا بیشتر از مقدار اصلی خود از 0 شود.

گرچه ما از یک شمارنده استفاده کرده ایم تا به شرایط نهایی برسیم، در حالیکه loop ها به بهترین شکل استفاده می شوند وقتی که شما واقعا نیازی به محاسبه ی مقدار ندارید، اما در عوض فقط در حال بررسی مقدار می باشد. برای مثال هنگامی که هیچ کدام از کلیدهای صفحه کلید استفاده نمی شوند، می توانید looping را ادامه دهید. این مورد در بازیها متداول می باشد. برای خروج از while loop و همچنین خود بازی، می توان از حرف "X" استفاده کرد. مثال دیگر looping دور یک فایل متنی می باشد، در حالیکه هنوز انتهای فایل نرسیده است.

Do ... While

do … while loop در ارتباط با while loop می باشد. این مورد مانند زیر می باشد:

1
int loopVal = 0;
 
1
2
3
4
5
do {
System.out.println("Printing Some Text");
loopVal++;
}
while ( loopVal < 5 );

مجددا جاوا آنقدر loop را می چرخاند تا به شرایط نهایی برسد. این بار بخش "while" در قسمت پایین قرار دارد. اما شرایط همان است – looping انجام شود، در حالیکه مقدار داخل متغیر loopVal کمتر از می باشد. تفاوت بین این دو کد بین آکولادهای do … while است که نهایتا یک بار اجرا خواهد شد. با while loop شرایط حاصل خواهد شد. سپس Javaاز loop شما آزاد خواهد شد و حتی کد داخل آکولاد را اجرا نخواهد کرد. برای امتحان این مورد، ابتدا while loop را امتحان کنید. مقدار متغیر loopVal را به تغییر داده و سپس کد را اجرا کنید. باید متوجه شوید که متن چاپ نشده است. اکنون انجام loop را با مقدار5 برای loopVal امتحان کنید. متن یک بار چاپ خواهد شد و سپس جاوا از loop آزاد خواهد شد.

بسیار خوب، در اینجا looping را رها می کنیم. این موضوعی می باشد که نیاز است بیشتر به آن بپردازید. اما اگر هنوز در این موضوع کامل نیستید، نگران نباشید – در ادامه بیشتر فرا خواهید گرفت.

 

  بازگشت به فهرست موضوعی: " آموزش گام به گام زبان شرین برنامه نویسی جاوا  "

آموزش حلقه for در جاوا

برنامه نویسی که اکنون در حال انجام آن هستید یک برنامه نویسی پی در پی می باشد. این به این معناست که جریان صعودی می باشد، از بالا به پایین، با هر خط از کد که اجرا شده است، مگر اینکه شما درخواست دیگری از Java بکنید.

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

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

به عنوان یک مثال فرض کنید که می خواهید اعداد از یک تا 10 را با هم جمع کنید. شما این کار را در جاوا به راحتی می توانید انجام دهید، مانند زیر:

1
int addition = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10;

اما اگر بخواهید اعداد را از یک تا 1000 با هم جمع کنید، واقعا نمی خواهید از این متود استفاده کنید. در عوض می توانید از loop استفاده کنید تا مکررا وارد خطوط کد شوید تا اینکه به 1000 برسید. سپس می توانید از loop خارج شده و به راه خود ادامه دهید.

Java For Loops

با For Loops یکی از متداول ترین انواع loop ها آغاز خواهیم کرد. به نظر می رسد قسمت For از For Loops معنای خود را از دست داده باشد. اما می توانید آن را به این شکل در نظر بگیرید: loop برای یک مجموعه عدد از دفعات. ساختار For Loop مانند زیر می باشد:

1
2
3
for ( start_value; end_value; increment_number ) {
//YOUR_CODE_HERE
}

بنابراین بعد از لغت for با حروف کوچک، یک جفت آکولاد دارید. در داخل این آکولادها سه چیز لازم می باشد: مقدار آغازین برای loop، مقدار پایانی برای loop، و روشی برای به دست آوردن یک تعداد به تعداد دیگر. این فرایند افزایش عدد (increment number) نامیده می شود و معمولا 1 می باشد. اما لازم نیست اینطور باشد. اگر تمایل داشته باشید می توانید تا تعداد 10 نیز بالا بروید.

بعد از پرانتزها نیاز به یک جفت آکولاد دارید. آکولادها برای جداسازی آن بخشی از کد استفاده می شوند که می خواهید به طور مکرر اجرا شود. یک مثال می تواند این مورد را شفاف سازد.

برای این مورد یک پروژه ی جدید آغاز کنید. پروژه و گروه را می توانید به دلخواه خود نامگذاری کنید. (ما پروزه ی خود را "loops" و گروه را "ForLoops" نامیدیم. ) اکنون کد زیر را اضافه کنید:

آموزش Java

ما کار را با تنظیم یک مقدار صحیح آغاز کردیم که loopVal نامیده ایم. خط بعدی یک متغیر صحیح دیگر را تنظیم می کند. این متغیر برای مقدار نهایی loop استفاده می شود و به 11 تنظیم شده است. آنچه ما تصمیم داریم انجام دهیم چاپ اعداد از 0 تا 10 می باشد.

در داخل پرانتزهای for loop خط زیر را مشاهده می کنید:

1
loopVal =0; loopVal < end_value; loopVal++

اولین قسمت به جاوا می گوید که در چه شماره ای looping را آغاز کنید. در اینجا ما یک مقدار صفر را به متغیر loopVal اختصاص می دهیم. این اولین عدد در loop می باشد. بخش بعد از برخی منطق های شرطی استفاده می کند:

1
loopVal < end_value

این عبارت می گوید که loopVal کمتر از end_value باشد. for loop به چرخش خود ادامه خواهد داد در حالیکه مقدار داخل متغیر loopVal کمتر از متغیری به نام end_value می باشد. تا زمانیکه کمتر بودن loopVal از end_value درست باشد، جاوا looping را روی کد در بین آکولادها حفظ خواهد کرد.

بخش نهایی بین پرانتزهای for loop مانند زیر می باشد:

loopVal++

آنچه در اینجا انجام می دهیم این است که به جاوا می گوییم چگونه از مقدار آغازین در loopVal به عدد بعدی در ترتیب حرکت کند. می خواهیم از 0 تا 10 بشمریم. عدد بعد از 0 عدد 1 می باشد. loopVal++ راه کوتاه بیان عبارت "افزودن 1 به مقدار در متغیر" می باشد.

به جای بیان loopVal++ می توانیم عبارت زیر را نیز بنویسیم:

1
loopVal = loopVal + 1

در سمت راست علامت تساوی loopVal + 1 را داریم. بنابراین جاوا 1 را به هر چیزی که در متغیر loopVal ذخیره شده، اضافه می کند. زمانی که 1 را به مقدار اضافه کرده است، نتیجه را در داخل متغیر در سمت چپ تساوی ذخیره خواهد کرد. این مجددا متغیر loopVal می باشد. نتیجه این است که افزوده شدن 1 به loopVal ادامه می یابد. این فرایند افزایش متغیر نامیده می شود. نماد تندنویسی متغیر ++ بسیار متداول می باشد:

1
2
int some_number = 0;
some_number++;

وقتی که کد بالا اجرا شود، مقدار some_number مقدار 1 خواهد بود. این راه کوتاه بیان زیر می باشد:

1
2
int some_number = 0;
some_number = some_number + 1;

برای پوشاندن آن، for loop در حال بیان مورد زیر می باشد:

Loop Start value: 0 Keep Looping While : مقدار آغازین کمتر از 11 می باشد. How to advance to the end value :افزودن 1 را به مقدار نهایی حفظ می کند.

در داخل پرانتزهای for loop عبارت زیر دیده می شود:

1
System.out.println("Loop Value = " + loopVal);

هر چیزی که در داخل متغیر loopVal می باشد، همراه با متن چاپ خواهد شد:

آموزش Java

بنابراین برنامه را در یک loop گیر انداخته ایم و آن را مجبور کرده ایم به طور مکرر اجرا شود. با هر اجرای loop مقدار 1 به loopValاضافه می شود. loop به چرخش خود ادامه خواهد داد، در حالیکه مقدار در داخل loopVal کمتر از مقدار در داخل end_value می باشد. هر چیزی که در داخل آکولادهای loop می باشد کدی است که پشت سر هم اجرا خواهد شد. و این تمام نکنه ی loop می باشد: اجرای کد آکولاد به طور پیوسته.

ئر اینجا کدی را می بینید که اعداد را از 1 تا 10 به هم اضافه می کند. آن را امتحان کنید:

آموزش Java

پاسخی که در پنجره ی Output دریافت می کنید 55 می باشد. کد نیز کم و بیش همان کد مربوط به loop قبلی می باشد. ما همان دو متغیر loopVal و end_value را تنظیم شده در بالا داریم. همچنین یک متغیر صحیح سومی هم داریم که addition نامیده می شود. این مقدار مجموع 1 تا 10 را حفظ خواهد کرد.

بین پرانتزهای for loop تقریبا همان مقدار آخرین بار می باشد: ما در حال looping هستیم در حالیکه loopVal کمتر از end_value می باشد؛ و در حال افزودن 1 به متغیر loopVal می باشیم. تنها تفاوت این است که اکنون مقدار آغازین 1 می باشد.

بین آکولادها فقط یک خط کد وجود دارد:

1
addition = addition + loopVal;

این خط مجزا اعداد 1 تا 10 را با هم جمع می کند. اگر در مورد چگونگی کار کردن آن گیج شده اید، از سمت راست علامت تساوی آغاز کنید:

1
addition + loopVal;

اولین اجرای loop، متغیر addition مقدار 0 را در خود حفظ می کند. در این حین متغیر loopVal مقدار 1 را در خود دارد. جاوا 0 را به 1 اضافه خواهد کرد. سپس نتیجه را در متغیر سمت چپ علامت تساوی ذخیره خواهد کرد. مجددا این متغیر addition (مجموع) می باشد. هرآنچه از قبل در متغیر addition حفظ شد (0)، پاک خواهد شد و با یک مقدار جدید (1) جایگزین می شود.

در دومین اجرای loop، مقادیر در دو متغیر عبارتند از:

1
addition (1) + loopVal (2);

واضح است که پاسخ 1+2 عدد 3 می شود. بنابراین 3 مقدار جدیدی است که در سمت چپ تساوی ذخیره خواهد شد.

در سومین اجرای loop مقادیر جدید عبارتند از:

1
addition (3) + loopVal (3);

جاوا 3 را با 3 جمع خواهد کرد و 6 را در سمت چپ تساوی ها ذخیره می کند. این چرخش ادامه می یابد تا اینکه loop به پایان برسد. نتیجه ی نهایی 55 می باشد.(دقت داشته باشید که بعد از آخرین آکولاد از loop، خط چاپی ما خارج از for loop می باشد. )

تمرین: کد خود را طوری تغییر دهید که جاوا اعداد را از 1 تا 100 اضافه کند. پاسخی که در یافت می کنید 5050 می باشد. تمرین: یک برنامه ی جدول زمانبندی بنویسید. برنامه باید از یوزر بخواهد تا یک عدد را وارد کند. سپس این عدد به عنوان دفعات مربوط به جدول استفاده خواهد شد. بنابراین اگر یوزر عدد 10 را وارد کند، جدول 10 مرتبه باید نمایش داده شود. کمک برای این تمرین: for loop شما فقط به دو خط کد بین آکولادها نیاز دارد و یکی از آنها خط چاپ (print line) می باشد. شما تنها به یک خط مجزا نیاز دارید تا پاسخ های جدول خود را محاسبه کنید. تقریبا باید چگونگی گرفتن عدد از یوزر را بدانید. این کار در آکولادهای loop استفاده می شود تا پاسخ به ضرب شما را انجام دهد. جول شما تنها نیاز به رفتن از 1 تا 10 را دارد. تمرین از for loop برای چاپ اعداد فرد از 1 تا 10 استفاده کنید. ( برای انجام آسان این تمرین در مورد افزایش مقدار loop فکر کنید که سومین آیتم بین پرانتزها می باشد.) یکی از راه های سخت انجام تمرین بالا استفاده از اپراتوری است که هنوز با آن آشنایی ندارید – اپراتور modulus. این اپراتور زمانی استفاده می شود که یک عدد را تقسم کرده و باقیمانده را نگاه می دارید. بنابراین 10 Mod 3 عدد 1 می باشد، زیرا 10 تقسیم بر 3 می شود 3. باقیمانده نیز 1 می باشد که آن را حفظ می کنید. اپراتور Modulus در جاوا نماد درصد می باشد که تا حدی گیج کننده است. مانند زیر:

1
2
3
int remainder;
int total = 10
remainder = total %3

بنابراین عددی را که می خواهید تقسیم کنید در ابتدا قرار می گیرد. سپس یک نماد درصد تایپ می کنید که پس از آن تقسیم کننده قرار می گیرد. پاسخ نیز باقیمانده می باشد.

در تمرین بالا می توانستید از 2 به عنوان عدد Mod استفاده کنید و سپس از عبارت IF در for loop برای امتحان باقیمانده استفاده کنید. (آیا متوجه می شوید که چرا 2 باید عدد Mod باشد؟)

 

  بازگشت به فهرست موضوعی: " آموزش گام به گام زبان شرین برنامه نویسی جاوا  "

آموزش Switch در جاوا

روش دیگر برای کنترل جریان برنامه های شما switch statement می باشد. یک switch statement به شما گزینه ی تست دامنه ای از مقادیر را برای متغیرهایتان ارائه می دهد. این عبارت می تواند به جای عبارت بلند و پیچیده ی if … else if استفاده شود. ساختر عبارت switch مانند زیر می باشد:

1
2
3
4
5
6
7
8
9
10
switch ( variable_to_test ) {
case value:
code_here;
break;
case value:
code_here;
break;
default:
values_not_caught_above;
}

بنابراین شما با لغت switch شروع کرده اید که با یک جفت آکولاد دنبال می شود. تمام دیگر بخش های این عبارت در بین آکولادها قرار می گیرند. متغیری که می خواهید چک کنید بین آکولادهای switch قرار می گیرد. بنابراین شما یک جفت آکولاد دارید. بخش های دیگر عبارت switch نیز بین دو آکولاد قرار می گیرد. برای هر مقداری که می خواهید چک کنید نیاز به لغت case دارید. سپس مقداری را دارید که قصد بررسی آن را دارید:

case value:

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

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

آموزش Java

اما در اینجا کد آن را مشاهده می کنید:

آموزش Java

اولیین کاری که کد انجام می دهد تنظیم مقداری برای امتحان کردن می باشد. مجددا ما یک متغیر صحیح را تنظیم کرده و آن را user می نامیم. مقدار را بر روی 18 تنظیم کرده ایم. عبارت switch متغیر یوزر را چک کرده و آنچه در آن است را مشاهده خواهد کرد. سپس از طریق هر یک از عبارات مورد وارد خواهد شد. وقتی موردی را پیدا می کند که هماهنگ می باشد، متوقف خواهد شد و کد را برای آن مورد اجرا خواهد کرد. سپس از عبارت switch گریز خواهد داشت.

برنامه را امتحان کنید. مقادیر مختلفی برای متغیر یوزر وارد کرده و نتیجه را مشاهده کنید. متاسفانه نمی توانید برای دامنه ای از مقادیر بعد از مورد امتحان کنید و تنها برای یک مقدار میسر می باشد. بنابراین نمی توانید این کار را انجام دهید:

1
case (user <= 18):

اما این کار را می توانید انجام دهید:

1
2
3
4
case 1:
case 2:
case 3:
case 4:

بنابراین خط بالا دامنه ی مقادیر را از 1 تا 4 تست می کند. اما شما باید هر مقدار را "spell out" کنید. ( دقت داشته باشید که همه ی موردها و colon ها ( دو نقطه) کجا قرار می گیرند.)

در اتمام این بخش در مورد منطق شرطی، تمرین های زیر را امتحان کنید:

برنامه ای بنویسید که ورودی یوزر را از console قبول می کند. برنامه ها باید یک عدد گرفته و سپس محدوده های سنی زیر را امتحان کنید: 0 تا 10، 11 تا 20، 21 تا 30، 30 و بیشتر. یک پیغام در پنجره ی Output به فرمت زیر نمایش دهید:

1
user_age + " is between 21 and 30"

بنابراین اگر یوزر 27 را به عنوان سن وارد کند، پنجره ی Output مانند زیر خواهد بود:

آموزش Java

اگر یوزر 30 یا بیشتر از 30 باشد، فقط می توانید پیغام زیر را نمایش دهید:

1
"Your are 30 or over"

کمک برای این تمرین: برای دریافت مقادیر رشته از یوزر، این کار را انجام دادید:

1
String age = user_input.next( );

اما متود next( ) برای رشته ها استفاده می شود. سنی که از یوزر دریافت می کنید باید یک عدد صحیح باشد، بنابراین نمی توانید از next( ) استفاده کنید.

اگر می خواهید چک کنید که یک رشته مشابه رشته ی دیگر می باشد، می توانید از متودی به نام equals استفاده کنید.

1
2
3
4
String user_name = "Bill";
if ( user_name.equals( "Bill" ) ) {
//DO SOMETHING HERE
}

در کد بالا یک متغیر String را تنظیم کرده و آن را user_name نامیده ایم. سپس مقدار "Bill" به آن اختصاص داده ایم. بین آکولادهای IF، مجددا نام متغیر داریم که با یک نقطه دنبال می شود. پس از این نقطه لغت "equals" قرار می گیرد. بین یک جفت آکولاد دیگر رشته ای را تایپ می کنید که سعی در امتحان آن دارید.

نکته: در هنگام بررسی اگر یک رشته همانند رشته ی دیگر می باشد، این دو رشته باید دقیقا هماهنگ باشند. بنابراین "Bill" با "bill"متفاوت می باشد. مورد اول دارای B بزرگ و مورد دوم دارای b کوچک می باشد.

برای این تمرین برنامه ای بنویسید که از یک یوزر می خواهد تا از بین چهار رنگ انتخاب کند: سیاه، سفید، قرمز یا آبی. بسته به رنگ انتخاب شده، از عبارت های IF … ELSE IF برای نمایش یکی از پیغام های زیراستفاده کنید:

BLACK "شما باید یک Goth باشید." WHITE "شما یک فرد پاک هستید." RED " شما یک شخص سرگرم کننده و برون گرا هستید. " BLUE " شما طرفدار چلسی هستید، اینطور نیست؟ "

وقتی برنامه ی شما به پایان می رسد، پنجره ی Output باید شبیه به تصویر زیر باشد:

آموزش Java

 

  بازگشت به فهرست موضوعی: " آموزش گام به گام زبان شرین برنامه نویسی جاوا  "

آموزش مقادیر Boolean  در جاوا

مقدار Boolean مقداری با دو انتخاب می باشد: true یا false، yes یا no ، 1 یا 0. در جاوا نوعی متغیر برای مقادیر Boolean وجود دارد:

1
boolean user = true;

بنابراین به جای تایپ کردن int یا double یا string، فقط کافیست Boolean تایپ کنید (با b کوچک). پس از نام متغیر خود می توانید یک مقدار true یا false اختصاص دهید. دقت کنید که اپراتور مربوط به اختصاص دادن یک علامت تساوی ( = ) می باشد. اگر می خواهید بررسی کنید که یک متغیر مقداری از چیزی را دارد بخ دو علامت تساوی ( = =) احتیاج دارید.

این کد ساده را امتحان کنید:

1
2
3
4
5
6
7
boolean user = true;
if ( user == true) {
System.out.println("it's true");
}
else {
System.out.println("it's false");
}

بنابراین اولیت عبارت IF متغیر یوزر را بررسی می کند، اگر یک مقدار true داشته باشد. بخش دیگر false بودن آن را بررسی می کند. نیازی به عبارت "else if ( user = = false)" ندارید. در انتها اگر اگر چیزی true نباشد پس false می باشد. بنابراین می توانید از بخش دیگر استفاده کنید: تنها دو انتخاب با مقادیر Boolean وجود دارد.

تنها اپراتور شرطی ما در لیست اپراتور NOT می باشد. شما می توانید از این اپراتور با مقادیر Boolean استفاده کنید. نگاهی به کد زیر داشته باشید:

1
2
3
4
5
6
7
boolean user = true;
if ( !user ) {
System.out.println("it's flase");
}
else {
System.out.println("it's true");
}

این کد تقریبا مانند دیگر کدهای Boolean می باشد، به جز خط زیر:

1
if ( !user ) {

این بار قبل از متغیر یوزر اپراتور NOT را داریم. اپراتور NOT یک علامت تعجب ( ! ) می باشد و قبل از متغیری قرار می گیرد که سعی در امتحان کردن آن دارید. این اپراتور negation را امتحان می کند که به معنای امتحان کردن متضاد مقدار حقیقی می باشد. از آنجایی که متغیر یوزر بر روی true تنظیم شده است، !user مقادیر false را امتحان خواهد کرد. اگر یوزر بر روی false تنظیم شده بود، !user مقادیر true را امتحان می کرد. اینطور فکر کنید: اگر چیزی true نیست پس چه می تواند باشد؟ یا اگر false نیست پس چیست؟

 

  بازگشت به فهرست موضوعی: " آموزش گام به گام زبان شرین برنامه نویسی جاوا  "

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

برنامه نویسی که در حال حاضر در حال انجام آن هستید یک برنامه نویسی پی در پی می باشد، به این معنا که کد از بالا به پایین اجرا می شود. این برنامه نویسی خطی می باشد که در آن هر خط با شروع از اولین خط و پایان آخرین خط از کد خوانده خواهد شد.

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

منطق شرطی اساسا در مورد لغت IF می باشد: اگر یوزر کمتر از 18 سال سن دارد این پیغام را نمایش دهید، اگر یوزر بیشتر از بیشتر از 18 سال سن دارد، این پیغام را نمایش بده. خوشبختانه استفاده از منطق شرطی در جاوا ساده می باشد. اجازه بدهید با عبارات IF آغاز کنیم.

عبارات IF (IF Statements)

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

1
2
if ( Statement ) {
}

عبارت را با لغت if (با حروف کوچک) و یک جفت آکولاد شروع می کنید. این کد، کدی می باشد که تنها زمانی می خواهید اجرا کنید که شرایط شما برقرار باشد. شرایط مربوط در داخل آکولادها قرار می گیرد:

1
2
if ( user < 18 ) {
}

این شرط به این معناست " اگر یوزر کمتر از 18 سال سن دارد." اما به جای عبارت کمتر از نشان ( < ) استفاده کرده ایم. اگر یوزر کمتر از 18 سال باشد، می خواهیم که برنامه ای اجرا شود، برای مثال پیغامی نمایش داده شود:

1
2
3
if ( user < 18 ) {
//DISPLAY MESSAGE
}

اگر یوزر کمتر از 18 سال نباشد، پیغام بین آکولادها اجرا نخواهد شد و برنامه به مسیر خود، به سمت خطوط پایین کد، ادامه خواهد داد. هر آنچه در داخل آکولادها تایپ می کنید، تنها در صورتی اجرا خواهند شد که شرایط درست باشند . این شرایط بین آکولادها قرار می گیرند.

قبل از امتحان این مورد، نماد تندنویسی دیگر > می باشد، این نماد به معنای بزرگتر از می باشد. عبارت IF در بالا برای یوزرهای بزرگتر از 18 سال قابل اصلاح می باشد:

1
2
3
if ( user > 18 ) {
//DISPLAY MESSAGE
}

تنها مورد جدید در این کد نماد > می باشد. اکنون شرایط مربوط به یوزرهای بالاتر از 18 سال می باشد.

اما شرایط برای یوزرهایی با سن دقیقا 18 سال درست نیست. اگر می خواهید شرایط در مورد افراد 18 سال یا بالای 18 سال درست باشد، می توانید از عبارت بزرگتر یا مساوی استفاده کنید. نمادها برای این شرایط بزرگتر از ( > ) و مساوی با ( = ) می باشند.

1
2
3
if ( user >= 18 ) {
//DISPLAY MESSAGE
}

همچنین می توانید این شرایط را برای کوچکتر یا مساوی با به روش زیر چک کنید:

1
2
3
if ( user <= 18 ) {
//DISPLAY MESSAGE
}

کد بالا حاوی یک نماد ( < ) می باشد که با علامت مساوی دنبال می شود.

اجازه بدهید این مورد را در یک برنامه ی ساده امتحان کنیم.

یک پروژه ی جدید را با کلیک بر روی File > New Project از نوار منو در NetBeans آغاز کنید. شما می توانید پوشه و گروه خود را با هر نامی که می خواهید نام گذاری کنید. کد زیر را وارد کنید ( نام پوشه ی ما conditionallogic و گروه ما نیز IFStatements نامیده می شود.):

آموزش Java

یک متغیر صحیح را تنظیم کرده ایم و مقداری برابر 17 به آن اختصاص داده ایم. عبارت IF مورد " کمتر از 18 سال" را چک می کند. بنابراین پیغام بین آکولادها باید چاپ شود.

برنامه ی خود را اجرا کرده و آن را بررسی کنید. (NetBeans معمولا برنامه را در متن بولد شده در پنجره ی Projects اجرا می کند و نه آن کدی که شما نمایش داده اید. برای اجرای کد در پنجره ی coding در قسمتی از کد کلیک راست کنید. از منوی ظاهر شده Run File را انتخاب کنید.) . تصویر زیر را در پنجره ی Output باید مشاهده کنید:

آموزش Java

اکنون مقدار را برای متغیر یوزر از 17 به 18 تغییر دهید. برنامه ی خود را مجددا اجرا کنید. باید تصویر زیر را مشاهده کنید:

آموزش جاوا

بنابراین برنامه به خوبی و بدون پیغام خطا اجرا خواهد شد. اینجاست که چیزی چاپ نمی شود. دلیل آن این است که کد پیغام بین آکولادهای عبارت IF وجود دارد و عبارت IF در حال بررسی مقادیر کمتر از 18 می باشد. اگر شرایط برقرار نباشد، جاوا آکولادها را کلا نادیده گرفته و به کار خود ادامه می دهد.

تمرین: نماد "کوچکتر از یا مساوی با" را با جایگزین نماد کوچکتر از کنید. پیغام خود را طوری تغییر دهید تا با مورد " یوزر 18 سال یا کمتر از 18 سال است" هماهنگ باشد. برنامه ی خود را مجددا اجرا کنید. آیا پیغام را مشاهده می کنید؟ تمرین: مقدار یوزر را به 20 تغییر دهید. برنامه ی خود را مجددا اجرا کنید. آیا هنوز پیغام را مشاهده می کنید؟ شما می توانید بیشتر از یک عبارت IF در کد خود داشته باشید. کد زیر را امتحان کنید:

آموزش جاوا

این بار دو عبارت IF داریم. اولین عبارت مقادیر کمترا از یا برابر با 18 را بررسی می کند. دومین عبارت مقادیر بزرگتر از 18 را بررسی می کند. وقتی که کد با مقداری از 18 یا کمتر از 18 برای نتغیر یوزر اجرا می شود، خروجی مانند زیر می باشد:

آموزش جاوا

تغییر مقدار متغیر یوزر به 20 نیز نتیجه ی زیر را به دنبال خواهد داشت: بنابراین تنها یکی از عبارت های IF خروجی خط چاپی خواهد داشت و تمام آن بستگی به مقدار متغیر یوزر دارد. 

 

  بازگشت به فهرست موضوعی: " آموزش گام به گام زبان شرین برنامه نویسی جاوا  "

آموزش گزینه های پنل جاوا

گروه موثر دیگری برای قبول ورودی یوزر و نمایش نتایج گروه JOptionPane (گزینه های پانل) می باشد. این گروه در کتابخانه ی javax.swing واقع شده است. گروه JOptionPane به شما اجازه می دهد تا جعبه های ورودی مانند تصویر داشته باشید:

آموزش Java

و جعبه های پیغامی نیز مانند تصویر زیر:

آموزش Java

اجازه بدهید کد خود را از the previous section تطبیق دهیم و چند گزینه ی پانل (option panes) داشته باشیم.

اولین کاری که باید انجام دهید مراجعه به کتابخانه ی مورد نظر است.

1
import javax.swing.JOptionPane;

این به شما می گوید که ما قصد استفاده از گروه JOptionPane را داریم که در کتابخانه ی javax.swing واقع شده است.

اگر تمایلی به تطبیق کد قبل ندارید، می توانید یک پروژه ی جدید برای این مورد آغاز کنید.(اکنون باید بدانید که چگونه یک پروژه ی جدید ایجاد کنید. فقط به یاد داشته باشید که نام گروه را از Main به نام دیگری تغییر دهید. ما قصد داریم که گروهی به نام InputBoxes داشته باشیم. نام پوشه ی ما userinput خواهد بود.)

خط import را به پروژه ی جدید خود وارد کرده و پنجره ی کد شما باید مشابه تصویر زیر باشد:

آموزش Java

( علت وجود خطوط موجی این است که ما هنوز لز گروه JOptionPane استفاده نکرده ایم. زمانی که این کار را انجام دهیم این خطوط نیز محو خواهند شد. )

برای به دست آوردن یک جعبه ی وردی که یوزر در آن تایپ کند، می توانید از متد showInputDialog مربوط به JOptionPane استفاده کنید. درست مانند آخرین بار، ورودی را مجددا در متغیر نام (first name) ذخیره خواهیم کرد. بنابراین خط زیر را به متد اصلی خود اضافه کنید:

1
2
String first_name;
first_name = JOptionPane.showInputDialog("First Name");

به محض اینکه بعد از JOptionPane یک نقطه تایپ کنید، لیست زیر را مشاهده خواهید کرد:

آموزش Java

روی showInputDialog دابل کلیک کنید. بین آکولادهای showInputDialog، پیغامی را تایپ کنید که می خواهید در بالای تکست باکس نمایش داده شود. ما "First name" را تایپ کرده ایم. مانند تمام رشته ها لازم است که این عبارت در داخل علامت های نقل قول قرار بگیرد.

کد زیر را اضافه کنید که پس از آن می توانیم نام خانوادگی یوزر را دریافت کنیم:

1
2
String family_name;
family_name = JOptionPane.showInputDialog("Family Name");

این دو را به یکدیگر متصل کرده و متن نیز به آن اضافه کنید:

1
2
String full_name;
full_name = "You are " + first_name + " " + family_name;

برای نمایش نتیجه در یک پیغام، مورد زیر را اضافه کنید:

1
JOptionPane.showMessageDialog( null, full_name );

این بار ما از لیست showMessageDialog را می خواهیم. بین آکولادها ابتدا لغت null را مشاهده می کنیم. این لغت، لغت کلیدی جاوا می باشد که این پیغام ارتباطی با هیچ مورد دیگری در برنامه ندارد. پس از میرگول (کاما) متنی است که می خواهیم در جعبه ی پیغام نمایش دهیم. کل کد شما باید مانند تصویر زیر باشد:

آموزش Java

به خط واقع در پایین کد دقت کنید:

1
System.exit(0);

همانطور که از نامش پیداست، اطمینان می دهد که برنامه خارج می شود. اما همچنین با حذف آبجکت های ایجاد شده از حافظه، آن را برای ما مرتب می سازد.

اکنون کد خود را اجرا کنید. ( راه دیگری برای اجرای برنامه ی خود در NetBeans، کلیک راست کردن بر روی هر قسمتی از پنجره ی برنامه نویسی می باشد. از منوی ظاهر شده Run File را انتخاب کنید.)

جعبه ی ورودی First Name را مشاهده خواهید کرد. چیزی در داخل آن تایپ کرده و سپس روی OK کلیک کنید:

آموزش Java

وقتی که جعبه ی ورودی Family Name ظاهر می شود، یک نام خانوادگی تایپ کرده و روی ok کلیک کنید:

آموزش Java

پس از کلیک کردن روی ok جعبه ی پیغام ظاهر خواهد شد:

آموزش Java

برای اتمام برنامه روی ok کلیک کنید. جعبه های Input و Message بیشتر نیز فرمت می شوند. مورد زیر را برای جعبه های Input خود امتحان کنید:

1
2
showInputDialog("First Name", "Enter Your First Name");
showInputDialog("Family", "Enter Your Family Name");

برای جعبه های Messages خود مورد زیر را امتحان کنید (مورد شما باید روی یک خط قرار بگیرد.):

1
showMessageDialog(null, full_name, "Name", JOptionPane.INFORMATION_MESSAGE);

به جای JOptionPane.INFORMATION_MESSAGE موارد زیر را امتحان کنید:

1
2
3
4
ERROR_MESSAGE
PLAIN_MESSAGE
QUESTION_MESSAGE
WARNING_MESSAGE

جعبه های Input فقط برای متن استفاده نمی شوند: آنها اعداد را نیز می پذیرند. برنامه ای بنویسید که یوزر را در دو برنامه،مساحت یک مستطیل و ارتفاع یک مستطیل، به جلو می برد. از یک جعبه ی پیغام برای محاسبه ی مساحت مستطیل استفاده کنید. ( به یاد داشته باشد که مستطیل حاصلضرب طول در عرض می باشد.) به هرحال برای این تمرین به کمک نیز نیاز خواهید داشت.

کمک مربوط به تمرین:

شنا باید از متغیر String برای به دست آوردن اعداد خود از یوزر استفاده کنید:

1
2
String breadth;
breadth = JOptionPane.showInputDialog("Rectangle Breadth");

به هرحال نمی توانید دو رشته را با یکدیگر ضرب کنید. لازم است رشته ها را به اعداد صحیح تبدیل کنید. می توانید به شکل زیر یک رشته را به یک عدد صحیح تبدیل کنید:

1
Integer.parseInt( string_to_convert )

بنابراین ابتدا Integer را تایپ کرده و سپس یک نقطه تایپ کنید. بعد از آن parseInt( ) را تایپ کنید. بین آکولادهای parseInt، نام متغیری را تایپ کنید که سعی در تغییر آن دارید.

یک متغیر int برای ناحیه تنظیم کنید. سپس می توانید روی همان خط ضرب کرده و اختصاص دهید؛

1
int area = Integer.parseInt( string_one ) * Integer.parseInt( string_two);

برای جعبه ی پیغام از الحاق (concatenation) استفاده کنید:

1
"answer = " + area

می توانید از هر نماد MESSAGE دیگری برای جعبه ی پیغام خود استفاده کنید.

 

  بازگشت به فهرست موضوعی: " آموزش گام به گام زبان شرین برنامه نویسی جاوا  "