Тема 11. Величини логічного типу, операції над ними. Команда розгалуження.
Для вирішення більшості завдань лінійних алгоритмів недостатньо.
У проектах, які реалізують інші види алгоритмів, наприклад алгоритми з розгалуженням, використовують логічні вирази.
Висловлювання - оповідне речення, про яке можна однозначно сказати, правильне (істине) воно чи неправильне (хибне) і позначається великими буквами англійського алфавіту
Основна властивість висловлювання - його істинність:
1 або true - якщо висловлювання істине (А = "Київ - столиця України");
0 або false - якщо висловлення хибне (В = "2 + 2 = 5").
Як порівнюють значення величин у програмах?
Прості висловлювання мовами програмування можна записати у вигляді логічних виразів із використанням операцій порівняння.
Логічна змінна - це змінна, яка може приймати тільки значення true або false
|
Результатом виконання операції порівняння значень двох величин є величина логічного типу, яка може набувати одного із двох значень: true, false. |
Для опису логічних величин у мові програмування Object Pascal - тип boolean
Порівняння значень величин різних типів має певні особливості:
- Числові величини порівнюються за правилами математики.
- Порівняння текстових величин мовою Free Pascal, у результаті якого отримано логічне значення True, продемонстровано нижче:
'Алгоритм' < 'алгоритм' — код великої літери А менший за код літери а;
'алгоритм' > 'аго' — довжина першої величини більша за довжину другої;
'алгоритм' <> 'alhoritm' ; 'алг' = 'алг'.
Для логічних величин:
а = True b = False
Результатом виконання операції: а > b буде значення True
Оскільки:
Істинне значення True інтерпретується як 1 а хибне False — 0
Зрозуміло, що 1 > 0 |
Окрім операцій порівняння над логічними величинами в усіх мовах програмування для запису складених висловлювань використовують логічні операції:
- заперечення;
- кон'юнкція;
- диз'юнкція.
Результати виконання цих операцій над змінними А та В логічного типу, які набувають значень True (1) та False (0) наведені в таблиці істинності
|
Щоб визначити значення складеного логічного виразу, який містить кілька логічних операцій, використовують таблицю істинності та враховують пріоритет виконання операцій:
not⇒ and⇒ or
Як і для числових виразів, для зміни порядку виконання логічних операцій використовують дужки.
|
Розгалуження мовою програмування Object Pascal
Прості та складені логічні вирази, значеннями яких є True або False, використовують в описі алгоритмічної структури розгалуження, за допомогою якої виконавець алгоритму може вибрати один зі сценаріїв подальших дій залежно від виконання певної умови.
Для опису алгоритмічної структури розгалуження мовою програмування, як і в середовищі Скретч, використовують:
Оператор повного розгалуження: if <логічний вираз> then <команда 1> else <команда 2>;
Якщо в якості оператора повинна виконуватися серія операторів, то вони об'єднуються в операторні дужки Begin-End.
If умова then
Begin
[оператори1]
End
Else
begin
[оператори2]
End;
|
Оператор неповного розгалуження: if <логічний вираз> then <команда>;
Команда або блок команд в операторі неповного розгалуження буде виконуватися тільки у випадку, коли логічний вираз набуває значення True.
В операторі неповного розгалуження мовою програмування Free Pascal після службового слова then можна записати тільки одну команду або блок команд, які обмежені операторними дужками begin, end.
begin
<команда 1>;
<команда 2>;
…
<команда n>;
end;
|
Зауваження. Перед ключовим словом else (інакше) крапка з комою не ставиться, вона ставиться після всього оператора If.
Умова є логічні вираження.
- Прості умови записуються у вигляді рівності або нерівностей.
- У складних умовах кілька простих умов об'єднуються за допомогою логічних операцій or, and... В цьому випадку прості умови полягають в круглі дужки
|
Якщо є потреба врахувати значення декількох логічних виразів, то використовують вкладені розгалуження.
if <логічний вираз 1> then <команда 1>
else if <логічний вираз 2> then <команда 2>
…
else if <логічний вираз n> then <команда n>
else <команда інакше>;
|
В описаних вкладених розгалуженнях:
- Якщо значення логічного виразу 1— True, то виконується команда 1 чи блок команд 1.
- Якщо значення логічного виразу 1 — False і значення логічного виразу 2 — True, то виконується команда 2 чи блок команд 2 і т.д.
- В іншому разі виконується команда інакше або блок команд інакше.
|
Завдання 1. Таблиця істинності для логічного виразу. Визначте, якого значення може набувати логічний вираз
(not A) or (В and А)
залежно від значень, яких набуватимуть логічні змінні А та В.
1. Обчислимо кількість можливих наборів значень логічних змінних за формулою N = 2", де N – кількість наборів значень, n– кількість змінних. У нашому випадку N = 22 = 4. Це число визначає кількість рядків у таблиці Істинності.
2. Визначимо кількість і порядок логічних операцій у виразі.
1 3 2
(not A) or (В and A)
3. Ця кількість і кількість логічних змінних визначає кількість стовпців у таблиці істинності. Для нашого випадку: 3 + 2 = 5.
4. Побудуємо таблицю істинності. Для зручності запису приймемо True = 1, False = 0. Для визначення значень кожної логічної операції використаємо таблицю істинності.
5. Зробимо висновок: логічний вираз набуде значення False тільки тоді, коли змінна А набуде значення True, а змінна В – значення False. В усіх інших випадках логічний вираз матиме значення True.
Вправа 2.Агрегатний стан води.
Завдання. Розробіть проект у середовищі Lazarus, у якому за введеним значенням температури води буде визначатись її агрегатний стан.
- Сплануйте проект. Передбачте, які об'єкти будуть використані на екранній формі та які події відбуватимуться з ними.
- Відкрийте середовище Lazarus, створіть новий проект і збережіть його складові в папку Стан_води. Змініть властивості об'єкта Form1, розмістіть на формі потрібні об'єкти та надайте значень їх властивостям, щоб отримати форму, як на малюнку
- Візьміть до уваги, що для всіх об'єктів використовується властивість шрифта – ArialUnicode MS, розмір – 16. Стиль шрифта визначте за малюнком. Задайте значення False властивості Enabled текстового поля для виведення значення (в прикладі варіанту інтерфейса проекту заміна текстового поля на напис Label2) .
- Створіть процедуру опрацювання події натиснення кнопки Пуск. У вікні редактора коду введіть програмний код.
|
Зверніть увагу на структуру команди розгалуження.
if <логічний вираз 1> then <команда 1>
else if <логічний вираз 2> then <команда 2>
…
else if <логічний вираз n> then <команда n>
else <команда інакше>;
|
5. Запустіть проект на виконання. Введіть значення температури, наприклад, 12. Перевірте отриманий результат. Установіть, яка умова відповідає отриманому значенню.
6. Запустіть проект на виконання ще раз для значення -10,5. Поясніть, чому проект не виконується. Внесіть зміни до проекту так, щоб користувач міг задавати температуру води дійсним числом. Зауважте, що:
дійсне число, яке вводиться в текстове поле, записується із десятковою комою,
а в програмному коді використовують число, записане з десятковою крапкою.
7. Збережіть зміни у проекті.
8. Завершіть роботу з проектом і середовищем програмування.
eлементи для введення даних: прапорець, перемикач.
группы переключателей (radioGroup) и группы флажков (CeckGroup)
додавання декількох форм в проект
список, що розкриваеться
|