Технология структурного программирования.
Технология программирования – это система методов, способов и приемов обработки и выдачи информации.
Структурное программирование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков.
Цели структурного программирования:
- Повысить надежность программ
- Повысить эффективность программ
- Уменьшить время и стоимость программной разработки
- Улучшить читабельность программ
Основные принципы структурной методологии:
- Принцип абстракции – этот принцип позволяет разработчику рассматривать программу в нужный момент без лишней детализации.
- Принцип формальности. Он предполагает строгий методический подход к программированию, придает творческому процессу определенную строгость и дисциплину.
- Принцип модульности. В соответствии с этим принципом программа разделяется на отдельные законченные фрагменты, модули, которые просты по управлению и допускают независимую отладку и тестирование.
- Принцип иерархического упорядочения. Взаимосвязь между частями программы должна носить иерархический, подчиненный характер.
Реализации структурного стиля программирования:
- Структура информационного пространства. Задача разбивается на подзадачи, и таким образом выстраивается дерево вложенности подзадач. Информационное пространство структурируется в точном соответствии с деревом вложенности
- Структуры управления. Стиль структурного программирования предполагает использование строго ограниченного набора управляющих конструкций: последовательность операторов, условные и выбирающие операторы, все вычислительные ветви которых сходятся в одной точке программы, а также процедуры, вычисления которых всегда заканчиваются возвратом управления в точку вызова.
- К структурным операторам добавляются либо циклы, либо рекурсии. Концептуальное противоречие между циклами и рекурсиями намного мягче, чем между операторами структурного программирования и структурными переходами, и оно отмечается лишь в виде изредка встречающихся прагматических указаний не смешивать их произвольно.
- Потоки передачи данных. Разбивая задачу на подзадачи, программист предусматривает их взаимодействие по данным: одни подзадачи передают другим данные для переработки.
- Структуры данных. Данные объединяются в логически связанные фрагменты, соответствующие структурам задачи либо вспомогательных конструкций, вводимых для ее решения.
Структурное программирование предполагает точно обозначенные управляющие структуры, программные блоки, отсутствие инструкций безусловного перехода (GOTO), автономные подпрограммы, поддержка рекурсии и локальных переменных.
Суть такого подхода заключается в возможности разбиения программы на составляющие элементы.
Основные принципы структурного программирования:
- Программа работает и решает поставленную задачу
- Минимальное время, затрачиваемое на тестирование и отладку программы
- Уменьшение затрат на сопровождение
- Гибкость программы
- Уменьшение затрат на разработку
- Простота и эффективность
Сборочное программирование – технология программирования, при которой программа собирается посредством повторного использования уже известных фрагментов программ.
Открытая система — это система, реализующая открытые спецификации на интерфейсы, службы и форматы данных, достаточные для того, чтобы обеспечить:
- возможность переноса (мобильность) прикладных систем, разработанных должным образом, с минимальными изменениями на широкий диапазон систем;
- совместную работу (интероперабельность) с другими прикладными системами на локальных и удаленных платформах;
- взаимодействие с пользователями в стиле, облегчающем последним переход от системы к системе (мобильность пользователей).
От применения технологии открытых систем выигрывают все категории специалистов, участвующих в процессе информатизации: пользователи, разработчики, производители и стандартизаторы.
Для обеспечения пользователей и проектировщиков прикладных систем современным инструментарием, позволяющим значительно сократить сроки проектирования и создания открытых систем, повысить качество проектов служит следующий набор средств:
- рекомендации по выбору инструментальных средств проектирования приложений, переносимых между различными аппаратными платформами и операционными средами;
- экспериментальные образцы программных средств для поддержки всего жизненного цикла открытых систем, в том числе — информационной базы, экспертной системы принятия проектных решений, интеллектуального инструментария для проектирования программного обеспечения;
- методы и средства моделирования (имитации) процессов взаимодействия в открытых системах;
- объектно-ориентированные средства проектирования и программирования открытых систем;
- методы и средства конструирования предметно-ориентированных языков, трансляторов с этих языков, синтаксически управляемых редакторов и интерпретирующих сред в открытых системах;
- исследования и разработка распределенных операционных систем и параллельных языков программирования, функционирующих в среде открытых систем.
- Важным инструментом для выявления взаимосвязи различных функциональных компонент, используемых прикладной системой в открытой среде, является модель такой среды.
Модель развивается и используется уже около двадцати лет. Она описывает систему взаимодействий в процессах обмена сообщениями и данными между прикладными системами в вычислительных сетях. Модель является наиболее проработанной с функциональной точки зрения, полноты набора стандартов и определения их совместимости друг с другом. Модель основана на разбиении среды на семь уровней, взаимодействие между которыми описывается соответствующими стандартами
Эта модель представляет собой попытку объединить различные подходы к классификации компонент среды. Она строится в виде матрицы 7х4, столбцы которой соответствуют видам взаимодействия (обслуживания) в системе: взаимодействие с пользователем, системные средства, доступ к данным, коммуникационные средства.
В рамках этой модели под прикладным обеспечением понимаются собственно прикладные программы, данные, а также документация и средства обучения пользователей.
Прикладная платформа состоит из аппаратной платформы и программного обеспечения. Сюда входят: операционная система, компиляторы, СУБД, графические системы, т. е. все средства, составляющие операционную среду для прикладных систем.
К внешней среде относятся все системные элементы, которые являются внешними по отношению к прикладной платформе и прикладному обеспечению. Это утилиты и подсистемы, реализуемые на других (удаленных) платформах, а также периферийные устройства.
Взаимодействие между прикладным обеспечением и прикладной платформой осуществляется с помощью Прикладных Программных Интерфейсов (API). В области API предусматривается четыре интерфейсных элемента для взаимодействия с: системными службами; коммуникационными службами; информационными службами; службами, обеспечивающими человеко-машинный интерфейс.
Технология разработки программного обеспечения
Для создания “хороших” программ необходимо придерживаться определенных правил программирования. В связи с этим представляет интерес рассмотреть новый подход к разработке программ, получившей достаточно широкое распространение в последние годы — структурное программирование.
Идеи структурного программирования были высказаны Э. Дейкстрой еще в 1965 г. Позже им были изложены основные положения структурного программирования в работе “Заметки по структурному программированию”. С тех пор термин “структурное программирование” широко используется, но в разных смыслах и без строгого определения.
Структурное программирование — метод программирования, использование которого снижает вероятность ошибок в процессе составления программ, повышает их надежность, эффективность, упрощает понимание, обеспечивает создание программ, структура которых ясна и неразрывно связана со структурой решаемых задач.
Целью структурного программирования является попытка упростить процесс написания правильных программ и обеспечить возможность чтения программы от начала до конца, следуя логике.
Программы, написанные с использованием традиционных методов, обычно имеют хаотичную структуру, поэтому и чтение, и понимание их затруднено. Структурированные программы можно читать как обычный текст сверху вниз без перерыва, так как они имеют последовательную организацию, т.е. применение метода структурного программирования улучшает ясность и читабельность программ.
Технология структурного программирования.
При разработке алгоритмов обычно используют метод пошаговой детализации (поэтапно):
1. На первом этапе описываются решения поставленной перед программой задачи, выделяются подзадачи.
2. В последующих этапах описывается решение каждой подзадачи, выделяя при этом новые подзадачи. Так происходит до тех пор, пока решение подзадач не будет очевидным. Рекомендовано решение каждой задачи описывать при помощи 1 — 2 конструкций не более, чтобы более четко представлять структуру программы.
Например:Требуется разработать программу, которая с определенной точностью eps находит значение аргумента x по заданному значению функции y при известном значении n
При n>1 функция является монотонно возрастающей, значение аргумента x можно определить с помощью метода половинного деления. В чем заключается это метод?
1. Находим отрезок [x1, x2], который удовлетворяет условию: f(x1)
lign=»left»>2. Делим полученный отрезок пополам: xt=(x1+x2)/2 и определеяем в какой половине отрезка находится x. Для этого сравниваем два значения: f(x1) и y.
3. Полученный отрезок вновь делим пополам, процесс повторяется до тех пор, пока разность x1 и x2 не станет меньше заданного значения eps.
При разработке алгоритма данной программы используем метод пошаговой детализации.
1 Этап. Общая структура программы:
2 этап. Детализируем операцию определения x:
Определить x1 такое, что f(x1)
Определить x2 такое, что f(x2)>=y
Определить x на интервале [x1, x2]
3 этап. Детализируем операцию определения x1. Значение x1 подбираем таким образом, чтобы выполнялось условие f(x1)0, следовательно, берем любое значение x, например x1=1 и будем его пследовательно уменьшать, допустим в 2 раза. Таким образом определим значение x1, удовлетворяющее данному условию:
4 этап. Детализируем операцию определения x2. Значение x2 определяем аналогично x1, но исходное значение будем последовательно увеличивать в 2 раза.
5 этап. Детализируем операцию определения x. Определение x выполняется последовательным сокращением отрезка [x1, x2].
6 этап. Детализируем операцию сокращения отрезка [x1, x2]. Интервал определения x сокращаем делением пополам и отбрасываем половину, которая не удовлетворяет условию f(x1)
Сократить интервал определения x:
Таким образом, за 6 этапов разработан следующий алгоритм:
Таким образом, на каждом этапе решается простая задача, что облегчает разработку алгоритма.
Достоинства метода пошаговой детализации:
1. Сохраняется концептуальная целостность программы: от сложного к простому.
2. Проектирование программы, кодирование, проверку и документирование можно делать параллельно.
3. В каждый момент времени (даже в начале разработки) имеется работающий вариант программы.
4. Фразы естественного языка, будучи закомментированными, служат хорошим путеводителем по программе.
В процессе создания программы особое внимание нужно уделять разработке алгоритмов. Такой подход поможет избежать ошибок, допущенных при проектировании программного продукта. Наличие подобных ошибок потребует массу времени на исправление, возврат на предыдущие этапы разработки с целью их доработки.
Базовые структуры: следование,развилка, цикл.
Следование — одна из самых важных структур. Она означает, что два действия должны быть выполнены друг за другом.
Пример 1. Пешеход шел по пересеченной местности. Его скорость движения по равнине v1 км/ч, в гору — v2 км/ч и под гору — v3 км/ч. Время движения соответственно t1, t2 и t3 ч. Какой путь прошел пешеход?
1. Ввести v1, v2, v3, t1, t2, t3.
Для проверки работоспособности алгоритма необходимо задать значения входных переменных, вычислить конечный результат по алгоритму и сравнить с результатом ручного счета.
Развилка. Достаточно часто то или иное действие должно быть выполнено в зависимости от значения логического выражения, выступающего в качестве условия. В таких случаях используется развилка.
Пример 2. Дано натуральное число n. Если число нечётное и его удвоение не приведет к выходу за 32767 (двухбайтовое целое число со знаком), удвоить его, иначе — оставить без изменения.
Чтобы удовлетворить условию удвоения, число n должно быть нечетным и меньше 16384.
2. Если число n нечетное и меньше 16384, то n := n * 2
Рассмотренный пример иллюстрирует неполную развилку. Также следует отметить, здесь логическое выражение, являющееся условием, содержит 2 операнда.