Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Условный оператор



Условный оператор используется в тех случаях, когда вычисления мо­гут пойти по различным путям, в зависимости от выполнения или невы­полнения определенных условий.

Пример 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...