Язык Паскаль. Применение условного оператора
Язык Паскаль. Применение условного оператора.
Операторные скобки.
Прежде чем говорить об условном операторе, познакомимся с понятием "операторные скобки". В языке Паскаль под операторными скобками понимают два служебных слова: Begin (открывающая скобка) и End (закрывающая скобка).
Составной оператор.
Это последовательность произвольных операторов программы, заключенная в операторные скобки begin и end. Следует отметить, что составные операторы — важный инструмент языка, дающий возможность писать программы по современной технологии структурного программирования.
На характер операторов, входящих в составной оператор, не накладывается никаких ограничений. Среди них могут быть и другие составные операторы языка, допускается произвольная глубина вложения составных операторов. Фактически весь раздел операторов представляет собой один составной оператор.
BEGIN {Начало раздела операторов}
Begin
Begin
Begin
End
End
End
END. {Конец программы)Количество слов "Begin" должно совпадать с количеством слов "End". Для того чтобы избежать ошибки при составлении программы, пишите каждую пару "Begin-End" с одной позиции. При наличии большого количества таких пар можно ставить номера:
BEGIN {Начало раздела операторов}
Begin {1}
Begin {2}
Begin {3}
End {3}
End {2}
End {1}
END. {Конец программы)Условный оператор.
В разветвляющихся вычислительных процессах (алгоритм ветвления) отдельные этапы вычислений выполняются не всегда в одном и том же порядке, а в зависимости от некоторых условий выбираются для исполнения различные их последовательности. Давайте рассмотрим конкретный пример.
Нам необходимо решить квадратное уравнение вида
ax2 + bх + с = 0
Перечислим последовательность действий для решения:
1. задать коэффициенты а, b, с,
2. вычислить значение дискриминанта,
3. проверить значения дискриминанта и, в зависимости от полученного ответа, выполнить то или иное действие.
В пункте 3 нашего алгоритма мы проводим анализ значения дискриминанта, а затем выбор действия, в зависимости от значений дискриминанта, т.е. данный алгоритм относится к алгоритмам ветвления.
Для реализации такого типа алгоритма, необходим оператор, который "выберет" то или иное действие (или группу действий) в зависимости от истинности или ложности условия выбора. Такой оператор называется оператором условного перехода, и его можно записать разными способами.
1. Полная форма оператора
IF <условие> THEN <оператор1> ELSE <оператор2> если тогда иначе
Пример. Из двух чисел а и b вывести на экран значение большего числа.
If a>b then writeln ('большее число а', а) else writeln ('большее числоb', b);
Внимание: перед словом ELSE нельзя ставить точку с запятой.
2. Краткая форма оператора.
Допускается опускать служебное слово ELSE. Оператор в этом случае выглядит следующем образом IF <условие> THEN <оператор1>;
Как работает эта конструкция? Запишем еще раз:
IF «условие»THEN<оператор1>;
<оператор2>; <оператор3>;
1. Выполняется оператор IF, т.е. проверяется условие.
Возможны два варианта:
условие истинно, в этом случае программа "уходит в сторону" на оператор 1, он выполняется, а затем продолжает выполнять последовательности операторов: оператор 2, оператор 3 и т. д.
Пример.
Вычислить значение функции, f(x) в зависимости от значения аргумента x
условие ложно, оператор 1 НЕ выполняется, следовательно, сразу выполняется следующий по порядку оператор: оператор 2, затем оператор 3 и т. д.
Решение этой задачи можно записать следующим образом:
IF x<0 then у=х;
IF x=0 then у=о;
IF x<0 then у=-х2;
Очень часто необходимо выполнять группу операторов либо за словом “then” (т.е. но истинности условия), либо за словом else (при ложности условия), либо и в том и другом случае.
Для того чтобы записать группу действий необходимо использовать составной оператор begin - end (операторные скобки).
1. IF <условие> THEN BEGIN
оператор 1; оператор 2; ; … оператор n END ELSE оператор;
2. IF <условие> THEN оператор ELSE BEGIN оператор 1; оператор 2; … оператор n
END
3. IF <условие> THEN BEGIN
оператор 1;
оператор 2;
оператор n END ELSE BEGIN
оператор 1;
оператор 2;
оператор n END;
Между словами BEGIN и END стоят операторы. Следуя правилу языка Паскаль, они отделены точкой с запятой.
Перед словом ELSE никогда не ставится точка с запятой..Вложенные операторы IF.
Пример.
Определить, попадает ли число X в интервал от -2 до 13.
Решение
Мы должны проверить два условия:
X должно быть больше -2. Если это условие является истиной, то проверяем второе условие: X должно быть меньше 13. В том случае, когда оба условия выполняются, мы можем сказать, что данное значение X удовлетворяет условию.
Как это записать?
{проверяем 1-е условие}
IF X>-2 THEN
{проверяем второе условие }IF X < 13 THEN
writeln('X удовлетворяет условию')
ELSE
writeln('X>=13')
ELSE
writeln('X<=-2');
Вложенность операторов IF не ограничена.
Задачи к пройденной теме
1. Получить максимальное число из трех целых чисел.
Сравниваем значения переменных X и Y, выбираем из них большее и сохраняем значение большей переменной в переменной с именем МАХ, затем значение переменной Z сравниваем со значением переменной МАХ и опять выбираем большее значение.
PROGRAM max_XYZ;
VAR
X, Y, Z: integer; {входные переменные}
MAX: integer; {выходная переменная}
BEGIN
writeln('введите значения переменных X, Y, Z'); readln(X, Y, Z);
IF X > Y THEN MAX := X ELSE MAX := Y;
IF Z > MAX THEN MAX := Z;
{обратите внимание: служебное слово ELSE отсутствует}
writeln('максималъное значение =', МАХ);
2. Даны целые числа X, Y, Z.
1) Вычислить MAX (X+Y+Z, XYZ).
2) Вычислить MIN(X, Y, X-Y).
Решение
1) PROGRAM MAX 2;
VAR
X, Y, Z: integer;
MAX: integer; BEGIN
\уп1е1п('введите значения переменных X, Y, Z');
readln(X, Y, Z);
IF X + Y + Z>X*Y*Z THEN MAX := X + Y + Z
ELSE
MAX := X * Y * Z;
writeln ('наибольшее число', MAX); END.
2) PROGRAM M1N_3;
VAR
X, Y: integer; MIN: integer;
BEGIN
writeln ('введите значения переменных X, Y'); readln(X,Y);
IF X<Y THEN MIN := X
ELSE MIN := Y;
IF X-Y<MIN THEN MIN-X-Y;
writeln ('наименьшее число', MIN);
END.
3. Даны действительные числа а, b, с.
Проверить, выполняются ли неравенства а < b < с. Напечатать на экране соответствующее сообщение.
Решение
PROGRAM N3;
VAR a, b, с: real;
BEGIN
writeln('введите значения переменных а, Ь, с'); readln(a, b, с);
IF a<b THEN IF b<c THEN writeln('условие выполнено')
ELSE writeln('yсловиe не выполнено')
ELSE writeln(‘условие не выполнено')
END.
4. Даны два целых числа. Если первое число больше второго то заменить его их разностью, в противном случае — суммой, второе число не изменять.
Решение
ПАСКАЛЬ
PROGRAM N4;
VAR a, b: Integer;
BEGIN
write1п('введите значения переменных а и Ь'); readln(a, b);
IF a>b THEN a := a - b
ELSE a := a + b;
writeln('a=', a , ' b=' , b)
END.
Задачи для самостоятельного решения
1. Даны три действительных числа a, b и с. Определить, можно ли построить треугольник с такими длинами сторон.
2. Верно ли, что для заданного четырехзначного числа выполняется соотношение: сумма первой и последней цифры равна разности второй и третьей цифры?
3. Даны два действительных числа. Удвоить первое число, если оно меньше второго, в остальных случаях оставить числа без изменения.
4. Даны действительные числа х и у. Определить, принадлежит ли точка с координатами х, у заштрихованной части плоскости.
5. Составьте программу, которая уменьшает первое число в 5 раз, если оно больше второго по абсолютной величине. Полученные числа вывести на экран
6. Составьте программу, которая увеличивает первое число в 7 раз, если оно меньше второго по абсолютной величине. Полученные числа вывести на экран.
7. Составьте программу, которая уменьшает второе число в 3 раза, если оно больше первого по абсолютной величине. Полученные числа вывести на экран.
8. Составьте программу, которая уменьшает первое число в 5 раз, если оно равно второму по абсолютной величине. Полученные числа вывести на экран.
9. Составьте программу, которая из трёх введённых с клавиатуры чисел возводит в квадрат отрицательные, а положительные оставляет без изменения. Полученные числа вывести на экран.
10. Составьте программу, которая из трёх введённых с клавиатуры чисел возводит в квадрат положительные, а отрицательные оставляет без изменения. Полученные числа вывести на экран.
11. Составьте программу, которая из трёх введённых с клавиатуры чисел возводит в квадрат отрицательные, у положительных меняет знак, а ноль оставляет без изменения. Полученные числа вывести на экран.
12. Составьте программу, которая из трёх введённых с клавиатуры чисел уменьшает в отрицательные на 10, а положительные увеличивает в 2 раза. Полученные числа вывести на экран.