-
Notifications
You must be signed in to change notification settings - Fork 0
/
P5_logical_values_operations_exceptions.html
252 lines (233 loc) · 24.6 KB
/
P5_logical_values_operations_exceptions.html
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="./style.css" rel="stylesheet" type="text/css">
<title>Программирование на Паскале</title>
</head>
<body>
<header>
<a href="./">Главная страница</a>
<a href="http://pascalabc.net/">Скачать и установить Паскаль</a>
</header>
<div class="wrapper">
<div class="content">
<h2 class="main_header">Логические величины, операции, выражения</h2>
<div class="content_header_small">
<span>Pascal</span>
</div>
<p>С элементами математической логики вы уже могли встречаться, изучая способы записи запросов к базе данных и условной функции <i>если</i> в электронных таблицах, основы алгоритмизации и программирования. Повторим основные понятия логики с целью дальнейшего углубления ваших знаний в использовании ее для программирования.</p>
<p>К числу основных понятий логики относятся: <i>высказывание, логическая величина, логические операции, логические выражения и формулы</i>.</p>
<p>Высказывание (суждение) — это повествовательное предложение, в котором что-либо утверждается или отрицается. По поводу любого высказывания можно сказать, истинно оно или ложно.</p>
<p>Например, высказывание <i>«На улице идет дождь»</i> будет истинным или ложным в зависимости от состояния погоды в данный момент. Истинность высказывания <i>«Значение А больше, чем Б»</i>, записанного в форме неравенства: А > В, будет зависеть от значений переменных А и В.</p>
<p>Логические величины — понятия, выражаемые словами: <i>истина, ложь</i> (<i>true, false</i>). Следовательно, истинность высказываний выражается через логические величины.</p>
<p>Логическая константа — <i>истина или ложь</i>.</p>
<p>Логическая переменная — символически обозначенная логическая величина. Следовательно, если известно, что А, В, X, Y и др. — переменные логические величины, то, значит, они могут принимать значения только <i>истина</i> или <i>ложь</i>.</p>
<p>Логическое выражение — простое или сложное высказывание. Сложное высказывание строится из простых с помощью логических операций (связок).</p>
<h3>Логические операции</h3>
<p><b>Конъюнкция</b> (логическое умножение). В русском языке она выражается союзом И. В математической логике используются знаки & или ∧. Конъюнкция — двухместная операция; записывается в виде: А & В. Значением такого выражения будет <i>ложь</i>, если значение хотя бы одного из операндов ложно.</p>
<p><b>Дизъюнкция</b> (логическое сложение). В русском языке этой связке соответствует союз <i>или</i>. В математической логике она обозначается знаком v. Дизъюнкция — двухместная операция; записывается в виде: A ∨ В. Значением такого выражения будет <i>истина</i>, если значение хотя бы одного из операндов истинно.</p>
<p><b>Отрицание</b>. В русском языке этой связке соответствует частица <i>не</i> (в некоторых высказываниях применяется оборот «неверно, что ...»). Отрицание — унарная (одноместная) операция; записывается в виде: ¬А или <b><i>A</i></b>.</p>
<p>Правила выполнения рассмотренных логических операций отражены в следующей таблице, которая называется таблицей истинности логических операций (здесь И означает «истина», Л — «ложь»):</p>
<img src="./pictures/p5_table_3.13.jpeg">
<p><b>Логическая формула</b> — формула, содержащая лишь логические величины и знаки логических операций. Результатом вычисления логической формулы является <i>истина</i> или <i>ложь</i>.</p>
<p>Последовательность выполнения операций в логических формулах определяется старшинством операций. В порядке убывания старшинства логические операции расположены так:
<br>
<ol>
<li>Отрицание</li>
<li>Конъюнкция</li>
<li>Дизъюнкция</li>
</ol>
Кроме того, на порядок выполнения операций влияют скобки, которые можно использовать в логических формулах.
</p>
<p>Например:</p>
<div class="snippet-code">
<p>(A & B) v (¬A & B) v (¬A & ¬B)</p>
</div>
<p>Пример. Вычислить значение логической формулы:</p>
<div class="snippet-code">
<p>¬X & Y v X & Z</p>
</div>
<p>если логические переменные имеют следующие значения: X = <i>ложь</i>, У = <i>истина</i>, Z = <i>истина</i>.</p>
<p>Решение. Отметим цифрами сверху порядок выполнения операций в формуле:</p>
<div class="snippet-code">
<p>1 2 4 3<br>¬X & Y v X & Z</p>
</div>
<p>Используя таблицу истинности, вычислим формулу по шагам:</p>
<ol>
<li>¬ <i>ложь</i> = <i>истина</i></li>
<li><i>истина</i> & <i>истина</i> = <i>истина</i></li>
<li><i>ложь</i> & <i>истина</i> = <i>ложь</i></li>
<li><i>истина</i> v <i>ложь</i> = <i>истина</i></li>
</ol>
<p>Ответ: <i>истина</i>.</p>
<h3>Логические функции на области числовых значений</h3>
<p>Алгебра чисел пересекается с алгеброй логики в тех случаях, когда приходится проверять принадлежность значений алгебраических выражений некоторому множеству. Например, принадлежность значения числовой переменной X множеству положительных чисел выражается через высказывание: «X больше нуля». Символически это записывается так: Х > 0. В алгебре такое выражение называют неравенством. В логике – отношением.</p>
<p>Отношение X > О может быть истинным или ложным. Если X – положительная величина, то оно истинно, если отрицательная, то ложно. В общем виде отношение имеет следующую структуру:</p>
<div class="snippet-code">
<p><выражение 1> <знак отношения> <выражение 2></p>
</div>
<p>Здесь выражения 1 и 2 — некоторые математические выражения, принимающие числовые значения. В частном случае выражение может представлять собой одну константу или одну переменную величину. Знаки отношений могут быть следующими:</p>
<ul>
<li>= — равно;</li>
<li>≠ — не равно;</li>
<li>≥ — больше или равно;</li>
<li>≤ — меньше или равно;</li>
<li>> — больше;</li>
<li>< — меньше.</li>
</ul>
<p>Например:</p>
<div class="snippet-code">
<p>x=5; a + b ≠ x - 1; b<sup>2</sup> - 4ac ≥ 0; <i>sin</i>(x) < x/2</p>
</div>
<p>Итак, отношение — это простое высказывание, а значит, логическая величина. Оно может быть как постоянной: 5 > 0 – всегда <i>истина</i>, 3 ≠ 6 : 2 – всегда <i>ложь</i>; так и переменной: а < b, х + 1 = с - d. Если в отношение входят переменные числовые величины, то и значение отношения будет логической переменной.</p>
<p>Отношение можно рассматривать как логическую функцию от числовых аргументов. Например: <i>f</i>(x) = (х > 0) или <i>p</i>(х, у) = (х < у). Аргументы определены на бесконечном множестве действительных чисел, а значения функции – на множестве, состоящем из двух логических величин: <i>истина</i>, <i>ложь</i>.</p>
<p>Логические функции от числовых аргументов еще называют термином предикат. В алгоритмах предикаты играют роль условий, по которым строятся ветвления и циклы. Предикаты могут быть как простыми логическими функциями, не содержащими логических операций, так и сложными, содержащими логические операции.</p>
<p>Пример 1. Записать предикат (логическую функцию) от двух вещественных аргументов <i>x</i> и <i>y</i>, который будет принимать значение <i>истина</i>, если точка на координатной плоскости с координатами <i>x</i> и <i>y</i> лежит внутри единичной окружности с центром в начале координат:</p>
<img src="./pictures/3.14.jpeg">
<p>Из геометрических соображений понятно, что для всех точек, лежащих внутри единичной окружности, будет истинным значение следующей логической функции:</p>
<div class="snippet-code">
<p>ƒ(x, y) = (x² + y² < 1)</p>
</div>
<p>Для значений координат точек, лежащих на окружности и вне ее, значение функции ƒ будет ложным.</p>
<p><br>Пример 2. Записать предикат, который будет принимать значение <i>истина</i>, если точка на координатной плоскости с координатами <i>x</i> и <i>y</i> лежит внутри кольца с центром в начале координат, и радиусами R1 и R2.</p>
<p>Поскольку значения R1 и R2 – переменные величины, искомая логическая функция будет иметь четыре аргумента: <i>x</i>, <i>y</i>, R1, R2. Возможны две ситуации:</p>
<ol>
<li>R1² < <i>x</i>² + <i>y</i>² < R2² и R1 < R2: R1 – внутренний радиус, R2 – внешний радиус;</li>
<li>R2² < <i>x</i>² + <i>y</i>² < R1² и R2 < R1: R2 – внутренний радиус, R1 – внешний радиус.</li>
</ol>
<p>Объединив дизъюнкцией оба этих утверждения и записав их по правилам алгебры логики, получим следующую логическую функцию:</p>
<div class="snippet-code">
<p>ƒ(x, y, R1, R2) = (((x² + y²) > R1²) & ((x² + y²) < R2²) & R1 < R2) v (((x² + y²) > R2²) & ((x² + y²) < R1²) & R2 < R1)</p>
</div>
<p>Пример 3. Записать предикат, который будет принимать значение <i>истина</i>, если точка на координатной плоскости с координатами <i>x</i> и <i>y</i> лежит внутри фигуры, ограниченной жирными линиями</p>
<img src="./pictures/3.15.jpeg">
<p>Фигура ограничена тремя границами, описываемыми уравнениями:</p>
<ul>
<li><i>y</i> = -<i>x</i> – левая граница, линейная функция;</li>
<li><i>y</i> = 1 – верхняя граница, константа;</li>
<li><i>y</i> = <i>x²</i> – правая граница, парабола.</li>
</ul>
<p>Рассматриваемая область есть пересечение трех полуплоскостей, описываемых неравенствами:</p>
<img src="./pictures/3.16.jpeg">
<p>Во внутренних точках все эти три отношения являются одновременно истинными. Поэтому искомый предикат имеет вид:</p>
<div class="snippet-code">
<p>ƒ(<i>x</i>, <i>y</i>) = (<i>y</i> > -<i>x</i>) & (<i>y</i> < 1) & (<i>y</i> > <i>x²</i>)</p>
</div>
<h3>Логические выражения на Паскале</h3>
<p>Уже говорилось о том, что в Паскале имеется логический тип данных.</p>
<p>Логические константы: <i>true</i> (<i>истина</i>), <i>false</i> (<i>ложь</i>).</p>
<p>Логические переменные: описываются с типом <i>Boolean</i>.</p>
<p>Операции отношения: осуществляют сравнение двух операндов и определяют, истинно или ложно соответствующее отношение между ними. Знаки операций отношения: = (равно), <> (не равно), > (больше), < (меньше), ≥ (больше или равно), ≤ (меньше или равно).</p>
<p>Логические операции: <i>not</i> — отрицание, <i>and</i> — логическое умножение (конъюнкция), <i>or</i> — логическое сложение (дизъюнкция), <i>xor</i> — исключающее <i>или</i>. Таблица истинности для этих операций (Т — <i>true</i>; F — <i>false</i>):</p>
<img src="./pictures/p5_table_3.17.jpeg">
<p>Логическое выражение может состоять из логических констант и переменных, отношений, логических операций. Логическое выражение принимает значение <i>true</i> или <i>false</i>.</p>
<p>Например, логическая формула ¬Х & Y ∨ X & Z на Паскале запишется в виде следующего логического выражения:</p>
<div class="snippet-code">
<p><b>not</b> <i>x</i> <b>and</b> <i>y</i> <b>or</b> <i>x</i> <b>and</b> <i>z</i></p>
</div>
<p>где X, Y, Z — переменные типа <i>boolean</i>.</p>
<p>Логические операции располагаются в следующем порядке по убыванию старшинства (приоритета):
<ol>
<li>not</li>
<li>and</li>
<li>or, xor</li>
</ol><br>
Операции отношения имеют самый низкий приоритет. Поэтому если операндами логической операции являются отношения, то их следует заключать в круглые скобки. Например, математическому неравенству 1 < X < 50 соответствует следующее логическое выражение:
</p>
<div class="snippet_code">
<p>(1 <= <i>x</i>) <b>and</b> (<i>x</i> <= 50)</p>
</div>
<p>Логическая функция odd(x) принимает значение true, если значение целочисленного аргумента х является нечетным, иначе – false.</p>
<p>Для правильной записи сложного логического выражения (предиката) нужно учитывать относительные приоритеты арифметических, логических операций и операций отношений, поскольку все они могут присутствовать в логическом выражении. По убыванию приоритета операции располагаются в следующем порядке.</p>
<ol>
<li>Арифметические операции:
<ul>
<li>- (минус унарный)</li>
<li>*, /</li>
<li>+, -</li>
</ul>
</li>
<li>Логические операции:
<ul>
<li>not</li>
<li>and</li>
<li>or, xor</li>
</ul>
</li>
<li>Операции отношения:
<ul>
<li>=, <>, >, <, >=, <=</li>
</ul>
</li>
</ol>
<p>Ещё раз обратите внимание, что в логическом выражении, соответствующем предикату из примера 3:</p>
<div class="snippet-code">
<p>(y > -x) <b>and</b> (y < 1) <b>and</b> (y > x*x)</p>
</div>
<p>Операции отношения заключены в скобки, поскольку они младше логических операций, а выполняться должны раньше.</p>
</div>
<div class="navigation_panel">
<ul>
<li>
<a href="./P1_aboutLanguage_PascalLanguage.html"><div class="npi">Паскаль — язык структуного программирования</div></a> <!-- 'npi' == 'navigation panel item'-->
</li>
<li>
<a href="./P2_items_of_pascal_and_types_of_data.html"><div class="npi">Элементы языка Паскаль и типы данных</div></a>
</li>
<li>
<a href="./P3_operations_functions_exceptions.html"><div class="npi">Операции, функции, выражения</div></a>
</li>
<li>
<a href="./P4_assignment_operator_and_data_input&output.html"><div class="npi">Оператор присваивания, ввод и вывод данных</div></a>
</li>
<li>
<a href="./P5_logical_values_operations_exceptions.html"><div class="npi">Логические величины, операции, выражения</div></a>
</li>
<li>
<a href="./P6_branch_programming.html"><div class="npi">Программирование ветвлений</div></a>
</li>
<li>
<a href="./"><div class="npi">Программирование циклов</div></a>
</li>
<li>
<a href="./"><div class="npi">Вложенные и итерационные циклы</div</a>>
</li>
<li>
<a href="./"><div class="npi">Вспомогательные алгоритмы и подпрограммы</div></a>
</li>
<li>
<a href="./"><div class="npi">Массивы</div></a>
</li>
<li>
<a href="./"><div class="npi">Организация ввода и вывода данных с использованием файлов</div></a>
</li>
<li>
<a href="./"><div class="npi">Типовые задачи обработки массивов</div></a>
</li>
<li>
<a href="./"><div class="npi">Символьный тип данных</div></a>
</li>
<li>
<a href="./"><div class="npi">Строки символов</div></a>
</li>
<li>
<a href="./"><div class="npi">Комбинированный тип</div></a>
</li>
</ul>
</div>
</div>
<footer>
<div id="thanks">
<span>Текст курса взят из учебника по информатике за 10 класс, соответствующего ФГОС. Авторами учебника являются: И. Г. Семакин, Е. К. Хеннер, Т. Ю. Шеина.</span>
</div>
<div id="social">
</div>
<div id="rights">
<p>Все права защищены © 2022</p>
</div>
</footer>
</body>
</html>