Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Условный оператор используется в тех случаях, когда вычисления могут пойти по различным путям, в зависимости от выполнения или невыполнения определенных условий.
Пример 5.1. Вычислить арифметическое выражение у = x=1, если x<0, либо у=2х, если х≥0.
Здесь сначала проверяется условие: будет ли аргумент x положительным или отрицательным. В зависимости от этого условия вычисляется только одно значение: либо y=x+1, либо у=2х.
В языке ПАСКАЛЬ для таких вычислений предусмотрен условный оператор, который имеет две формы - полную и краткую.
Полная форма условного оператора имеет вид
IF_ <логическое выражение>_THEN_оператор 1
ELSE_оператор_2/
Здесь IF (если), THEN (тогда), ELSE (иначе) - служебные слова, оператор 1, оператор 2 - простые или составные операторы.
Если логическое выражение истинно, тогда выполняется оператор 1, иначе (если логическое выражение ложно) выполняется оператор 2. В качестве операторов 1 и 2 могут быть также условные операторы. Условный оператор относится к сложным, так как в его состав входят другие операторы.
Для рассмотренного примера 5.1 условный оператор имеет вид:
IF X<0 THEN Y: = X+1 ELSE Y: =2*x
Здесь значение X должно быть определено до выполнения оператора IF.
Условие, управляющее разветвлением вычислений, не обязательно должно иметь форму операции отношения. Оно может принимать вид любого логического выражения, в частности логической переменной.
Если в нашем примере описать B как логическую переменную и определить ее значение отдельно:
В: = Х<0
то условный оператор примет вид
IF В THEN Y: =X+1 ELSE Y:=2*x;
Пример 5.2. Вычислить A =N + 40, если значение N больше 15, но меньше 25. При всех других значениях N вычислить B = М+1. Условный оператор имеет вид
IF(N>15)AND(N<25)THEN A:=N+40 ELSE B:=M+1;
Обратите внимание на логическое выражение: когда выполняются одновременно оба условия N>15 и N<25, только тогда вычисляется значение A =N + 40. Значение переменных N и М должно быть определено до выполнения оператора.
Правила написания программы позволяют записывать ее в свободной форме. Однако для удобства восприятия программы, особенно большой и сильно разветвленной, рекомендуется слово ELSE писать под тем словом IF, к которому оно относится, например:
IF A=B THEN
IF С<D THEN X:=1
ELSE X:=2
ELSE X:=3;
Этот пример соответствует следующей алгебраической схеме:
1, если A=B и C<D
X = 2, если A=B и C≥D
3, если A≠B
Иногда используют другую запись условного оператора:
IF логическое выражение
THEN оператор 1
ELSE оператор 2
На первый взгляд она более целесообразна, но, как показал опыт, предыдущая форма записи более наглядна в сложной логической структуре, а вторая — в простой.
Действие условного оператора можно расширить путем использования составного оператора. В этом случае после слов THEN и ELSE могут быть составные операторы:
IF < логическое выражение > THEN
BEGIN
оператор 1;
оператор 2;
… … …
оператор n-1;
оператор n
END
ELSE
BEGIN
оператор 1;
оператор 2;
… … …
оператор n-1;
оператор n
END;
Обратите внимание на то, что перед служебным словом ELSE не ставится знак точки с запятой.
Внутри составных операторов могут быть также условные операторы, содержащие простые или составные операторы. Глубина вложенности может быть ограничена в различных версиях языка.
Например, если A > B, то нужно вычислить три оператора:
Y1 = 7, Y2 = A; Y3 = A + B.
Если A≤B, то нужно вычислить Т1 = 2А и Т2=A - В. Условный оператор имеет вид
IF A>В THEN
BEGIN
Y1:=7;
Y2:=A;
Y3:=A+B
END
ELSE
BEGIN
T1:=2*А;
T2:=A-B;
END;
Здесь используются два составных оператора. Возможны случаи, когда используются один составной оператор, а другой простой. Начинающие программисты часто допускают такую ошибку: после служебных слов THEN или ELSE имеют в виду составной оператор, а операторные скобки BEGIN - END ставить забывают. В этом случае выдается сообщение о неправильной конструкции условного оператора.
В языке ПАСКАЛЬ допускается и краткая форма условного оператора:
IF_ < логическое выражение > THEN _ оператор 1;
Если логическое выражение истинно, то выполняется оператор 1; иначе (если логическое выражение ложно) выполняется оператор, расположенный в программе после условного оператора IF. Например:
IF A>15 THEN Y:=X–7;
Z:=SUM+1;
В этом фрагменте представлено два независимых оператора. Один из них условный, другой — оператор присваивания.
Если условие A>15 истинно, то вычисляется значение Y и происходит передача управления на вычисление значения Z.
Если условие A>15 ложно, т. е. А≤15, то сразу выполняется оператор присваивания Z: = SUM+1.
Краткой формой условного оператора нужно пользоваться осторожно, так как может нарушиться вся структура при вложенных условных операторах. Вместо краткой формы рекомендуется использовать всегда полную форму, но после слова ELSE ничего не ставить (говорят, указывается пустой оператор). Так, для рассмотренного примера лучше составить следующую конструкцию:
IF A>15 THEN Y:=X–7;
ELSE;
Z:=SUM+1
Допускается использование пустого оператора и после слова THEN. Этот -же пример можно записать и так:
IF A <=15 THEN
ELSE Y:=X–7;
Z:=SUM+1;
Здесь в логическом выражении знак операции отношения «>» сменился на противоположный «≤». В соответствии с этим поменялись местами операторы, расположенные после слов THEN и ELSE (пустой оператор и оператор Y: = X - 7).
Пример 5.3. Определить, попадает ли точка a с координатами ха и уа внутрь круга с радиусом R. Центр круга совпадает с началом координат (рис. 5.1).
Рис. 5.1. Окружность с центром в начале координат.
Очевидно, что точка а находится внутри круга, если ее расстояние от начала координат
будет меньше радиуса круга R, т. е. если:
<R или >R2
Тогда программа 5.3 решения этой задачи может быть такой:
Программа 5.3
PROGRAM КРУГ;
VAR
XA, YA, R,L:REAL;
BEGIN
WRITE ('ВВЕДИТЕ ЗНАЧЕНИЯ XA,YA,R ');
READ(XA,YA,R);
L:=SQR(XA)+SQR(YA);
IF L<SQR(R)
THEN WRITELN (‘ТОЧКА НАХОДИТСЯ ВНУТРИ КРУГА’)
ELSE WRITELN (‘ТОЧКА НАХОДИТСЯ ВНЕ КРУГА ');
END.
Здесь условный оператор сравнивает расстояние L точки A от начала координат с радиусом круга R. Если оно меньше радиуса R, то выполняется группа THEN, т. е. печатается сообщение ТОЧКА НАХОДИТСЯ ВНУТРИ КРУГА. В противном случае выполняется группа ELSE, и на печать выводится сообщение ТОЧКА НАХОДИТСЯ ВНЕ КРУГА.
Дата публикования: 2014-11-02; Прочитано: 615 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!