HTML Diff
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 &lt;= $lastNumber".</p>
11 </ul><p>Конструкция читается так: "делать то, что указано в теле цикла, пока истинно условие $i &lt;= $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>