Основи алгоритмізації та програмування Логічні вирази. Вказівка розгалуження
Exit Порівняння величин та виразів в математиці Числові величини мають свої кількісні характеристики, а це означає, що їх можна між собою порівнювати, використавши знаки порівняння. Наприклад, 7=7 або 9>2 Числові вирази також мають свої кількісні характеристики, і їх також можна між собою порівнювати, використавши знаки порівняння. Наприклад, 3+7=2+8 або 9+1>2+5 Порівнювати можна також вирази, що містять змінні величини. Наприклад, y+7=x+8 або 9+a>2+b
Exit Порівняння величин та виразів в інформатиці В математиці порівняння має тлумачення твердження, тобто запис 2>3 означає "два більше трьох" і є помилковим твердженням. В інформатиці порівняння є запитанням, тобто запис 2>3 означає "два більше трьох?", на яке можна дати відповідь – "ні" Виходить, що в інформатиці порівняння є виразами, які мають значення "так" або "ні"
Exit Поняття логічного виразу в Паскалі Логічними виразами називаються такі вирази, внаслідок обчислення яких одержуються логічні значення true (істина) або false (хибність). Логічні вирази в свою чергу поділяються на прості та складені. В Паскалі результат логічного виразу має тип Boolean. Саме величини або вирази типу Boolean приймають значення True або False
Exit Прості логічні вирази Простими логічними виразами називаються такі, які записуються за допомогою знаків співвідношень <-менше >-більше <=-не більше (менше або дорівнює) >=-не менше (більше або дорівнює) =-дорівнює <>-не дорівнює Зверніть увагу! Cпочатку виконуються арифметичні дії, а вже потім порівняння одержаних результатів.
Exit Склад простих логічних виразів Простий логічний вираз складається із двох частин, які порівнюються, а отже до його складу входять: - ліва частина, яка може бути сталою, змінною або виразом - знак порівняння - права частина, яка може бути сталою, змінною або виразом Права частина логічного виразу Ліва частина логічного виразу Знак порівняння
Exit Предикати та непредикати Якщо одна із частин логічного виразу містить хоча б одну змінну величину, то такий вираз називають предикатом. Непредикат Предикат
Exit Значення предикату Зрозуміло, що значення предикату залежить від значення змінних величин, що входять до його складу. Наприклад: Якщо X має значення 3, то предикат X>=2 матиме значення True Якщо X має значення 2, то предикат X>=2 матиме значення True Якщо X має значення 1, то предикат X>=2 матиме значення False
Exit Складені логічні вирази Складеними логічними виразами називаються такі, які складаються з простих логічних виразів, об'єднаних логічними операціями "and", "or", "not". Наведемо приклади. З математики вам відомі такі записи: х [а,Ь] та х [а,Ь] Спробуємо записати їх у вигляді логічних виразів: (х>=а) and (x =a) and (x<=b)) Другий вираз еквівалентний виразу: (x b) Зверніть увагу! При записуванні складених логічних виразів в Паскалі прості логічні вирази обов'язково беруться у круглі дужки!
Exit Логічна операція not Логічна операція not використовується для заміни значення логічної величини на протилежне. Перекладається якневірно, що
Exit Таблиця істинності для not Для обчислюються значення складених логічних виразів існують таблиці істинності. Розглянемо таблицю істинності для логічної операції not Anot A Для зручності у таблиці цифра "0" означає false, а цифра "1" - true. Anot A FalseTrue False
Exit Логічна операція and Логічна операція and ще має назвулогічний добуток. На відміну від операції not, операція and виконується над двома логічними величинами або виразами. Часто операція and використовується для запису перетину числових множин. X93 (x>=3) and (x<=9) В Паскалі В математиці Перекладається як і
Exit Таблиця істинності для and Якщо обидві логічні величини (вирази) мають значення True, то і їх логічний добуток дорівнюватиме True. В усіх інших випадках значення буде False. ABA and B AB False TrueFalse TrueFalse True Для зручності у таблиці цифра "0" означає false, а цифра "1" - true. Наприклад: (10>=3) and (10<=9) True and False False
Exit Логічна операція or Логічна операція or ще має назвулогічна сума. Операція or, як і операція and, виконується над двома логічними величинами або виразами. Часто операція or використовується для запису обєднання числових множин. X93 (x 9) В Паскалі В математиці Перекладається як або
Exit Таблиця істинності для or Якщо обидві логічні величини (вирази) мають значення False, то і їх логічна сума дорівнюватиме False. В усіх інших випадках значення буде True. ABA or B AB False True FalseTrue Для зручності у таблиці цифра "0" означає false, а цифра "1" - true. Наприклад: (10 9) False or True True
Exit Преорітети логічних операцій Серед логічних операцій найвищий преорітет має операція not, за нею іде операція and, а потім or. Наприклад, послідовність обчислення: (2>1) or not (1>2) and (1=2) True or not False and False True or True and False True or False True Зверніть увагу! Преорітет логічних операцій вищий за операції порівняння та деяких арифметичних. Тому прості логічні вирази, що входять до складу складених, необхідно завжди записувати в дужках.
Exit Використання складених логічних виразів Ми вели розмову про обчислення значень логічних виразів. Зрозумілим є запитання: "А де їх можна використовувати?" По-перше, використання логічних виразів так, як і арифметичних, можливе в операторі присвоювання. Наприклад: k:=a>b; h:=(N<=x) and (x<=M); f:=false; Умовою безпомилкового виконання таких операторів є співпадання типів, тобто змінні в лівій частині (в нашому випадку це k, h та f) цих операторів повинні бути описані типом boolean. По-друге, результат обчислення логічних виразів "true" та "false" можна ще трактувати як "так" та "ні". Це наводить на думку про використання логічних виразів для визначення оцінки деякої ситуації, що склалася, і прийняття рішення про те, що робити далі.
Exit Приклади використання логічних виразів в операторах присвоювання Розглянемо фрагмент програми: x:=2; y:=3; k:=(x>1) and (y=3); k=(2>1) and (3=3); k=True and True k=True f:=k or not (x<y); f:=True or not (2<3); f=True of False f=False Після виконання цього фрагменту програми змінна k отримає значення True, а змінна f значення False Ці значення надалі можна буде використати в обчислювальному процесі.
Exit Вказівка розгалуження При вивченні теми Базові структури алгоритмів ми мали справу з вказівкою розгалуження. Пригадаємо її запис у вигляді блок-схеми на прикладі: В Паскалі логічному операторному блоку відповідає оператор If (якщо), а арифметичному операторному блоку оператор := (присвоїти) If thenelse If a>b then Max:=a else Max:=b; Фрагмент Паскаль-програми, що відповідає наведеному фрагменту блок-схеми:
Exit Запис алгоритмів з використанням вказівки розгалуження Механізм роботи оператора умовного переходу: - обчислюється ; - якщо значення логічного виразу True, то управління передається оператору P1, інакше (при значенні логічного виразу False) – управління передається оператору P2; - управління передається на наступний оператор програми. if – якщо then – то else – інакше Загальний вигляд повного оператора умовного переходу: if then P1 else P2; де може набувати одне з двох значень true або false, P1 та Р2 - це оператори. В Паскалі вказівка розгалуження реалізується оператором умовного переходу, який буває повним або скороченим.
Exit Схема алгоритму повного оператора умовного переходу Схема алгоритму наочно демонструє, що після аналізу значення логічного виразу буде вибраний лише один з наступних напрямків виконання алгоритму (Р1 або Р2), після чого цей алгоритм буде виконуватися далі. if then P1 else P2; Якщо логічний вираз має значення істина, то виконати оператор P1, інакше виконати оператор P2. Це означає:
Exit Скорочений оператор умовного переходу Загальний вигляд скороченого оператора умовного переходу: if then P; де значення параметрів такі самі, як і в повній формі.
Exit Скорочений оператор умовного переходу У скороченій формі оператору умовного переходу у випадку, коли логічний вираз набуде значення true, будуть виконані дії задані оператором P, а потім продовжено виконання алгоритму, а у випадку, коли логічний вираз набуде значення false, алгоритм відразу ж буде продовжено далі. if then P; Якщо логічний вираз має значення істина, то виконати оператор P. Це означає:
Exit Складений оператор Досі ми з вами мали справу лише з простим оператором присвоювання та оператором умовного переходу. А що робити, коли після службових слів then або else нам потрібно вказати не один такий оператор, а декілька? Для такого випадку у Паскалі введене поняття складеного оператора. Складеним оператором називають послідовність декількох операторів, розділених символом ";" та взятих в операторні дужки begin.. end Наприклад, if x>y then begin r:=y; y:=x; x:=y end else begin y:=0; x:=0 end; логічний вираз складений оператор 1 складений оператор 2
Exit Приклад програми з розгалуженням Program Prog1; var x, y : Real; Begin readln(x); if x<=9 then y:=2*x else y:=2+x; writeln(y); End. Записати програму визначення значення змінної y та виведення його на екран, якщо:
Exit Приклад програми з розгалуженням Program Prog1; var x, y : Real; Begin readln(x); if (x>=1) and (x<=9) then y:=2*x else y:=2+x; writeln(y); End. Записати програму визначення значення змінної y та виведення його на екран, якщо:
Exit Деякі зауваження На голубому фоні зліва та внизу показано дві ідентичні програми. За правилами запису програми на Паскалі не забороняється записувати елементи програми в рядок, як показано внизу. Але при цьому програма погано читається. Щоб програма була більш зрозумілою, її записують так, як показано ліворуч. Рамкою обведена одна вказівка, яка є вказівкою розгалуження. Її також можна було б записати в один рядок, але так вона зрозуміліша. Program Prog1; var x, y : Real; Begin readln(x); if x<=9 then y:=2*x else y:=2+x; writeln(y); End. Program Prog1; var x, y : Real; Begin readln(x); if x<=9 then y:=2*x else y:=2+x; writeln(y); End.
Exit Питання для самоконтролю: 1. Що називають логічними виразами? На які два типи вони поділяються? 2. Які знаки співвідношень використовуються для запису простих логічних виразів? 3. Назвіть логічні операції. 4. Поясність використання логічних операцій за таблицями Істинності. 5. Що називають складеним оператором? Які правила його запису? 6. Яким чином організоване розгалуження у Паскалі? 7. Чим відрізняються повна та скорочена форми оператора умовного переходу? 8. Запишіть загальний вигляд повної форми розгалуження. 9. Запишіть загальний вигляд скороченої форми розгалуження. 10. Намалюйте схеми алгоритмів обох варіантів розгалуження.