Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика. Программирование для библиотечных специалистов. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать

randomize;

for i:=1 to n do begin tab[i]:=random(10); write(tab[i]:3); end;

for g:=1 to n-1 do begin

for i:=n-1 downto g do

if tab[i]>tab[i+1] then begin r:=tab[i];

tab[i]:=tab[i+1];

tab[i+1]:=r;

end;

writeln;

writeln (g:2,' proxod');

for i:=1 to n do write(tab[i]:3); writeln;

end;

readln;

end.

Тестирование проведите так же, как в предыдущей задаче.

Практический блок

1.Разберите блок-схемы алгоритмов сортировки, введите программные коды и протестируйте алгоритмы.

2.Приведите примеры и словесно объясните, как бы вы действовали, если нужно было бы сортировать книги, например, по размеру.

Вопросы и задания для самостоятельной работы

1.Что такое сортировка? Как она может использоваться

вгуманитарных науках?

2.В чем заключается сортировка обменом?

3.В чем сущность «пузырьковой сортировки»?

91

Творческий блок

1.Изучите другие способы сортировки, выявите их преимущества.

2.Приведите примеры использования сортировок в гуманитарной сфере.

3.Изучите презентацию «Двумерные массивы» из «Курса по программированию». Приведите примеры использования двумерных массивов в гуманитарной сфере.

4.Изучите презентации «Записи», «Файлы», «Множества» из «Курса по программированию». Приведите примеры

использования этих структурированных типов данных в гуманитарной сфере.

92

ТЕМА 12. СТРУКТУРНОЕ ПРОЕКТИРОВАНИЕ ПРОГРАММНЫХ ПРОДУКТОВ

Теоретический блок

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

1.Структурное проектирование программных продуктов.

2.Информационное моделирование предметной области

исвязанных с ней приложений.

3.Объектно-ориентированное проектирование.

Базовым, основным подходом можно считать структурный подход, который возник в 60-е гг. XX в. и представляет собой систему технико-организационных принципов проектирования. Его появление предопределила все возрастающая сложность информационных систем. Главные принципы структурного проектирования — «разделяй и властвуй» и иерархическая декомпозиция.

Н. В. Макарова выделяет следующие типичные методы структурного проектирования:

нисходящее проектирование, кодирование и тестирование программ;

модульное программирование;

структурное проектирование (программирование) и др.

Взависимости от объекта структурирования различают:

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

методы структурирования данных [7].

Наиболее важным с точки зрения применения функционально-ориентированных методов являются в первую очередь, учитывают заданные функции обработки данных,

93

предопределяющие состав и логику работы, т.е. алгоритмы,

атакже выявляет отдельные компоненты программного

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

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

Структурный подход, по мнению Н. В. Макаровой, использует:

диаграммы потоков данных (информационнотехнологические схемы) — показывают процессы и информационные потоки между ними с учетом «событий», инициирующих процессы обработки;

интегрированную структуру данных предметной области (инфологическая модель, ER-диаграммы);

диаграммы декомпозиции — структура и декомпозиция целей, функций управления, приложений;

структурные схемы — архитектура программного продукта в виде иерархии взаимосвязанных программных модулей

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

В программном продукте должна содержаться текстовая информация, описывающая и представляющая его.

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

94

хода связано с развитием организации хранения и обработки именно данных, систем управления баз данных.

Один из основоположников информационной инженерии

— Дж. Мартин — выделяет следующие составляющие данного подхода:

информационный анализ предметных областей (бизнесобластей);

информационное моделирование — построение комплекса взаимосвязанных моделей данных;

системное проектирование функций обработки данных;

детальное конструирование процедур обработки дан-

ных [7].

Информационные модели различают по уровням их представления:

информационно-логические модели. Они отражают интегрированные структуры данных предметной области и не зависят от программных средств хранения и обработки данных;

даталогические модели, которые ориентированы именно на среду хранения и обработки данных. Эти модели в свою очередь имеют логический (интегрированные структуры данных под управлением СУБД и структуры для реализации приложений) и физический (организация хранения данных в памяти компьютера) уровни представления.

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

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

Вструктурном подходе в первую очередь рассматривались про-

цессы обработки данных, затем определялись сами данные и информационные потоки между процессами. При информаци-

95

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

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

Объектно-ориентированный подход основан на:

выделении классов объектов;

установлении характерных свойств объектов и методов их обработки;

создании иерархии классов, наследовании свойств объектов и методов их обработки. Каждый объект объединяет как данные, так и программу обработки этих данных и относится к определенному классу. С помощью класса один и тот же

программный код можно использовать для относящихся к нему различных объектов [7].

Использование объектного подхода при проектировании программных продуктов предполагает проведение объектноориентированного анализа предметной области и объектноориентированное проектирование.

Этот подход базируется на четырех основных принципах:

абстракция, наследование, инкапсуляция, полиморфизм.

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

Класс — это структура, описывающая объекты внешнего мира с помощью двух типов элементов: состояние объекта описывается полями класса (переменными разного типа), а поведение объекта — его методами (процедурами и функциями) [8]. Классы только описывают структуры данных, а сами данные физически появляются в виде экземпляров класса.

96

Наследование — это свойство класса порождать другие классы таким образом, что в порождаемом классе (классепотомке) содержаться все поля и все методы класса-родителя, а также дополнительные собственные поля и методы [8]. Этот принцип позволяет использовать повторно программный код, что уменьшает затраты на создание программ.

Полиморфизм — это способность объектов выполнять одну и ту же команду различными способами. Инкапсуляция

— способность класса скрывать от внешнего мира детали внутренней реализации [8].

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

Структура программных продуктов

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

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

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

Структуризация программ выполняется в первую очередь для удобства разработки, программирования, отладки и внесения изменений в программный продукт. Как правило, программные комплексы большой алгоритмической сложности разрабатываются коллективно (2–15 и более человек). Управлять разработкой программ в условиях приме-

97

нения промышленных технологий изготовления программ можно лишь на научной основе.

Meтoд нисходящего проектирования предполагает последовательное разложение общей функции обработки данных на простые функциональные элементы («сверху — вниз»). В результате строится иерархическая схема, отражающая состав и взаимоподчиненность отдельных функций, которая носит название функциональная структура алгоритма (ФСА) приложения.

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

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

Функции ввода-вывода информации рекомендуется отделять от функций вычислительной или логической обработки данных.

Модульное программирование

Модульное программирование основано на понятии модуля — логически взаимосвязанной совокупности функциональных элементов, оформленных в виде отдельных программных модулей.

Модуль характеризуют:

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

(Input — Process — Output) — вход-процесс-выход;

98

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

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

слабые информационные связи с другими программными модулями — обмен информацией между модулями должен быть по возможности минимизирован;

обозримый по размеруи сложности программный элемент. Таким образом, модули содержат определение доступных

для обработки данных, операции обработки данных, схемы взаимосвязи с другими модулями.

Каждый модуль состоит из спецификации и тела. Спецификации определяют правила использования модуля, а тело — способ реализации процесса обработки.

Модульная структура программных продуктов

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

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

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

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

принятие основных решений в алгоритме выносится на максимально «высокий» по иерархии уровень;

99

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

В результате дальнейшей детализации алгоритма создается функционально-модульная схема (ФМС) алгоритма приложения, которая является основой для программирования [7].

Алгоритмы большой сложности обычно представляют

спомощью двух схем:

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

детальной схемы алгоритма — представляет содер-

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

Наиболее часто детально проработанные алгоритмы изображаются в виде блок-схем согласно требованиям структурного программирования; при их разработке используются условные обозначения согласно Межгосударственному стандарту ГОСТ

19.701-90 (ИСО 5807-85).

Структурное программирование основано на модульной

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

В любой типовой структуре блок, кроме условного, имеет только один вход и выход, безусловный переход на блок с нарушением иерархии запрещен (оператор типа GoTo в структурном программировании не используется). Виды основных управляющих структур алгоритма приведены в таблице 3 [7].

100

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]