Программный способ записи алгоритмов
При записи алгоритмов в словесной форме, в виде блок-схемы или на псевдокоде допускается определенный произвол при изображении команд. Вместе с тем такая запись точна настолько, что позволяет человеку понять суть дела и исполнить алгоритм.
Однако на практике в качестве исполнителей алгоритмов используются специальные автоматы – компьютеры. Поэтому алгоритм, предназначенный для исполнения на компьютере, должен быть записан на понятном ему языке. И здесь на первый план выдвигается необходимость точной записи команд, не оставляющей места для произвольного толкования их исполнителем.
Следовательно, язык для записи алгоритмов должен быть формализован. Такой язык принято называть языком программирования, а запись алгоритма на этом языке – программой для компьютера.
Алгоритм на выбранном языке программирования записывается с помощью команд описания данных, вычисления значений и управления последовательностью выполнения программы.
ПРОЕКТИРОВАНИЕ ПРОГРАММ
Разработка любой программы или программной системы начинается с определения требований к ней для конкретного набора пользователей и заканчивается эксплуатацией системы этими пользователями.
Проектирование и разработку программ целесообразно разбить на ряд последовательных этапов:
- постановка задачи;
- проектирование программы;
- построение модели;
- разработка алгоритма;
- реализация алгоритма;
- анализ алгоритма и его сложности;
- тестирование программы;
- документирование.
Постановка задачи
При постановке задачи необходимо провести следующие работы:
- сбор информации о задаче;
- формулировка условия задачи;
- определение конечных целей решения задачи;
- определение формы выдачи результатов;
- описание данных (их типов, диапазонов величин, структуры и т.п.).
Проектирование программы
Сначала производится проектирование архитектуры программной системы. Методы проектирования архитектуры делятся на две группы:
- ориентированные на обработку;
- ориентированные на данные.
На модульном уровне по каждому модулю разрабатывается спецификация модуля:
- имя/цель – дается имя модулю и предложение о функции модуля с формальными параметрами;
- неформальное описание – обзор действий модуля;
- ссылки – какие модули ссылаются на него и на какие модули ссылается данный модуль;
- вход/выход – формальные и фактические параметры, глобальные, локальные и связанные (общие для ряда модулей) переменные;
- примечания – полезные комментарии общего характера по модулю.
Следующим шагом является детальное проектирование. На этом этапе происходит процедурное описание программы, выбор и оценка алгоритма для реализации каждого модуля.
Построение модели
При построении моделей, как правило, используют два принципа: дедуктивный (от общего к частному) и индуктивный (от частного к общему).
При дедуктивном подходе рассматривается частный случай общеизвестной фундаментальной модели. Здесь при заданных предположениях известная модель приспосабливается к условиям моделируемого объекта.
Индуктивный способ предполагает выдвижение гипотез, декомпозицию сложного объекта, анализ, затем синтез. Здесь широко используется подобие, аналогичное моделирование, умозаключение с целью формирования каких-либо закономерностей в виде предположений о поведении системы.
Разработка алгоритма
Разработка алгоритма – самый сложный и трудоемкий процесс, он включает в себя:
- выбор метода проектирования алгоритма;
- выбор формы записи алгоритма (блок-схемы, псевдокод и др.);
- выбоp тестов и метода тестиpования.
На этом этапе необходимо провести анализ правильности алгоритма. Наиболее распространенная процедура доказательства правильности алгоритма – это прогон его на множестве различных тестов. Однако это не гарантирует того, что не может существовать случая, в котором программа «не работает». Затем предлагается доказательство конечности алгоритма с окончательными исходными входными и выходными данными.
Реализация алгоритма
На этапе реализации алгоритма происходит конструирование и реализация алгоритма, включая:
- выбор языка программирования;
- уточнение способов организации данных;
- запись алгоpитма на выбpанном языке пpогpаммиpования.