| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • You already know Dokkio is an AI-powered assistant to organize & manage your digital files & messages. Very soon, Dokkio will support Outlook as well as One Drive. Check it out today!

View
 

Глава 9

Page history last edited by PBworks 17 years, 3 months ago

ВИЗУАЛИЗАЦИЯ ЛОГИЧЕСКИХ ФОРМУЛ

 Существует форма представления информации наглядная, броская, понятная всем с детства. Такой формой является графика.

Валерий Венда

ВИЗУАЛИЗАЦИЯ ФУНКЦИИ И

— Где можно купить щенка?

— В нашем городке они продаются на рынке, но сегодня рынок закрыт. К тому же щенков продают не каждый день. Щенки довольно дорогие и какие-то невзрачные — не знаю, понравятся ли они вам.

Из подслушанного разговора ясно, что покупка щенка возможна в том и только в том случае, когда выполняются четыре условия (рис. 55):

  • рынок открыт (обозначим это условие через Р);
  • у покупателя деньги есть (Q);
  • щенки есть в продаже (R);
  • щенок понравился (S).

В итоге получаем логическую функцию

Х = P и Q и R и S

где Х означает “Можно купить щенка?” (рис. 55).

В традиционных языках программирования значениями логических переменных считаются пары (ИСТИНА, ЛОЖЬ) или (1, 0). С эргономической точки зрения, такой подход нельзя признать удачным. В самом деле, использование “шибко мудреных” слов ИСТИНА и ЛОЖЬ или таинственных цифр 1 и 0 в примере о щенках (как и в любом другом конкретном примере) является надуманным, дезориентирующим и не содействует пониманию существа вопроса.

Чтобы поправить дело, в качестве значений логических переменных и логических функций гораздо лучше выбрать простые и ясные слова “да” и “нет”, семантика которых не требует пояснений и понятна даже ребенку. Исходя из этого, в языке ДРАКОН логические функции, переменные и выражения рассматриваются как да-нетные вопросы. Логическая функция И определяется как функция, которая принимает значение “да”, если все логические переменные имеют значение “да”. В остальных случаях функция приобретает значение “нет” (рис. 55)1.

Существуют два способа изображения функции И на языке ДРАКОН: текстовый и визуальный. В первом случае используют одну икону “вопрос”, внутри которой пишут логическое выражение, состоящее из логических переменных, соединенных знаками логической операции И (рис. 56 слева). В другом случае на одной вертикали рисуют N икон “вопрос”, где N — число логических переменных, причем в каждой иконе записывают одну логическую переменную (рис. 56 справа).

Визуальная формула на рис. 56 показывает, что оба способа эквивалентны. Примеры на рис. 57 подтверждают это. Для практического использования рекомендуется визуальный способ, так как он более нагляден и позволяет быстрее найти ошибку в сложном алгоритме. Следует подчеркнуть, что текстовый способ не является запрещенным, но пользоваться им следует с осторожностью и лишь в тех случаях, когда пользователь убежден в своих способностях гарантировать отсутствие ошибок. Опыт показывает, что большинство людей выбирает визуальный способ как более легкий. Однако подготовленные специалисты, знакомые с основами математической логики, иногда предпочитают текстовый метод. Таким людям можно посоветовать освоить оба метода.

ВИЗУАЛИЗАЦИЯ ФУНКЦИИ ИЛИ

Логическая функция ИЛИ принимает значение “да”, если хотя бы одна логическая переменная имеет значение “да”. Функция принимает значение “нет”, если все логические переменные имеют значение “нет” (рис. 58).

На языке ДРАКОН функцию ИЛИ можно записать двумя способами. Если выбран текстовый способ, рисуют одну икону “вопрос”, содержащую логическое выражение (рис. 59 слева). При визуальном способе используют несколько икон “вопрос”, у которых объединяют нижний выход; в каждой иконе пишут одну логическую переменную (рис. 59 справа). Из рис. 59 и 60 видно, что оба метода эквивалентны.

ВИЗУАЛИЗАЦИЯ ФУНКЦИИ НЕ

Функция W = Z называется функцией НЕ, если логические переменные Z и W принимают инверсные значения, т. е. удовлетворяют условиям:

если Z = да, то W = нет;

если Z = нет, то W = да.

Визуальные формулы на рис. 61 показывают, что знак логического отрицания можно исключить из дракон-схемы, если поменять местами слова “да” и “нет” на выходах иконы “вопрос” (при этом иконы, находящиеся в плечах развилки, следует оставить на своих местах).

Упражнения на рис. 62—66 помогут читателю закрепить материал.

ВИЗУАЛИЗАЦИЯ СЛОЖНЫХ ЛОГИЧЕСКИХ ФУНКЦИЙ

Рассмотрим функцию

Х = (A и B и C) или (D и E и F )(1)

На рис. 67 показан визуальный способ записи этой функции. Из рисунка видно, что формула (1) разбивается на три части:

1) А и B и С; 2) D и Е и F; 3) Операция “или”.

Функция А и и С изображается с помощью трех икон А, B, С, расположенных на одной вертикали. Аналогично рисуют функцию D и Е и B. Связка “или” реализуется с помощью линий, объединяющих нижние выходы икон С и F в точке K (рис. 67).

В формуле (1) некоторые члены записаны без логического отрицания (А, В, D, Е), другие — с отрицанием (B, F). Члены без отрицания превращаются в иконы А, В, D, Е, у которых нижний выход помечен словом “да”. Членам с отрицанием соответствуют иконы В и F, где нижний выход помечен словом “нет” (рис. 67). Другие примеры алгоритмов, вычисляющих сложные логические функции, представлены на рис. 68—74.

Изложенные соображения позволяют сформулировать две теоремы.

Теорема 1. Дракон-схему, содержащую логические связки И, ИЛИ, НЕ внутри икон “вопрос”, всегда можно преобразовать в эквивалентную дракон-схему, не содержащую указанных связок.

Теорема 2. Если некоторый фрагмент дракон-схемы имеет один вход, два выхода и содержит только иконы “вопрос”, причем первый выход вычисляет функцию X, то второй выход вычисляет ее логическое отрицание X (рис. 67—73).

Доказательство теорем предоставляем читателю.

ВЫВОДЫ

  1. В алгоритмах со сложной логикой часто используются условные операторы с логическими выражениями. Опыт показывает, что такие операторы во многих случаях трудны для понимания, что нередко приводит к ошибкам.
  2. В языке ДРАКОН используются визуальные логические выражения, позволяющие при желании полностью исключить логические связки И, ИЛИ, НЕ из условных операторов.
  3. Визуализация логических формул во многих практически важных случаях заметно облегчает их понимание и уменьшает вероятность ошибок.

Comments (0)

You don't have permission to comment on this page.