
- •Глава 5. Программирование линейных вычислительных процессов
- •5.1. Оператор присваивания
- •5.2. Простейший ввод и вывод данных
- •5.2.1. Ввод числовых данных с клавиатуры
- •5.2.2. Вывод данных на экран монитора
- •5.3. Составление программы
- •5.4. Вопросы для самоконтроля
- •If l then оператор1 else оператор2 ,
- •6.1.2. Краткая форма условного оператора if
- •6.2. Оператор перехода goto
- •Пример 6.7
- •6.3. Оператор варианта case
- •Пример 6.10
- •Пример 6.12
- •6.4. Вопросы для самоконтроля
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. В большинстве случаев это делает программу более простой и понятной.