JavaRush /وبلاگ جاوا /Random-FA /برای حلقه در جاوا

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

در گروه منتشر شد
می گویند بهترین برنامه نویس یک برنامه نویس تنبل است. او به جای اینکه چندین بار یک نوع اعمال را انجام دهد، الگوریتمی را ارائه می کند که کار را برای او انجام می دهد. و او این کار را به خوبی انجام خواهد داد تا نیازی به انجام مجدد آن نباشد. نحوه استفاده از حلقه for در جاوا - 1برای جلوگیری از نوشتن مکرر کدهای مشابه، حلقه‌ها اختراع شدند. بیایید تصور کنیم که باید اعداد از 0 تا 99 را به کنسول نمایش دهیم. کد بدون حلقه:
System.out.println(0);
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
// And so on
این کد 100 خط می گیرد! خیلی زیاد. و در اینجا با یک حلقه به نظر می رسد:
for(int i = 0; i < 100; i++) {
   System.out.println(i);
}
فقط 3 خط!

برای حلقه ها چیست؟

حلقه for یک ساختار کنترلی از کد برنامه است که خطی بودن اجرای الگوریتم را می شکند و به شما امکان می دهد کد مشخص شده را چندین بار اجرا کنید. به عنوان مثال، شما باید 30 قطره دارو مصرف کنید. الگوریتم چیزی شبیه به این خواهد بود:
  1. یک لیوان آماده کنید.
  2. درب را باز کنید.
  3. 1 قطره بگیرید.
  4. 2 قطره بگیرید.
  5. ...
  6. 30 قطره بگیرید.
  7. دارو را ببندید.
  8. قسمت دریافتی را بردارید.
این الگوریتم را می توان خیلی سریعتر توضیح داد:
  1. یک لیوان آماده کنید.
  2. درپوش چکه را باز کنید.
  3. 30 قطره دریافت کنید.
  4. دارو را ببندید.
  5. قسمت دریافتی را بردارید.
ما تقریباً هر روز از حلقه for در مکالمه با افراد دیگر استفاده می کنیم: "...20 قدم در خیابان..."، "... 10 تکرار و 5 بار دیگر با 2 برابر آهسته تر..."، ".. 5 خرید در دسته بندی های مختلف انجام دهید و جایزه بگیرید..." می توانم مدت زیادی ادامه دهم، اما معنی آن مشخص است. در جاوا، حلقه for برای کوتاه و مختصر نگه داشتن کد شما ضروری است.

حلقه for چگونه کار می کند

حلقه for به صورت زیر استفاده می شود:
for(<начальная точка>; <condition выхода>; <операторы счетчика>) {
	// Loop body
}
Пример перебора цифр от 0 до 5 и вывод каждой в консоль:
for(int i = 0; i < 5; i++) {
   System.out.println(i);
}
نتیجه:

0
1
2
3
4
اگر این مدخل را به زبان انسانی ترجمه کنیم، نتیجه زیر را به دست می آوریم: " یک متغیر i با مقدار اولیه 0 ایجاد کنید تا به عدد 5 برسد، 1 را به آن اضافه کنید و در هر مرحله مقدار i را در کنسول بنویسید ." حلقه for در جاوا بر اساس سه مرحله است که می توان آن را با نمودار زیر نشان داد: نحوه استفاده از حلقه for در جاوا - 2شرط خروج از حلقه عبارت Boolean است. اگر نادرست باشد، حلقه به پایان می رسد. در مثال بالا، متغیر iبا 1 افزایش می یابد. اگر مقدار آن کمتر از 5 باشد، حلقه ادامه می یابد. اما به محض اینکه iبزرگتر یا مساوی 5 شد، چرخه متوقف می شود. عملگر شمارنده عبارتی است که تبدیل را روی یک متغیر شمارنده انجام می دهد. در مثال بالا، متغیر i1 افزایش یافته است. یعنی حلقه دقیقا 5 بار اجرا می شود. اگر عملگر شمارنده 2 را به متغیر اضافه کند i، نتیجه متفاوت خواهد بود:
for(int i = 0; i < 5; i = i + 2) {
   System.out.println(i);
}
نتیجه:

0
2
4
شما همچنین می توانید یک متغیر را ضرب کنید، تقسیم کنید، به یک توان افزایش دهید، به طور کلی، هر کاری که می خواهید انجام دهید. نکته اصلی این است که تبدیل به یک عدد منجر می شود. بدنه حلقه هر کدی است که بتوان آن را اجرا کرد. در مثال بالا، بدنه حلقه مقدار متغیر i را به کنسول می‌فرستد، اما محتوای این بدنه توسط وظیفه و تخیل محدود می‌شود. با خلاصه کردن کل طرح، اصل این حلقه for به شرح زیر است: کدی که در بدنه حلقه قرار دارد به تعداد تبدیل هایی که اپراتور شمارنده قبل از رسیدن به شرط خروج از حلقه انجام می دهد، اجرا می شود. . اگر شرط خروج از حلقه را به صورت زیر تنظیم کنید true:
for(int i = 0; true; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
سپس کد بعد از حلقه با یک خطا مشخص می شود unreachable statement، زیرا هرگز اجرا نمی شود. چالشی برای هوشمندی: در نتیجه اجرای کد زیر، " Loop ended" به کنسول خروجی می شود یا حلقه بی پایان اجرا می شود؟
for(int i = 0; i > -1; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
پاسخ: وجود خواهد داشت. متغیر i دیر یا زود به حداکثر مقدار خود می رسد و افزایش بیشتر آن را به حداکثر مقدار منفی تبدیل می کند که در نتیجه شرط خروج برآورده می شود (i < = -1).

برای هر حلقه

هنگام کار با حلقه ها، گاهی اوقات باید روی آرایه ها یا مجموعه ها تکرار کنید. معمولاً می توانید از طریق یک آرایه با استفاده از یک حلقه for تکرار کنید:
public void printAllElements(String[] stringArray) {
   for(int i = 0; i < stringArray.length; i++) {
       System.out.println(stringArray[i]);
   }
}
و درست است. با این حال، برای تکرار تمام عناصر آرایه یک به یک، آنها ساختار forEach را ارائه کردند. امضای آن به شرح زیر است:
for(<Тип element> <Name переменной, куда будет записан очередной элемент> : <Название массива>) {
	// Loop body
}
می توانید از طریق یک آرایه از رشته ها تکرار کنید و هر کدام را به روش زیر در کنسول چاپ کنید:
public void printAllElements(String[] stringArray) {
   for(String s : stringArray) {
       System.out.println(s);
   }
}
همچنین کوتاه و مختصر. مهمتر از همه، نیازی به فکر کردن به پیشخوان و شرایط خروج نیست، همه چیز از قبل برای ما انجام شده است.

نحوه استفاده از حلقه ها

حال بیایید به چند نمونه از استفاده از حلقه for در جاوا برای حل مسائل مختلف نگاه کنیم.

چرخه معکوس (از بزرگتر به کوچکتر)

for(int i = 5; i > 0; i--) {
   System.out.println(i);
}
نتیجه:

5
4
3
2
1

چندین متغیر و افزایش شمارنده در بدنه حلقه

می توانید از چندین متغیر در یک حلقه for استفاده کنید، به عنوان مثال می توان آنها را در یک دستور counter تبدیل کرد:
int a = 0;
for(int i = 5; i > 0; i--, a++) {
   System.out.print("Step: " + a + " Meaning: ");
   System.out.println(i);
}
نتیجه:

Шаг: 0 Значение: 5
Шаг: 1 Значение: 4
Шаг: 2 Значение: 3
Шаг: 3 Значение: 2
Шаг: 4 Значение: 1
یا دو متغیر را اعلام کنید و حلقه بزنید تا با هم برابر شوند:
for(int i = 5, j = 11; i != j; i++, j--) {
   System.out.println("i: " + i + " j: " + j);
}
نتیجه:

i: 5 j: 11
i: 6 j: 10
i: 7 j: 9
بعید است که این عمل ارزشی داشته باشد، اما دانستن این امکان مفید است. همچنین می توانید حلقه های داخلی را در یک حلقه for ایجاد کنید. در این حالت تعداد مراحل حلقه ضرب خواهد شد:
for(int i = 0; i < 5; i++) {
   System.out.print(i + " | ");
   for(int j = 0; j < 5; j++) {
       System.out.print(j + " ");
   }
   System.out.print('\n');
}
نتیجه:

0 | 0 1 2 3 4 
1 | 0 1 2 3 4 
2 | 0 1 2 3 4 
3 | 0 1 2 3 4 
4 | 0 1 2 3 4
در یک حلقه شمارنده، jامکان دسترسی به شمارنده حلقه بیرونی وجود دارد. این باعث می‌شود حلقه‌های تودرتو راهی ایده‌آل برای عبور از آرایه‌های دو بعدی، سه‌بعدی و سایر آرایه‌ها شوند:
int[][] array = { {0, 1, 2, 3, 4 },
                       {1, 2, 3, 4, 5},
                       {2, 3, 4, 5, 6},
                       {3, 4, 5, 6, 7}};

for(int i = 0; i < array.length; i++) {
   for(int j = 0; j < array[i].length; j++) {
       System.out.print(array[i][j] + " ");
   }
   System.out.print('\n');
}
نتیجه:

0 1 2 3 4 
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 

تکمیل زودهنگام چرخه

اگر در حین پردازش یک حلقه نیاز به قطع کردن یک حلقه دارید، از عملگر استفاده کنید breakکه بدنه فعلی حلقه را متوقف می کند. تمام تکرارهای بعدی نیز نادیده گرفته می شوند:
public void getFirstPosition(String[] stringArray, String element) {
   for (int i = 0; i < stringArray.length; i++) {
       if(stringArray[i].equals(element)) {
           System.out.println(i);
           break;
       }
   }
}
این روش موقعیت اولین عنصر جستجو شده در آرایه را چاپ می کند:
String[] array = {"one", "two", "three", "Jeronimo"};
getFirstPosition(array, "two");
نتیجه:

1

چرخه بی پایان

راه دیگر برای ایجاد یک حلقه for بی نهایت این است که ناحیه اعلام شمارنده، شرط خروج و دستور شمارنده را خالی بگذارید:
for (;;) {
}
اما به خاطر داشته باشید که در بیشتر موارد یک حلقه بی نهایت گواه یک خطای منطقی است. چنین حلقه ای باید یک شرط خروج داشته باشد. نحوه استفاده از حلقه for در جاوا - 3
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION