Свойства алгоритмов и способы их описания
Офисное программирование
Визуальное программирование
Трудоемкость процесса написания программ, особенно реализации интерфейса пользователя, вынудила реализовать идеи визуального программирования. Согласно этой идее все описания и независимые от пользователя наборы данных создаются в диалоговом режиме, причем программист прямо на экране видит результаты своей работы и может их скорректировать. Более того, появляются возможности автоматизации процесса создания фрагментов программ, манипулирующих данными. Система Visual Basic снабжена множеством средств автоматизации программирования – мастерами, что характерно для современных программных продуктов фирмы Microsoft.
Создание таких интегрированных сред, как пакет Microsoft Office, включающий в себя текстовый редактор, электронные таблицы, систему управления базами данных и т.д. дало дальнейшее развитие объектно-ориентированному программированию и привело к появлению офисного программирования. Для всех компонентов пакета создано единое встроенное средство программирования, предназначенное для автоматизации управления документами и манипуляций с данными. В MS Office таким средством является система программирования Visual Basic for Application, являющаяся развитием системы Visual Basic и дополненная новыми объектами, реализующими целые документы, создаваемые в этом пакете.
Следует отметить, что для офисного программирования характерно написание небольших логически законченных программных модулей, которые называются макросами. Имеется возможность включить в главное меню дополнительные команды для вызова макросов. Сам процесс создания макросов значительно автоматизирован. Для этого в субменю Сервис программных средств фирмы Microsoft имеются команды "начать запись макроса" и "закончить запись макроса". Первая из них дает команду преобразовывать все действия пользователя по управлению документом в конкретную программу и записывать ее как макрос. Вторая останавливает запись. Часто полученный макрос годен без всякой доработки или нуждается в незначительной доработке.
Выше было дано определение алгоритма как системы указаний по преобразованию входных данных в выходные, т.е. описания последовательности каких-либо действий. Это необязательно программа для компьютера, например, алгоритм утреннего одевания:
· снимите ночную одежду (можно перечислить что именно);
· наденьте брюки;
· наденьте рубашку;
· наденьте нижнее дневное белье;
· наденьте носки;
· наденьте ботинки.
На этом примере уже можно проследить опасности, подстерегающие программиста:
· нерациональность алгоритма (вряд ли удобно надевать рубашку после брюк, если только эта рубашка не навыпуск);
· фатальные ошибки, делающие алгоритм неработоспособным (попробуйте надеть нижнее белье, после того как надели верхнее).
Алгоритмы должны обладать следующими важнейшими свойствами:
· определенность;
· результативность (конечность);
· массовость.
Определенность алгоритма – это точность описания, не допускающая никакого произвола в его истолковании. Один и тот же набор данных должен приводить к одному и тому же результату, если в алгоритме отсутствует специально введенный элемент случайности.
Результативность предусматривает достижение конечного результата за конечное число действий, предусмотренных алгоритмом. Исключением являются умышленно создаваемые тупиковые ситуации или бесконечно повторяющиеся последовательности действий.
Массовость предусматривает пригодность алгоритма для решения любой задачи из некоторого класса задач. Например, процедура RisOkno из примера описания объекта решает целый класс задач – рисует некоторое стандартное окно, параметры которого определяются программистом при вызове процедуры.
Для компактного описания алгоритмов существуют блок-схемы и
Р-графы. Блок-схемы – это рисунки, на которых условными знаками обозначены различные операции, а внутри обозначений помещены описания этих операций (рис.1.7,а).
Р-граф – плоский рисунок, состоящий из вершин и дуг
(рис. 1.7,б). Вершины соответствуют состояниям программы в каждый момент ее выполнения, а дуги описывают переходы из одного состояния в другое. Над дугой пишется условие, разрешающее движение по дуге, под дугой – выполняемое действие. И условие, и действие не являются обязательными элементами дуги и могут отсутствовать. Дуги могут направляться как слева направо, так и справа налево, а также сверху вниз и снизу верх.
x,y,z a
да нет
a>0
a не имеет смысла
а)
Вход a>0 Выход
о o o о o
ввод x,y,z вычисление а печать а
иначе
печать
"не имеет смысла"
б)
Рис. 1.7. Примеры описания алгоритма блок-схемой (а) и Р-графом (б)
На рисунке 1.7 двумя способами описан один и тот же алгоритм – ввод с клавиатуры или из файла значений переменных x,y,z, расчет значения переменной a, вывод на печать значения переменной а, если она больше нуля, и сообщения "не имеет смысла", если переменная а меньше нуля. Как видно из рисунка, Р-граф изображать проще, чем блок-схему. Следует учесть также, что при применении блок-схем следует использовать стандартные обозначения их элементов.