Б С Бусигін - Прикладна інформатика - страница 31

Страницы:
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83 

False

У побітовій нотації (тобто при взаємодії окремих бітів), таблиця 8.29 приймає наступний вигляд (таблиця 8.30).

Таблиця 8.30

_Побітове виконання операцій NOT, AND, OR та XOR_

Значення аргументів А і В

Результати виконання логічних операцій з аргументами А і В

A

B

NOT A

A AND B

A OR B

A XOR B

О

О

І

О

О

О

О

І

І

О

І

І

І

О

О

О

І

І

І

І

О

І

І

О

При виконанні логічних операцій найвищий пріоритет має унарна операція заперечення (NOT). Потім йде операція логічного множення (AND), а найнижчий пріоритет мають операції OR та XOR.

Складність розуміння взаємодії вищеописаних компонентів міститься у тому, що виконання арифметичних і текстових операцій з даними одного і того ж типу, як правило, дає результат такого ж типу, а порівняння значень тих же типів дає натомість логічні значення (табл. 8.31).

Якщо за основу абстрактного уявлення взаємодії різних сутностей (рос.-сущностей) прийняти логічне значення (яке існує тільки у комп'ютері!), то перший рівень абстракції міститься у порівняннях двох об'єктів (значень змінних або констант), тобто у атомарних логічних діях. Вони дають у результаті логічні значення, а з іншого боку, можуть об'єднуватися у вирази, які можуть містити досить багато таких малих елементарних порівнянь. Окрім того, для перевірки у програмах результатів виконання окремих блоків, логічні значення можуть змінюватися і зберігатися у логічних змінних. Ці об'єктитакож можуть приймати участь у різної ступені складності логічних виразах. І так далі.

Таблиця 8.31

Тип даних, що

взаємодіють

Вираз і результат

Тип результату

Порівняння тих же даних

Тип результату логічний!

Дійсний

3.1 + 6.91 = 10.1

Дійсний         3.1 < 6.91

True

Цілий

8 div 4 = 2

Цілий           8 <= 4

False

Стрінговий

'con' + 'tent' - content'

Стрінговий     'con' > 'tent'

False

Примітка: Не можна порівнювати поміж собою дані різних типів!!!

Наведемо приклад логічного оператору зі складним логічним виразом для демонстрації п'яти рівнів логічних абстракцій (див. фрагмент програми):

Var

A : Boolean; i,  j   : integer; Begin i  := 1; j   := 10; A :=True;

If A AND   (5 > i)  OR NOT   (4 > j)  AND   (-5 <> 4) Then

j   := 2; End.

У складному (!) логічному виразі

A AND   (5 > i)   OR NOT   (4  > j)  AND   (-5 <> 4)

можна виділити наступні п'ять рівнів абстракцій уявлення елементів порівняння і результатів порівняння у програмах:

Перший рівень     Операції порівняння (>, <> та інш.)

Другий рівень      Логічні значення (True, False)

Третій рівень

Логічні змінні (що описуються: Var A: boolean; і зберігають логічні значення)

Четвертий рівень

Логічні операції (AND, OR, NOT та ін.)

П'ятий рівень

Логічні вирази ((5 > i),   (A AND   (5 > i))   та ін.)

Вправи

1. Які вирази є простими логічними виразами?

2. Які вирази є складеними логічними виразами?

3. Які операції відносини між величинами Ви знаєте?

4. Які логічні операції застосовуються при обчисленні логічних виразів?

235. Який порядок обчислення складених логічних виразів?

6. Обчислити значення логічних виразів і реалізувати рішення в програмі:

а) Sqr(X) + Sqr(Y)<=4 при Х=0.3, Y= -1,6;

б) k mod 7 = k div 5-1; при k = 15;

в) Odd(Trunc(10*p)); при р = 0.182.

7. Поясніть помилки в наступних записах:

а)  1 And 0      б) True + False      в) True < 0

г) NOT 2 = 5   д) Х>0 or Y=4    e) NOT NOT У OR OR D.

8. Вказати порядок виконання операцій при обчисленні виразів:

а) A and b or not c and d;

б) (X >= 0) or Т and Odd(X) or (Y*Y <> 4).

9. Обчислити   значення   виразів   і   перевірити   свої   обчислення у програмах:

а) NOT (Odd(n)); при n=0;

б) Т and (P mod 3 = 0);  при T=true, Р=101010;

в) (X*Y<>0) and (Y>X); при    Х=2, Y=l;

г) (X*Y<>0) or (Y>X); при   Х=2, Y=l;

д) A or (NOTB); при  А= false, B=true.

10. Записати у виді логічного виразу наступні умови:

а) Чотирикутник ABCD є квадратом.

б) Чотирикутник ABCD є ромбом.

в) Чотирикутник ABCD є трапецією.

г) Трикутник ABC рівнобедрений.

д) Трикутник ABC рівносторонній.

11. Скласти програму, що визначає належить крапка А(х,у) заштрихованої області чи там її немає. Якщо належить, вивести на екран значення TRUE, інакше - FALSE.

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

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

Розглянемо записи таких логічних виразів для найважливіших прикладів. 1. Аргумент х належить до відрізку [0,4], що інакше (математично) записується так

0 < х < 4 (рис. 8.30):

x є [0;4]

0   1   2   3 4

Рис. 8.30. Інтервал типу "відрізок"

Тобто, якщо у змінної x буде міститися значення -3 або +10, програма повинна "зрозуміти", що ці значення не належать до вказаного вище відрізку числової вісі (рос.-оси). Навпаки, якщо х має значення 2, то програма зрозуміє, що ми влучили у відрізок.

Певно Ви пам'ятаєте, що в мові ТП ми не в змозі цілком записати математичну умовну конструкцію 0<=x<=4, яка б могла вирішити нашу проблему. Треба розкласти її на атомарні порівняння, а потім об'єднати у єдину формулу. І от тут нам на допомогу приходять логічні операції. Щоб вірно вибрати потрібну логічну операцію, розглянемо ймовірні варіації змінної x на інтервалі (-оо,+оо) з урахуванням умови 0 < x < 4 поодинці та взаємодію логічних виразів (табл. 8.31).

Порівнюючи отримані результати з таблиці 8.31, можна побачити, що на мові ТП складний логічний вираз 0 < x < 4 запишеться у такому вигляді:

(x >= 0)  AND   (x <= 4) (8.3)

Наприклад, для різних значень, що можуть міститися у змінній х, значення логічного виразу (8.30) дорівнюють (при х = -3, 2, 6): (-3 >= 0)  AND   (-3 <= 4)   дорівнює 0; (2 >= 0)  AND     (2 <= 4)   дорівнює 1; (6 >= 0)  AND     (6 <= 4)   дорівнює 0. Таким чином, комп'ютер розуміє, що коли вираз дорівнює 0 (False), чергове значення не належить відрізку, а коли дорівнює 1 (True) - значення належить відрізку.

№ п/п

1.

2.

3.

4.

Атомарні (прості) логічні вирази

Їхні логічні значення для аргументу х, що належать відрізку [0,4], (при х = 2)

x < 0

< 0) = (2 < 0) = 0

x > 4

> 4) = (2 > 4) = 0

x <0

< 0) = (2 < 0) = 0

x < 4

(х < 4) = (2 < 4) = 1

0 < x

(0 < х) = (0 < 2) = 1

x > 4

> 4) = (2 > 4) = 0

0 < x

(0 < х) = (0 < 2) = 1

x < 4

(х < 4) = (2 < 4) = 1

Взаємодія отриманих логічних значень

Графічне зображення

(0 AND 0)

= 0

(0 AND 1)

= 0

(1 AND 0)

= 0

(1 AND 1)

= 1

4-

0   1   2   3 4

0   1   2   3 4

0   1   2   3 4

5

0 1 2  3 4

Примітка: О Нагадуємо, що взаємодія логічних значень, отриманих у результаті порівнянь, які об'єднані логічною операцією OR, дає зовсім інші результати:

(0 OR 0) = 0, (0 OR 1) = 1, (1 OR 0) = 1, (1 OR 1) = 1. © У таблиці значення 0 еквівалентно FALSE, а 1 - TRUE.

2. Якщо ж Вам потрібно враховувати вимоги, щоб значення аргументу х знаходилися за межами відрізку [0,4], тобто 0>4, то використовуючи допоміжну таблицю отримаємо (див. табл.8.31).

Порівнюючи отримані результати з таблиці 8.31, можна побачити, що на мові ТП складний логічний вираз 0 > х > 4 запишеться у такому вигляді:

(x < 0)   OR  (x > 4) (8.4)

Для різних значень, що можуть міститися у змінній х, значення логічного виразу (8.4) дорівнюють (при х = -3, 2, 6):

(-3 < 0) (-3 > 4) дорівнює 1; ( 2 < 0) СЖ ( 2 > 4) дорівнює 0; (  6 < 0)   ОЬч  (  6 > 4)   дорівнює 1.

Таким чином, комп'ютер розуміє, що коли знання виразу дорівнює 0, чергове значення аргументу х належить відрізку, а коли дорівнює 1 - значення х знаходиться за межами відрізку і умова 0 > х > 4 виконується.

Значення простих логічних виразів_

№ п/п

Атомарні (прості) логічні вирази

Їхні логічні значення для аргументу х, що не належать відрізку [0,4], = 6, або -6)

Взаємодія отриманих логічних значень

Графічне зображення

1.

x < 0

< 0) = (6 < 0) = 0

(0 OR 1) = 1

Ч       1       1       1 {

 

x > 4

> 4) = (6 > 4) = 1

 

і    і    і    і і 0   1   2   3 4

2.

x <0

< 0) = (6 < 0) = 0

(0 OR 0) = 0

і    і    і    і і

 

x < 4

(х < 4) = (6 < 4) = 0

 

і    і    і    і і 0   1   2   3 4

3.

x > 0

> 0) = (6 > 0) = 1

(1 OR 1) = 1

іЛ і і г~

 

x > 4

> 4) = (6 > 4) = 1

 

1         1         1         1 1

0   1   2   3 4

4.

x > 0

> 0) = (6 > 0) = 1

(1 OR 0) = 1

Г       1       1       1 1

 

x < 4

< 4) = (6 < 4) = 0

 

1        1         1        1 1

0   1   2   3 4

3. Розглянемо випадок, коли аргумент х повинен належати водночас двом інтервалам: [2,5] і [10,14] (рис. 8.31):

—П і П-

2   5        10 14

Рис. 8 .31. Належність значень змінної одночасно двом відрізкам Для цього випадку вираз на мові ТП має вигляд:

((x >= 2)  AND   (x <= 5))   OR   ((x >= 10)  AND   (x <= 14))

4. Для випадку, коли аргумент x повинен знаходитись за межами інтервалів [2,5] та [10,14] можна записати такий складний логічний вираз:

((x < 2) OR (x > 5)) AND ((x < 10) OR (x > 14))

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

Приклад: Записати логічний вираз на мові ТП для обчислення функції:

І?

+1,1< x <6

У(х) =

1

—,        1>x>6 ^ x

Такий вираз можна записати за допомогою двох різних форм, які дадуть однаковий результат (див. перший і другий логічні оператори на мові ТП):

Program VariousIf; Var

y,  x  : real; Begin

x  := 2.0;

if   (x > 1.0)  AND   (x < 6.0)   then  {перший оператор}

y  := sqrt(x*x+1) else

y := 1/(x*x*x); if   (x <= 1)   or   (x >= 6)   then        {другий оператор}

y := 1/(x*x*x) else

y := sqrt(x*x+1);

End.

Вправи

1. Дано координати вершин чотирикутника A(x 1,у1), B(x2,y2), G(x3,y3) і D(x4,y4). Визначити, чи є даний чотирикутник ромбом. Для обчислень скористайтеся   формулою   відстані   між   двома   точками   A(x1,y1) і

2. Дано три координати трьох вершин трикутника Л(х ьу і), В(х 2,у 2) і С(х 3,у3). Визначити, чи є даний трикутник рівностороннім. Для обчислень скористайтеся формулою відстані між двома точками Л(х 1,у 1) і В(х 2,у 2):

Страницы:
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83 


Похожие статьи

Б С Бусигін - Прикладна інформатика