JavaRush /Java blogi /Random-UZ /Java ichida Loop uchun

Java ichida Loop uchun

Guruhda nashr etilgan
Eng yaxshi dasturchi dangasa dasturchi deyishadi. Bir xil turdagi harakatlarni bir necha marta bajarish o'rniga, u o'z vazifasini bajaradigan algoritmni o'ylab topadi. Va u buni yaxshi bajaradi, shunda uni qayta tiklashga hojat qolmaydi. Java-da for loop-dan qanday foydalanish kerak - 1Xuddi shu kodni qayta-qayta yozmaslik uchun looplar ixtiro qilingan. Tasavvur qilaylik, biz konsolga 0 dan 99 gacha raqamlarni ko'rsatishimiz kerak. Kodni tsiklsiz:
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
Ushbu kod 100 qatorni oladi! Juda ko'p. Va bu pastadir bilan qanday ko'rinishga ega bo'ladi:
for(int i = 0; i < 100; i++) {
   System.out.println(i);
}
Faqat 3 qator!

For looplar nima?

For tsikli - algoritm bajarilishining chiziqliligini buzadigan va ko'rsatilgan kodni ko'p marta bajarishga imkon beruvchi dastur kodining boshqaruv tuzilmasi. Misol uchun, siz 30 tomchi dori ichishingiz kerak. Algoritm shunday bo'ladi:
  1. Bir stakan tayyorlang.
  2. Qopqoqni oching.
  3. 1 tomchi oling.
  4. 2 tomchi oling.
  5. ...
  6. 30 tomchi oling.
  7. Dori-darmonni yoping.
  8. Qabul qilingan qismni oling.
Ushbu algoritmni tezroq tushuntirish mumkin:
  1. Bir stakan tayyorlang.
  2. Damlama qopqog'ini oching.
  3. 30 tomchi oling.
  4. Dori-darmonni yoping.
  5. Qabul qilingan qismni oling.
Biz deyarli har kuni boshqa odamlar bilan suhbatda for tsiklidan foydalanamiz: “...ko‘chada 20 qadam...”, “...10 ta takrorlash va yana 5 marta 2 marta sekinroq...”, “.. .turli toifadagi 5 ta xaridni amalga oshiring va sovringa ega bo‘ling...” Men uzoq vaqt davom etishim mumkin edi, lekin ma’nosi aniq. Java-da, kodingizni qisqa va ixcham saqlash uchun for tsikli zarur.

For tsikli qanday ishlaydi

For tsikli quyidagicha ishlatiladi:
for(<начальная точка>; <condition выхода>; <операторы счетчика>) {
	// Loop body
}
Пример перебора цифр от 0 до 5 и вывод каждой в консоль:
for(int i = 0; i < 5; i++) {
   System.out.println(i);
}
Xulosa:

0
1
2
3
4
Agar biz ushbu yozuvni inson tiliga tarjima qilsak, biz quyidagilarni olamiz: " Boshlang'ich qiymati 0 bo'lgan i o'zgaruvchisini yarating, u 5 ga etguncha, unga 1 qo'shing va har bir qadamda konsolga i qiymatini yozing ." Java tilidagi for tsikli uch bosqichga asoslanadi, uni quyidagi diagramma bilan ifodalash mumkin: Java-da for tsiklidan qanday foydalanish kerak - 2sikldan chiqish sharti mantiqiy ifodadir. Agar noto'g'ri bo'lsa, tsikl tugaydi. Yuqoridagi misolda o'zgaruvchi i1 ga oshiriladi. Agar uning qiymati 5 dan kichik bo'lsa, tsikl davom etadi. Ammo u 5 dan katta yoki teng bo'lishi bilanoq i, tsikl to'xtaydi. Hisoblagich operatori hisoblagich o'zgaruvchisida konvertatsiyani amalga oshiradigan ifodadir. Yuqoridagi misolda o'zgaruvchi i1 ga oshirildi. Ya'ni sikl aynan 5 marta bajariladi. Agar hisoblagich operatori o'zgaruvchiga 2 qo'shsa i, natija boshqacha bo'ladi:
for(int i = 0; i < 5; i = i + 2) {
   System.out.println(i);
}
Xulosa:

0
2
4
Bundan tashqari, o'zgaruvchini ko'paytirish, bo'lish, kuchga oshirish, umuman olganda, xohlagan narsani qilishingiz mumkin. Asosiysi, transformatsiya natijasida raqam paydo bo'ladi. Loopning tanasi bajarilishi mumkin bo'lgan har qanday koddir. Yuqoridagi misolda, tsiklning tanasi konsolga i o'zgaruvchisining qiymatini chiqargan, ammo bu tananing mazmuni vazifa va tasavvur bilan cheklangan. Butun sxemani sarhisob qiladigan bo'lsak, bu for tsiklining printsipi quyidagicha: tsiklning asosiy qismidagi kod, sikldan chiqish shartiga erishilgunga qadar hisoblagich operatori bajaradigan konvertatsiyalar soni shunchalik ko'p bajariladi. . Agar siz tsikldan chiqish shartini quyidagicha o'rnatsangiz true:
for(int i = 0; true; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
Keyin tsikldan keyingi kod xato bilan belgilanadi unreachable statement, chunki u hech qachon bajarilmaydi. Aql-idrok uchun qiyinchilik: quyidagi kodni ishga tushirish natijasida Loop endedkonsolga “ ” chiqadimi yoki tsikl cheksiz ishlaydimi?
for(int i = 0; i > -1; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
Javob: bo'ladi. i o'zgaruvchisi ertami kechmi o'zining maksimal qiymatiga erishadi va yanada ortishi uni maksimal manfiy qiymatga aylantiradi, buning natijasida chiqish sharti qondiriladi (i < = -1).

forHar bir tsikl

Looplar bilan ishlashda siz ba'zan massivlar yoki to'plamlar ustida takrorlashingiz kerak bo'ladi. Odatda for tsikli yordamida massivni takrorlashingiz mumkin:
public void printAllElements(String[] stringArray) {
   for(int i = 0; i < stringArray.length; i++) {
       System.out.println(stringArray[i]);
   }
}
Va bu to'g'ri. Biroq, massivning barcha elementlarini birma-bir takrorlash uchun ular forEach konstruktsiyasini o'ylab topishdi. Uning imzosi quyidagicha:
for(<Тип element> <Name переменной, куда будет записан очередной элемент> : <Название массива>) {
	// Loop body
}
Siz qatorlar qatorini takrorlashingiz va har birini konsolga quyidagi tarzda chop etishingiz mumkin:
public void printAllElements(String[] stringArray) {
   for(String s : stringArray) {
       System.out.println(s);
   }
}
Shuningdek, qisqa va ixcham. Eng muhimi, hisoblagich va chiqish holati haqida o'ylashning hojati yo'q, hamma narsa biz uchun allaqachon qilingan.

For looplari qanday ishlatiladi

Endi turli masalalarni hal qilish uchun Java’da for siklidan foydalanishning bir necha misollarini ko‘rib chiqamiz.

Teskari tsikl (kattaroqdan kichikroq)

for(int i = 5; i > 0; i--) {
   System.out.println(i);
}
Xulosa:

5
4
3
2
1

Bir nechta o'zgaruvchilar va halqa tanasida hisoblagichni oshirish

For tsiklida bir nechta o'zgaruvchilardan foydalanishingiz mumkin, masalan, ular hisoblagich bayonotida o'zgartirilishi mumkin:
int a = 0;
for(int i = 5; i > 0; i--, a++) {
   System.out.print("Step: " + a + " Meaning: ");
   System.out.println(i);
}
Xulosa:

Шаг: 0 Значение: 5
Шаг: 1 Значение: 4
Шаг: 2 Значение: 3
Шаг: 3 Значение: 2
Шаг: 4 Значение: 1
Yoki ikkita o'zgaruvchini e'lon qiling va ular bir-biriga teng bo'lguncha tsiklni bajaring:
for(int i = 5, j = 11; i != j; i++, j--) {
   System.out.println("i: " + i + " j: " + j);
}
Xulosa:

i: 5 j: 11
i: 6 j: 10
i: 7 j: 9
Bu harakat hech qanday qiymatga ega bo'lishi dargumon, lekin bu imkoniyat haqida bilish foydalidir. Bundan tashqari, for tsikli ichida ichki halqalarni yaratishingiz mumkin. Bunday holda, tsikl bosqichlari soni ko'paytiriladi:
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');
}
Xulosa:

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
Hisoblagich halqasida jtashqi halqaning hisoblagichiga kirish mumkin. Bu ichki halqalarni ikki o'lchovli, uch o'lchovli va boshqa massivlarni kesib o'tishning ideal usuliga aylantiradi:
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');
}
Xulosa:

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

Tsiklning erta tugashi

Agar pastadirni qayta ishlash paytida tsiklni to'xtatish kerak bo'lsa, operatordan foydalaning break, bu tsiklning joriy tanasini to'xtatadi. Barcha keyingi iteratsiyalar ham o'tkazib yuboriladi:
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;
       }
   }
}
Usul massivdagi birinchi qidirilgan elementning o'rnini chop etadi:
String[] array = {"one", "two", "three", "Jeronimo"};
getFirstPosition(array, "two");
Xulosa:

1

Cheksiz tsikl

Infinite for loop yaratishning yana bir usuli hisoblagich deklaratsiyasi maydonini, chiqish shartini va hisoblagich bayonotini bo'sh qoldirishdir:
for (;;) {
}
Ammo shuni yodda tutingki, aksariyat hollarda cheksiz pastadir mantiqiy xatoning dalilidir. Bunday pastadir chiqish shartiga ega bo'lishi kerak. Java-da for tsiklidan qanday foydalanish kerak - 3
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION