"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо и Ю.А. Быкадоров, Е.Н. Войтехович
Оператор ветвления позволяет программе выбирать действие в зависимости от условия. Сначала компьютер проверяет, истинно ли логическое выражение, а затем выполняет одну из предусмотренных команд или пропускает её. В Pascal используют неполное ветвление if…then и полное if…then…else. Понимание этой конструкции помогает создавать алгоритмы, в которых действия зависят от введённых чисел и других данных.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Оператор ветвления — команда, которая выбирает, какой оператор выполнить, в зависимости от истинности условия. Он нужен, когда программа должна по-разному действовать при разных исходных данных. Например, можно отдельно обработать положительное и отрицательное число.
Условие — логическое выражение, результатом которого бывает только истина или ложь. Обычно его получают сравнением величин, например x > 0 или a = b. По этому результату программа понимает, какую ветвь выбрать.
Неполное ветвление — форма if … then, в которой действие предусмотрено только для истинного условия. Если проверка дала ложь, специальная команда не выполняется. Такую форму используют, когда при одном из результатов ничего делать не нужно.
Полное ветвление — форма if … then … else, где для истины и лжи заданы разные действия. Она гарантирует выбор одной из двух команд. Это удобно, например, при сравнении двух чисел, когда нужно вывести один из двух вариантов ответа.
Сначала компьютер вычисляет условие, потому что выбор действия невозможен до получения результата проверки. Если результатом стала истина, управление переходит к команде, связанной с then. Если результат ложный, программа выбирает другую ветвь или продолжает работу дальше, если ветви else нет.
В неполном ветвлении команда после then выполняется только при выполнении условия. При лжи программа не останавливается и не возвращается к проверке, а сразу переходит к следующему оператору. Такая конструкция не содержит else, потому что для отрицательного результата отдельное действие не требуется.
В полном ветвлении после then находится действие для истины, а после else — действие для лжи. Это позволяет явно описать оба возможных исхода и не оставлять ситуацию без обработки. Компьютер выбирает только одну из ветвей, поэтому обе команды одновременно не выполняются.
Условия строят сравнением величин: чисел, символов или других значений, которые можно сопоставить. Знак = означает проверку равенства, а не присваивание, потому что в условии нужно узнать отношение уже имеющихся данных. Ошибка в знаке меняет множество подходящих значений: например, x > 0 исключает ноль, а x >= 0 включает его.
В Pascal перед else точку с запятой не ставят, поскольку она завершает оператор if. Если написать точку с запятой сразу после команды then, компилятор может считать ветвление законченным и не связать else с нужным if. Точка с запятой ставится после всего полного оператора, когда закончены обе ветви.
| Свойство | Неполное ветвление | Полное ветвление |
|---|---|---|
| Запись в Pascal | if условие then оператор; | if условие then оператор1 else оператор2; |
| Действие при истинном условии | Выполняется оператор после then | Выполняется оператор после then |
| Действие при ложном условии | Ветка пропускается | Выполняется оператор после else |
| Когда применять | Когда действие нужно только при истине | Когда нужны разные действия для истины и лжи |
Сначала определите, нужно ли действие при ложном условии. Если нет, выбирайте неполную форму, а если для двух исходов предусмотрены разные команды — полную. При записи проверяйте, к какой ветви относится каждый оператор.
В таблице показано не значение условия, а результат выбора команды. В обоих вариантах ветвь then связана с истиной, но только полная форма содержит отдельное действие для лжи.
Условие: дано целое число x; нужно вывести «Положительное», если x больше нуля. Отрицательное число и ноль выводить не требуется. Поэтому достаточно неполного ветвления.
Ответ: используется условие x > 0 и неполное ветвление. Например, при x = 7 будет выведено «Положительное», а при x = 0 — ничего.
Условие: даны a и b; нужно вывести большее, а при равенстве сообщить об этом. Сначала проверим особый случай равенства, потому что тогда нельзя назвать одно число большим другого. После этого останется выбрать между a и b.
Ответ: последовательность может выглядеть так: if a = b then writeln('Числа равны') else if a > b then writeln(a) else writeln(b). Вложенное if позволяет выбрать большее только после исключения равенства.
Условие: даны три числа, требуется определить наибольшее. Удобно сначала считать первым кандидатом наибольшее число a, а затем сравнить с ним b и c. Такой способ учитывает и случай равенства, если использовать нестрогий знак.
Ответ: после двух проверок выводим m. Последовательность сравнений уменьшает задачу до поддержания текущего наибольшего значения и не требует заранее угадывать, какое число окажется самым большим.
Присваивание вместо сравнения. Знак присваивания пытаются использовать, когда хотят проверить равенство, потому что оба действия связаны со знаком «равно» в обычной записи. В условии Pascal применяйте =, а перед запуском спрашивайте себя: я проверяю значение или изменяю его?
Точка с запятой перед else. Её ставят по привычке после каждой команды, не учитывая, что полное ветвление ещё не закончено. Проверьте запись: перед else точка с запятой отсутствует, а после всей конструкции она допустима.
Перепутаны ветви then и else. Иногда первую команду считают действием при лжи, хотя then всегда соответствует истинному условию. Для проверки подставьте пример, при котором условие явно истинно, и проследите, какая команда должна выполниться.
Не учтены границы. Знак > не включает значение, равное границе, поэтому условие x > 10 не подходит для x = 10. Перед записью решите, входит ли граница в нужный диапазон, и выберите > или >= соответственно.
До ветвлений нужно знать запись алгоритмов и программ на Pascal, присваивание и типы данных. Эти знания позволяют правильно хранить значения и записывать команды, которые будут выбраны.
Также необходимо уметь сравнивать значения и понимать смысл истины и лжи. Без этого нельзя составить условие и предсказать результат проверки.
Ветвления применяются в алгоритмах с несколькими вариантами действий и часто соединяются с циклами. Например, внутри цикла можно проверять каждый элемент и обрабатывать только подходящие значения.
Чем неполное ветвление отличается от полного?
В неполном ветвлении есть действие только для истинного условия: if…then. В полном ветвлении предусмотрены две ветви: then выполняется при истине, а else — при лжи.
Что произойдёт, если условие в операторе if ложно?
В неполном ветвлении команда после then будет пропущена, и программа продолжит выполнение со следующего оператора. В полном ветвлении выполнится команда после else.
Какие знаки сравнения можно использовать в условии?
В Pascal применяют знаки =, , , =. Они проверяют равенство, неравенство и отношения между величинами.
Почему перед else нельзя ставить точку с запятой?
Точка с запятой завершает оператор после then. Поэтому else перестаёт связываться с этим if и программа может выдать ошибку.
Как проверить, что два значения равны?
Для проверки равенства используют знак =, например a = b. Это условие имеет значение истина, если значения a и b совпадают.
§ 16. Оператор ветвления