Из статьи мы узнаем, что такое условный оператор if в паскале и рассмотрим две типовые задачи по использованию этого оператора на деле.
Условный оператор
Приступаем к изучению сложных операторов, самый первый из них – условный.
Условный оператор позволяет проверить некоторое условие и в зависимости от результата проверки выполнить то или иное действие.
Структура условного оператора имеет следующий вид:
1 2 3 4 5 6 |
IF [условие] THEN [оператор1] [ELSE оператор2] |
где IF, THEN, ELSE – зарезервированные слова;
условие — любое логическое выражение;
оператор1, оператор2 — любые операторы языка Турбо-Паскаль (операторы могут быть и составными).
Как происходит выполнение условного оператора?
В первую очередь осуществляется проверка истинности условия. Если условие истинно (равно true), выполняется оператор1, если же условие ложно (равно false) — оператор2. И в том и в другом случае выполняется только один из операторов оператор1 и оператор2, другой же – просто игнорируется.
Как видите, часть else условного оператора может отсутствовать. Тогда, если условие истинно, то выполняется оператор1, в противном же случае весь оператор if пропускается.
Применение условного оператора проиллюстрируем на следующем примере.
Пусть значение y зависит от значения x. График зависимости приведен на рисунки ниже. Требуется по заданному x определить значение y.
Для того, чтобы по заданному x определить значение y, нужно выяснить, в пределах какого из трех интервалов лежит значение x, а затем уже подставлять его в нужное выражение.
Примеры работы оператора if
Первый пример
Первый пример представляет программу, которая вычисляет значение y по заданному значению x. Условия задачи были рассмотрены чуть выше в статье.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
uses Crt; var x, y : real; BEGIN ClrScr; write('Введите x: '); readln(x); if x<2 then {если x попадает в 1-й интервал} y:=x else if x<3 then {если x попадает во 2-й интервал} y:=2 else {если x не попадает ни в 1-й, ни во 2-й} y:=-x+5; writeln('При x=',x:6:2,' y=',y:6:2); END. |
Обратите внимание! Точка с запятой перед else не ставится.
Поскольку любой из операторов оператор1 и оператор2 может быть условным, и, в то же время, не каждый из вложенных условных операторов может иметь часть else, оператор может быть неоднозначно истолкован. Подобная неоднозначность в Турбо-Паскале решена так: любая встретившаяся часть else соответствует ближайшему сверху if…then .
Второй пример
Давайте попробуем написать еще одну программу с применением условного оператора IF. Эта программа должна определять, попадает ли точка с заданными координатами (x,y) в кольцо, больший радиус которого равен r1, а меньший – r2. Центр кольца совпадает с началом координат.
В этой программе нам придется проверять два условия: необходимо, чтобы точка попала в больший круг и в то же время – не попала в меньший. Чтобы записать такое двойное условие нужно использовать логическую операцию AND. Все остальное в этой программе – достаточно просто.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
uses Crt; var x, y, r1, r2 : real; BEGIN ClrScr; write('Введите координату x: '); readln(x); write('Введите координату y: '); readln(y); write('Введите больший радиус: '); readln(r1); write('Введите меньший радиус: '); readln(r2); if (sqrt(x*x+y*y)<r1) AND (sqrt(x*x+y*y)>r2) then writeln('Точка (',x:5:2,';',y:5:2:, ') попадает в указанное кольцо'); else writeln('Точка (',x:5:2,’;’,y:5:2:, ') не попадает в указанное кольцо'); END. |