JavaRush /Блоги Java /Random-TG /Барои Loop дар Java

Барои Loop дар Java

Дар гурӯҳ нашр шудааст
Мегӯянд, ки беҳтарин барномасоз барномасози танбал аст. Ба ҷои он ки як намуди амалҳоро якчанд маротиба иҷро кунад, ӯ алгоритме пайдо мекунад, ки кори ӯро иҷро мекунад. Ва ӯ ин корро хуб мекунад, то ки ба такрори он ниёзе набошад. Чӣ тавр истифода бурдани for loop дар Java - 1Барои он ки як codeро такрор ба такрор нанависед, ҳалқаҳо ихтироъ карда шуданд. Биёед тасаввур кунем, ки мо бояд рақамҳоро аз 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
Ин code 100 сатр мегирад! Ин қадар зиёд. Ва ин аст, ки он бо ҳалқа чӣ гуна хоҳад буд:
for(int i = 0; i < 100; i++) {
   System.out.println(i);
}
Танҳо 3 сатр!

Барои ҳалқаҳо чист?

Давраи for ин сохтори идоракунии codeи барномавӣ мебошад, ки хатти иҷрои алгоритмро вайрон мекунад ва ба шумо имкон медиҳад, ки codeи муайяншударо борҳо иҷро кунед. Масалан, шумо бояд 30 қатра дору гиред. Алгоритм чунин хоҳад буд:
  1. Як шиша тайёр кунед.
  2. Сарпӯшро кушоед.
  3. 1 қатра гиред.
  4. 2 қатра гиред.
  5. ...
  6. 30 қатра гиред.
  7. Доруро пӯшед.
  8. Қисми гирифташударо гиред.
Ин алгоритмро хеле зудтар шарҳ додан мумкин аст:
  1. Як шиша тайёр кунед.
  2. Сарпӯши қатрагиро кушоед.
  3. 30 қатра гиред.
  4. Доруро пӯшед.
  5. Қисми гирифташударо гиред.
Мо тақрибан ҳар рӯз ҳалқаи for-ро ҳангоми сӯҳбат бо одамони дигар истифода мебарем: “...20 қадам дар кӯча...”, “...10 такрор ва 5 такрори дигар 2 маротиба сусттар...”, “.. .Дар категорияҳои гуногун 5 харид кунед ва мукофот гиред...” Ман метавонистам муддати тӯлонӣ идома диҳам, аммо маъно равшан аст. Дар Java, ҳалқаи 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 дар Java ба се марҳила асос ёфтааст, ки онро бо диаграммаи зерин ифода кардан мумкин аст: Чӣ тавр истифода бурдани ҳалқаи for дар Java - 2Шарти баромадан аз давра ифодаи булӣ мебошад. Агар он бардурӯғ бошад, давра ба охир мерасад. Дар мисоли боло, тағирёбанда iба 1 зиёд карда мешавад. Агар арзиши он аз 5 камтар бошад, давра идома меёбад. Аммо вақте ки iон аз 5 зиёд ё баробар мешавад, давра қатъ мешавад. Оператори ҳисобкунак ифодаест, ки табдилро дар тағирёбандаи ҳисобкунак иҷро мекунад. Дар мисоли боло, тағирёбанда iба 1 зиёд карда шудааст. Яъне, давра расо 5 маротиба иҷро карда мешавад. Агар оператори ҳисобкунак ба тағирёбандаи 2 илова кунад i, натиҷа дигар мешавад:
for(int i = 0; i < 5; i = i + 2) {
   System.out.println(i);
}
Хулоса:

0
2
4
Шумо инчунин метавонед як тағирёбандаро зарб кунед, тақсим кунед, ба қудрат афзоиш диҳед, дар маҷмӯъ, ҳар чизе ки мехоҳед, кунед. Чизи асосй он аст, ки дар натичаи табдил додани адад. Ҷисми ҳалқа ҳама гуна codeест, ки иҷрошаванда аст. Дар мисоли боло, ҷисми ҳалқа арзиши тағирёбандаи i-ро ба консол мебарорад, аммо мундариҷаи ин бадан бо вазифа ва тасаввурот маҳдуд аст. Тамоми схемаро ҷамъбаст намуда, принсипи ин for цикл чунин аст: codeе, ки дар бадани давр ҷойгир аст, ҳамон қадар иҷро карда мешавад, ки шумораи табдor оператори ҳисобкунак пеш аз расидан ба шарти баромадан аз давра иҷро мекунад. . Агар шумо шарти баромадан аз давраро чунин муқаррар кунед true:
for(int i = 0; true; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
Он гоҳ рамзи пас аз давра бо хато қайд карда мешавад unreachable statement, зеро он ҳеҷ гоҳ иҷро намешавад. Мушкилот барои ихтироъ: дар натиҷаи иҷро кардани codeи дар поён овардашуда, оё " 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).

forHer як ҳалқа

Ҳангоми кор бо ҳалқаҳо, шумо баъзан бояд массивҳо ё коллексияҳоро такрор кунед. Одатан, шумо метавонед тавассути массив бо истифода аз даври 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 дар Java барои ҳалли масъалаҳои гуногунро дида бароем.

Давраи баръакс (аз калонтар ба хурдтар)

for(int i = 5; i > 0; i--) {
   System.out.println(i);
}
Хулоса:

5
4
3
2
1

Якчанд тағирёбандаҳо ва афзоиши ҳисобкунак дар бадани давр

Шумо метавонед як қатор тағирёбандаҳоро дар даври for истифода баред, масалан, онҳо метавонанд дар изҳороти муқобил табдил дода шаванд:
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
Гумон аст, ки ин амал ягон арзише дошта бошад, аммо донистани ин имкон муфид аст. Шумо инчунин метавонед ҳалқаҳои дарунӣ дар дохor як ҳалқаи 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 дар Java - 3
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION