Лекция: Логические выражения в управляющих операторах

Алгоритмическая структура ветвления программируется в Паскале с помощью условного оператора. Раньше мы его описывали в таком виде:

If <условие> Then <оператор 1> Else <оператор 2>;

Кроме того, возможно использование неполной формы условного оператора:

If <условие> Then <оператор>;

Теперь дадим строгое описание условного оператора в форме синтаксической диаграммы (рис. 20).

 

То, что мы раньше называли условием, есть логическое выражение, которое вычисляется в первую очередь. Если его значение равно true, то будет выполняться <оператор 1> (после Then), если false, то <оператор 2> (после Else) для полной формы или сразу следующий оператор после условного для неполной формы (без Else).

Пример 1. По длинам трех сторон треугольника а, b, с вычислить его площадь.

Для решения задачи используется формула Герона

 

где р = (а + b + с) / 2 — полупериметр треугольника. Исходные данные должны удовлетворять основному соотношению для сторон треугольника: длина каждой стороны должна быть меньше длин двух других сторон.

Имея возможность в одном условном операторе записывать достаточно сложные логические выражения, мы можем сразу «отфильтровать» все варианты неверных исходных данных.

Program Geron;

Var A,B,C,P,S: Real;

Begin

WriteLn('Введите длины сторон треугольника:');

Write('а='); ReadLn(A) ;

Write('b='); ReadLn(В);

Write ('c='); ReadLn(C);

If (A>0) And (B>0) And (00) And (A+B>C)

And (B+С>A) And (A+C>B)

Then Begin

P:=(A+B+C)/2;

S:=Sqrt(P*(P-A)*(P-B)*(P-C));

WriteLn('Площадь=',S)

End

Else WriteLn('Неверные исходные данные')

End.

Теперь рассмотрим синтаксическую диаграмму оператора цикл-пока, или цикл с предусловием (рис. 21).

 

Сначала вычисляется <Логическое выражение>. Пока его значение равно true, выполняется <0ператор> — тело цикла. Здесь <Oператор> может быть как простым, так и составным.

Пример 2. В следующем фрагменте программы на Паскале вычисляется сумма конечного числа членов гармонического ряда

 

Суммирование прекращается, когда очередное слагаемое становится меньше ε или целая переменная i достигает значения MaxInt.

S:=0;

I:=l;

While (l/I>=Eps) And (I<MaxInt) Do

Begin

S:=S+1/I;

I:=1+1

End;

Синтаксическая диаграмма оператора цикл-до, или цикл с постусловием, представлена на рис. 22.

 

 

Исполнение цикла повторяется до того момента, когда <Логическое выражение> станет равным true.

Предыдущая задача с использованием цикла с постусловием решается так:

S:=0;

I:=1;

Repeat

S:=S+1/I; I:=I+1

Until (1/I<Eps) Or (I>=MaxInt);

 

еще рефераты
Еще работы по информатике