Какой принцип справедлив для структурного программирования
Программное изделие проходит в своем развитии целый ряд этапов, начиная от возникновения потребности в программном продукте и заканчивая снятием программы с эксплуатации. Рассмотрение полного жизненного цикла программного продукта в данном пособии не является необходимым, поэтому на рисунке приведены не все, а только основные этапыs жизненного цикла программного изделия
Рис. 11. Основные этапы разработки программного обеспечения
Приведенные этапы являются главными при разработке программ и программных комплексов. В зависимости от величины разрабатываемого программного комплекса роль каждого этапа и объём работ по нему будут различными.
В настоящее время производство программ поставлено на промышленный уровень, поэтому значительную роль при этом играет использование такой технологии программирования, которая обеспечила бы создание высококачественного программного продукта.
Технология программирования — это система методов, способов и приемов обработки и выдачи информации. Одной из распространенных методик создания программной продукции в настоящее время является структурное программирование.
Цели структурного программирования:
1) повысить надежность программ; для этого нужно, чтобы программа легко поддавалась тестированию и не создавала проблем при отладке. Достигается это хорошим структурированием программы при ее проектировании;
2) повысить эффективность программ; она может быть достигнута при структурировании программы, при разбиении ее на модули так, чтобы можно было бы легко находить и корректировать ошибки, а также чтобы текст любого модуля с целью повышения эффективности его работы можно было переделать независимо от других;
3) уменьшить время и стоимость программной разработки. Достижимо при повышении производительности труда программиста;
4) улучшить читабельность программ; это значит, что необходимо избегать использования языковых конструкций с неочевидной семантикой, стремиться к локализации действия управляющих конструкций и использования структур данных, разрабатывать программу так, чтобы ее можно было бы читать от начала до конца без управляющих переходов на другую страницу;
Принцип абстракции.
Этот принцип позволяет разработчику рассматривать программу в нужный момент без лишней детализации. Детализация увеличивается при переходе от верхнего уровня абстракции к нижнему.
Принцип формальности.
Он предполагает строгий методический подход к программированию, придает творческому процессу определенную строгость и дисциплину
Принцип модульности.
В соответствии с этим принципом программа разделяется на отдельные законченные фрагменты, модули, которые просты по управлению и допускают независимую отладку и тестирование. В результате отдельные ветви программы могут создаваться разными группами программистов.
Принцип иерархического упорядочения.
Взаимосвязь между частями программы должна носить иерархический, подчиненный характер. Это, кстати, следует и из принципа нисходящего проектирования.
Нисходящее проектирование строится на вышеперечисленных принципах.При нисходящем проектировании происходит анализ задачи с целью определения возможности разбиения ее на ряд подзадач. Затем каждая из полученных подзадач также анализируется для возможного разбиения на подзадачи. Процесс для очередной подзадачи заканчивается, когда подзадачу невозможно или нецелесообразно разбивать на подзадачи далее. Результат этот процесса, зафиксированный в графической форме, является основой для построения структурной схемы программы, которая показывает, во-первых, что делает вся программа в целом и ее отдельные части, а, во-вторых, отображает взаимосвязь подзадач друг с другом.
На основе структурной схемы программы выполняется реализация подзадач в виде отдельных модулей
После разбиения программного комплекса на программные модули и подготовки спецификаций на каждый программный модуль начинается работа по проектированию алгоритмов, реализующих спецификацию каждого модуля
Структурноe кодирование — это метод кодирования (программирования), предусматривающий создание понятных, простых и удобочитаемых программных модулей и программных комплексов на требуемых языках программирования.
Для кодирования программных модулей используются унифицированные (базовые) структуры. Доказано, что любая программа может быть составлена с применением только трёх канонических структур.Программные комплексы и программные модули, закодированные в соответствии с правилами структурного программирования, называются структурированными.
Модульное программирование — это организация программы как совокупности небольших независимых блоков, модулей, структура и поведение которых подчиняется определенным правилам. Следует заметить, что понятие «модуль» не совпадает в данном случае с понятием «модуль» ( в смысле «библиотека») языка Паскаль. Это должна быть простая, замкнутая (независимая) программная единица (процедура или функция), обозримая, реализующая только одну функцию. Для написания одного модуля должно быть достаточно минимальных знаний о тексте других, как вызывающих, так и вызываемых.
Программа, разработанная в соответствии с принципами структурного программирования, должна удовлетворять следующим требованиям:
программа должна разделяться на независимые части, называемые модулями
модуль — это независимый блок, код (текст) которого физически и логически отделен от кода других модулей;
модуль выполняет только одну логическую функцию, иначе говоря, должен решать самостоятельную задачу своего уровня по принципу: один программный модуль — одна функция;
работа программного модуля не должна зависеть:
от входных данных;
от того, какому программному модулю предназначены его выходные
от предыстории вызовов программного модуля;
размер программного модуля желательно ограничивать одной-двумя страницами исходного листинга (50-100 строк исходного кода);
модуль должен иметь только одну входную и одну выходную точку;
взаимосвязи между модулями устанавливаются по иерархической структуре;
каждый модуль должен начинаться с комментария, объясняющего его назначение, назначение переменных, передаваемых в модуль и из него, модулей, которые его вызывают, и модулей, которые вызываются из него;
при создании модуля можно использовать только стандартные управляющие конструкции: выбор, цикл, блок (последовательность операторов);
оператор безусловного перехода или вообще не используется в модуле, или применяется в исключительных случаях только для перехода на выходную точку модуля;
в тексте модуля необходимо использовать комментарии, в особенности в сложных местах алгоритма;
идентификаторы переменных и модулей должны быть смысловыми, «говорящими»;
в одной строке стоит записывать не более одного оператора. Если для записи оператора требуется больше, чем одна строка, то все последующие операторы записываются с отступами;
желательно не допускать вложенности более, чем трех уровней;
следует избегать использования языковых конструкций с неочевидной семантикой и программистских «трюков».
В заключение следует напомнить, что все эти вместе взятые меры направлены на повышение качества разрабатываемого программного обеспечения.
Принципы структурного программирования
Становление и развитие структурного программирования связано с именем Эдсгера Дейкстры [10].
Принцип 1. Следует отказаться от использования оператора безусловного перехода GoTo.
Принцип 2. Любая программа строится из трёх базовых управляющих конструкций: последовательность, ветвление, цикл.
- • Последовательность — однократное выполнение операций в том порядке, в котором они записаны в тексте программы. Бертран Мейер поясняет: «Последовательное соединение: используйте выход одного элемента как вход к другому, подобно тому, как электрики соединяют выход сопротивления со входом конденсатора» [17].
- • Ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения заданного условия.
- • Цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется заданное условие (условие продолжения цикла).
Принцип 3. В программе базовые управляющие конструкции могут быть вложены друг в друга произвольным образом. Никаких других средств управления последовательностью выполнения операций не предусматривается.
Принцип 4. Повторяющиеся фрагменты программы можно оформить в виде подпрограмм (процедур и функций). Таким же образом (в виде подпрограмм) можно оформить логически целостные фрагменты программы, даже если они не повторяются.
В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция «Вызов подпрограммы». При выполнении такой инструкции работает вызванная подпрограмма. После этого продолжается исполнение основной программы, начиная с инструкции, следующей за командой «Вызов подпрограммы».
Бертран Мейер поясняет: «Преобразуйте элемент, возможно, с внутренними элементами, в подпрограмму, характеризуемую одним входом и одним выходом в потоке управления».
Принцип 5. Каждую логически законченную группу инструкций следует оформить как блок (block). Блоки являются основой структурного программирования.
Блок — это логически сгруппированная часть исходного кода, например, набор инструкций, записанных подряд в исходном коде программы. Понятие блок означает, что к блоку инструкций следует обращаться как к единой инструкции. Блоки служат для ограничения области видимости переменных и функций. Блоки могут быть пустыми или вложенными один в другой. Границы блока строго определены. Например, в if-инструкции блок ограничен кодом BEGIN..END (в языке Паскаль) или фигурными скобками <. >(в языке C) или отступами (в языке Питон).
Принцип 6. Все перечисленные конструкции должны иметь один вход и один выход.
Произвольные управляющие конструкции (такие, как в блюде спагетти) могут иметь произвольное число входов и выходов. Ограничив себя управляющими конструкциями с одним входом и одним выходом, мы получаем возможность построения произвольных алгоритмов любой сложности с помощью простых и надежных механизмов.
Принцип 7. Разработка программы ведётся пошагово, методом «сверху вниз» (top-down method) [5].
1. Элементы блок-схем
Язык блок-схем – это язык формального графического представления алгоритмов.
Только один элемент блок-схемы – «начало» – может иметь только выход, только один элемент – «конец» – может иметь только вход, и только один элемент – «условие» – может иметь два выхода, выбор из которых осуществляется с помощью условия.
Дополнительные элементы блок-схем:
Элемент «узел» имеет два входа, но в каждый момент времени выполнение алгоритма идёт только одним путём, соответственно, используется только один из входов.
2. Структурное программирование
3. Базовые управляющие структуры
- Следование – последовательность любых операторов и/или структур.
- Ветвление (условный блок). Эта структура предназначена для выполнения различных действий в зависимости от значения некоторого условия. Она позволяет осуществлять выбор действий.
- Цикл. Эта структура предназначена для многократного выполнения некоторых действий. Существует два основных цикла и один дополнительный:
- цикл с предусловием (цикл «пока»);
- цикл с постусловием (цикл «до»);
- параметрический цикл.
Все циклы позволяют осуществлять повтор некоторых действий.
Обратите внимание на то, что в цикле с постусловием тело цикла всегда выполняется хотя бы один раз, тогда как в цикле с предусловием возможно, что условие сразу же будет ложным, и тело цикла не выполнится ни разу.
4. Базисы Дейкстры и Вирты
Набор из следования, ветвления и цикла «пока» называется базисом Дейкстры, а набор из следования, ветвления и цикла «до» называется базисом Вирта. Базисы обладают свойствами полноты (любой алгоритм может быть реализован только из структур одного из базисов) и независимости (каждая из базисных структур не может быть представлена комбинацией 2-х других). Избыточный набор структур введён для удобства разработки программ.
5. Примеры комбинаций базовых управляющих структур
Возможно любое количество вложенных циклов.
Задание. Придумайте другие комбинации управляющих структур (не забывайте про следование).
6. Нисходящее и восходящее проектирование
При нисходящем проектировании мы начинаем с общей задачи, разбиваем её на более простые подзадачи, которые в свою очередь, разбиваются на ещё более мелкие подзадачи – до тех пор, пока мы не сможем подзадачу очередного уровня выразить оператором языка программирования.
Достоинство нисходящего проектирования состоит в том, что оно позволяет разработчикам сосредоточиться на основных для данного этапа проблемах и отложить принятие всех тех решений, которые не должны приниматься на данном этапе проектирования. Нисходящее проектирование требует с самого начала ставить и решать наиболее фундаментальные задачи, откладывая частные вопросы для последующего рассмотрения.
Существует и противоположный подход, называемый восходящим проектированием. При восходящем проектировании алгоритм собирается из уже имеющихся кирпичиков-подзадач.
Нисходящее и восходящее проектирование обладают своими достоинствами и недостатками. Так, при нисходящем проектировании возможно появление требований, впоследствии оказывающихся нереализуемыми по технологическим, экологическим или иным соображениям. При восходящем проектировании возможно получение объекта, не соответствующего заданным требованиям. В реальной жизни, вследствие итерационного характера проектирования, оба его вида взаимосвязаны.
Какой принцип справедлив для структурного программирования
Контент представлен пользователями ОК. Здесь вы найдете все, что нужно, чтобы быть в курсе последних новостей и тенденций в мире технологий. какой принцип справедлив для структурного программирования – ОК место, где вы сможете найти ответы на все вопросы, связанные с гаджетами, а также прочитать интересные статьи, подготовленные нашими экспертами. Будьте в центре событий и следите за всеми новинками в области гаджетов. Изучайте контент, если вы искали какой принцип справедлив для структурного программирования и интересуетесь этой увлекательной темой.
Часто ищут
- Лада
- Рукоделие
- Закуски
- Осень
- Селедочка
- Рецепты на скорую руку
- Лучшие фильмы
- Советы по готовке
- Стихи
- Продам
- Смешные картинки
- Москва
- Пирожки с картошкой
- Попугаи
- Юмор
- Выпечка
- Лайфхаки
- Советы по ремонту
- Как испечь торт
- Вредители