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