نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی

با جاوا حلقه بزنید. حلقه بی نهایت برای (جاوا).

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

سپس نگاهی گذرا به مبحث اعداد تصادفی می اندازیم ( تصادفیشماره). بیایید نگاهی بیندازیم به جاوا-کلاس تصادفیو چگونه او می تواند در بازی ما به ما کمک کند.

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

در حالی که حلقه

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

Int x = 10; در حالی که (x> 0) (x--; // x هر پاس از حلقه یک بار کاهش می یابد)

اینجا چه خبره؟ اولین چیزی که خارج از حلقه است در حالی کهیک متغیر اعلام کردیم ایکسنوع بین المللیو مقدار "10" را به این متغیر اختصاص داد. سپس چرخه شروع می شود در حالی که، در شرایطی که نوشته شده است x> 0"- این بدان معنی است که کد نوشته شده در بدنه حلقه در حالی کهتا زمانی که متغیر اجرا می شود ایکسبیشتر 0 و شرط به مقدار نمی رسد نادرست... بنابراین، کد 10 بار اجرا می شود (x = 10، x> 0؛ x = 9، x> 0؛ x = 8، x> 0؛ x = 7، x> 0؛ x = 6، x> 0. x = 5، x> 0؛ x = 4، x> 0؛ x = 3، x> 0؛ x = 2، x> 0؛ x = 1، x> 0). در پاس اول حلقه x = 10در حال حاضر در دوم 9 ، در سوم 8 و غیره. و وقتی که ایکسبرابر خواهد بود 0 ، در این صورت شرط ورود به حلقه محقق نمی شود و پس از پایان حلقه برنامه از خط بعدی ادامه می یابد.

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

Int x = 10; در حالی که (x> 10) (// مقداری کد // اما تا زمانی که x بزرگتر از 10 نشود هرگز اجرا نخواهد شد)

علاوه بر این، هیچ محدودیتی در پیچیدگی عبارت شرط یا مقدار کدی که می توان در بدنه حلقه نوشت وجود ندارد:

Int playerLives = 3; int alienShips = 10; در حالی که (playerLives> 0 && alienShips> 0) (// همه کدهای بازی اینجا هستند // ... // ... // و غیره) // برنامه زمانی که playerLives یا alienShips = 0 در اینجا ادامه می یابد

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

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

Int x = 1; در حالی که (x> 0) (x--; // x اکنون 0 است و شرط دفعه بعد نادرست خواهد بود // اما این خط اجرا می شود // و این یکی // و حتی این یکی)

در مثال بالا، بدنه حلقه یک بار اجرا می شود. علاوه بر این، می توانید چنین شرایطی را تنظیم کنید که حلقه برای همیشه اجرا شود - این نامیده می شود چرخه بی پایاندر اینجا یک مثال است:

Int x = 0; در حالی که (درست) (x ++; // من واقعاً بزرگ خواهم شد!)

از چرخه آنها خارج شوید. کلمه کلیدی زنگ تفريح

اگر واقعاً نیاز به استفاده از یک حلقه بی‌نهایت داشته باشیم، چه می‌شود، اما برای اینکه بتوانیم تصمیم بگیریم در چه نقطه‌ای از آن خارج شویم. برای این منظور در جاوایک کلمه کلیدی وجود دارد زنگ تفريح... می توانیم استفاده کنیم زنگ تفريحزمانی که باید از حلقه "خروج" کنیم:

Int x = 0; در حالی که (درست) (x ++; // من واقعاً بزرگ خواهم شد! شکستن؛ // نه، شما نمی توانید! // کد اینجا قابل دسترسی نیست)

احتمالاً قبلاً حدس زده اید که امکان ترکیب ابزارهای مختلف تصمیم گیری، مانند اگردیگر،تعویضداخل حلقه ما در حالی کهو حلقه های دیگر که در زیر بررسی خواهیم کرد. مثلا:

Int x = 0; int tooBig = 10; while (true) (x ++; // من خیلی بزرگ می شوم! اگر (x == tooBig) (شکستن؛ // نه، شما نمی توانید.) // کد اینجا تا زمانی که x 10 شود در دسترس خواهد بود)

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

کلمه کلیدی ادامه هید

ادامه هیدتقریباً مشابه عمل می کند زنگ تفريح... کلمه کلیدی ادامه هیدشما را از بدنه حلقه بیرون می اندازد، اما سپس به جای ادامه دادن پس از بسته شدن پرانتز حلقه، عبارت شرطی را بررسی کنید، همانطور که در مورد زنگ تفريح... مثال زیر استفاده از ادامه هید:

Int x = 0; int tooBig = 10; int tooBigToPrint = 5; در حالی که (درست) (x ++; // من خیلی بزرگ می شوم! اگر (x == tooBig) (شکستن؛) // نه، شما این کار را نمی کنید. // کد اینجا فقط تا زمانی که x در دسترس خواهد بود 10 if (x> = tooBigToPrint) (// دیگر روی صفحه چاپ نمی شود، اما حلقه ادامه می یابد؛) // کد اینجا تا زمانی که x برابر با 5 شود در دسترس خواهد بود // کد برای چاپ x روی صفحه نمایش)

توضیح: ما متغیرها را اعلام و مقداردهی اولیه می کنیم. ما به حلقه می رویم - به مقدار متغیر اضافه می کنیم ایکسواحد (اکنون ایکس= 1). علامت زدن "1 است 10؟" - نادرست- اپراتور اول اگراجرا نشده است بررسی بعدی "آیا 1 بزرگتر یا مساوی 5 است؟" - نادرست- اپراتور دوم اگراجرا نشده است استنباط می کنیم ایکسروی صفحه نمایش

گزینه زمانی را در نظر بگیرید ایکسهنگام ورود به حلقه مقدار 5 را به خود می گیرد. ما به حلقه می رویم - به مقدار متغیر اضافه می کنیم ایکسواحد (اکنون ایکس= 6). علامت زدن "6 است 10؟" - نادرست- اپراتور اول اگراجرا نشده است بررسی بعدی "آیا 6 بزرگتر یا مساوی 5 است؟" - درست است، واقعی- وارد بدن می شویم اگرادامه هید، از حلقه خارج شوید و شرایط ورود به حلقه را بررسی کنید.

حالا گزینه کی است ایکسهنگام ورود به حلقه مقدار 9 را به خود می گیرد. ما به حلقه می رویم - به مقدار متغیر اضافه می کنیم ایکسواحد (اکنون ایکس= 10). علامت زدن "10 برابر با 10 است؟" - درست است، واقعی- وارد بدن می شویم اگرزنگ تفريح، از حلقه خارج شوید و کد در پشت پرانتز حلقه بسته شدن حلقه ادامه خواهد یافت در حالی که.

حلقه Do-while

تقریباً مانند حلقه قبلی، به استثنای یک ویژگی - بررسی اجرای عبارت شرطی بعد از بدنه حلقه رخ می دهد. این بدان معنی است که چرخه انجام دادن-در حالی کههمیشه حداقل یک بار اجرا خواهد شد. به یک مثال نگاه کنید:

Int x = 0; انجام دهید (x ++;) در حالی که (x< 10); //x теперь = 10

کلید واژه ها زنگ تفريح،ادامه هید

برای حلقه

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

برای (int i = 0; i< 10; i++){ //Что-то, что должно произойти 10 раз будет записано здесь }

کامپایلر آن را چگونه می بیند؟ مثل این:

برای (اعلان و مقداردهی اولیه؛ شرط؛ تغییر پس از هر حلقه) (// بدنه حلقه)

  • اعلان و مقداردهی اولیه- ما یک متغیر جدید از نوع ایجاد کرده ایم بین المللیبا نام منو به آن مقدار اختصاص داد 0 ;
  • وضعیت- مشابه حلقه های دیگری که قبلا در نظر گرفته شد، در اینجا شرایط ورود به حلقه را بررسی می کنیم. اگر مقدار به صورت محاسبه شود درست است، واقعی، سپس وارد بدنه چرخه می شویم.
  • تغییر دادن بعد از هر چرخه- در مثال بالا من++ یعنی بعد از پاس بعدی حلقه به مقدار متغیر میرسیم منیک (1) اضافه کنید. علاوه بر این، در تغییر متغیر، می توانیم و را بنویسیم منبرای تفریق یک، به عنوان مثال:
برای (int i = 10; i> 0; i -) (// شمارش معکوس) // کلید شروع، i = 0

کلید واژه ها زنگ تفريح،ادامه هیددر این حلقه نیز قابل استفاده است.

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

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

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

1. جعبه شماره 1 را بردارید و در گوشه دیگری قرار دهید.
2. جعبه شماره 2 را بردارید و در گوشه دیگری قرار دهید.
3. جعبه شماره 3 را بردارید و در گوشه دیگری قرار دهید.

100. جعبه شماره 100 را بردارید و در گوشه ای دیگر قرار دهید.

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

سه عبارت وجود دارد که حلقه ها را در زبان جاوا نشان می دهد - while، do / white و for. هر یک از عملگرها در موقعیت خاص خود ضروری هستند، اما عملگر for هنوز هم اغلب استفاده می شود. بیایید هر یک از عملگرها را به ترتیب در نظر بگیریم.

در حالی که بیانیه

نحو دستور while به صورت زیر است:

در حالی که (شرط) (// اعمال)

انجام یک پیش شرط خاص نیز انجام می شود، اما بر خلاف عملگر if / else، این ساختار بر روی حلقه های بررسی شرط ساخته شده است. وقتی برنامه به دستور while رسید، اگر شرط پیشنهادی درست باشد، تمام اقدامات در بلوک مهاربندهای فرفری (...) اجرا می‌شوند. پس از انجام این اقدامات، برنامه مجدداً بعد از عبارت while مجدداً شرایط را بررسی می کند و اگر شرط دوباره درست باشد، اقدامات در بلوک تکرار می شود. اقدامات در بلوک تا زمانی اجرا می شوند که شرط false شود و تنها پس از آن حلقه while خارج می شود.
برای خروج از حلقه ها، به اصطلاح شمارنده اغلب استفاده می شود. یک مثال کوچک را در نظر بگیرید:

Int i = 0; در حالی که (من< 10) { // действия i++; }

ابتدا به متغیر i مقدار 0 اختصاص داده می شود، سپس شرط i0 بررسی می شود)

(// اقدامات i--;)

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

i Boolean = درست; در حالی که (i) (// اقدامات)

متغیر i true است، مقدار true به آن اختصاص داده می شود، بنابراین حلقه while اجرا می شود تا زمانی که به متغیر i مقدار false داده شود. بنابراین، باید مراقب خروج از چنین حلقه ای باشید، در غیر این صورت حلقه while به طور نامحدود اجرا می شود و به چنین حلقه هایی حلقه های بی نهایت می گویند.

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

Int i = 0 while (i == 5) (// اقدامات i ++;)

این یک حلقه کاملاً قابل اجرا خواهد بود، اما اگر اشتباهی مرتکب شوید یا از روی عادت از نسخه کلاسیک عملگر برابر با = که در ریاضیات استفاده می شود استفاده کنید، در این صورت مشکلی به شکل یک حلقه بی نهایت خواهید داشت.

Int i = 0 while (i = 5) (// اقدامات i ++;)

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

حلقه Do / while

حلقه while که توسط ما در نظر گرفته شده است، تحت شرایط خاص، ممکن است کار نکند. به عنوان مثال، اگر شرط ابتدا false باشد، حلقه هرگز اجرا نخواهد شد. برنامه با رسیدن به خط کد با دستور while، شرایط را بررسی می کند و در صورت نادرست بودن، کل حلقه را نادیده می گیرد و بلافاصله بعد از حلقه while به کد می رود. اما گاهی اوقات لازم است که حلقه را حداقل یک بار اجرا کنید. برای این منظور، جاوا یک حلقه do / while دارد. حلقه do / while به صورت زیر نوشته و ایجاد می شود:

انجام (// اعمال) در حالی که (شرط)

یک بدنه حلقه بین دستورات do و while وجود دارد که تا زمانی که شرط پس از دستور while نادرست باشد اجرا می شود. بدنه حلقه حداقل یک بار اجرا می شود و پس از آن شرایط بررسی می شود. حلقه do / while اغلب استفاده نمی شود، اما گاهی اوقات به نظر می رسد ضروری است.

برای حلقه

این رایج ترین حلقه در برنامه نویسی است. حلقه for مبتنی بر دستکاری شمارنده است. معنای این حلقه مشابه حلقه های while و do / while است که در بالا مورد بحث قرار گرفت. بررسی کنید که نحو یک حلقه for چگونه به نظر می رسد:

برای (int i = 0; i< 10; i++) { // действие }

کلمه کلیدی for با یک شرط برای اجرای حلقه دنبال می شود. این شرایط خود سه مرحله را با هم ترکیب می کند. ابتدا مقدار اولیه شمارنده i = 0 انجام می شود، سپس شرط i بررسی می شود< 10 и в конце увеличение переменной i на единицу.

حلقه for به صورت زیر عمل می کند. هنگامی که برنامه به حلقه رسید، شمارنده i = 0 مقداردهی اولیه می شود و شرط i بررسی می شود< 10. Далее программа переходит в тело цикла. По окончанию всех действий в цикле for, происходит обращение к третьему этапу цикла: i++, увеличивая счетчик на единицу. После чего сразу же происходит переход ко второму этапу – проверке переменной i < 10 и повторный выход в тело цикла. Весь цикл продолжается до тех пор, пока условие i < 10 не станет ложным. Цикл for используется постоянно при инициализации массива данных, где без него очень сложно, а порой и не возможно обойтись. Так же как и в цикле while возможно использование оператора декремента, например.

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

جاوا: توضیحات و مثال ها

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

در حالی که (شرط) (

// بدنه چرخه

به محض اینکه مقدار شرط منطقی از کار بیفتد، کد محصور شده در بدنه حلقه اجرا نمی‌شود و کنترل بلافاصله به خط بعد از آن منتقل می‌شود.

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

برای وضوح، اجازه دهید به مثال نشان داده شده در شکل زیر نگاهی بیندازیم:

تعداد متغیر اعلام شده در ابتدا دارای مقدار 1 است. سپس، یک عبارت بولی را می بینیم که بعد از نام عملگر در داخل پرانتز قرار گرفته است. درست خواهد بود، یعنی. تا زمانی که مقدار متغیر count کمتر یا مساوی 10 باشد، true را برمی گرداند. در بدنه حلقه، با هر بار عبور (تکرار)، مقدار متغیر 1 افزایش یافته و در صفحه کنسول نمایش داده می شود. توجه داشته باشید که وقتی متغیر به 11 رسید، حلقه از کار افتاد.

اگر مقدار متغیر count در ابتدا برابر با 11 بود، شرط حلقه نادرست بود و برنامه حتی وارد بدنه آن نمی شد.

شایان ذکر است که نحو جاوا به شما امکان می دهد از دستور while بدون بدنه استفاده کنید. بیایید یک مثال بزنیم. فرض کنید دو متغیر i = 100 و j = 200 داریم، با وظیفه محاسبه میانگین حسابی آنها به صورت برنامه ای روبرو هستیم - برای این کار می توانید از "توخالی" استفاده کنید در حالی که:

در حالی که (++ i< --j);

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

حلقه Do-while

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

انجام دادن (
// بدنه چرخه

) while (شرط);

همانطور که می بینیم، ابتدا بدنه حلقه به اجرا می رود و تنها پس از آن صحت شرط بررسی می شود - و به همین ترتیب هر تکرار.

کد بالا تقریباً به همان روشی که با یک while معمولی کار می کند. با این حال، اگر مقدار 11 را به تعداد متغیر اختصاص داده بودیم، بدنه حلقه همچنان یک بار قبل از اینکه عملگر بتواند درستی عبارت را آزمایش کند، اجرا می شد.

توضیحات و نمونه هایی برای - حلقه جاوا

این یک فرم زبان همه کاره و کارآمد در جاوا است. قبل از نسخه پنجم Java SDK، تنها یک شکل سنتی از عبارت for وجود داشت و سپس یک شکل جدید برای هر کدام ظاهر شد. در این قسمت با فرم سنتی اپراتور آشنا می شویم. برای جاوا حلقه شبیه به این است:

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

برای درک بهتر، در اینجا مثالی از نحوه عملکرد حلقه for Java آورده شده است:

می بینیم که متغیر loopVal به عنوان شمارنده استفاده می شود. پس از هر بار تکرار حلقه، مقدار آن 1 افزایش می یابد و این کار تا زمانی که به عدد 11 برسد ادامه می یابد. توجه داشته باشید که متغیر کنترل را می توان خارج از دستور for اعلام کرد، اما اگر قرار نیست از این متغیر در جایی استفاده کنید به جز در یک حلقه، توصیه می شود آن را مستقیماً در بیانیه اعلام کنید. به خاطر داشته باشید که متغیری که در خود عبارت اعلام شده است، در خود آن حلقه قرار دارد.

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

برای (int i = 1، int j = 10؛ i< j; ++i, --j) {}

با هر تکرار، مقدار متغیر i 1 افزایش می یابد و مقدار متغیر j 1 کاهش می یابد. تکرارها تا زمانی انجام می شوند که i بزرگتر یا مساوی j باشد.

مشخصات استفاده از عملگر for

حلقه for کاملاً منعطف است زیرا هر سه بخش آن (آغازسازی، شرط، و افزایش/کاهش) را می‌توان بدون برچسب استفاده کرد. به عنوان مثال، به جای یک عبارت شرطی با یک متغیر کنترل، می توانید هر متغیر بولی را جایگزین کنید.

خروج بولی = نادرست;

برای (int i = 0;! خروج؛ ++ i) (

در مثال بالا، می‌توان مشاهده کرد که چگونه کار حلقه کاملاً مستقل از متغیر کنترل i است و تعداد تکرارها صرفاً به لحظه‌ای بستگی دارد که در آن خروج متغیر درست می‌شود. علاوه بر این، متغیر کنترل را می توان به طور کامل از حلقه حذف کرد و این به هیچ وجه بر عملکرد آن تأثیر نمی گذارد: for (;! Exit;) (). اگرچه هوشمندترین راه برنامه‌نویسی نیست، اما گاهی اوقات می‌تواند مفید باشد. نکته اصلی این است که موقعیتی را پیش بینی کنید که در آن متغیر مقدار لازم برای خروج از حلقه را بگیرد تا آن را به یک بی نهایت تبدیل نکند.

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

برای هر حلقه

حلقه foreach جاوا همیشه برای تکرار بر روی عناصر یک آرایه یا چیزی و انجام برخی عملیات تکراری بر روی آنها استفاده می شود. نمونه ای از این فرم از دستور for در زیر نشان داده شده است:

Name به عنوان یک متغیر تکراری اعلان می شود و آرایه نام رشته ها که قبلاً اعلام شده است، آرگومان دوم عملگر است. نام متغیر مقادیر هر عنصر آرایه را به نوبه خود می گیرد تا زمانی که همه عناصر آن بازیابی شوند. لازم به ذکر است که نوع متغیر باید با نوع عناصر ذخیره شده در آرایه سازگار باشد. همچنین، متغیر نام منحصراً برای خواندن در دسترس است و تلاش برای تغییر آن، خود عنصر آرایه را تغییر نمی‌دهد.

اپراتورهای حلقه وقفه

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

اگرچه این دستور for 11 تکرار را ارائه می دهد، فقط 8 مورد اجرا می شود، زیرا وقتی شمارنده i 7 باشد، شرط ایجاد می شود که در بدنه آن دستور break وجود دارد.

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

استفاده از break به عنوان گفتو

باید در نظر داشت که شکست کار تنها حلقه ای را که در بدنه آن مستقیماً قرار دارد، قطع می کند، یعنی. اگر از آن در یک حلقه تودرتو استفاده کنید، در این صورت حلقه بیرونی کار را متوقف نخواهد کرد. برای این منظور، دستور break را می توان به عنوان یک شکل متمدن از goto استفاده کرد.

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

کد سه بلوک را با نام‌های برچسب یک، دو و سه به ترتیب اعلام می‌کند. دستور break با عنوان Two در هر سه بلوک تو در تو قرار دارد، اما زمانی که راه‌اندازی شد، برنامه از بلوک‌های Three و Two خارج شده و در بلوک One به اجرا ادامه می‌دهد. آن ها ما دو پیام را در کنسول خواهیم دید: سه و یک.

نتیجه

با مفهوم حلقه‌ها در جاوا، دستورهای main while و for و do-while و برای هر فرم آشنا شدیم. برای درک بهتر، توصیه می‌کنیم تمرین‌هایی را با استفاده از این عملگرها به اشکال مختلف انجام دهید و همچنین روش‌های مختلفی برای قطع آنها و حرکت از یک بلوک به بلوک دیگر انجام دهید.

آخرین به روز رسانی: 31.10.2018

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

برای حلقه

یک حلقه for دارای تعریف رسمی زیر است:

برای ([تغییر شمارشگر]؛ [شرط]؛ [تغییر شمارنده]) (// اقدامات)

یک استاندارد برای حلقه در نظر بگیرید:

برای (int i = 1; i< 9; i++){ System.out.printf("Квадрат числа %d равен %d \n", i, i * i); }

اولین قسمت از اعلان حلقه - int i = 1 شمارنده i را ایجاد و مقداردهی اولیه می کند. لازم نیست شمارنده از نوع int باشد. این می تواند هر نوع عددی دیگری باشد، به عنوان مثال، شناور. قبل از اجرای حلقه، شمارنده 1 خواهد بود. در این حالت، این همان تعریف یک متغیر است.

قسمت دوم شرایطی است که حلقه در آن اجرا می شود. در این حالت، حلقه تا زمانی که i به عدد 9 برسم اجرا می شود.

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

در نتیجه بلوک حلقه 8 بار اجرا می شود تا مقدار i برابر با 9 شود و هر بار این مقدار 1 افزایش می یابد.

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

Int i = 1; برای (;;) (System.out.printf ("مربع% d است% d \ n"، i، i * i)؛)

تعریف حلقه ثابت می ماند، فقط اکنون بلوک های موجود در تعریف خالی هستند: برای (;;). اکنون هیچ متغیر شمارنده اولیه، هیچ شرطی وجود ندارد، بنابراین حلقه برای همیشه اجرا می شود - یک حلقه بی نهایت.

از طرف دیگر، می توانید تعدادی از بلوک ها را حذف کنید:

Int i = 1; برای (; i<9;){ System.out.printf("Квадрат числа %d равен %d \n", i, i * i); i++; }

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

حلقه for می تواند چندین متغیر را به طور همزمان تعریف و دستکاری کند:

Int n = 10; برای (int i = 0، j = n - 1؛ i< j; i++, j--){ System.out.println(i * j); }

حلقه انجام دهید

حلقه do ابتدا کد حلقه را اجرا می کند و سپس شرایط موجود در دستور while را بررسی می کند. و تا زمانی که این شرط درست باشد، چرخه تکرار می شود. برای مثال:

Int j = 7; do (System.out.println (j); j--;) while (j> 0);

در این حالت کد حلقه 7 بار اجرا می شود تا j برابر با صفر شود. توجه به این نکته ضروری است که حلقه do حداقل یک اجرای عمل را تضمین می کند، حتی اگر شرط موجود در دستور while درست نباشد. بنابراین، می توانیم بنویسیم:

Int j = -1; do (System.out.println (j); j--;) while (j> 0);

اگرچه j در ابتدا کمتر از 0 است، حلقه همچنان یک بار اجرا می شود.

در حالی که حلقه

حلقه while بلافاصله درستی یک شرط را بررسی می کند و اگر شرط درست باشد، کد حلقه اجرا می شود:

Int j = 6; while (j> 0) (System.out.println (j)؛ j--;)

عبارات ادامه و شکست

دستور break به شما امکان می دهد هر لحظه از حلقه خارج شوید، حتی اگر حلقه کار خود را تمام نکرده باشد:

برای مثال:

< nums.length; i++){ if (nums[i] >10) شکستن؛ System.out.println (شماره [i])؛ )

از آنجایی که حلقه بررسی می کند که آیا عنصر آرایه بزرگتر از 10 است، ما دو عنصر آخر را در کنسول نخواهیم دید، زیرا وقتی اعداد [i] بزرگتر از 10 (یعنی برابر با 12) باشد، دستور break فعال می شود. و حلقه به پایان می رسد.

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

Int nums = int جدید (1، 2، 3، 4، 12، 9); برای (int i = 0; i< nums.length; i++){ if (nums[i] >10) ادامه دهید؛ System.out.println (شماره [i])؛ )

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

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

در جاوا می توانید با چندین نوع حلقه کار کنید - برای این کار عملگرهای زیر وجود دارد:

در حالی که- چرخه با پیش شرط- ابتدا شرایط را بررسی می کنیم، سپس بدنه چرخه را اجرا می کنیم.

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

برای- یک حلقه با یک شمارنده - اجرا می شود و در هر تکرار شمارنده را تا زمانی که شرط موجود در اعلان حلقه برآورده می شود به روز می کند (یعنی بررسی شرط true را برمی گرداند).

مختصر برای(در زبان های دیگر به عنوان foreach شناخته می شود) - روی آرایه از اولین عنصر تا آخرین عنصر تکرار می شود و بدنه حلقه را در هر تکرار اجرا می کند.

ماهیت شرط حلقه بررسی یک عبارت با یک یا چند متغیر است: "در حالی که یک<11, в каждой итерации выполняем тело цикла и увеличиваем "а" на 1». Но чему равно «а» при первом выполнении цикла?

اگر از ساختارهای while استفاده کنیم، مقدار باید قبل از شروع حلقه مشخص شود:

int a = 1;

در حالی که (الف< 11) {

System.out.println (a);

a ++; // یک به یک افزایش دهید

}

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

برای (a = 1, a<11, i++) {

System.out.println (a);

}

همین نتیجه را می گیریم. لیست را می توان از صفر یا از یک مقدار منفی شروع کرد - ما محدوده را خودمان تعریف می کنیم.

خلاصه نویسی برای حلقه تعداد تکرارها یا اعمال در پایان یک مرحله را نشان نمی دهد. یک حلقه foreach برای تکرار روی آرایه ها استفاده می شود. از اولین عنصر باید به عنصر بعدی بروید - تا زمانی که آرایه به پایان برسد.

int ms = (1، 2، 3، 4); // یک آرایه ایجاد کنید

int s = 0;

برای (int i: ms) (// نشان می دهد که روی چه چیزی باید تکرار شود

s * = i; // عناصر را به ترتیب ضرب کنید

}

System.out.println (s);

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

چرخه ها را می توان درون یکدیگر قرار داد. در این حالت تعداد تکرارهای حلقه های بیرونی و تودرتو چند برابر می شود. اگر قرار باشد outer 5 بار و inner 5 بار اجرا شود، کل حلقه 25 بار اجرا می شود.

بیایید جدول ضرب را با استفاده از دو آرایه نمایش دهیم:

int a، b، نتیجه = 0;

برای (a = 2; a< 10; a++) {

برای (b = 2؛ b< 10; b++) {

نتیجه = a * b;

System.out.println (a + "x" + b + "=" + نتیجه)؛

}

}

ایجاد اشیاء در حلقه جاوا

حلقه ها زمانی مفید هستند که شما نیاز به ایجاد و شماره گذاری بسیاری از اشیاء دارید. تعداد آنها گاهی اوقات از قبل ناشناخته است: اشیاء را می توان بنا به درخواست کاربر ایجاد کرد. بنابراین ما پرسیدیم که چقدر چیزی مورد نیاز است و عدد را در متغیر n نوشتیم. حالا بیایید اشیاء را به مقدار لازم ایجاد کنیم:

چیزی آرایه = جدید چیزی [n]; // یک آرایه از نوع "something" از n عنصر ایجاد کنید

برای (int i = 0; i< n; i++){

آرایه [i] = چیزی جدید (); // "چیزی" را ایجاد کنید و آن را در یک آرایه قرار دهید

}

چگونه از حلقه جاوا خارج شویم

برای خروج از حلقه، کلمات کلیدی break - "وقفه"، ادامه - "رزومه" و بازگشت - "بازگشت" وجود دارد. دستور break برنامه را سوئیچ می کند تا عبارات زیر حلقه را اجرا کند. شرایط قطع حلقه در جاوا از طریق شاخه بندی if رسمیت می یابد. نکته اصلی این است که بررسی قبل از بدنه اصلی حلقه انجام شود.

// پس از ایجاد آرایه m، بنویسید:

برای (a: m) (

اگر (a == 5) شکسته شود.

System.out.println (a);

}

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

اگر از break در یک حلقه تودرتو استفاده کنید، فقط آن شکسته می‌شود و حلقه بیرونی به اجرا ادامه می‌دهد.

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

در ساختارهای while، همان continue به طور متفاوتی کار می کند: ما را به بررسی شرایط ادامه حلقه برمی گرداند. دستور دیگری - return - برنامه را به محلی که متد فراخوانی شده است، که حلقه در آن قرار دارد، برمی گرداند.

هر دو ادامه و شکست را می توان با یک برچسب - برای پرش به قسمت مورد نظر از کد - با قیاس با goto استفاده کرد:

شکستن Mark1; // مشروط بر اینکه یک Mark1 در جایی بالاتر وجود داشته باشد:

حلقه بی نهایت جاوا

ایجاد یک حلقه بی نهایت آسان است - فقط باید پارامترهای زیر را حذف کنید:

برای (؛؛) ()

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

  • شرایط وقفه را در بدنه حلقه مشخص کنید،
  • مطمئن شوید که متغیر در شرایط وقفه می تواند مقداری را بگیرد که حلقه در آن متوقف شود.

مقالات مرتبط برتر