Что такое эргономичный алгоритм? 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Что такое эргономичный алгоритм?



В связи с этим полезно ввести понятие эргономичный алгоритм, т. е. алгоритм, удовлетворяющий критерию сверхвысокой понимаемости. Преимущество эргономичных алгоритмов в том, что они намного понятнее, яснее, нагляднее и доходчивее, чем обычные. Если алгоритм непонятный, в нем трудно или даже невозможно заметить затаившуюся ошибку. И наоборот, чем понятнее алгоритм, тем легче найти дефект. Поэтому более понятный, эргономичный алгоритм намного лучше обычного. Лучше в том смысле, что он облегчает выявление ошибок, а это очень важно. Ведь чем больше ошибок удастся обнаружить при визуальной проверке, тем больше вероятность, что вновь созданный алгоритм окажется правильным, безошибочным, надежным. Кроме того, эргономичные алгоритмы удобнее для изучения, их проще объяснить другому человеку.

В предыдущей главе мы рассмотрели несколько способов, позволяющих улучшить эргономические характеристики алгоритмов. В этой главе, продолжая тему, попытаемся ответить на вопрос: можно ли повысить эргономичность алгоритмов, используя формальный метод эквивалентных преобразований?

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

Чем отличается икона “Вопрос”
от развилки?

На рис. 1 (позиция И4) изображена икона “вопрос”. Она называется так, потому что внутри нее пишут “ да-нетныйвопрос, т. е. вопрос, на который можно ответить либо “да”, либо “нет”. Все другие ответы запрещены. Вот примеры да-нетных вопросов: утюг сломался? Тетя при­ехала? Вася купил хлеб? Преступника арестовали? Эта лужа больше, чем та? Температура выше нуля?

Икона “вопрос” имеет один вход сверху и два выхода: вниз и вправо. Выход влево запрещен и никогда не используется.

На рис. 2 (позиция 2) показана макроикона “развилка”. Она содержит икону “вопрос”, точку слияния и два плеча: левое и правое (рис. 14 б). Левое плечо есть путь от нижнего выхода иконы-вопроса до точки слияния. Правое плечо начинается у правого выхода иконы-вопроса и заканчивается в точке слияния (рис. 15). Таким образом, плечо имеет в своем составе надпись “да” или “нет”, соединительные линии, точку слияния, а также иконы. Одно из двух плеч может быть пустым (не содержать икон).

Развилки бывают простые и сложные. Простая развилка содержит только одну икону-вопрос. Примеры простых развилок показаны на рис. 16. Развилка называется сложной, если в ее плечах имеется по крайней мере одна простая развилка. На рис. 10 а показаны три сложные развилки. Например, развилка “Борщ очень вкусный?” сложная, так как ее левое плечо содержит простую развилку “Борщ сильно пересолен?”. Другие примеры сложных развилок показаны на рис. 17.

 

Маршруты и формулы маршрутов

На рис. 18 а представлена дракон-схема “Охота на мамонта”. Заменим текст внутри икон буквами. Вместо “Охота на мамонта” запишем букву А, вместо “Поймай мамонта” — букву Б и т. д. В результате получим литеральную (буквенную) дракон-схему на рис. 18 б. Литеральные схемы удобно использовать для описания маршрутов.

Маршрут — это графический путь от начала до конца алгоритма, проходящий через иконы и соединительные линии. Маршрут можно описать с помощью формулы, которая представляет собой последова­тельность букв, обозначающих иконы. Все иконы, включая одинаковые, обозначаются разными буквами.

 
 

Линейный (неразветвленный) алгоритм имеет только один маршрут и одну формулу. Например, схема на рис. 18 б описывается формулой

Разветвленный алгоритм имеет несколько (два или более) маршрутов, причем у каждого маршрута своя, отличная от других формула (рис. 19, 20). В формулах разветвленных алгоритмов наряду с буквами, обозначающими иконы, используются слова “да” или “нет” (отделяемые пробелами).

Что такое рокировка?

Рокировка — это преобразование алгоритма, при котором левое и правое плечо развилки меняются местами. Простейшие примеры рокировки показаны на рис. 8 и 21.

 
 

Два алгоритма называются равносильными, если для каждого маршрута первого алгоритма можно найти парный маршрут второго алгоритма, причем для каждой пары маршрутов их формулы совпадают. Обратимся к рис. 22. Легко убедиться, что схемы на рис. 22 а и б имеют одинаковый набор маршрутов:

Следовательно, указанные дракон-схемы равносильны.

Формальное преобразование алгоритма А1 в алгоритм А2 назы­вается равносильным, если алгоритмы А1 и А2 равносильны. Сказанное означает, что рокировка является равносильным преобразованием алгоритмов. При рокировке слова “да” и “нет” обязательно меняются местами.

 

 

Использование рокировки
для улучшения эргономичности

Мы убедились, что рокировка алгоритма на рис. 8 а позволила получить алгоритм на рис. 8 б, который имеет более высокие эргономические характеристики, так как на рис. 8 б соблюдается правило “главный маршрут идет по шампуру”. Это означает, что равносильное преобразо­вание “рокировка” в примере на рис. 8 действительно улучшает эргономичность алгоритма.

Попытаемся обосновать аналогичный вывод для рис. 21, рассмотрев последовательно все промежуточные шаги рассуждений.

На первом шаге выдвигаем гипотезу: для сравнения двух маршрутов на рис. 21 а можно использовать признак “лучше—хуже”.

На втором шаге проверяем гипотезу с помощью рассуждений: если брюки впору — это хорошо, если их приходится подворачивать — это плохо. Следовательно, использование в данном алгоритме признака “лучше—хуже” правомерно.

На третьем шаге определяем главный маршрут, который по соглашению соответствует признаку “хорошо”. Следовательно, главный маршрут на рис. 21 а идет через правое плечо развилки, что соответствует хорошей ситуации “брюки впору — их не надо подворачивать”.

На четвертом шаге констатируем, что главный маршрут на рис. 21 а не идет по шампуру. Делаем вывод: алгоритм на рис. 21 а является плохим, неэргономичным, однако его можно исправить с помощью рокировки.

На пятом шаге выполняем рокировку и получаем более эргономичный алгоритм на рис. 21 б. На этом процедура заканчивается[16].

Рассмотрим теперь более сложный алгоритм на рис. 10 а. Этот алгоритм тоже плохой, потому что содержит три плохие (неэргономичные) развилки: 1) “В меню есть твой любимый салат?”, 2) “Борщ очень вкусный?”, 3) “Жаркое, как подошва?”. Последовательно применяя к развилкам три операции “рокировка”, получаем эргономичный алгоритм на рис. 10 б.

Таким образом, на основании анализа примеров мы убедились: равносильное преобразование “рокировка” позволяет улучшить эргономичность алгоритмов. Однако этот вывод относится только к смысловым алгоритмам (где можно указать главный маршрут) и неприменим к литеральным алгоритмам (где понятие главного маршрута теряет силу). Отсюда вытекает, что применение рокировки к литеральной схеме на рис. 22 бессмысленно, так как в данном случае рокировка не влияет на эргономичность.

Вертикальное и горизонтальное
объединение

Бывает, что в дракон-схемах одинаковые иконы повторяются несколько раз. Например, на рис. 23 а икона “Отдай мотоцикл в ремонт и впредь будь умнее” встречается три раза. Это плохо: навязчивые повторения раздражают читателя, которому приходится тратить лишнее время и несколько раз читать одно и то же. К счастью, некоторые повторы можно устранить. Такая возможность появляется, если одинаковые иконы соседствуют друг с другом, причем их выходы соединены между собой (рис. 23 а). В этом случае действует правило “повторы запрещены”. Устранение повторов производится с помощью вертикальной линии (рис. 23 б) и называется вертикальным объединением. Нетрудно доказать, что операция “вертикальное объединение” осуществляет равносильное преобразование алгоритмов.

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

Сравнивая алгоритмы на рис. 23 а и б, легко заметить, что схема на рис. 23 б обладает более высоким эргономическим качеством: она стала более компактной, ясной и наглядной, поскольку освободилась от бессмысленного повторения икон. Отсюда проистекает вывод: равносильное преобразование “вертикальное объединение” позволяет улучшить эргономичность алгоритмов.

Иногда для исключения повторов используется не вертикальная, а горизонтальная линия. Соответствующая операция называется горизонтальным объединением. Она также является равносильным преобразованием.

Рассмотрим пример на рис. 24 а. Сначала с помощью горизонтального объединения устраним повторение иконы “Съешь кашу” и получим схему на рис. 24 б. Затем применим вертикальное объединение и исключим повторение развилки “Есть можно?”. Окончательный результат показан на рис. 24 в. Полученная схема более удобна и занимает меньше места, чем исходная схема на рис. 24 а.

Разобранный пример показывает, что равносильное преобразование “горизонтальное объединение” также улучшает эргономичность алгоритмов.

Предостережение: выполняя вертикальное и горизонтальное объединение, нужно следить, чтобы не появились пересечения соединительных линий (рис. 25).



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 446; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.147.252 (0.012 с.)