آموزش آرایه های چند بعدی در جاوا

Array هایی که تاکنون استفاده کرده اید تناه یک ستون داده دارند. اما می توانید یک array برای نگهداری بیشتر از یک ستون تنظیم کنید. این array ها چند بعدی نامیده می شوند. به عنوان مثال یک صفحه ی گسترده را با ردیف ها و ستون ها در نظر بگیرید. اگر 6 ردیف و 5 ستون داشته باشید، صفحه ی گسترده ی شما می تواند 30 عدد را در خود داشته باشد، که ممکن است مانند تصویر زیر به نظر برسد:

آموزش جاوا

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

1
int[ ][ ] aryNumbers = new int[6][5];

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

1
2
3
4
5
aryNumbers[0][0] = 10;
aryNumbers[0][1] = 12;
aryNumbers[0][2] = 43;
aryNumbers[0][3] = 11;
aryNumbers[0][4] = 22;

بنابراین اولین ردیف، ردیف 0 می باشد. سپس ستون ها از 0 تا 4 می باشند که 5 آیتم هستند. برای پر کردن دومین ردیف کد زیر لازم می باشد:

1
2
3
4
5
aryNumbers[1][0] = 20;
aryNumbers[1][1] = 45;
aryNumbers[1][2] = 56;
aryNumbers[1][3] = 1;
aryNumbers[1][4] = 33;

اعداد ستون همان است، اما اعداد مربوط به ردیف همه 1 نی باشند.

تکنیک مورد نیاز برای دسترسی به همه ی آیتم ها در یک array چند بعدی، استفاده از یک loop داخل یکی دیگر می باشد. در اینجا کدی را مشاهده می کنید برای دسترسی به همه ی اعداد در بالا. این برنامه از یک double برای loop استفاده می کند:

آموزش جاوا

اولین for loop برای ردیف ها استفاده می شود و دومین for loop برای ستون ها. در اولین چرخش از اولین loop، مقدار متغیر i عدد 0 خوهد شد. کد داخل for loop یک loop دیگر می باشد. تمام این loop دوم هنگامی که مقدار متغیر i عدد 0 باشد، اجرا خواهد شد. for loop دوم از یک متغیر به نام j استفاده خواهد کرد. متغیرهای i و j برای دسترسی به array قابل استفاده می باشند.

1
aryNumbers[ i ][ j ]

بنابراین سیستم دو loop برای وارد کردن همه ی مقادیر به یک array چند بعدی استفاده می شود، ردیف به ردیف.

تمرین: برنامه ی فوق در جایی به پایان می رسد که در آن در حال نوشتن برنامه ای برای چاپ تمام مقادیر از صفحه ی گسترده هستیم. وقتی که این کار انجام می شود، پنجره ی Output چیزی شبیه به تصویر زیر خواهد بود:

آموزش جاوا

Array های چندبعدی می توانند گول زننده نیز باشند، اساسا به این دلیل که حفظ مسیر ستون ها و ردیف های شما سخت می باشد!

 

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

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

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

1
2
3
4
5
6
String[ ] aryString = new String[5] ;
aryString[0] = "This";
aryString[1] = "is";
aryString[2] = "a";
aryString[3] = "string";
aryString[4] = "array";

کد بالا یک رشته array را با 5 موقعیت تنظیم می کند. سپس متن به هر موقعیت در array اختصاص داده می شود.

در اینجا یک loop را مشاهده می کنید که در همه ی موقعیت های array قرار گرفته و هر چیزی را که در موقعیت ها وجود دارد، چاپ می کند:

1
2
3
4
int i;
for ( i=0; i < aryString.length; i++ ) {
System.out.println( aryString[i] );
}

هنگامی که مقدار متغیری به نام I کمتر از طول array به نام aryString باشد، loop به چرخش خود ادامه می دهد.

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

آموزش Java

شما می توانید یک مرتب سازی روی رشته ی array ها اجرا کنید، درست مانند کاری که می توانید با اعداد صحیح انجام دهید. اما مرتب سازی یک ترتیب صعودی براساس حروف الفبا می باشد، به این معنا که aa قبل از ab قرار می گیرد. به هرحال جاوا برای مقایسه ی یک حرف در رشته ی شما با یک رشته ی دیگر از کاراکترهای یونیکد (Unicode) استفاده می کند. این به این معناست که حروف بزرگ قبل از حروف کوچک قرار می گیرند. کد زیر را امتحان کنید:

آموزش Java

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

آموزش Java

گرچه ما array را مرتب کرده ایم، اما لغت This در ابتدا قرار می گیرد. اگر یک مرتب سازی الفبایی باشد، انتظار دارید که لغت a در ابتدا قرار بگیرد. این اتفاق می افتد اگر تمام حروف کوچک باشند. در کد برنامه نویسی خود T بزرگ از لغت This را به t کوچک تغییر دهید. اکنون برنامه را مجددا اجرا کنید. پنجره ی Output به شکل زیر نمایش داده می شود:

آموزش Java

همانطور که مشاهده می کنید، لغت this اکنون در پایین قرار دارد. در بخش بعد نگاه دقیق تری به رشته ها خواهیم داشت. بنابراین اکنون زیاد نگران این مورد نباشید. در عوض تمرین های زیر را بررسی کنید.

تمرین: یک array را تنظیم کنید تا مقادیر زیر را در خود داشته باشد: 23, 6, 47, 35, 2, 14. برنامه ای بنویسید تا میانگین این 6 عدد را به دست آورید. ( می توانید ار اعداد صحیح برای این تمرین استفاده کنید که پاسخ شما را گرد خواهد کرد. ) تمرین: با استفاده از مقادیر بالا، می توانید کاری کنید که برنامه ی شما بالاترین عدد را در array چاپ کند. تمرین: با استفاده از همان array در بالا می توانید کاری کنید که برنامه ی شما فقط اعداد فرد را چاپ کند. 

 

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

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

متودهای داخلی دیگر جاوا به شما اجازه می دهند تا array های خود را مرتب سازید. برای استفاده از متود مرتب سازی array ها، ابتدا نیاز به مراجعه به یک کتابخانه ی جاوا به نام Arrays دارید. شما این کار را با عبارت import انجام می دهید. می توانید آن را با your aryNums programme امتحان کنید. عبارت import زیر را اضافه کنید:

آموزش java

1
import java.util.Arrays;

کد شما باید مشابه کد ارائه شده ی ما در زیر باشد:

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

1
Arrays.sort( aryNums );

ابتدا لغت Array را تایپ کرده و سپس یک نقطه تایپ کنید. به محض اینکه نقطه را تایپ کردید، NetBeans لیستی از مواردی را نمایش خواهد داد که می توانید با array ها انجام دهید. لغت "sort" را تایپ کنید. سپس نام ردیف مورد نظر را که می خواهید مرتب کنید، بین یک جفت پرانتز قرار دهید. ( توجه کنید که نیازی به کروشه بعد از نام array ندارید.) و این برای مرتب سازی array کافی نمی باشد؛ در اینجا کدی را مشاهده می کنید که می توانید امتحان کنید:

آموزش java

چرخش for loop در انتها ادامه پیدا می کند تا اینکه مقادیر را در هر موقعیت چاپ کند. وقتی کد اجرا می شود، خروجی مانند شکل زیر خواهد بود:

آموزش java

همانطور که مشاهده می کنید، array با یک ترتیب صعودی مرتب شده است.

به هرحال مرتب سازی با ترتیب نزولی فقط با نوشتن کد مرتب سازی خودتان یا تغییر array به آبجکت های صحیح ( Integer objects) و سپس وارد کردن از کتابخانه ی Collections امکان پذیر می باشد. اگر نیاز به یک مرتب سازی نزولی داشته باشید، در اینجا کدی را مشاهده می کنید که فقط این کار را انجام می دهد ( اگر تمایل دارید می توانید از این کد رد شوید.):

آموزش java

مطمئنا موافق هستید که این مورد کمی گیج کننده است. 

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

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

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

 

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