Суббота, 19.05.2012, 20:04

Компьютерная тех. поддержка

Меню сайта
Наш опрос
Какой операционной системой вы пользуетесь??
Всего ответов: 183
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
E-mail:
Пароль:
Статьи
Новое
Поиск
Спонсоры

рекомендуем

Главная » 2010 » Декабрь » 14 » Алгебра логики
22:00
Алгебра логики
Алгебра логики

Рассмотрим первую задачу — отбор строк. Здесь нам на по-мощь вновь приходит фундаментальная наука. Английский ма-тематик Дж. Буль (отец известной писательницы Э.Войнич, ав-тора романа «Овод») еще в XIX веке, изучая законы логики, соз¬дал систему исчисления, называемую алгеброй логики. Несмотря на загадочные знаки, которые появляются в логических выраже¬ниях, основные принципы этой науки вполне доступны всем, кто знает хотя бы элементы обычной алгебры (а точнее, тем, кто знаком с понятиями переменной и значения переменной и умеет считать до двух)., Основные элементы алгебры логики мы изложим в сопостав-лении с хорошо знакомыми вам понятиями обычной алгебры. Как всегда, речь идет только о принципах: в полном объеме бу-лева алгебра — серьезная наука, для работы в которой умения считать до двух недостаточно. Напишем простое алгебраическое равенство (взятое наугад): с = а+2Ь-5. В правой части равенства записано выражение, которое в ин-форматике называют арифметическим (хотя уместно назвать его и алгебраическим). Арифметическое выражение состоит из операндов, соединенных между собой знаками арифметических операций (сложение, вычитание, умножение, деление). В нашем примере операнды — это две константы 2 и 5, а также перемен¬ные а и Ъ. Подставив конкретные значения а и Ь, мы можем вы¬числить значение арифметического выражения и присвоить его переменной с, записанной в левой части равенства. Например, при а = 2иЬ = 6с=9. В терминах информатики знак «=» — это знак присваивания. Если область определения а и Ъ — все действительные числа, то и с может принимать любое действи¬тельное значение. В частном случае арифметическое выражение может содержать один операнд. Например, в формуле а = Ъ справа находится арифметическое выражение, представленное переменной Ъ. А теперь напишем равенство: с = а > Ь. На первый взгляд это бессмыслица. Однако перед нами в правой части не арифметическое, а логическое выражение. И в левой части равенства находится не алгебраическая, а логическая (или булева) переменная. Ее область определения — только два числа: 1 («Истина» или «да») и 0 («Ложь» или «нет»). Логическое выражение отвечает на вопрос — да или нет (например, а > Ы). Результатом логического выражения а > b может' быть либо («да»), либо 0 («нет»), и его можно присвоить логической пере-менной с. Например, если а = 5 и b = 2, то выражение 5 > 2 яв-ляется истинным, и его значение равно 1; если а = 5, a b = 5 или 8, то выражение а > b является ложным, и его значение равно 0. Примечание. Строго говоря, значениями булевой переменной являются TRUE («Истина») или FALSE («Ложь»). Конкретные же значения, которыми пользуется машина, могут быть разны¬ми, в зависимости от соглашений системы (например, — 1 и 0, или «не нуль» и 0). Пользователя это обычно не интересует. Для определенности мы считаем эти значения единицей и нулем. Вернемся к примеру с Чейзом. Пусть в ИС переменная (данное), описывающая автора, имеет имя АВТОР, — тогда мы можем написать: с = АВТ0Р="Чейз". В этом равенстве знак «=» имеет два значения: слева это знак присваивания, а справа — знак отношения, о котором говорится далее. Кавычками в ИС обычно отмечается конкретное значение текстового данного (это символьный литерал). Просматривая в своей базе данных очередную карточку, машина вычисляет зна-чение логического выражения АВТОР="Чейз". Оно равно 1 (значение фамилии автора в карточке совпадает со значением Чейз, выражение истинно) или 0 (не совпадает). Все карточки, для которых с = 0, машина пропустит. Зачем мы записываем слева переменную с? Что с ней делать, если и так ясно, что справа либо 1, либо 0? Очень часто пере-менная с действительно не нужна, и машина может принять ре-шение сразу после вычисления значения логического выраже¬ния, не запоминая его. Однако мы хотим подчеркнуть, что с — это полноценная логическая переменная, и при необходимости с ней можно производить дальнейшие логические операции. Если нам надо найти книги Чейза, изданные в издательстве Луч, мы можем написать более сложное логическое выражение: АВТ0Р="Чейз" AND ИЗДАТ="Луч". Комбинация AND предписывает нам так прочитать это выра-жение: автор — Чейз и издательство — Луч. Это выражение ис-тинно (его значение равно 1), если одновременно (т. е. одной карточке) истинны оба составляющих его выражения (т. е. автор — Чейз и издательство — Луч). Это выражение ложно во всех других трех случаях (например, если автор — Чейз, но издатель¬ство — не Луч). Теперь мы знаем достаточно, чтобы сформулировать строгие определения. Операндами логического выражения являются условные выра¬жения вида а > Ь, АВТОР="Чейз". В частном случае логическое выражение может состоять из одного операнда, то есть совпадать по смыслу с условным выражением. Например, условное выра¬жение а > Ь — частный случай логического выражения. Вспом¬ните, что и арифметическое выражение в частном случае может содержать один операнд — константу или переменную. Значением условного выражения может быть либо 1 («Истина»), либо 0 («Ложь»). Элементы условного выражения соединяются знаками отно-шения: = (равно); > (больше); < (меньше); <> (не равно); >= (больше или равно); <= (меньше или равно). Например, выражение аОЬ истинно, если а не равно Ь, а вы-ражение а>— b истинно, если а больше или равно Ъ. Операнды логического выражения (т. е. условные выражения) соединяются знаками логических операций: AND — Конъюнкция (И); OR — Дизъюнкция (ИЛИ). Например, выражение (a>b) AND (c<>d) считается истинным (т. е. равно 1), если истинными являются значения обоих услов¬ных выражений (т. е. а больше b и с не равно d). В остальных случаях оно ложно (значение равно 0). Заметим, что круглые скобки в логических выражениях употребляются так же, как и в арифметических т- для определения приоритета операций. В по¬следнем примере они необязательны (это все равно, что напи¬сать (а)+(Ь)) и использованы нами для наглядности, чтобы более четко выделить два логических операнда. Если вместо AND («И») вы запишете OR («ИЛИ»): (a>b) OR (c<>d), значение этого выражения равно 1, если истинно хотя бы одно из двух выражений (в том числе, и оба), т. е. а больше b или с не равно d. Кроме широко распространенных операций AND и OR, су-ществуют следующие логические операции: XOR — Дизъюнкция II («исключающее ИЛИ»); EQV — Эквивалентность; IMP — Импликация. Пусть А — первое условное выражение в логической опера-ции, а В — второе. Тогда сводную таблицу значений логического выражения ААВ, где л — обобщенный знак логической операции (таблицу истинности), можно записать следующим образом (Т — «Истина», F — «Ложь»): Указанные логические операции являются бинарными, т. е. выполняются над парой условных выражений. Существует унарная логическая операция NOT (отрицание, НЕ), выполняемая над одним операндом. Например, выражение NOT(a>b) истинно, если выражение а > b — ложно, т. е. если а меньше или равно Ь. Вы уже знаете (п.12.9.1), что в арифметических операциях принят определенный приоритет операций: старшей операцией считается возведение в степень, далее следуют умножение и де¬ление, затем сложение и вычитание. Приоритет можно изменить с помощью круглых скобок. В логических операциях также используется определенный приоритет: старшая операция — отрицание, следующая — конъ¬юнкция, потом дизъюнкция. Приоритет операций также можно изменить с помощью круглых скобок (прежде всего выполняют¬ся операции в самых внутренних скобках). Например, в логиче¬ском выражении (а > b) OR (b > с) AND NOT ((a > 0) OR (с > а)) устанавливается следующий порядок операций В п. 14.17 приведен пример запроса к информационной сис-теме, результаты которого изменяются в зависимости от измене¬ния приоритета логических операций. К изложенным сведениям следует добавить несколько приме¬чаний. «Знаки» условных и логических выражений часто состоят из нескольких символов, поэтому их иногда называют операто-рами. Однако мы будем использовать термин «знак», чтобы из-бежать сочетаний типа «оператор логической операции»- В информационных системах имя атрибута (данного) игра¬ет ту же роль, что и обозначение обычной алгебраической пере-менной. Например, сравните: а = 5 о АВТОР = "Чейз". 3. Алгебра логики широко используется и в математике, и в информационной технологии: в языках программирования, в языках запросов ИС, в электронных таблицах, даже в языке ко¬ мандных файлов MS-DOS. Для определенности мы привели лишь один из вариантов начертания знаков отношения и логи¬ ческих операций, используемый в MS Access. В отличие от зна¬ ков арифметических операций (+, —, *, /) здесь нет стандарта, и в разных случаях (в математике, в языках программирования, в языках запросов) эти знаки могут записываться по-разному. На¬ пример, вместо «=» часто пишут «==», вместо «О» сочетание «!=», вместо AND — «&» , или «&&», или «and» и т. д. Для по¬ нимания принципов это не имеет значения. Итак, вычислив значение логического выражения, машина может присвоить его булевой переменной (вот почему мы писа¬ли с = а > Ь) и использовать в дальнейших логических операци¬ях. Логические выражения (как и арифметические) могут быть сколь угодно сложными, однако на практике вы, как правило, будете иметь дело с более простой логикой, например: RUB=02 AND DLIT<=80. Это может означать: выбрать из видеотеки фильмы с кодом рубрики 02 (например, — вестерны) и длительностью не более 80 минут. Аппарат алгебры логики лежит в основе всех механизмов от¬бора в информационных системах. Реализация этого аппарата может меняться от системы к системе, однако если вы поняли принципы, вам не составит труда освоить конкретный механизм. Например, в широко распространенных" базах данных типа dBASE используется понятие «фильтр», причем фильтр — это просто логическое выражение типа RUB=02 AND DLIT<=80. Информация как бы фильтруется: в выборку включаются только те записи таблицы, для которых значение фильтра равно 1 (т. е. выражение истинно). Примерно такой же фильтр вы можете применить в MS Access и выдать на экран только избранные строки таблицы (см. п. 15.2.2). В мощных современных системах используется промышлен¬ный язык структурированных запросов SQL (Structured Query Language), который среди прочих предложений имеет англоя¬зычный оператор выборки SELECT (Выбрать). В этом операторе по определенным правилам (как всегда, условным) вы формули¬руете: что выбрать, откуда и при каком фильтре. В переводе на русский язык это может звучать примерно так: выбрать карточки из (from) базы данных "Библиотека", где (where) АВТОР равен "Чейз". В MS Access, которую мы изучаем в главе 14, использу¬ются и фильтр (примерно так же, как в dBASE), и SQL.
Просмотров: 271 | Добавил: sergei4 | Рейтинг: 0.0/0
Всего комментариев: 1
0  
1 Nash   (10.01.2012 21:53)
Keep on wirtnig and chugging away!

Имя *:
Email:
Код *: