7.5.2. Логічні змінні. Логічні операції

Результатом операції порівняння двох чисел може бути величина, яка набуває одного з двох можливих значень: «істинно» (якщо зазначене співвідношення дійсно виконується) і «хибно» (якщо співвідношення не виконується). По-англійськи «істинно» і «хибно» пишеться відповідноTrueіFalse.Константи та змінні, значеннями яких може бути тільки ці дві величини (TrueабоFalse)називаються логічними або булевськими константами та змінними. Назва ця на честь англійського математика XIX століття Джона Буля. Для опису таких змінних у мові Паскаль існує спеціальний тип - boolean . Приклад опису логічної змінноїflag:

Логічним змінним їм можна надавати значення операцій порівняння подібно до того, як ми присвоюємо числовим змінним значення арифметичних операцій. Така операція присвоювання може виглядати, наприклад, так:

тобто змінної логічного типуflagми присвоюємо значення операції порівнянняx>=15.У разі, якщо зазначена нерівність виконується, значення змінної дорівнюватимеtrue. У протилежному випадку її значення дорівнюєfalse. Ім'я логічної змінної, якій присвоєно значення операції порівняння, можна підставляти в умовний оператор замість цієї операції. Такий прийом дозволяє зробити програму компактнішою в тому випадку, якщо одна і та ж операція порівняння повторюється в програмі кілька разів. Значення логічної змінної можна виводити на екран комп'ютера операторомwritelnподібно до значень числових змінних. Можна надавати значенняtrueіfalseлогічним змінним і безпосередньо:flag:=true;

Саме такий спосіб привласнення значень логічної змінної ми івикористовуємо у наступній програмі. Ця програма перевіряє, чи є в ряду з трьох цілих чисел хоча б одне позитивне. Ці цифри, як завжди, ми будемо вводити з клавіатури, а повідомлення про результати перевірки буде виведено на екран комп'ютера. У програмі, текст якої наведено на рис.7.5.5 використовуються три змінні цілого типуx, yіzдля числових значень, що вводяться, і одна змінна логічного типуflag, призначення якої у цій програмі ми розглянемо нижче. Опис змінної чи змінних, які стосуються одному типу, становить окрему групу, яку від наступної групи відокремлює точка з комою. При цьому словоvar, що відкриває розділ опису змінних, ставиться тільки один раз.

В основній частині програми змінноїflagнадається початкове значенняfalse. Слідом за оператором присвоювання в програмі йдуть три однотипні блоки, у кожному з яких обробляється одне з чисел, що вводяться. Кожен такий блок складається з оператора виведення, що пропонує користувачеві ввести число, оператора введення, що привласнює введене значення однієї зі змінних цілого типу і скороченого умовного оператора, що перевіряє, чи введене число є позитивним або негативним. Якщо число позитивне, зміннійflagприсвоюється значенняtrue. У тому випадку, якщо число негативне, ніяких дій не проводиться. Якщо ж немає позитивних чисел серед введених, то значенняflagзалишиться незмінним, тобто рівнимfalse.

операції
операції

Мал. 7.5.5. Програма, що визначає, чи є в ряду чисел позитивні, і результати її роботи при різних вихідних даних

Далі у програмі розташований повний умовний оператор, який перевіряє підсумкове значення змінноїflagі якщо вона має значенняtrue,то виводиться повідомлення про наявність серед введених чисел, хоча б одного позитивного, а інакше виводиться повідомлення про те, що всі введені числа є негативними. На рис. 7.5.5 під текстом програми показано результати її роботи за різних вихідних даних.

Над величинами логічного типу можна виконувати логічні операції. Результатом логічних операцій можуть бути лише логічні величини, тобто величини, що мають значенняtrueіfalse. Всього в Паскалі використовується 4 логічні операції:not(НІ) -логічне заперечення,and(І) - логічне І,or(АБО) - логічне АБО,xor(Виключає АБО). Ці операції поділяються на унарні, тобто такі, які виробляються лише над однією величиною, і бінарні, тобто ті, що виробляються відразу над двома величинами. До першого типу операцій відноситьсяnot, до другого - всі інші. За виконання логічних операцій дотримується, як й у арифметичних операцій, певний пріоритет. Найбільш високим пріоритетом має операціяnot, тобто вона виконується насамперед. Далі виконується операціяand.

Найнижчий пріоритет мають операціїorтаxor. Якщо у виразі необхідно змінити порядок виконання логічних операцій, для цього використовуються дужки, тому що вираз, укладений у дужки, має найвищий пріоритет.

Для логічних величин існує таблиці, в якій зазначені результати логічних операцій за різних вихідних даних. Така таблиця називається таблицею істинності. Нижче наведено таку таблицю для унарних (табл.1) і (табл.2) бінарних операцій.

Таблиця 1. Унарні операції.

З цієї таблиці видно, що в результаті операціїnot,виробленої над будь-якою величиною, її значення змінюється на протилежне.

Якщо розглянути результати, показані в таблиці 2, то можна зробити висновок про те, що для операціїandзначення дорівнюватимеtrueтільки тоді, коли обидві вихідні величиниXтаY,над якими проводиться ця операція (такі величини називаються операндами) мають значенняtrue. В інших випадках результатом операції будеfalse. Для операціїorзначення будеtrue,якщо хоча б один з операндів (абоXабоY) має значенняtrue. Результат операціїorдорівнюватимеfalseтільки тоді, коли обидва операнда мають значенняfalse. Для операціїxorзначення будеtrue, якщо значення операндів не збігаються. Якщо ж значення операндів збігаються (незалежно від того, чи будуть ці значення рівніfalseабоtrue) то підсумок операції дорівнюватимеfalse.