Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Glava5_6.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
563.2 Кб
Скачать

If l then оператор1 else оператор2 ,

где L - условие, которым может быть вы­ражение булевского типа; опера­тор1, оператор2 - простые (в том числе и условные) или составные операторы (рис. 6.1).

Рис. 6.1. Синтаксическая диаграмма оператора If

В дальнейшем для удобства изложения оператор1 будем называть then-ветвью, а оператор2 - else-ветвью. Подчеркнем, что в каждой из ветвей может находиться только один оператор. Перед else символ ’;’ не ставится никогда.

Оператор if выполняется так:

1) вычисляется выражение L, результат вычислений анализи­руется;

2) если результатом является true, выполняется опера­тор1, если false - оператор2.

После выполнения любой из ветвей выполняется следующий по порядку оператор программы.

Пример 6.1

Составить программу решения задачи, приведённой в примере 1.7.

program example61;

var

a, b, max: real;

begin

write ('введите числа a,b'); readln (a,b);

if a > b then max:=a else max:=b;

writeln ( max:10:2 )

end.

Если a > b, то выполняется оператор max:=a (ветвь then), в против­ном случае - оператор max:=b (ветвь else). После выполнения любой ветви следующим будет выполнен оператор вывода.

Если в одной или в обеих ветвях оператора if необходимо раз­местить не один, а несколько операторов, то каждую такую группу следует представить в виде одного составного оператора.

Составной оператор используется в тех случаях, когда в соответствии с правилами построения конструкций языка можно использовать один оператор, а выполнить нужно несколько действий. В дальнейшем везде, где будет указываться, что можно использовать один оператор, он может быть составным.

Составной оператор начинается служебным словом begin и за­канчивается словом end. Между этими словами размещаются необходи­мые для вычислений операторы.

Слова begin и end играют в составном операторе роль скобок и называются, поэтому операторными скобками.

Пример 6.2

begin

c:=a;

a:=b;

b:=c

e nd

При использовании составных операторов следует помнить, что:

a) внутри этих операторов могут быть любые операторы, содер­жащие в свою очередь простые и составные операторы;

б) передача управления извне внутрь составного оператора запрещена.

Пример 6.3

Решить уравнение ax2 + bx + c=0 ( a 0 )

program example63;

var

a, b, c, x1, x2, d : real;

begin

write ('введите a,b,c '); readln (a,b,c);

d := sqr (b) – 4 * a * c;

if (d < 0) then write ('корни комплексные ')

else

begin

d := sqrt (d); a:=2 * a;

x1:= ( - b + d ) / a; x2 := ( - b – d ) / a;

writeln (x1:10:2, x2:10:2)

end

end.

Е сли условие d < 0 истинно, выводится сообщение «корни комп­лексные», после чего работа программы заканчивается. В противном случае выполняется else-ветвь, содержащая составной оператор (че­тыре оператора присваивания и оператор вывода).

6.1.2. Краткая форма условного оператора if

Эта форма используется при программировании ответвлений и имеет вид:

if L then оператор1.

Если логическое условие L есть true, то выполняется опера­тор1, в противном случае выполняется следующий оператор програм­мы.

Пример 6.4

Составить программу решения задачи, приведенной в примере 1.8.

program example64;

var

a, b : real;

begin

write ('введите a, b '); readln (a, b);

if a < b then b := b / 2;

writeln ( a:10:2, b:10:2 )

end.

В операторе if непосредственно за ключевыми словами then и else могут следовать любые операторы, в том числе и операторы if.

В этом случае они называются вложенными. Ниже приведены примеры, в которых используются вложенные операторы if.

Пример 6.5

Составить программу решения задачи, приведенной в примере 1.10.

program example65;

var

x, y, a, b : real;

begin

writeln ('введите x, a, b ');

readln (x, a, b);

if a < x then y := sqr (x)

else if x < b then y := sqr (sqr (x))

else y := x * sqr (x);

writeln ( y:10:2 )

end.

Пример 6.6

Составить программу решения следующей задачи

Схема алгоритма

program example66;

var

x, a, z : real;

begin

write ('введите x,a'); readln (x,a);

if (a = 2) and (x = 1)

then z := sqr (a * x)

else

if (a = 3) or (x = 2)

then z := exp (1 / 3 * ln (x))

else z := exp (1 / 5 * ln (x));

writeln ( z:10:2 )

end.

В отличие от предыдущих примеров, где в качестве условий в операторах if использовались выражения отношения, здесь условия представляют собой более сложные логические выражения, содержащие логические операции and и or. В большинстве случаев это делает программу более простой и понятной.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]