0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Программы, которые мы пишем во время обучения, становятся все сложнее и объемнее. Они все еще очень далеки от реальных программ, где количество строк кода измеряется десятками и сотнями тысяч, но текущая сложность уже способна заставить напрячься людей без опыта.</p>
1
<p>Программы, которые мы пишем во время обучения, становятся все сложнее и объемнее. Они все еще очень далеки от реальных программ, где количество строк кода измеряется десятками и сотнями тысяч, но текущая сложность уже способна заставить напрячься людей без опыта.</p>
2
<p>Начиная с этого урока, мы переходим к одной из самых сложных базовых тем в программировании -<strong>циклам</strong>.</p>
2
<p>Начиная с этого урока, мы переходим к одной из самых сложных базовых тем в программировании -<strong>циклам</strong>.</p>
3
<p>Любые прикладные программы служат очень прагматичным целям. Они помогают управлять сотрудниками, финансами, развлекают в конце концов. Несмотря на различия, все эти программы выполняют заложенные в них алгоритмы, которые очень похожи между собой.</p>
3
<p>Любые прикладные программы служат очень прагматичным целям. Они помогают управлять сотрудниками, финансами, развлекают в конце концов. Несмотря на различия, все эти программы выполняют заложенные в них алгоритмы, которые очень похожи между собой.</p>
4
<p><strong>Алгоритм</strong>- это последовательность действий или инструкций, которая приводит нас к какому-то ожидаемому результату. Это описание подходит под любую программу, но под алгоритмами обычно понимается что-то более специфичное.</p>
4
<p><strong>Алгоритм</strong>- это последовательность действий или инструкций, которая приводит нас к какому-то ожидаемому результату. Это описание подходит под любую программу, но под алгоритмами обычно понимается что-то более специфичное.</p>
5
<p>Представьте себе, что у нас есть книга и мы хотим найти внутри нее какую-то конкретную фразу. Саму фразу мы помним, но не знаем, на какой она странице. Как найти нужную страницу?</p>
5
<p>Представьте себе, что у нас есть книга и мы хотим найти внутри нее какую-то конкретную фразу. Саму фразу мы помним, но не знаем, на какой она странице. Как найти нужную страницу?</p>
6
<p>Самый простой и долгий способ - последовательно просматривать книгу до тех пор, пока мы не найдем нужную страницу. В худшем случае придется просмотреть все страницы, но результат мы все равно получим.</p>
6
<p>Самый простой и долгий способ - последовательно просматривать книгу до тех пор, пока мы не найдем нужную страницу. В худшем случае придется просмотреть все страницы, но результат мы все равно получим.</p>
7
<p>Именно этот процесс и называется<strong>алгоритмом</strong>. Он включает в себя перебор страниц и логические проверки, нашли мы фразу или нет. Количество страниц, которое придется посмотреть, заранее неизвестно, но сам процесс просмотра повторяется из раза в раз совершенно одинаковым образом.</p>
7
<p>Именно этот процесс и называется<strong>алгоритмом</strong>. Он включает в себя перебор страниц и логические проверки, нашли мы фразу или нет. Количество страниц, которое придется посмотреть, заранее неизвестно, но сам процесс просмотра повторяется из раза в раз совершенно одинаковым образом.</p>
8
<p>Для выполнения повторяющихся действий как раз и нужны циклы. Каждый такой повтор называется<strong>итерацией</strong>.</p>
8
<p>Для выполнения повторяющихся действий как раз и нужны циклы. Каждый такой повтор называется<strong>итерацией</strong>.</p>
9
<p>Допустим, мы хотим написать метод. Он должен выводить на экран все числа от 1 до того числа, которое мы указали через параметры:</p>
9
<p>Допустим, мы хотим написать метод. Он должен выводить на экран все числа от 1 до того числа, которое мы указали через параметры:</p>
10
<p>Этот метод невозможно реализовать уже изученными средствами, так как количество выводов на экран заранее неизвестно. А с циклами это не составит никаких проблем:</p>
10
<p>Этот метод невозможно реализовать уже изученными средствами, так как количество выводов на экран заранее неизвестно. А с циклами это не составит никаких проблем:</p>
11
<p>В коде метода использован цикл while. Он состоит из трех элементов:</p>
11
<p>В коде метода использован цикл while. Он состоит из трех элементов:</p>
12
<ul><li><strong>Ключевое слово</strong>while. Несмотря на схожесть с вызовом методов, это не вызов метода</li>
12
<ul><li><strong>Ключевое слово</strong>while. Несмотря на схожесть с вызовом методов, это не вызов метода</li>
13
<li><strong>Предикат</strong>- условие, которое указывается в скобках после while и вычисляется на каждой итерации</li>
13
<li><strong>Предикат</strong>- условие, которое указывается в скобках после while и вычисляется на каждой итерации</li>
14
<li><strong>Тело цикла</strong>- блок кода в фигурных скобках, аналогичный блоку кода в методе. Все константы или переменные, определенные внутри этого блока, будут видны только внутри этого блока</li>
14
<li><strong>Тело цикла</strong>- блок кода в фигурных скобках, аналогичный блоку кода в методе. Все константы или переменные, определенные внутри этого блока, будут видны только внутри этого блока</li>
15
</ul><p>Конструкция читается так: "делать то, что указано в теле цикла, пока истинно условие i <= lastNumber". Разберем работу этого кода для вызова App.printNumbers(3):</p>
15
</ul><p>Конструкция читается так: "делать то, что указано в теле цикла, пока истинно условие i <= lastNumber". Разберем работу этого кода для вызова App.printNumbers(3):</p>
16
<p>Самое главное в цикле - завершение его работы, то есть<strong>выход из цикла</strong>. Процесс, который порождает цикл, должен в конце концов остановиться. Ответственность за остановку полностью лежит на программисте.</p>
16
<p>Самое главное в цикле - завершение его работы, то есть<strong>выход из цикла</strong>. Процесс, который порождает цикл, должен в конце концов остановиться. Ответственность за остановку полностью лежит на программисте.</p>
17
<p>Обычно задача сводится к введению переменной, называемой<strong>счетчиком цикла</strong>. Он работает по такому принципу:</p>
17
<p>Обычно задача сводится к введению переменной, называемой<strong>счетчиком цикла</strong>. Он работает по такому принципу:</p>
18
<ul><li>Сначала счетчик инициализируется, то есть ему задается начальное значение. В примере выше счетчик - это инструкция var i = 1, выполняемая до входа в цикл</li>
18
<ul><li>Сначала счетчик инициализируется, то есть ему задается начальное значение. В примере выше счетчик - это инструкция var i = 1, выполняемая до входа в цикл</li>
19
<li>Затем в условии цикла проверяется, достиг ли счетчик своего предельного значения.</li>
19
<li>Затем в условии цикла проверяется, достиг ли счетчик своего предельного значения.</li>
20
<li>В итоге счетчик меняет свое значение i = i + 1</li>
20
<li>В итоге счетчик меняет свое значение i = i + 1</li>
21
</ul><p>На этом моменте новички делают больше всего ошибок. Представим, что в коде неправильно написана проверка в предикате. Это может привести к<strong>зацикливанию</strong>- ситуация, при которой цикл работает бесконечно и программа никогда не останавливается.</p>
21
</ul><p>На этом моменте новички делают больше всего ошибок. Представим, что в коде неправильно написана проверка в предикате. Это может привести к<strong>зацикливанию</strong>- ситуация, при которой цикл работает бесконечно и программа никогда не останавливается.</p>
22
<p>В таком случае приходится ее завершать принудительно:</p>
22
<p>В таком случае приходится ее завершать принудительно:</p>
23
<p>В некоторых случаях бесконечные циклы полезны. Здесь мы такие случаи не рассматриваем, но полезно увидеть, как выглядит этот код:</p>
23
<p>В некоторых случаях бесконечные циклы полезны. Здесь мы такие случаи не рассматриваем, но полезно увидеть, как выглядит этот код:</p>
24
<p>Подведем итог. Когда все же нужны циклы, а когда можно обойтись без них? Невозможно обойтись без циклов тогда, когда алгоритм решения задачи требует повторения каких-то действий, при этом количество этих операций заранее неизвестно. Так и было в примере с книгой, который мы рассматривали в начале урока.</p>
24
<p>Подведем итог. Когда все же нужны циклы, а когда можно обойтись без них? Невозможно обойтись без циклов тогда, когда алгоритм решения задачи требует повторения каких-то действий, при этом количество этих операций заранее неизвестно. Так и было в примере с книгой, который мы рассматривали в начале урока.</p>