Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
06_Лекция_стУ.doc
Скачиваний:
2
Добавлен:
15.11.2019
Размер:
149.5 Кб
Скачать

23 Логічний тип. Логічні вирази. Логічний оператор присвоєння

Для зберігання результатів логічних виразів існує тип даних Boolean (булев).

.Логічний тип (boolean) має лише два значення: true (1 – істинно) і false (0 – хибно).

Слова false і true – це логічні константи мови.

В програмах можливо вводити константи і змінні цього типу. Наприклад:

const b = true;

var c : boolean;

Логічний вираз – це спосіб запису на мові програмування умов для пошуку необхідних даних.

Простий логічний вираз – це два операнди, які об’єднані операцією порівняння (операцією відношення).

Операції порівняння:

> (більше), < (менше), = (дорівнює), <> (не дорівнює),

>= (більше або дорівнює чи не менше ), <= (менше або дорівнює чи не більше).

Наприклад:

Нехай х = 3, у = –9. Прості логічні вирази:

х = 3  true (істинно); х < y ;

х+1<y  false (хибно).

Складений логічний вираз – це логічний вираз, який записаний за допомогою булевих операцій.

Булеві операції:

not – логічне заперечення («логічне НЕ»),

and – логічне множення («логічне І»),

or – логічне додавання («логічне АБО»),

xor – додавання за модулем 2 («виключне АБО»).

Слова not, and, or і xor, що позначають булеві операції, є зарезервованими словами.

Таблиця істинності

A

B

not A

A and B

A or B

A xor B

НЕ

І

*

АБО

+

виключне АБО

True

1

true

1

false

0

true

1

true

1

false

0

True

1

false

0

false

0

false

0

true

1

true

1

False

0

true

1

true

1

false

0

true

1

true

1

false

0

false

0

true

1

false

0

false

0

false

0

Операція заперечення завжди дає протилежне вихідному значенню.

Операція І істинна тільки в тому випадку, коли обидва зв’язані операнди істинні.

Операція АБО істинна, якщо хоча б один з операндів є істинним, а виключне АБО істинне, якщо тільки один з операндів є істинним.

Наприклад:

Нехай х = 3, у = –9. Складні логічні вирази:

not (y<=-50)  not false  true

Подвійне рівняння 1<х<5 записують як складний логічний вираз:

(1 < x) and (x <5), якщо x=3, то (1 < x) = true, (x <5)= true, true and true = true

Нехай є складний логічний вираз:

(x > 4) or (y >–15), якщо x=3, y= –9, то (x > 4) = false,

(y >–15)= true,

false or true = true

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

Логічні вирази можливо присвоювати змінним. Наприклад, якщо потрібно перевірити чи належить значення дійсної змінної х відрізку [0; 1], треба використати наступний логічний вираз (0 >= x) and (x <=1). Тому задача буде вирішуватися наступним чином.

Program Ex_3;

var x : real;

flag : boolean;

begin

writeln('Enter x');

readln(x);

flag := (0 <= x)and(x <= 1);

write ('x belongs to [0; 1] - ', flag);

end.

Результат виконання програми

Пріоритети операцій порівняння і булевих операцій

Всі операції порівняння мають рівний пріоритет і виконуються зліва направо.

З булевих операцій найвищий пріоритет має not, за ним іде and, потім or і xor.

Група булевих операцій має пріоритет, вищий за групу порівняння.

Змінити порядок обчислення можна за допомогою круглих дужок.

  • Зверніть увагу

  • Компілятор Delphi підтримує два режими обчислення булевих виразів:

  • режим повного та режим неповного обчислення. Ці режими стосуються операторів and і or. У режимі повного обчислення компілятор продовжує обчислення кожної логічного множення та логічного додавання, навіть якщо результат усього виразу вже відомий. Нехай, наприклад, є вираз A or В, де А та В – деякі вирази. Значення виразу А дорівнює True. Тоді вираз В можна не обчислювати, тому що вже відомо, що результуючий вираз істинний. Проте в режимі повного обчислення процесор обробляє обидва вирази – як А, так і В. У режимі неповного обчислення компілятор конструює процес таким чином, що обчислення припиняється, як тільки стає відомим результат усього виразу. Застосування режиму повного обчислення обов'язково, коли один з операндів – функція, що додатково виконує які-небудь інші дії. Звичайно режим неповного обчислення є кращим, тому що в цьому випадку виконуваний код працює швидше й займає в пам'яті менше місця. Крім того, у режимі неповного обчислення можна створювати конструкції, які в режимі повного обчислення викликали б під час виконання помилку. Розглянемо, наприклад, наступний булевий вираз:

  • (demon < > 0.0) and ((number/demon) > 1.0)

  • Якщо змінна demon дорівнює 0, то перше вираз хибний. Отже, весь вираз хибний й другий вираз можна не обчислювати. Однак у режимі повного обчислення програма спробує обчислити другий вираз, у результаті чого відбудеться помилка ділення на нуль.

  • За замовчуванням компілятор установлений у режим неповного обчислення. Директива цього режиму має вигляд {$В–} або {$booleval off). Для локального включення режиму повного обчислення можна використати директиву {$В+} або {$booleval on}. У середовищі Delphi компілятор можна переключити в режим повного обчислення для всього проекту. Для цього потрібно вибрати команду Project( Options... (Проект(Параметри...) і в розділі Syntax options (Параметри синтаксису) вкладки Compiler (Компілятор) установити прапорець Complete Boolean eval (Повне булеве обчислення).

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