1.3. Структурное программирование
Практика программирования показала необходимость научно обоснованной методологии разработки и документирования алгоритмов и программ. Эта методология должна касаться анализа исходной задачи, разделения ее на достаточно самостоятельные части и программирования этих частей по возможности независимо друг от друга. Такой методологией является структурное кодирование (программирование).
Структурное кодирование — это метод написания программ, имеющих определенную структуру и за счет этого удобных для понимания, тестирования, модификации и использования. Данный метод основан на использовании небольшого набора простых управляющих структур (структурных операторов), правильность которых легко проанализировать и установить. При этом одни операторы состоят из других, вложенных в них.
Свойство структурности операторов состоит в том, что каждый оператор имеет один вход и один выход. Программа, построенная из структурных операторов, называется структурированной.
Фундаментом структурного программирования является теорема о структурировании, которая устанавливает, что как бы сложна ни была задача, схема соответствующей программы всегда может быть представлена с использованием ограниченного числа элементарных управляющих структур.
Э лементарные (базовые) структуры могут соединяться между собой, образуя более сложные структуры, по тем же самым элементарным схемам. Виды основных управляющих структур алгоритма приведены на рис. 1.3. Они обладают функциональной полнотой, т.е. любой алгоритм, может быть реализован в виде композиции этих трех структур.
1. Структура типа «следование» (рис.1.3а) – образуется последовательностью действий, S1, S2, …, Sn, следующих одно за другим: выполнить S1; выполнить S2; …; выполнить Sn. В линейном вычислительном процессе все операции выполняются последовательно в порядке их записи. Типовым примером такого процесса является стандартная вычислительная схема, состоящая из трех этапов:
В языке Pascal такая структура заключается в операторные скобки Begin . End:
Begin s1; s2; . Sn; End
2. Структура типа «ветвление» (ЕСЛИ – ТО – ИНАЧЕ) (рис.1.3б) – обеспечивает в зависимости от результата проверки условия Р, принимающего одно из двух логических значении Да (True) или Нет (False), выбор одного из альтернативных путей работы алгоритма: если Р, то выполнить S1, иначе выполнить S2. Каждый из путей ведет к общему выходу, так что работа алгоритма будет продолжаться независимо от того, какой путь будет выбран.
В языке Pascal такая структура имеет следующий формат:
If p Then s1 Else s2;
3. Структура типа «цикл с предусловием» (рис.1.3в) – обеспечивает многократное выполнение действия S в зависимости от того, какое значение принимает логическое условие Р: до тех пор, пока Р, выполнять S. Выполнение цикла прекращается, когда условие Р не выполняется.
В языке Pascal такая структура имеет следующий формат:
While p Do s;
В расширенный комплект элементарных алгоритмических структур дополнительно входят следующие управляющие конструкции (рис. 1.4).
4. Структура типа «сокращенное ветвление» (ЕСЛИ – ТО) (рис. 1.4а) – если результат проверки условия Р принимает значение Да (True), то выполняется действие S; в противном случае это действие пропускается и управление передается следующей структуре: если Р, то выполнить S1.
В языке Pascal такая структура имеет следующий формат:
Технология структурного программирования.
Технология программирования – это система методов, способов и приемов обработки и выдачи информации.
Структурное программирование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков.
Цели структурного программирования:
- Повысить надежность программ
- Повысить эффективность программ
- Уменьшить время и стоимость программной разработки
- Улучшить читабельность программ
Основные принципы структурной методологии:
- Принцип абстракции – этот принцип позволяет разработчику рассматривать программу в нужный момент без лишней детализации.
- Принцип формальности. Он предполагает строгий методический подход к программированию, придает творческому процессу определенную строгость и дисциплину.
- Принцип модульности. В соответствии с этим принципом программа разделяется на отдельные законченные фрагменты, модули, которые просты по управлению и допускают независимую отладку и тестирование.
- Принцип иерархического упорядочения. Взаимосвязь между частями программы должна носить иерархический, подчиненный характер.
Реализации структурного стиля программирования:
- Структура информационного пространства. Задача разбивается на подзадачи, и таким образом выстраивается дерево вложенности подзадач. Информационное пространство структурируется в точном соответствии с деревом вложенности
- Структуры управления. Стиль структурного программирования предполагает использование строго ограниченного набора управляющих конструкций: последовательность операторов, условные и выбирающие операторы, все вычислительные ветви которых сходятся в одной точке программы, а также процедуры, вычисления которых всегда заканчиваются возвратом управления в точку вызова.
- К структурным операторам добавляются либо циклы, либо рекурсии. Концептуальное противоречие между циклами и рекурсиями намного мягче, чем между операторами структурного программирования и структурными переходами, и оно отмечается лишь в виде изредка встречающихся прагматических указаний не смешивать их произвольно.
- Потоки передачи данных. Разбивая задачу на подзадачи, программист предусматривает их взаимодействие по данным: одни подзадачи передают другим данные для переработки.
- Структуры данных. Данные объединяются в логически связанные фрагменты, соответствующие структурам задачи либо вспомогательных конструкций, вводимых для ее решения.
Структурное программирование предполагает точно обозначенные управляющие структуры, программные блоки, отсутствие инструкций безусловного перехода (GOTO), автономные подпрограммы, поддержка рекурсии и локальных переменных.
Суть такого подхода заключается в возможности разбиения программы на составляющие элементы.
Основные принципы структурного программирования:
- Программа работает и решает поставленную задачу
- Минимальное время, затрачиваемое на тестирование и отладку программы
- Уменьшение затрат на сопровождение
- Гибкость программы
- Уменьшение затрат на разработку
- Простота и эффективность
Сборочное программирование – технология программирования, при которой программа собирается посредством повторного использования уже известных фрагментов программ.
Открытая система — это система, реализующая открытые спецификации на интерфейсы, службы и форматы данных, достаточные для того, чтобы обеспечить:
- возможность переноса (мобильность) прикладных систем, разработанных должным образом, с минимальными изменениями на широкий диапазон систем;
- совместную работу (интероперабельность) с другими прикладными системами на локальных и удаленных платформах;
- взаимодействие с пользователями в стиле, облегчающем последним переход от системы к системе (мобильность пользователей).
От применения технологии открытых систем выигрывают все категории специалистов, участвующих в процессе информатизации: пользователи, разработчики, производители и стандартизаторы.
Для обеспечения пользователей и проектировщиков прикладных систем современным инструментарием, позволяющим значительно сократить сроки проектирования и создания открытых систем, повысить качество проектов служит следующий набор средств:
- рекомендации по выбору инструментальных средств проектирования приложений, переносимых между различными аппаратными платформами и операционными средами;
- экспериментальные образцы программных средств для поддержки всего жизненного цикла открытых систем, в том числе — информационной базы, экспертной системы принятия проектных решений, интеллектуального инструментария для проектирования программного обеспечения;
- методы и средства моделирования (имитации) процессов взаимодействия в открытых системах;
- объектно-ориентированные средства проектирования и программирования открытых систем;
- методы и средства конструирования предметно-ориентированных языков, трансляторов с этих языков, синтаксически управляемых редакторов и интерпретирующих сред в открытых системах;
- исследования и разработка распределенных операционных систем и параллельных языков программирования, функционирующих в среде открытых систем.
- Важным инструментом для выявления взаимосвязи различных функциональных компонент, используемых прикладной системой в открытой среде, является модель такой среды.
Модель развивается и используется уже около двадцати лет. Она описывает систему взаимодействий в процессах обмена сообщениями и данными между прикладными системами в вычислительных сетях. Модель является наиболее проработанной с функциональной точки зрения, полноты набора стандартов и определения их совместимости друг с другом. Модель основана на разбиении среды на семь уровней, взаимодействие между которыми описывается соответствующими стандартами
Эта модель представляет собой попытку объединить различные подходы к классификации компонент среды. Она строится в виде матрицы 7х4, столбцы которой соответствуют видам взаимодействия (обслуживания) в системе: взаимодействие с пользователем, системные средства, доступ к данным, коммуникационные средства.
В рамках этой модели под прикладным обеспечением понимаются собственно прикладные программы, данные, а также документация и средства обучения пользователей.
Прикладная платформа состоит из аппаратной платформы и программного обеспечения. Сюда входят: операционная система, компиляторы, СУБД, графические системы, т. е. все средства, составляющие операционную среду для прикладных систем.
К внешней среде относятся все системные элементы, которые являются внешними по отношению к прикладной платформе и прикладному обеспечению. Это утилиты и подсистемы, реализуемые на других (удаленных) платформах, а также периферийные устройства.
Взаимодействие между прикладным обеспечением и прикладной платформой осуществляется с помощью Прикладных Программных Интерфейсов (API). В области API предусматривается четыре интерфейсных элемента для взаимодействия с: системными службами; коммуникационными службами; информационными службами; службами, обеспечивающими человеко-машинный интерфейс.