"Информатика. (в 2 частях)", Поляков К.Ю., Еремин Е.А.
Ветвления и циклы помогают программе выбирать действия и повторять их. Ветвление проверяет условие и направляет выполнение по одному из вариантов или пропускает команду. Цикл выполняет набор команд несколько раз: заранее заданное число раз либо пока условие позволяет продолжать. Чтобы алгоритм работал правильно, нужно верно записывать условие, выделять команды отступами и следить, чтобы повторение могло завершиться.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Ветвление — алгоритмическая конструкция, в которой дальнейшие действия выбираются в зависимости от истинности условия. Условие — это утверждение, которое может быть истинным или ложным, например x > 0. Ветвление нужно, когда программа должна по-разному обработать разные ситуации.
Условный оператор if — команда, которая проверяет условие и выполняет заданные команды, если условие истинно. Например, можно проверить, больше ли число нуля, и только тогда вывести сообщение о положительном числе. Эта команда позволяет записать выбор действий в программе.
Цикл — алгоритмическая конструкция, которая повторяет одну или несколько команд. Повторяемые команды составляют тело цикла. Цикл нужен, чтобы не записывать одну и ту же команду много раз вручную.
Цикл с условием — цикл, выполнение которого зависит от проверки условия; проверка может происходить до повторения команд или после него. В первом случае тело иногда не запускается, а во втором выполняется хотя бы однажды. Различие помогает выбрать конструкцию под задачу и предсказать число повторений.
Условие в ветвлении записывают как логическое выражение, например n > 0. Если оно истинно, выполняется соответствующий блок команд; если ложно, программа выбирает другой путь или пропускает этот блок. В полном ветвлении предусмотрены действия для обоих исходов проверки, а в неполном команда задаётся только для истинного условия. Поэтому программа может реагировать на результат сравнения, а не выполнять один и тот же набор действий всегда.
Команды, относящиеся к ветвлению или циклу, выделяют отступами, чтобы показать, где начинается и заканчивается их блок. Команды с одинаковым отступом находятся на одном уровне и выполняются как часть этого блока. Если случайно убрать отступ или добавить его не там, программа может отнести команду к другой части алгоритма. При проверке кода полезно сравнивать отступы у команд, которые должны выполняться вместе.
Цикл с предусловием сначала проверяет условие, а затем, если оно истинно, выполняет тело. После выполнения тела условие проверяется снова, и повторение продолжается, пока проверка даёт истинный результат. Если условие ложно ещё до первого прохода, тело не выполняется вовсе. Такой порядок удобен, когда повторять команды нужно только при заранее выполненном условии.
Цикл с постусловием сначала выполняет тело, а уже потом проверяет условие продолжения. Если оно указывает, что нужно повторить действия, начинается следующий проход; иначе цикл останавливается. Проверка после тела объясняет, почему команды выполняются хотя бы один раз даже тогда, когда остановка должна наступить сразу. Такая конструкция подходит, например, когда перед проверкой требуется хотя бы раз запросить у пользователя данные.
В цикле с параметром задают начальное и конечное значения параметра, а также шаг — изменение параметра при каждом повторении. Программа перебирает значения от начального к конечному, и для каждого выполняет тело цикла. Больший шаг обычно даёт меньше повторений, а меньший — больше; изменение границ тоже меняет их количество. Если параметр движется не в сторону конечного значения, цикл может не завершиться или перебрать не те значения.
| Свойство | Ветвление | Цикл с предусловием | Цикл с постусловием | Цикл с параметром |
|---|---|---|---|---|
| От чего зависит выполнение команд | От истинности условия | От условия продолжения | От условия после тела | От значений и шага параметра |
| Когда проверяется условие или параметр | Перед выбором блока | До тела цикла | После тела цикла | При переборе значений |
| Может ли тело не выполниться ни разу | Да, выбранный блок может быть пропущен | Да | Нет | Да, если диапазон не содержит значений |
| Когда удобно применять | Для выбора действий | Для повторения до изменения условия | Когда действия нужны хотя бы один раз | Для перебора известного диапазона |
| Что может привести к неправильной работе | Неверное условие или блок | Условие не меняется и цикл не останавливается | Неправильная проверка остановки | Неверные границы или шаг |
Сначала определите, нужно ли выбрать действие или повторять команды, а затем сравните подходящие конструкции по строкам таблицы. Особое внимание уделите порядку проверки и возможности пропустить тело: это помогает понять, подойдёт ли конструкция для конкретного алгоритма. Последняя строка подсказывает, какие части решения нужно проверить перед запуском.
Условие задачи: ввести число и вывести, является ли оно положительным или неположительным. Нужно разделить все возможные числа на две группы, поэтому достаточно проверить одно условие: больше ли число нуля. Число, равное нулю, должно попасть в неположительную группу.
Проверка не пропускает ни один случай: для любого числа выражение либо истинно, либо ложно. Равенство нулю не удовлетворяет условию n > 0, поэтому выполняется ветвь «иначе». Ответ: использовать полное ветвление с условием n > 0.
Условие задачи: вывести натуральные числа от 1 до 5 с помощью цикла с параметром. Диапазон уже известен, значит, удобно задать начальное и конечное значения, а не проверять отдельное условие остановки после каждого числа. Шаг равен 1, потому что нужны все последовательные натуральные числа.
Тело выполняется для каждого из пяти значений параметра, поэтому число выводов равно пяти. Если изменить границы или шаг, изменится и набор значений. Ответ: алгоритм выводит 1, 2, 3, 4, 5.
Условие задачи: запрашивать числа, пока не будет введён ноль, а затем вывести их количество. Число повторений заранее неизвестно, поэтому число попыток нельзя задать обычным диапазоном параметра. Ноль служит сигналом остановки, а счётчик хранит количество введённых ненулевых чисел.
Проверка условия должна происходить так, чтобы завершающий ноль не увеличивал счётчик. В теле цикла запрашивается новое значение, иначе проверяемое число не изменится и повторение может стать бесконечным. Ответ: вывести число ненулевых значений, введённых до первого нуля.
Ошибка: записать условие так, что оно не даёт логического результата, например использовать значение без проверки. Так делают, когда путают само число с утверждением о числе. Проверьте себя: условие должно явно сравнивать величины, например n > 0, и давать один из двух ответов — истина или ложь.
Ошибка: неверно поставить отступы у команд блока. Из-за лишнего или пропущенного отступа команда может оказаться вне ветвления или цикла, хотя её хотели туда включить. Сравните отступы и спросите себя, какие команды должны выполняться вместе при выбранном условии или каждом повторении.
Ошибка: не изменять в цикле величину, от которой зависит условие продолжения. Это часто происходит, когда забывают запросить новое значение или увеличить счётчик. Проследите два-три прохода: если проверяемая величина не меняется и условие остаётся истинным, цикл может стать бесконечным.
Ошибка: считать, что цикл с предусловием обязательно выполнится хотя бы один раз. Такое ожидание возникает из-за смешения порядка проверки у разных циклов. Проверьте условие до первого прохода: если оно уже ложно, тело будет пропущено, поэтому для обязательного первого действия нужна конструкция с проверкой после тела.
Для работы с ветвлениями и циклами нужно уметь записывать команды алгоритма, логические условия и сравнения величин. Без этого нельзя точно задать, когда выбирать действие или продолжать повторение. Новые конструкции помогают собирать из знакомых команд более сложные алгоритмы.
Ветвления и циклы применяют в программах для обработки данных, перебора значений и решения задач с повторяющимися действиями. Ветвление позволяет реагировать на результаты вычислений, а цикл — обрабатывать много значений без копирования команд. Вместе они помогают описывать алгоритмы для разных ситуаций.
Чем ветвление отличается от цикла?
Ветвление выбирает, какие команды выполнить, в зависимости от условия. Цикл повторяет команды, пока выполняется условие или пока не исчерпан заданный диапазон параметра.
Что произойдёт, если условие цикла с предусловием сразу ложно?
Программа проверит условие до начала цикла. Если оно ложно, тело цикла не выполнится ни разу, а выполнение продолжится после цикла.
Почему команды внутри ветвления или цикла записывают с отступом?
Отступ показывает, что команда входит в блок ветвления или цикла. Команды с одинаковым отступом относятся к одному уровню, а его изменение может изменить структуру алгоритма.
Как избежать бесконечного цикла?
Проверь, что внутри цикла изменяется величина, от которой зависит условие продолжения, или параметр цикла движется к конечному значению. Затем проследи несколько повторений и убедись, что условие в конце концов станет ложным.
Как выбрать между циклом с условием и циклом с параметром?
Цикл с параметром удобен, если заранее известно, сколько значений нужно перебрать или каков диапазон повторений. Цикл с условием выбирают, когда повторение должно продолжаться до наступления события, которое заранее неизвестно.
§ 39. Ветвления и циклы