Условный оператор в Паскале
Для реализации разветвляющихся алгоритмов в языке программирования Паскаль используется условный оператор IF..THEN..ELSE. Кратко об условном операторе в Паскале с примерами его использования написано в данной статье.
Условный оператор в Паскале
Присутствующее в алгоритмах ветвление программно реализуется через условный оператор.
В языке Паскаль условный оператор задается набором ключевых слов IF..THEN..ELSE.
В переводе на русский язык это звучит как ЕСЛИ..ТО..ИНАЧЕ.
Полное ветвление
Формат записи условного оператора:
Такая форма условного оператора предназначена для реализации разветвляющегося алгоритма с полным ветвлением.

Например, требуется определить, положительное или отрицательное число введено с клавиатуры. Число следует сравнить с нулем. Если оно больше нуля, то выводится на экран сообщение – число положительное, если меньше нуля, то оно отрицательное. Выражение для условия будет выглядеть так: x>0.
Программный код для такой задачи с использованием условного оператора можно записать следующим образом:
Writeln(’Введите целое число: ’);
If x > 0 then writeln (‘Число положительное’) else writeln (‘Число отрицательное’);
Как известно, в конце каждой строки программы, написанной на языке Паскаль, всегда ставится точка с запятой. Условный оператор не исключение, после него также ставится «;». Нельзя ставить разделитель «;» между словами IF .. THEN.. ELSE. Но если возникает ситуация, когда необходимо выполнить несколько действий по результатам условия, то они заключаются в операторные скобки Begin .. End и отделяются друг от друга точкой с запятой.
Неполное ветвление
Если по результатам условия требуется выполнить только одно действие, то используется неполный оператор IF..THEN.
Формат записи условного оператора с неполным ветвлением:

В рассмотренном примере строка программы с условным оператором при неполном ветвлении будет выглядеть так:
If x > 0 then writeln (‘Число положительное’);
Вложенные условия
В некоторых задачах требуется проверить подряд несколько условий, то есть в случае выполнения первого условия перейти к проверке второго. Такая ситуация в программе реализуется через вложенные условия. Формат записи будет выглядеть так:
В данной схеме ДЕЙСТВИЕ 3 относится к УСЛОВИЮ 1.

При использовании варианта с вложенными условиями следует помнить, что ELSE связан с ближайшим предшествующим IF, у которого еще нет парного ELSE.
Что мы узнали?
Для реализации разветвляющегося алгоритма используется условный оператор IF..THEN..ELSE. Если ветвление неполное, то используют неполный оператор IF..THEN.
Условный оператор
Проверьте истинность второго отношения при подстановке следующих значений:
Определение. Выражение, о котором после подстановки в него значений переменных можно сказать, истинно (верно) оно или ложно (неверно), называется булевым (логическим) выражением.
Примечание. Название “булевы” произошло от имени математика Джорджа Буля, разработавшего в XIX веке булеву логику и алгебру логики.
Определение. Переменная, которая может принимать одно из двух значений: True (правда) или False (ложь), называется булевой (логической) переменной. Например,
| К:=True; Flag:=False; Second:=a+sqr(x)>t |
Задача. Вычислить значение модуля и квадратного корня из выражения (х-у).
Для решения этой задачи нужны уже знакомые нам стандартные функции нахождения квадратного корня — Sqr и модуля — Abs. Поэтому Вы уже можете записать следующие операторы присваивания:
| Koren:=Sqrt(x-y); Modul:=Abs(x-y) |
В этом случае программа будет иметь вид:
| Program Znachenia; Uses Crt; Var x, y : integer; Koren, Modul : real; Begin ClrScr; write (‘Введите значения переменных х и у через пробел ‘); readln (x, y); Koren:=Sqrt(x-y); Modul:=Abs(x-y); write (‘Значение квадратного корня из выражения (х-у) равно ‘, Koren); write (‘Значение модуля выражения (х-у) равно ‘, Modul); readln; End. |
Казалось бы, задача решена. Но мы не учли области допустимых значений для нахождения квадратного корня и модуля. Из курса математики Вы должны знать, что можно найти модуль любого числа, а вот значение подкоренного выражения должно быть неотрицательно (больше или равно нулю).
Поэтому наша программа имеет свою допустимую область исходных данных. Найдем эту область. Для этого запишем неравенство х-у>=0, то есть х>=у. Значит, если пользователем нашей программы будут введены такие числа, что при подстановке значение этого неравенства будет равно True, то квадратный корень из выражения (х-у) извлечь можно. А если значение неравенства будет равно False, то выполнение программы закончится аварийно.
Задание. Наберите текст программы. Протестируйте программу со следующими значениями переменных и сделайте вывод.
- х=23, у=5;
- х=-5, у=15;
- х=8, у=8.
Каждая программа, насколько это возможно, должна осуществлять контроль за допустимостью величин, участвующих в вычислениях. Здесь мы сталкиваемся с разветвлением нашего алгоритма в зависимости от условия. Для реализации таких условных переходов в языке Паскаль используют операторы If и Case, а также оператор безусловного перехода Goto.
Рассмотрим оператор If.
Для нашей задачи нужно выполнить следующий алгоритм:
если х>=у,
то вычислить значение квадратного корня,
иначе выдать на экран сообщение об ошибочном введении данных.
Запишем его с помощью оператора If. Это будет выглядеть так.
| if x>=y then Koren:=Sqr(x-y) else write (‘Введены недопустимые значения переменных’); |
Теперь в зависимости от введенных значений переменных х и у, вычисление квадратного корня может выполняться или не выполняться.
В общем случае полная форма конструкции условного оператора имеет вид:
Условный оператор работает по следующему алгоритму.
Сначала вычисляется значение логического выражения, расположенного за служебным словом IF. Если его результат истина, выполняется , расположенный после слова THEN, а действия после ELSE пропускаются; если результат ложь, то, наоборот, действия после слова THEN пропускаются, а после ELSE выполняется .
Управляющая структура if может показаться негибкой, так как выполняемые действия могут быть описаны только одним оператором. Иногда может потребоваться выполнение последовательности операторов. В этом случае хотелось бы заключить всю последовательность в воображаемые скобки. В Паскале предусмотрен этот случай.
Если в качестве оператора должна выполниться серия операторов, то они заключаются в операторные скобки begin-end. Конструкция Begin . End называется составным оператором.
| if then begin оператор 1; оператор 2; . end else begin оператор 1; оператор 2; . end; |
Определение. Составной оператор — объединение нескольких операторов в одну группу. Группа операторов внутри составного оператора заключается в операторные скобки (begin-end).
| begin оператор 1; оператор 2; end; |
С учетом полученных знаний преобразуем нашу программу.
| Program Znachenia; Uses Crt; Var x, y : integer; Koren, Modul : real; Begin ClrScr; write (‘Введите значения переменных х и у через пробел ‘); read (x, y); if x>=y then begin Koren:=Sqr(x-y); Modul:=Abs(x-y); write (‘Значение квадратного корня из выражения (х-у) равно ‘, Koren); write (‘Значение модуля выражения (х-у) равно ‘, Modul); end else write (‘Введены недопустимые значения переменных’); readln; End. |
Составным оператором является и такой оператор
| begin S:=0; end. |
Cимвол “;” в данном случае разделяет оператор присваивания S:=0 и пустой оператор.
Пустой оператор не влечет никаких действий и в записи программы никак не обозначается.
Например, составной оператор
включает лишь один пустой оператор.
Если Вы обратили внимание, программа на языке Паскаль всегда содержит один составной оператор — раздел операторов программы.
Внимание! Перед служебным словом Else разделитель (точка с запятой) не ставится.
Отметим, что большинство операторов в программах на языке Паскаль заканчиваются точкой с запятой, но после некоторых операторов точка с запятой не ставится. Сформулируем общие правила употребления точки с запятой:
-
Каждое описание переменной и определение константы заканчиваются точкой с запятой.
Рассмотрим еще один пример.
Задача. Вывести на экран большее из двух данных чисел.
| Program Example1; Var x, y : integer; Begin writeln(‘Введите 2 числа ‘); readln(x,y); if x>y then writeln (x) else writeln (y); readln; End. |
Можно также использовать и сокращенную (неполную) форму записи условного оператора. Эта форма используется тогда, когда в случае невыполнения условия ничего делать не надо.
Неполная форма условного оператора имеет следующий вид.
Тогда если выражение, расположенное за служебным словом IF. в результате дает истину, выполняются действия после слова THEN, в противном случае эти действия пропускаются.
Задача. Составить программу, которая, если введенное число отрицательное, меняет его на противоположное.
| Program Chisla; Var x : integer; Begin writeln(‘Введите число ‘); readln(x); if x then x:=-x; writeln (x); readln; End. |
Какой оператор предназначен для записи разветвляющегося алгоритма на языке паскаль
Условный оператор
При записи на языке Паскаль разветвляющихся алгоритмов используют условный оператор. Его общий вид:
Для записи неполных ветвлений используется неполная форма условного оператора:
Слова if — then — else переводятся с английского языка на русский как если — то — иначе, что полностью соответствует записи ветвления на алгоритмическом языке.
Перед else знак «;» не ставится.
В качестве условий используются логические выражения:
• простые — записанные с помощью операций отношения;
• сложные — записанные с помощью логических операций.
Пример. Запишем на языке Паскаль алгоритм определения принадлежности точки х отрезку [а, b].

Пример. Воспользуемся неполным условным оператором для записи на языке Паскаль алгоритма присваивания переменной у значения наибольшей из трёх величин а, b и с.

Дополните эту программу так, чтобы её выполнение приводило к присваиванию переменной у значения большей из четырёх величин а, b, с и d.
Составной оператор
В условном операторе и после then, и после else можно использовать только один оператор. Если при некотором условий требуется выполнить определённую последовательность операторов, то их объединяют в один составной оператор.
Begin end называется составным оператором.
Пример. Алгоритм решения квадратного уравнения вам хорошо известен. Запишем соответствующую программу на языке Паскаль.

Многообразие способов записи ветвлений
В качестве оператора после then и else можно использовать условный оператор. Например, возможна следующая конструкция:
При использовании таких сложных конструкций (их ещё называют вложенными ветвлениями) следует иметь в виду, что else всегда относится к ближайшему оператору if.
Пример. Воспользуемся вложенным ветвлением для записи на языке Паскаль алгоритма решения линейного уравнения.

Как правило, для решения одной и той же задачи можно предложить несколько алгоритмов. Убедимся в этом, записав программу решения линейного уравнения, не прибегая к вложенным ветвлениям.

Возможно, второй вариант программы покажется вам более наглядным. Но и у первого варианта есть свои преимущества: в нём делается меньше проверок.
Используйте вложенные ветвления для записи программы, определяющей принадлежность точки х отрезку [а, b].
САМОЕ ГЛАВНОЕ
При записи на языке Паскаль разветвляющихся алгоритмов используют условный оператор:
Для записи неполных ветвлений используется неполный условный оператор:
Если при некотором условии требуется выполнить определённую последовательных операторов, то их объединяют в один составной оператор, имеющий вид:
Ветвление в Pascal
Внимание! Все тесты в этом разделе разработаны пользователями сайта для собственного использования. Администрация сайта не проверяет возможные ошибки, которые могут встретиться в тестах.
Будьте внимательны! У Вас есть 10 минут на прохождение теста. Система оценивания — 5 балльная. Разбалловка теста — 3,4,5 баллов, в зависимости от сложности вопроса. Порядок заданий и вариантов ответов в тесте случайный.
Система оценки: 5 балльная
Список вопросов теста
Вопрос 1
Как называется алгоритм, который помимо следования содержит конструкцию ветвления?
Варианты ответов
- Линейный
- Циклический
- Разветвляющийся
- Вспомогательный
Вопрос 2
Какой оператор предназначен для записи разветвляющегося алгоритма на языке Паскаль?
Варианты ответов
- Оператор вывода
- Оператор присваивания
- Оператор цикла
- Условный оператор
Вопрос 3
Какие существуют формы записи условного оператора в языке Pascal?
Варианты ответов
- Развёрнутая
- Полная
- Дополненная
- Сокращённая
Вопрос 4
Как называется условный оператор, в котором при выполнении или невыполнении его условия выполняется несколько операторов?
Варианты ответов
- Составной
- Полный
- Сокращённый
- Простой
Вопрос 5
Выберите условные операторы, записанные в сокращённой форме.
Варианты ответов
- if a>b then begin p:=a; a:=b; b:=p; end;
- if a>b then max:=a else max:=b;
- if a<>b then write (‘не равны’) else write (‘равны’);
- if a<>b then a:=b;
Вопрос 6
Какую форму имеет блок условного оператора на блок-схеме?
Варианты ответов
- Ромб
- Прямоугольник
- Треугольник
- Параллелограмм
Вопрос 7
Из указанных фрагментов программ выберите те, которые дают ответ на вопрос, является ли целое число a чётным?
Варианты ответов
- if a mod 2=1 then write (‘Нет’) else write (‘Да’);
- if a mod 2=0 then write (‘Да’);
- if a mod 2=0 then write (‘Да’) else write (‘Нет’);
- if frac (a)=0 then write (‘Да’) else write (‘Нет’);
Вопрос 8
Какое число будет выведено в консоль при выполнении указанного участка кода?
if (‘a’<'b') and ('true'>‘false’)
then write (3+2*2)
else write (42/(3+4))
