Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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

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

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

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

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

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

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

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

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

 

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

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

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

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

то есть в соответствии с алгоритмом

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

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.

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

Тогда соответствующим ему оператором 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 соответствует знак Ø перед аргументом (ØХ) или черта над аргументом (); операции and соответствует знак & или • или (X&Y или X•Y или X Y); операции or соответствует знак V (X V Y); операции xor соответствует знак .

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

 

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 по формуле

Как видно из задания, при истинности одного из условий, другие будут иметь значение «ложь», поэтому для вычисления лучше использовать не два, а один условный оператор 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)

 

 

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

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

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.



<== предыдущая лекция | следующая лекция ==>
Протокол № 3 клинического разбора больного | Рассмотрение и утверждение схемы
Поделиться с друзьями:


Дата добавления: 2016-11-22; Мы поможем в написании ваших работ!; просмотров: 374 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Чтобы получился студенческий борщ, его нужно варить также как и домашний, только без мяса и развести водой 1:10 © Неизвестно
==> читать все изречения...

2394 - | 2270 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.