Пример 2.1 выполнения задания

Программы разветвляющейся структуры

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

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

Для реализации программ или фрагментов программ с разветвляющейся структурой используются сложные операторы[1]: условные операторыifи операторы выбораcase. В этом разделе ограничимся рассмотрением полной формы условного оператора - оператора if then else и его сокращенной формы – оператора if then.

При использовании условных операторов ветвление алгоритма обусловлено проверками логических выражений (в языке Object Pascal их называют булевскими выражениями), результатом вычисления которых могут быть лишь два значения: «истина» и «ложь». В условных операторах могут использоваться как простейшие булевские выражения, основанные на сравнении выражений других типов, так и сложные, использующие логические операции.

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

Оператор if then else имеет следующую синтаксическую диаграмму

Пример 2.1 выполнения задания - student2.ru

где БВ – булевское выражение (см. ниже в разделе Булевский тип), значением которого может быть либо «истина», либо «ложь». Оп1 и Оп2 – операторы, каждый из которых может быть пустым оператором. При выполнении оператора if then elseвначале вычисляется выражение БВ и если результат – «истина», то выполняется оператор Оп1, иначе, то есть если результат имеет значение «ложь», – оператор Оп2. В схемах алгоритмов оператору if then elseсоответствует конструкция

Пример 2.1 выполнения задания - student2.ru

Оператор if then имеет синтаксическую диаграмму

Пример 2.1 выполнения задания - student2.ru

Пример 2.1 выполнения задания - student2.ru где БВ – булевское выражение, Оп1 – оператор. При выполнении оператора if then вначале вычисляется выражение БВ и если результат – «истина», то выполняется оператор Оп1, иначе, то есть если результат – «ложь», управление передается следующему по порядку оператору программы. В схемах алгоритмов оператору if then соответствует конструкция

Пример 2.1 выполнения задания - student2.ru

Простейшими булевскими выражениями являются отношения. Знаки отношений записываются следующим образом: >, <, = – так же, как в математике, знаки Пример 2.1 выполнения задания - student2.ru записываются парами символов <=, >=, <> соответственно. Более сложные булевские выражения рассмотрены в следующем разделе.

Пример. Требуется записать условный оператор, вычисляющий новое значение Y по заданным значениям A, B, X, Y по формуле

Пример 2.1 выполнения задания - student2.ru

то есть в соответствии с алгоритмом
Пример 2.1 выполнения задания - student2.ru

Вот этот оператор:

if A > B then
if B >= 3 then
Y:=2
else
else
Y:=X;

Этому оператору if then elseподчинен оператор присваивания Y:=X и еще один оператор if then else, который, в свою очередь, содержит пустой оператор(после первого else) и оператор присваивания Y:=2. Необходимость использования else во вложенном условном операторе вытекает из следующего правила: else относится к ближайшему предшествующему if, у которого нет части else. Можно было бы не использовать else во вложенном условном операторе, но тогда пришлось бы заключить его в операторные скобки, то есть заменить его оператором

begin if B >= 3 then Y:=2 end.

Пример. Для функции предыдущего примера можно составить другой алгоритм:

Пример 2.1 выполнения задания - student2.ru

Тогда соответствующим ему оператором if then elseбудет

if A<=B then
Y:=X
else
if B>=3 then
Y:=2

и вложенный в него условный оператор естественно использовать в сокращенной форме.

Булевский тип

Это стандартный тип Boolean. Он представляет всего два значения: «ложь» и «истина» (соответствующие булевские константы - False и True). Операциями над данными типа Boolean являются:

· отрицание(другое название – не, знак операции not),

· конъюнкция(другие названия – логическое произведение или просто И, знак операции and),

· дизъюнкция(другие названия – логическая сумма или просто ИЛИ, знак операции or),

· неравнозначность(другие названия – неэквивалентность или сумма по модулю два, знак операции xor).

Отрицание является унарной операцией, остальные – бинарными.

В математике операции not соответствует знак Ø перед аргументом (ØХ) или черта над аргументом ( Пример 2.1 выполнения задания - student2.ru ); операции and соответствует знак & или • или Пример 2.1 выполнения задания - student2.ru (X&Y или X•Y или X Пример 2.1 выполнения задания - student2.ru Y ); операции or соответствует знак V (X V Y ); операции xor соответствует знак Пример 2.1 выполнения задания - student2.ru .

Ниже представлены их таблицы истинности.

X not X   X Y X and Y   X Y X or Y   X Y X xor Y
False True False False False False False False False False False
True False True False False True False True True False True
  False True False False True True False True True
True True True True True True True True False

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

Пример. Составить условный оператор для вычисления нового значения Y по формуле

Пример 2.1 выполнения задания - student2.ru

Как видно из задания, при истинности одного из условий, другие будут иметь значение «ложь», поэтому для вычисления лучше использовать не два, а один условный оператор if then else, что приведет к сокращению вычислений:

if (A*B>1) and (A>0) then
Y:=A
else
if (A+B>1) and (A<0) then
Y:=B;

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

Пример 2.1 выполнения задания

Составить программу вывода значений функции Y(X), заданной графиком (функция не определена при |Х|>3)

Пример 2.1 выполнения задания - student2.ru

или, что то же самое, – формулой

Пример 2.1 выполнения задания - student2.ru

двумя способами:

a) с помощью минимального числа операторов if then else, без применения булевских операций (not, and, or, xor),

b) с помощью минимального числа операторов if then (без else) с применением булевских операций.

Вывести с поясняющими текстами значение Х и вычисленные значения функции.

program Project2;

{$APPTYPE CONSOLE}

uses

SysUtils, Math;

var

X,A,Z,Y:Real;

F:Boolean;

begin

Write('Введите значение аргумента: ');

ReadLn(X);

A:=Abs(X); //Вычисление абсолютного значения Х

Z:=Sign(X); //Вычисление Z

{ ----- Вычисление без применения булевских операций ----- }

if A>=3 then

WriteLn('Функция не определена. ')

else

begin

if A<=1 then

Y:=Z*(1-A)

else if A<2 then

Y:=Z

else

Y:=-Z;

WriteLn('Y = ',Y:4:2);

end;

{ ----- Вычисление с применением булевских операций ----- }

if A>=3 then

WriteLn('Функция не определена. ');

if A<=1 then

WriteLn('Y = ',Z*(1-A):4:2);

if (A>1) and (A<2) then

WriteLn('Y = ',Z:4:2);

if (A>=2) and (A<3) then

WriteLn('Y = ',-Z:4:2);

ReadLn;

end.

Наши рекомендации