Условный оператор
Разберем задание, на котором поясним назначение и работу условного оператора.
Задание. Составить программу для
вычисления значения функции
.
Решение
Нам уже приходилось вычислять значения различных выражений, однако они были подобраны так, что значения данных выражений можно было вычислить при любых значениях входящих в них переменных.
При решении данной задачи необходимо
учитывать, что корень квадратный из х
существует только для неотрицательных
значений х (при
).
Поэтому в данном случае мы сами должны
продумать как должна работать программа
при отрицательном и при неотрицательном
значениях х. Пусть после ввода значения
х программа проверит введенное значение
х и выполнит одно из двух действий: если
x>=0, то вычислит
и выведет ответ на экран, иначе выведет
на экран сообщение о том, что при
отрицательном значении х функция
не существует.
Нарисуем блок-схему описанного алгоритма решения задачи:
По блок-схеме алгоритма решения задачи хорошо видно, что после ввода значения х выполнение команд программы разделяется на две части: левую и правую. Команды левой части выполнятся при условии, что введенное значение х окажется больше либо равно 0. Команды правой части выполнятся при условии, что введенное значение х окажется меньше нуля. Таким образом, в зависимости от введенного значения х будет выполнена либо левая, либо правая часть, но никогда не выполняются команды и левой и правой части одновременно.
Организовать такую работу программы можно с использованием условного оператора.
Общий вид условного оператора:
if <логическое выражение> then <оператор 1> [else <оператор 2>];
<логическое выражение> - это выражение типа boolean, которое принимает одно из двух значений: true (истина) или false (ложь);
Истинное значение логического выражения на блок-схемах обычно обозначается знаком «+» или словом «да», а ложное значение – знаком «-» или словом «нет».
<оператор 1> - оператор, который будет выполнен в том случае, когда логическое выражение принимает значение true;
<оператор 2> - оператор, который будет выполнен в том случае, когда логическое выражение принимает значение false.
Работа условного оператора описывается следующей блок-схемой:
Работает условный оператор следующим образом: если логическое выражение принимает значение true (истина), то выполняется оператор 1, стоящий после служебного слова then, если логическое выражение принимает значение false (ложь), то выполняется оператор 2, стоящий после служебного слова else.
Следует обратить внимание, что секция else <оператор 2> заключена в квадратные скобки. Ранее говорилось, что квадратные скобки при написании программы не пишутся, а при написании общего вида оператора они означают часть оператора или программы, которая может отсутствовать.
Т.е. условный оператор может иметь сокращенный вид:
if <логическое выражение> then <оператор 1>;
В сокращенном виде условного оператора оператор 1 выполняется при условии, что логическое выражение принимает значение true. Если же логическое выражение принимает значение false, то в сокращенном виде условного оператора ничего не выполняется и программа просто переходит к выполнению оператора следующего за условным оператором.
Работа сокращенного вида условного оператора описывается следующей блок-схемой:
Итак, вернемся к поставленному заданию и напишем программу, вычисляющую значение .
Program KvKoren;
Uses Crt;
Var x,y:real;
Begin
ClrScr; {Очистить экран}
write('Введите х: '); {Вывести подсказку на экран}
readln(x); {Ввести с клавиатуры значение в переменную х}
if x>=0 {Проверить логическое выражение х>=0}
then {Выполнить операторы, стоящие после слова then, если логическое выражение x>=0 принимает значение true (истина)}
begin {Начало составного оператора}
y:=sqrt(x); {Вычислить корень из х и результат поместить в переменную у}
writeln('y=',y:6:3); {Вывести полученное значение у на экран}
{Обратите внимание, что внутри составного оператора, составляющие его операторы отделяются друг от друга точкой с запятой}
end {Конец составного оператора. Важный нюанс: это конец составного оператора, но не конец условного оператора, поэтому здесь точка с запятой не ставится}
else writeln('При х<0 корень квадратный не существует.'); {Вывести на экран сообщение о том, что корень не существует, если логическое выражение x>=0 принимает значение false (ложь)}
readln; {Задержка работы программы}
End.
Обратите внимание на то, что в условном операторе после слов then и else может быть написано по одному оператору, однако, если требуется написать несколько операторов, то их нужно писать между зарезервированными словами begin и end, как это сделано после слова then. Ключевые слова begin и end называются операторными скобками, а операторы, заключенные между ними образуют так называемый составной оператор.
Приведем еще один пример использования условного оператора.
Пример. Составить программу для вычисления
значения функции, заданной системой:
Решение.
В зависимости от введенного значения х значение у будет вычислено по одной или другой формуле.
Решить эту задачу можно двумя способами:
с использованием полного вида условного оператора;
с использованием сокращенного вида условного оператора.
Рассмотрим оба варианта. Чтобы увидеть разницу между ними, рассматривать их будем параллельно.
Словесный алгоритм решения данной задачи может выглядеть следующим образом:
Словесный алгоритм решения задачи с использованием полного вида условного оператора |
Словесный алгоритм решения задачи с использованием сокращенного вида условного оператора |
|
|
Составим блок-схемы решения задачи, соответствующие первому и второму случаю:
Блок-схема решения задачи с использованием полного вида условного оператора |
Блок-схема решения задачи с использованием сокращенного вида условного оператора |
|
|
Приведем тексты программ, соответствующих словесным алгоритмам и блок-схемам:
Текст программы с использованием полного вида условного оператора |
Текст программы с использованием сокращенного вида условного оператора |
Program UslOp1; Uses Crt; Var x,y:real; Begin ClrScr; write('Введите х: '); readln(x); if x<3 then y:=2*x+1 else y:=x*x-4; writeln('y=',y:6:3); readln; End. |
Program UslOp2; Uses Crt; Var x,y:real; Begin ClrScr; write('Введите х: '); readln(x); if x<3 then y:=2*x+1; if x>=3 then y:=x*x-4; writeln('y=',y:6:3); readln; End. |
Задания для решения
Даны три числа: a, b и c. Определить: можно ли построить треугольник с данными сторонами.
Даны два целых числа a и b. Определить: является ли число а делителем числа b.
Составить программу вычисления значения функции
Составить программу вычисления значения функции
Известны две скорости: одна в километрах в час, другая – в метрах в секунду. Какая из скоростей больше?
Составить программу нахождения корней квадратного уравнения ax2+bx+c=0.
Дано трехзначное число. Выяснить, является ли оно палиндромом («перевертышем»), т.е. таким числом, десятичная запись которого читается одинаково слева направо и справа налево.
Дано трехзначное число. Верно ли, что все его цифры одинаковые?
Дано трехзначное число. Определить, есть ли среди его цифр одинаковые.
Задания для практической работы:
