Лекция 2. Способы записи алгоритмов.
Решение любой задачи на ЭВМ состоит из нескольких этапов, основными из которых являются следующие (модель «Семь +»):
1. постановка задачи;
2. формализация задачи (математическая постановка);
3. выбор или разработка численного метода решения;
4. разработка алгоритма (алгоритмизация);
5. составление программы;
6. отладка и тестирование;
7. внедрение и поддержка.
"Плюс" означает, что в зависимости от сложности задачи и требований пользователя перечисленные этапы могут дополняться такими видами работ, как выбор языка программирования, описание структуры данных, оптимизация программы, документирование, доказательство правильности (верификация) и др. Документация включает как развернутый комментарий программы, так и отдельное описание каждого этапа и руководства для программиста и пользователя.
Постановка задачи. На этом этапе анализируется:
· конечная цель решения задачи;
· существует ли решение задачи и единственно ли оно;
· общие свойства рассматриваемого объекта или явления;
· возможности конкретной ЭВМ и системы программирования.
Формализация задачи. На этом этапе строится математическая модель рассматриваемого явления:
· корректно упрощается исходная задача, то есть не берутся в расчет факторы, оказывающие слабое влияние на получаемые результаты;
· определяется специфика и объем исходных данных;
· вводится система условных обозначений.
Выбор метода решения. При выборе метода основное внимание уделяется требованию получения результата с заданной точностью. Необходимо помнить, что любой результат, получаемый на ЭВМ, является приближенным. Даже, если известен метод получения точного решения, существуют ошибки, связанные с ограниченной точностью представления чисел в ЭВМ. При использовании приближенных численных методов к ошибкам округления добавляются погрешности самого метода.
Алгоритмизация. Как правило, составление алгоритма проводится методом "проб и ошибок", проходит несколько этапов детализации. В практике могут использоваться различные способы описания алгоритма, из которых наибольшее распространение получили:
· словесная запись алгоритмов;
· блок-схемы;
· R-схемы;
· структурограммы.
Программирование (кодирование) - это перевод алгоритма в форму, допускающую ввод данных в машину и последующий их перевод на машинный язык.
Отладка программы - устранение синтаксических и логических ошибок. Отладка осуществляется как на этапе программирования, так и в ходе выполнения программы на ЭВМ. Логические ошибки устраняются при помощи контрольных тестов.
Внедрение - процесс передачи готовой программы пользователю, ее адаптация в конкретных условиях эксплуатации. Этот этап может занимать недели, месяцы, а иногда и годы.
Поддержка - процесс усовершенствования внедренной программы. Сюда входит три вида деятельности:
· обнаружение и исправление ранее не замеченных ошибок;
· внесение изменений в программу (модификация) с целью повышения ее производительности;
· обучение пользователя и его консультирование по работе с программой и данными.
Понятие алгоритма в информатике и вычислительной технике является фундаментальным, поэтому для него не существует абсолютно строгого определения. Всякий алгоритм обработки информации обладает следующими свойствами:
1. Дискретность. Это означает, что выполнение алгоритма осуществляется поэтапно, по шагам. Каждое действие должно быть завершено исполнителем (человеком, компьютером, роботом), прежде, чем он перейдет к выполнению следующего.
2. Определенность. Это означает, что каждое правило алгоритма строго однозначно и исполнитель должен быть в состоянии выполнить каждую команду алгоритма в строгом соответствии с ее назначением.
3. Результативность алгоритма предполагает, что его исполнение сводится к выполнению конечного числа действий и всегда приводит к некоторому результату.
4. Массовость (практическая ценность). Под этим понимается, что алгоритм решения задачи разрабатывается в общем виде так, чтобы его можно было применить для целого класса задач, различающихся лишь набором исходных данных.
Существуют различные формы (способы) представления алгоритмов. Основными среди них являются:
1. Словесное описание алгоритма на естественном языке (вербальная форма).
2. Построчная запись алгоритма (более строгое описание на естественном языке).
3. Представление алгоритма в виде блок-схемы.
4. Способ изображения алгоритма с помощью структурограммы (схема Насси-Шнейдермана).
5. Запись алгоритма на каком-либо языке программирования.
Рассмотрим особенности каждой из этих форм на примере алгоритмизации задачи нахождения наибольшего общего делителя (НОД) двух целых положительных чисел методом последовательного вычитания (алгоритм Евклида).