пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Решение задач с использованием типовых алгоритмов обработки данных

 

Линейные алгоритмы в псевдокоде представляют простую последовательность операторов. Например,

сумма_счета:=0;

сумма_счета:= сумма_счета- сумма_скидки;

затраты_на_доставку :=0;

Простой выбор задается конструкцией «если»

если <условие> то <действие 1> иначе <действие 2> кц_если;

Здесь конец_если  означает окончание действия условия. Например,

если срочность_доставки = истина то

затраты_на_доставку := затраты_на_доставку + вес[i]*10000;

                                        иначе

                затраты_на_доставку := затраты_на_доставку + вес[i]*1000;

     конец если;

 

Множественный выбор при “n” условиях обычно записывают с помощью оператора «выбор»:

выбор

при <условие 1>: <действие 1>;

при < условие 2>: <действие 2>;

……………………..

при < условие n-1>: <действие n-1>;

при < условие n>: <действие n>;

конец_выбора

так для рассмотренного ранее примера можно записать

выбор

при сумма_по_строке[i]<250000 и сумма_по_строке[i]>=100000  :

                скидка[i]:= сумма_по_строке[i]*0.01;

                сумма_скидки := сумма_скидки+ скидка[i];

     при сумма_по_строке[i]<1000000 и сумма_по_строке[i]>=250000 :

                скидка[i]:= сумма_по_строке[i]*0.025;

                сумма_скидки := сумма_скидки+ скидка[i];

     при сумма_по_строке[i]>=1000000 :

                скидка[i]:= сумма_по_строке[i]*0.05;

                сумма_скидки := сумма_скидки+ скидка[i];

конец_выбора;

 

Циклические вычисления в псевдокоде записываются тремя основными способами.

Циклы с фиксированным числом повторений

нц для <переменная>:=<начальное значение> до <конечное значение> шаг <величина шага> делать

                <тело цикла>

кц;

 

Здесь нц и кц – начало и конец цикла, шаг – величина, на которую увеличивается переменная, а тело цикла – набор выполняемых инструкций. По умолчанию шаг считается равным 1. Ключевое слово делать означает, что все инструкции вплоть до окончания цикла, будут повторяться многократно.

Эту конструкцию можно проиллюстрировать фрагментом примера, рассмотренного выше

нц для i:=1 до количество_строк делать

                                        сумма_счета:= сумма_счета + сумма_по_строке[i];

                кц;

 

Рис.6.10 Фрагмент алгоритма, иллюстрирующий запись цикла с фиксированным числом повторений на псевдокоде

Циклы с предусловием обычно записываются следующим образом

нц пока <условие> делать

<тело цикла>

кц

а циклы с постусловием

нц            делать

<тело цикла>

                пока <условие>

кц

 

Различие между ними заключается в том, что в первом условие проверяется до выполнения инструкций тела цикла, а во втором после.

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

В настоящее время наибольшее распространение получили технологии так называемого процедурного программирования, которые реализуются с помощью языков программирования FORTRAN, Pascal, Си и многих других. Они в наибольшей степени приспособлены для традиционной компьютерной архитектуры, основанной на схеме фон Неймана.

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

Существуют различные технологии программирования, реализуемые, как правило, последовательным выполнением следующих этапов:

- анализ и постановка задач;

- проектирование - разработка спецификаций;

- проектирование – разработка алгоритмов;

- написание исходных текстов программ и их трансляция;

- тестирование и отладка программ;

- испытания и сдача программ;

- сопровождение программ.

Из них наиболее трудоемким является написание исходных текстов программы, а также их тестирование и отладка. Кратко рассмотрим содержание перечисленных этапов создания программного продукта.

Анализ и постановка задач

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

Разработка спецификаций.

На данном этапе выполняется создание законченного описания поведения разрабатываемой программы. Оно включает пользовательский сценарий – все возможные варианты взаимодействия между пользователями и программным продуктом. Тем самым определяются функциональные требования к нему.

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

Разработка алгоритмов

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

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

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

При использовании модулей достигается:

- функциональная целостность и завершенность, так как каждый модуль реализует только одну функцию;

- автономность и независимость от других модулей;

- эволюционируемость, то есть отдельный модуль может быть модернизирован независимо от остального алгоритма;

- открытость перед другими пользователями и разработчиками для модернизации и использования;

- корректность и надежность, так как исполнение модуля возможно только единственным образом (у него есть только одна точка входа).

Преимущества модульного проектирования алгоритмов заключается в том, что:

- разработка алгоритма большого объема может производиться различными исполнителями;

- создается библиотека наиболее часто используемых алгоритмов;

- облегчается тестирование алгоритмов и обоснование их правильности;

- упрощается проектирование и модификация алгоритмов;

- уменьшается сложность разработки алгоритмов и программных комплексов;

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

Тестирование алгоритмов

Это проверка правильности работы алгоритма на специально заданных тестовых примерах – задачах с известными входными данными и соответствующими им результатами. Набор тестовых данных должен быть с одной стороны минимальным, а с другой стороны достаточно полным. Он должен обеспечивать максимально проверку для каждого типа наборов входных данных. Однако, тестирование сложных алгоритмов не всегда дает полную гарантию правильности.

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


хиты: 323
рейтинг:0
Точные науки
информатика
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь