Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИНФОРМАТИКА_Паскаль.doc
Скачиваний:
7
Добавлен:
08.05.2019
Размер:
1.77 Mб
Скачать

6.1. Операторы условных переходов

Операторы условных переходов относятся к числу сложных, так как в их состав входят другие (не условные) операторы. Условные операторы применяются в том случае, если возникает необходимость выполнять ту или иную часть (фрагмент) запущенной на исполнение программы в зависимости от выполнения содержащегося в ней какого-то условия. Существуют две формы условного оператора – полная и краткая.

Условный оператор полной формы имеет вид:

IF <Lv> THEN <оп. 1> ELSE <оп. 2> ;

Его элементами являются: IF(если), THEN (тогда), ELSE(иначе) – служебные (ключевые, зарезервированные) слова, <Lv>–логическое выражение условия булевского типа(типа Boolian), <оп. 1> и < оп. 2> – отдельные (одиночные) операторы программы. При выполнении этого оператора сначала проверяется (определяется) истинность логического выражения <Lv>. Если оно окажется истинным (TRUE), тогда будет выполняться только первый оператор <оп. 1>, а если оно окажется ложным (FALSE), то станет выполнятьсятольковторойоператор <оп. 2>, стоящий после слова ELSE.

Условный оператор краткой формы имеет вид:

IF<Lv>THEN<оп. 1> ;

Если предварительно проверенное логическое выражение <Lv>этого оператора окажется истинным (TRUE), тогда произойдёт выполнение единственного в нём оператора <оп. 1>. Если же <Lv>окажется ложным (FALSE), то <оп. 1> не выполняется и управление передаётся первому оператору, расположенному в программе непосредственно за условным оператором IF.

Рассмотрим в качестве примера использование этих условных операторов полной и краткой формы для программного решения одной и той же задачи, посвящённой выбору (поиску) большего числа из двух заданных. Программы решения этой задачи могут быть составлены по алгоритмам, структурные схемы которых имеют вид:

Group 45 Group 66

ДА НЕТ

НЕТ ДА

Приведенные ниже первая «Poisk_Bolsego_1» и вторая «Poisk_Bolsego_2» программы соответствуют левой и правой структурной схеме.

Program Poisk_Bolsego_1;

Uses Crt;

Var a, b, c : Real; lv : Boolean;

BEGINClrScr;

Write(' Bведите два числа А и В: '); ReadLn(A, B);

LV:=(A>B);

WriteLn(' Логическое выражение -- ',LV);

IFLVTHENC:=AELSEC:=B; {Условный оператор полной формы.}

Writeln(' Большим из двух является число ',C:3:1);

READLN END.

Program Poisk_Bolsego_2;

Uses Crt;

Var a, b, c : Real; lv : Boolean;

BEGINClrScr;

Write(' Bведите два числа А и В: '); ReadLn(A, B);

C:=A;

LV:=(B>A);

WriteLn(' Логическое выражение -- ',LV);

IFLVTHENC:=B; {Условный оператор краткой формы.}

Writeln(' Большим из двух является число ',C:3:1);

READLN END.

Операторы вывода значений истинности логических выражений в приведенных программах введены в учебных целях и при желании могут быть опущены. В условных операторах программ после ключевого слова IF вместо предварительно определённой переменной LV может записываться (в круглых скобках или без скобок) само условие, например, (B>A). Для каждой программы приводятся далее по две распечатки их выполнения, подтверждающие верность их (программ) составления.

AutoShape 86

Bведите два числа А и В: 55.5 55.7

Логическое выражение A>B -- FALSE

Большим из двух является число 55.7

Распечатки первой программы..

Bведите два числа А и В: 55.7 55.5

Логическое выражение A>B -- TRUE

Большим из двух является число 55.7

Bведите два числа А и В: 55.5 55.7

Логическое выражение B>A -- TRUE

Большим из двух является число 55.7

Распечатки второй программы.

Bведите два числа А и В: 55.7 55.5

Логическое выражение B>A -- FALSE

Большим из двух является число 55.7

При вводе по запросу приведенных программ двух одинаковых чисел в их распечатках (например, в распечатке второй программы вида

Bведите два числа А и В: 55.5 55.5

Логическое выражение B>A -- FALSE

Большим из двух является число 55.5 ) будет отсутствовать данная информация о равенстве А и В. Для устранения данного недостатка потребуется использовать в программах другие существующие в Паскале разновидности условных операторов, называемых составными.

Если в ранее рассмотренных условных операторах полной и краткой формы после ключевых слов THENиELSEможно было вставлять (записывать) только по одному оператору (и не более), то в составных условных операторах это ограничение отсутствует. Составной условный оператор полной формы относится к числу сложных операторов и представляется в программах по формату вида:

Rectangle 39

IF <Lv> THEN

BEGIN

<AutoShape 40 оп. 1>;

<оп. 2>; По ветви «ДА»

……… (TRUE).

<Line 42 оп. n>Знак «;» не ставится!

END

ELSE

BEGIN

< оп. 1>;

<оп. 2>; Поветви «НЕТ»

……… (FALSE).

< оп. n>Знак «;» не ставится!

END.

Из приведенного формата видно, что составными операторами в нём являются обобщённые в единую группу разнообразные операторы <оп. 1>, <оп. 2>, … , <оп. n> с помощью зарезервированных операторных скобок BEGIN и END и расположенные после ключевых слов THEN иELSE. Между операторными скобками может быть сколько угодно других операторов, но считается всё это одним составным оператором. Другими операторами, входящими в составной, могут быть и разнообразные условные операторы. В рассматриваемом условном операторе вместо двух составных может использоваться только один (верхний или нижний по формату), а другой быть одиночным. Рассмотрим для последнего варианта простую программу вычисления суммы двух присвоенных переменным Х и Y чисел, если Х – положительное, или вычисления квадрата переменной Х в противном случае.

.

Program SUMMA_or_KVADRAT;

USES Crt;