"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо и Ю.А. Быкадоров, Е.Н. Войтехович
Оператор ветвления позволяет программе выбирать действие по результату проверки условия. Если условие истинно, выполняется одна команда или группа команд; если ложно — программа поступает согласно выбранной форме записи. Неполная форма задаёт действие только для истинного условия, а полная предусматривает два варианта. Понимание ключевых слов if, then и else помогает правильно записывать алгоритмы с выбором.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Оператор ветвления — команда, которая выбирает выполняемое действие в зависимости от истинности условия. Он нужен, когда программа должна поступать по-разному для разных данных, например проверять, можно ли выдать скидку или какое число больше.
Условие — логическое выражение, результатом которого является значение «истина» или «ложь». Например, запись x > 0 истинна для положительного x и ложна для нуля или отрицательного числа. Условие помогает программе определить, какую ветвь выбрать.
Неполная форма оператора ветвления — запись, в которой команда выполняется только при истинном условии. Если условие ложно, эта команда не выполняется, а программа переходит к следующей команде. Такая форма нужна, когда при ложном условии ничего специально делать не требуется.
Полная форма оператора ветвления — запись, в которой предусмотрены разные команды для истинного и ложного условий. Программа выполняет команду первой ветви при истине, а второй — при лжи. Полная форма нужна, когда оба результата проверки требуют разных действий.
Сначала программа вычисляет условие и получает один из двух результатов: истина или ложь. Затем она использует этот результат, чтобы решить, выполнять ли команду в ветви. Например, при проверке x < 0 программа может изменить отрицательное число, но оставить остальные без изменений. Выбор происходит во время выполнения программы, поэтому он зависит от введённых данных и текущих значений переменных.
Неполную форму записывают с ключевыми словами if и then: if условие then команда. Слово if начинает проверку, а then отделяет условие от команды, которая зависит от результата. Если условие истинно, команда после then выполняется; если ложно — пропускается. Поэтому эта форма подходит для действия, которое нужно выполнить только в одном случае.
В полной форме после команды первой ветви добавляют ключевое слово else и команду для ложного условия: if условие then команда1 else команда2. Это позволяет явно задать оба возможных действия и не оставлять ложный результат без нужной реакции. Выполняется только одна ветвь: после определения результата программа не запускает другую альтернативу. Например, для чётного числа можно вывести одно сообщение, а для нечётного — другое.
Если в выбранной ветви нужно выполнить несколько команд, их объединяют в составной оператор. В языках с записью begin и end эти слова отмечают начало и конец группы команд: if условие then begin команда1; команда2 end. Группа воспринимается как единая ветвь, поэтому все её команды выполняются при истинном условии. Аналогично несколько команд можно объединить и после else.
При истинном условии программа выполняет ветвь после then, а затем продолжает работу со следующей командой после оператора ветвления. При ложном условии в неполной форме она сразу переходит к продолжению программы, а в полной — сначала выполняет ветвь после else. Если внутри ветви находится ещё один оператор ветвления, проверка продолжается по его собственному условию. Именно поэтому вложенные проверки нужно записывать так, чтобы границы ветвей были понятны.
| Форма оператора | Схема записи | Действие при истинном условии | Действие при ложном условии | Пример применения |
|---|---|---|---|---|
| Неполная форма | if условие then команда | Выполняется команда после then | Команда ветви пропускается | Увеличить число, если оно отрицательное |
| Полная форма | if условие then команда1 else команда2 | Выполняется команда1 | Выполняется команда2 | Вывести, чётное число или нечётное |
| Ветвь с одной командой | if условие then команда | Выполняется одна команда | Зависит от формы: ветвь пропускается либо выполняется команда else | Присвоить переменной новое значение |
| Ветвь с несколькими командами | if условие then begin команды end | Выполняются все команды группы | Зависит от наличия else | Изменить значение и вывести его |
| Вложенное ветвление | Оператор ветвления внутри другой ветви | Выполняется подходящая внутренняя ветвь | Выбор зависит от внешнего и внутреннего условий | Сравнить несколько чисел |
Сначала выбери форму по тому, что должна делать программа при ложном условии: пропустить действие или выполнить альтернативу. Затем проверь, сколько команд входит в ветвь и не скрывается ли внутри неё ещё одна проверка. Если условия вложены, отдельно проследи, к какому if относится каждое else.
Условие. Составить программу, которая увеличивает значение переменной x на 1, если оно отрицательное. Для остальных значений изменять x не нужно. Поэтому достаточно неполной формы: при ложном условии отдельное действие не требуется.
Ответ: использовать неполную форму if x < 0 then x := x + 1.
Условие. По введённому числу n определить, чётное оно или нечётное. Чётное целое число делится на 2 без остатка, а у нечётного остаток равен 1. Значит, проверка остатка позволяет выбрать одно из двух сообщений.
Ответ: проверить n mod 2 = 0 и выбрать сообщение с помощью полной формы.
Условие. Даны числа a, b и c; требуется определить наибольшее. Удобно хранить текущий максимум в переменной m и постепенно сравнивать с ним остальные числа. Такой способ позволяет обойтись последовательными проверками, не перечисляя все возможные порядки чисел.
Ответ: положить a в m, затем проверить b > m и c > m; после сравнений m содержит наибольшее число. В каждой проверке команда присваивания относится именно к своему условию. Вместо двух последовательных проверок можно построить вложенное ветвление, но в нём особенно важно не перепутать соответствие условий и ветвей.
Пропуск then или else. Ученик может записать только условие и команду, потому что воспринимает запись как математическое сравнение, а не как конструкцию языка. Но ключевые слова показывают границы частей оператора, и без нужного слова запись может оказаться синтаксически неверной. Проверь схему: после if указано условие, после then — первая команда, а в полной форме присутствует else.
Лишняя полная форма. Иногда добавляют else, даже если при ложном условии никакое действие не требуется. Это делает запись длиннее и может привести к ненужной или ошибочной команде. Спроси себя, нужно ли программе что-то делать при лжи: если нет, достаточно неполной формы.
Несколько команд записаны как одна ветвь без составного оператора. Если после then идут несколько команд, программа может связать с условием только первую или выдать ошибку. Так происходит, когда забывают обозначить границы группы команд. Проверь, что все команды ветви объединены составным оператором, например begin и end.
Else относится не к тому if. Во вложенной записи легко присоединить else к внешнему условию, хотя оно должно относиться к внутреннему, или наоборот. Причина часто в том, что все команды записаны подряд без наглядной структуры. Используй отступы и операторные скобки begin и end, а затем проследи каждую пару if и else.
Для записи ветвлений нужны логические выражения и операции сравнения: с их помощью строят условия, принимающие значения «истина» или «ложь». Также важно понимать последовательное выполнение команд, чтобы определить, что программа делает после выбранной ветви. Позже ветвления пригодятся в алгоритмах с несколькими вариантами действий, при проверке корректности данных и при построении циклов с условием. Значит, эта тема связывает проверку данных с управлением ходом программы.
Чем неполная форма оператора ветвления отличается от полной?
В неполной форме есть только команда для случая, когда условие истинно. В полной форме добавлена команда для ложного условия, поэтому программа выбирает один из двух вариантов.
Можно ли записать в ветви оператора несколько команд?
Да. Несколько команд объединяют в составной оператор, например заключают между begin и end. Тогда все эти команды выполняются как одна ветвь.
Что произойдёт, если условие окажется ложным?
В неполной форме команда ветви будет пропущена, и программа продолжит работу дальше. В полной форме выполнится команда после else.
К какому условию относится else во вложенном ветвлении?
Обычно else относится к ближайшему предшествующему if, у которого ещё нет своей ветви else. Чтобы не ошибиться, выделяй вложенные команды отступами и при необходимости используй begin и end.
Когда лучше использовать несколько операторов ветвления вместо вложенного?
Несколько отдельных операторов удобны, если проверки независимы и после одной из них может понадобиться выполнить следующую. Вложенное ветвление выбирают, когда следующая проверка нужна только при определённом результате предыдущей.
16.1. Запись оператора ветвления