جاوا از ابتدا، بخش پانزدهم 5/5 (1)

0
651

حلقه ها در جاوا

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

فرض کنید که می خواهید اعداد ۱ تا ۱۰ را با هم جمع کنید. می توانید این کار را به سادگی در جاوا مانند زیر انجام دهید (بدون حلقه):

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

اما به این فکرکنید که شاید بخواهید اعداد ۱ تا ۱۰۰۰ را با هم جمع کنید! قطعا نمی توان از روش بالا استفاده کرد. اما استفاده از حلقه به ما این امکان را می دهد تا هزار بار عمل جمع را تنها با نوشتن یک خط عمل جمع ساده انجام دهیم! و سپس از حلقه خارج شویم.

حلقه For در جاوا

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

for (عدد افزایشی; مقدار پایان;مقدار شروع){

کدی که تکرار می شود
}

پس بعد از واژه “for”(با حروف کوچک)، پرانتز باز و بسته داریم و درون پرانتز سه چیز می نوسیم: مقدار شروع برای حلقه، مقدار پایان برای حلقه و راهی برای رفتن از یک عدد به عددی دیگر. که به عدد افزایشی معروف است و به طور معمول ۱ است اما همیشه اینطور نیست و می تواند هر عددی باشد. و بعد از پرانتزها هم ۲ براکت داریم که کد مورد نظر برای تکرار میان آن دو نوشته می شود. با یک مثال همه چیز روشن خواهد شد:

یک پروژه جدید ایجاد کنید، آن را به دلخواه نام گذاری کنید.( ما نام پروژه را “loops” و نام کلاس را “ForLoops” گذاشتیم). حالا کد زیر را اضافه کنید:

for_loop_1

با تعریف یک متغیر integer شروع کرده ایم که loopVal نام دارد. خط بعدی نیز برای تعریف متغیر دیگری به نام endValue است. این متغیر، همان مقدار پایانی حلقه را مشخص می کند. که عدد ۱۱ در آن ذخیره شده است. کاری که می خواهیم انجام بدهیم چاپ اعداد ۰ تا ۱۰ است. در میان پرانتز حلقه کد زیر را نوشته ایم:

loopVal=0;loopVal<endValue;loopVal++

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

loopVal<endValue

که به جاوا اعلام می دارد که حلقه تا زمانی باید تکرار شود که مقدار متغیر loopVal از مقدار متغیر endValue کوچکتر باشد. تا زمانی که این شرط برقرار باشد حلقه تکه کد داخل خود را تکرار می کند. قسمت سوم در میان پرانتز را ببینید:

loopVal++

کاری که در این قسمت انجام دادیم این است که به جاوا بگوییم چگونه به صورت ترتیبی، از مقدار شروع در loopVal به عدد بعدی برود. ما می خواهیم از ۰ تا ۱۰ بشماریم. عدد بعد از ۰، عدد یک است. ++loopVal یک راه کوتاه است به جای این که بنویسیم loopVal=loopVal+1 در واقع همین کار را انجام می دهد و به loopVal یک واحد اضافه می کند. برای مثال کد زیر را ببینید:

int someNumber = 0;
someNumber = someNumber + 1;

در این کد جاوا به سمت راست علامت مساوی نگاه می کند و هر آنچه که در متغیر someNumber قرار دارد را با عدد ۱ جمع کرده و در متغیر سمت چپ علامت مساوی که همان someNumber است، می ریزد یعنی در انتها یک واحد به someNumber اضافه می شود. چون انجام این عمل(افزایش یک واحد) در حلقه ها پر استفاده است، این مدل کوتاه شده آن ابداع شد تا کار آسان تر شود یعنی به جای کد بالا کاقیست بنویسیم:

int someNumber = 0;
someNumber++;

در این کد هم  همانند کد قبل به someNumber یک واحد اضافه می شود.

حالا یک بار با هم حلقه را مرور می کنیم: مقدار شروع ما ۰ است، تا زمانی که مقدار شروع از مقدار پایان کوچکتر است ادامه بده، مقدار شروع را هر بار که کد درون حلقه اجرا شد، یک واحد افزایش بده. در میان براکت هم کد زیر را نوشتیم:

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

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

 

for_loop_2

پس ما موفق شدیم که یک تکه از کد را ۱۱ بار اجرا کنیم، یعنی برنامه را مجبور کردیم تا زمانی که متغیر loopVal از endValue کوچکتر است، هر کدی که داخل براکت نوشته شده است را اجرا کند دوباره باز گردد و یک واحد به loopVal اضافه کند و ادامه دهد. در واقع هدف اصلی حلقه همین است که یک تکه کد را هر چند بار که می خواهیم اجرا کند و ما به هدفمان رسیدیم!

حالا کد زیر را امتحان کنید. در این کد ما اعداد ۱ تا ۱۰ را با هم جمع می کنیم:

for_loop_3

پاسخی که در خروجی باید مشاهده کنید عدد ۵۵ است. کد بالا بسیار شبیه کد قبلی است که اعداد ۰ تا ۱۰ را چاپ می کرد. دوباره دو متغیر loopVal و endValue را داریم. این بار از متغیر integer دیگری به نام addition استفاده کرده ایم تا حاصل جمع اعداد را در آن ذخیره کنیم. داخل پرانتز حلقه هم بسیار شبیه بالاست با این تفاوت که این بار مقدار شروع عدد ۱ است. چون می خواهیم اعداد ۱ تا ۱۰ را جمع کنیم. البته از ۰ هم می توانستیم شروع کنیم چون در نتیجه تاثیری نمی گذاشت ولی حلقه یک بار اضافه تر بدون هیچ دلیلی تکرار میشد. در میان براکت هم فقط یک خط کد داریم:

addition = addition + loopVal;

این یک خط کد، اعداد ۱ تا ۱۰ را جمع می کند. اگر هنوز نمی دانید که چگونه این کار را انجام می دهد. از سمت راست علامت مساوی شروع کنید:

addition + loopVal;

در اولین اجرای حلقه، متغیر addition حاوی عدد ۰ است و همزمان با آن متغیر loopVal حاوی عدد ۱ است. جاوا عدد ۰ را با ۱ جمع می کند و نتیجه را درون متغیر سمت چپ علامت تساوی ذخیره می کند که همان متغیر addition است. هر آنچه که از قبل درون این متغیر بود(عدد ۰) پاک می شود به جای آن عدد ۱ ذخیره می شود. در دور دوم حلقه مقادیری که درون این دو متغیر قرار دارد به صورت زیر است:

addition(1) + loopVal(2);

عدد ۱ با ۲ جمع می شود که حاصل ۳ است و دوباره در سمت چپ تساوی ذخیره می شود. در دور سوم حلقه مقادیر به صورت زیر خواهد بود:

addition(3) + loopVal(3);

جاوا عدد ۳ را با ۳ جمع می کند و دوباره در سمت چپ تساوی ذخیره می کند. این عمل تا زمانی که شرط حلقه(loopVal<endValue) برقرار است تکرار می شود که در انتها حاصل عدد ۵۵ خواهد بود. توجه کنید که کدی که نتیجه نهایی را چاپ می کند بیرون از حلقه قرار دارد.

تمرین اول

کد را طوری تغییر دهید که حاصل جمع اعداد ۱ تا ۱۰۰ را محاسبه کند، خروجی باید عدد ۵۰۵۰ باشد.

تمرین دوم

برنامه ای بنویسید که یک عدد از کاربر بگیرد و حاصل ضرب آن عدد در اعداد ۱ تا ۱۰ را نشان دهد، مثلا اگر کاربر عدد ۱۰ را وارد کرد، خروجی برنامه به صورت زیر باشد:

output_times_table

پاسخ این تمرین را می توانید در انتهای بخش دانلود کنید.

تمرین سوم

از یک حلقه For برای چاپ اعداد فرد ۱ تا ۱۰ استفاده کنید.( برای حل مسئله به نحوه افزایش متغیر شروع در قسمت سوم میان پرانتز فکر کنید!)

یک راه دیگر برای حل این تمرین استفاده از علامت باقی مانده تقسیم است. این علامت به شما این امکان را می دهد تا باقی مانده تقسیم هر عدد به عددی دیگر را بیابید. در جاوا علامت باقی مانده تقسیم “%” است. برای مثال اگر می خواهید باقی مانده تقسیم ۴ بر ۲ را بیابید این گونه می نویسید: ۲%۴

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

رمز فایل فشرده:www.myempire.ir

دانلود پاسخ تمرین ها

در بخش بعد با while ادامه می دهیم…

به این مطلب امتیاز بدهید

ارسال یک پاسخ

لطفا دیدگاه خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید