1. Сравняване на цикли: for
vswhile
Цикълът while
може да се използва навсякъде, където оператор or група от оператори трябва да бъдат изпълнени няколко пъти. Но сред всички възможни сценарии си струва да се подчертае един.
Говорим за ситуацията, когато програмистът (създателят на програмата) знае предварително колко пъти трябва да се изпълни цикълът. Това обикновено се обработва чрез деклариране на специална променлива на брояча и след това увеличаване (or намаляване) на променливата с при 1
всяка итерация на цикъла.
Изглежда, че всичко работи Howто трябва, но не е много удобно. Преди цикъла задаваме началната стойност на променливата на брояча. След това в conditionто проверяваме дали вече е достигнала крайната стойност. Но обикновено променяме стойността в самия край на тялото на цикъла.
И Howво, ако тялото на цикъла е голямо? Или ако имаме няколко вложени цикъла? Като цяло, в тези случаи е желателно да се събере цялата тази информация за променливите на брояча на едно място. И затова имаме цикъла for
в Java. Освен това не изглежда много сложно:
for (statement 1; condition; statement 2)
{
block of statements
}
Цикълът while
има само condition в скоби, но for
цикълът добавя два израза, разделени с точка и запетая.
Реалността е по-проста, отколкото звучи: компилаторът преобразува for
цикъл в обикновен while
цикъл по следния начин:
statement 1;
while (condition)
{
block of statements
statement 2;
}
Или още по-добре, нека демонстрираме това с пример. Двата codeови фрагмента по-долу са идентични.
Опция 1 | Вариант 2 |
---|---|
|
|
Току-що събрахме на едно място целия code, който се отнася до i
променливата на брояча.
В for
цикъл оператор 1 се изпълнява само веднъж, преди да започне самият цикъл. Това може да се види ясно във втория codeов фрагмент
оператор 2 се изпълнява същия брой пъти като тялото на цикъла и всеки път, когато се изпълнява, след като е изпълнено цялото тяло на цикъла
2. Къде for
се използва цикълът
Цикълът for
е може би най-използваният тип цикъл в Java. Използва се навсякъде, за програмистите е просто по-ясно и удобно от while
цикъл. На практика всеки while
цикъл може да бъде преобразуван в for
цикъл.
Примери:
докато цикъл | за цикъл |
---|---|
|
|
|
|
|
|
|
|
|
|
Обърнете внимание на последния пример. Липсват операторите за работа с брояча на цикли. Няма брояч и изявление.
В for
цикъл Java ви позволява да пропуснете "изявлението за инициализиране на брояча" и "изявлението за актуализиране на брояча". Дори изразът, който дефинира conditionто за цикъл, може да бъде пропуснат.
3. Нюанси на използване на for
цикъла
Важен момент относно използването for
на цикли break
и continue
оператори.
Инструкция break
в for
цикъл работи по същия начин като в while
цикъл — прекратява цикъла незабавно. Изявление continue
пропуска тялото на цикъла, но не statement 2
(което променя брояча на цикъла).
Нека да разгледаме още веднъж How for
и while
циклите са свързани.
for (statement 1; condition; statement 2)
{
block of statements
}
statement 1;
while (condition)
{
block of statements
statement 2;
}
Ако continue
оператор се изпълни в for
цикъл , тогава останалата част от блока оператори се пропуска, но оператор 2 (този, който работи с for
променливата на брояча на цикъла) все още се изпълнява.
Нека се върнем към нашия пример с прескачане на числа, които се делят на 7.
Този code ще се повтаря завинаги | Този code ще работи добре |
---|---|
|
|
Кодът, който използва while
цикъла, няма да работи — i никога няма да бъде по-голям от 7. Но codeът с цикъла for
ще работи добре.
4. Сравнение за цикли: Java срещу Pascal
Между другото, Pascal също има For
цикъл. По принцип всеки език за програмиране има такъв. Но в Паскал е супер ясно. Примери:
Паскал | Java |
---|---|
|
|
|
|
|
|
GO TO FULL VERSION