Тема 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) наведені в таблиці істинності
Щоб визначити значення складеного логічного виразу, який містить кілька логічних операцій, використовують таблицю істинності та враховують пріоритет виконання операцій: Як і для числових виразів, для зміни порядку виконання логічних операцій використовують дужки. |
Розгалуження мовою програмування Object Pascal
Прості та складені логічні вирази, значеннями яких є True або False, використовують в описі алгоритмічної структури розгалуження, за допомогою якої виконавець алгоритму може вибрати один зі сценаріїв подальших дій залежно від виконання певної умови.
Для опису алгоритмічної структури розгалуження мовою програмування, як і в середовищі Скретч, використовують:
Оператор повного розгалуження: if <логічний вираз> then <команда 1> else <команда 2>; Якщо в якості оператора повинна виконуватися серія операторів, то вони об'єднуються в операторні дужки Begin-End.
|
Оператор неповного розгалуження: if <логічний вираз> then <команда>; В операторі неповного розгалуження мовою програмування Free Pascal після службового слова then можна записати тільки одну команду або блок команд, які обмежені операторними дужками begin, end. begin |
Зауваження. Перед ключовим словом else (інакше) крапка з комою не ставиться, вона ставиться після всього оператора If. Умова є логічні вираження.
|
Якщо є потреба врахувати значення декількох логічних виразів, то використовують вкладені розгалуження.
if <логічний вираз 1> then <команда 1>
|
В описаних вкладених розгалуженнях:
|
Завдання 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> |
5. Запустіть проект на виконання. Введіть значення температури, наприклад, 12. Перевірте отриманий результат. Установіть, яка умова відповідає отриманому значенню.
6. Запустіть проект на виконання ще раз для значення -10,5. Поясніть, чому проект не виконується. Внесіть зміни до проекту так, щоб користувач міг задавати температуру води дійсним числом. Зауважте, що:
дійсне число, яке вводиться в текстове поле, записується із десятковою комою,
а в програмному коді використовують число, записане з десятковою крапкою.
7. Збережіть зміни у проекті.
8. Завершіть роботу з проектом і середовищем програмування.
eлементи для введення даних: прапорець, перемикач.
группы переключателей (radioGroup) и группы флажков (CeckGroup)
додавання декількох форм в проект
список, що розкриваеться