Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги_docv / Паронджанов Как улучшить работу ума.doc
Скачиваний:
348
Добавлен:
21.03.2015
Размер:
15.07 Mб
Скачать

Важный момент, о котором часто забывают

На рис. 75 записан вопрос “Можно.ехать.через.перекресток”, который объясняет принцип разветвления алгоритма: при ответе “да” выполняется команда “Ехать.вперед”, при ответе “нет” действия отсутствуют. Данный вопрос играет ключевую роль: если его удалить, алгоритм становится непонятным. В связи с этим целесообразно ввести понятие главный вопрос условного оператора.

А теперь взглянем на рис. 77—79. Нетрудно заметить, что в иконе “вопрос” записана масса любопытных подробностей, однако интересующий нас вопрос отсутствует. Он бесследно исчез.

Таким образом, логические выражения на рис. 77—79 имеют общий недостаток, причем весьма существенный. В них нет главного вопроса, нет ключа, объясняющего сущность алгоритма. Налицо парадокс: логические выражения не дают явной информации о том,на какой именно вопросмы отвечаем “да” или “нет”. Более того, они не позволяют читателю легко и быстро восстановить формулировку главного вопроса и не стимулируют у него стремления к получению подобной информации.Не будет преувеличением сказать, что перечисленные логические выражения затуманивают суть дела, поскольку отсутствие главного вопроса ничем нельзя компенсировать. В итоге алгоритмы на рис. 77—79 оказываются непонятными и эргономически неприемлемыми. Отсюда вытекает, что использование эргономически правильных длинных смысловых идентификаторов является необходимым, но отнюдь не достаточным условием для построения эргономичного логического текста.

Как присвоить значение логической переменной?

Мы уже говорили, что в традиционных языках для значений логических переменных используют слова TRUEиFALSE,ИСТИНАиЛОЖЬ, 1 и 0. Однако логико-эргономические исследования показывают, что указанные обозначения являются избыточными и могут быть безболезненно и с пользой для дела исключены из программных текстов. Стремление “уничтожить” лишние обозначения объясняется эргономическими причинами, так как все ненужные записи являются визуальными помехами, которые засоряют текст программы и путают читателя.

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

Во втором случае используется икона “полка” (рис. 1, икона И10), на верхнем этаже которой пишут зарезервированное предложение “Установить признак” или “Снять признак”. На нижнем этаже указывают идентификатор признака. Операторы языкаДРАКОН означают, что логической переменной “Норма.насоса” присваивается значение “1” и “0” соответственно. Еще один пример использования иконы “полка” показан на рис. 81.

Легко видеть, что на рис. 81 используется та же хитрость, что и на рис. 80, а именно: логической переменной присваивается значение “1” или “0”, хотя обозначения “1” и “0” в тексте программы нигде не встречаются!