Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
ELSE
переход к следующему элементу
IF массив не кончился THEN
переход на проверку интервала
ELSE
печать сообщения, что все элементы входят в интервал
Конец
При записи на псевдокоде каждое отдельное предложение может начинается со звездочки (*). Алгоритм строится таким образом, что разбиение продолжается до тех пор, пока каждый шаг алгоритма не станет достаточно понятным.
Структурные диаграммы — могут использоваться в качестве структурных блок-схем, для показа межмодульных связей, для отображения структур данных и систем обработки данных. Существуют следующие структурные диаграммы: диаграммы Насси — Шнейдермана, Варнье, Джексона, МЭСИД и др.
Рассмотрим пример использования диаграмм МЭСИД.
Задан одномерный массив из положительных и отрицательных чисел. Требуется определить частное от деления суммы положительных элементов на сумму отрицательных элементов этого массива. Справа от диаграммы (рис. 1.16) приводятся соответствующие операторы языка Visual Basic.
S1=0
S2=0
FOR I=1 TO N
IF A(I) < 0 THEN
S1=S1+A(I)
ELSE
S2=S2+A(I)
END IF
NEXT I
IF S1<> 0 THEN R=S2/S1
1.2.7. Базовые канонические структуры алгоритмов
Для реализации алгоритмов на ПЭВМ используется алгоритмический язык — набор символов и правил образования и истолкования конструкций из этих символов для записи алгоритмов.
Любую программу можно написать, используя комбинации трех базовых структур:
• следования или последовательности операторов;
• ветвления или условного оператора;
• повторения или оператора цикла.
Программа, составленная из канонических структур, называется регулярной программой, т. е. имеющей один вход и один выход.
Алгоритмы и программы объединяются понятием математическое обеспечение. В настоящее время затраты на математическое обеспечение составляют примерно полторы стоимости ПЭВМ, и постоянно происходит дальнейшее относительное его удорожание.
При решении задачи необязательно составлять индивидуальную программу, так как на сегодняшний день созданы мощные современные программные средства — пакеты прикладных программ (ППП), которые позволяют ускорить процесс практической реализации алгоритма.
Полное построение алгоритма
В последние годы большое распространение получила концепция структурного программирования. Понятие структурного программирования включает определенные принципы проектирования, кодирования, тестирования и документирования программ в соответствии с заранее определенной жесткой дисциплиной.
Полное построение алгоритма предусматривает выполнение следующих последовательно друг за другом этапов:
1) постановка задачи;
2) построение модели;
3) разработка алгоритма;
4) проверка правильности алгоритма;
5) реализация, т. е. программирование алгоритма;
6) анализ алгоритма и его сложности;
7) проверка (отладка) программы;
8) составление документации.
Не все этапы четко различимы между собой, особенно эти различия делаются малозаметными при программировании простых задач. При программировании простых задач некоторые этапы могут вообще не выполняться — настолько очевидны их результаты.
Наоборот, при программировании сложных, объемных задач некоторые из вышеперечисленных этапов приходится выполнять не в том порядке, как здесь указано, или выполнять их не один раз. Рассмотрим более подробно каждый из этапов построения алгоритма.
Постановка задачи. Прежде чем понять задачу, ее нужно точно сформулировать. Это условие само по себе не является достаточным для понимания задачи, но оно абсолютно необходимо.
Обычно процесс точной формулировки задачи сводится к постановке правильных вопросов. Перечислим некоторые полезные вопросы для плохо сформулированных задач:
• Понятна ли терминология, используемая в предварительной формулировке?
• Что дано? Что нужно найти?
• Как определить решение?
• Каких данных не хватает или, наоборот, все ли перечисленные в формулировке задачи данные используются?
• Какие есть ограничения на данные?
Возможны и другие вопросы, возникающие в зависимости от конкретной задачи.
Построение модели. Задача четко поставлена, теперь нужно сформулировать для нее математическую модель. Выбор модели существенно влияет на остальные этапы в процессе решения.
Выбор модели — в большей степени искусство, чем наука. Правда, если вы будете встречаться с типовой задачей, то опыт, приобретенный ранее, не потребует от вас особого творческого подхода, и в этом случае как раз будет удобным и целесообразным воспользоваться ранее наработанными правилами. Поэтому изучение удачных моделей — это наилучший способ приобрести опыт в моделировании.
Приступая к разработке модели, следует задать, по крайней мере, два основных вопроса:
1. Какие математические структуры больше всего подходят
для задачи?
2. Существуют ли решенные аналогичные задачи?
Второй вопрос, возможно, самый полезный во всей математической модели. В контексте моделирования он часто дает ответ на первый вопрос. Действительно, большинство решаемых в математике задач, как правило, являются модификациями ранее решенных.
Сначала нужно рассмотреть первый вопрос. Мы должны описать математически, что мы знаем и что хотим найти.
Разработка алгоритма. Выбор метода разработки алгоритма зачастую сильно зависит от выбора модели и может в значительной степени повлиять на эффективность алгоритма решения. Два различных алгоритма могут быть правильными, но очень сильно отличаться по эффективности.
Правильность алгоритма. Доказательство правильности алгоритма — это один из наиболее трудных, а иногда и особенно утомительных этапов создания алгоритма. Вероятно, наиболее распространенный прием доказательства правильности программы — это прогон ее на разных тестах. Если выданные программой ответы могут быть подтверждены известными или вычисленными вручную данными, возникает искушение сделать вывод, что программа «работает» правильно. Однако этот метод редко исключает все сомнения; может существовать случай, в котором программа не работает.
Рассмотрим следующую общую методику доказательства правильности алгоритма. Для каждого цикла, который имеется в программе (алгоритме), вручную (например, на калькуляторе) подсчитываются две контрольные точки. Если контрольные точки совпадают со значениями, выданными программой, можно быть уверенным, что все циклы в программе работают правильно. Почему речь идет о двух контрольных точках? Дело в том, что первое контрольное значение в программе может быть вычислено правильно, а затем в этом цикле будут произведены некоторые некорректные действия, которые приведут к искажению всех последующих результатов. Совпадение второго контрольного значения как раз и подтверждает, что в данном цикле некорректности нет. Таким образом, два контрольных вычисления должны быть сделаны для каждого цикла программы.
Следует подчеркнуть и тот факт, что правильность алгоритма еще ничего не говорит об его эффективности. В этом смысле исчерпывающие алгоритмы, или, как их еще называют — алгоритмы полного перебора — редко бывают хорошими во всех отношениях.
Реализация алгоритма. Как только алгоритм выражен, допустим, в виде последовательности шагов, и мы убедились в его правильности, настает черед реализации алгоритма, т. е. написания программы для компьютера.
При этом возникают следующие проблемы:
• очень часто отдельно взятый шаг алгоритма может быть выражен в форме, которую трудно перевести непосредственно в конструкции языка программирования. Например, один из шагов алгоритма может быть записан в виде, требующем целой подпрограммы для своей реализации;
• реализация может оказаться трудным процессом потому, что перед тем, как написать программу, необходимо построить целую систему структур данных для представления важных аспектов используемой модели.
Чтобы сделать это, необходимо ответить, например, на такие вопросы:
• Каковы основные переменные?
• Каких они типов?
• Сколько нужно массивов и какой размерности?
• Какие нужны подпрограммы (возможно, уже записанные в памяти)?
• Каким языком программирования пользоваться?
Конкретная реализация может существенно влиять на требования к памяти и на скорость алгоритма.
Сделаем одно важное замечание. Одно дело — доказать правильность конкретного алгоритма, описанного в словесной форме. Другое дело — доказать, что данная машинная программа, предположительно являющаяся реализацией этого алгоритма, также правильна. Таким образом, необходимо очень тщательно следить, чтобы процесс преобразования правильного алгоритма (в словесной форме или форме схемы алгоритма) в программу, написанную на алгоритмическом языке, «заслуживал доверия».
Дата публикования: 2015-09-18; Прочитано: 2435 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!