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

1.2.Основные идеи и принципы структурной методологии

Структурные методы создавались и использовались с целью борьбы с «проклятием размерности», или сложности, разрабатыва­емых систем или решаемых проблем. Их создание направлено на обеспечение дисциплины с помощью введения стандартов, опреде­ляющих как процесс разработки, так и форму создаваемого продук­та. В программотехнике структурные методы предназначены для улучшения управления разработкой программного продукта, улуч­шения процесса разработки и улучшения качества самого продукта. Основные средства достижения этого — применение хорошо выве­ренных процедур, средств, методов разработки, а также установле­ние строгих механизмов контроля за их использованием.

Основными принципами структурной методологии являются:

3. Принцип «разделяй и властвуй» (побеждай).

4. Принцип иерархического упорядочения.

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

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

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

Читайте также:  Краткая характеристика современных языков средств программирования

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

Принцип абстракции лежит в основе стратегии нисходящего и восходящего программирования.

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

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

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

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

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

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

Источник

Принципы структурного программирования.

Структурное программирование: три базовые конструкции.

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

Любая программа представляет собой иерархическую структуру, построенную из трёх типов базовых конструкций:

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

Структура следования встроена в C++. Пока не указано иное, компьютер выполняет операторы C++ один за другим в той последовательности, в которой они записаны.

C++ обеспечивает три типа структур выбора альтернатив:

  • Структура выбора if выполняет некоторое действие, если проверяемое условие истинно, или пропускает его, если условие ложно. Она также называется структура с единственным выбором, поскольку она выбирает или игнорирует единственное действие.
  • Структура выбора if/else выполняет одно действие, если условие истинно, и выполняет другое действие, если оно ложно. Она также называется структура с двойным выбором, поскольку осуществляет выбор между двумя различными действиями.
  • Структура выбора switch выполняет одно из множества действий в зависимости от значения проверяемого выражения. Она также называется структура с множественным выбором, поскольку осуществляет выбор среди множества различных действий.

C++ обеспечивает три типа структур повторения, называемых:

  • Структура повторения do/while похожа на структуру повторения while. Сперва выполняется действие, а затем проверяется условие. Действия выполняется до тех пор, пока условие истинно.

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

Основные операторы.

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

// структура объявления ссылок

При объявлении ссылки перед её именем ставится символ амперсанда «&«, сама же ссылка должна быть проинициализирована именем переменной, на которую она ссылается. Тип данных, на который указывает ссылка, может быть любым, но должен совпадать с объектом, на который ссылается, то есть с типом данных ссылочной переменной. Для удобства, будем называть переменную, на которую ссылается ссылка «ссылочной переменной». Любое изменение значения содержащегося в ссылке повлечёт за собой изменение этого значения в переменной, на которую ссылается ссылка. Разработаем программу, в которой объявим ссылку на объект типа int.

// №1.cpp: определяет точку входа для консольного приложения.

int main(int argc, char* argv[])

int &reference = value; // объявление и инициализация ссылки значением переменной value

cout cout reference+=15; // изменяем значение переменной value посредством изменения значения в ссылке

В строке 10 объявлена ссылка reference типа int на переменную value. В строке 13 суммируется значение переменной value с числом 15, черезссылку reference. Результат работы программы (см. Рисунок 1).

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

Ссылки, как правило, в большинстве случаев используют в функциях как ссылки-параметры или ссылки-аргументы. Напомню, что в языке программирования С++ в функции передаются данные по значению и по ссылке. Так вот, когда происходит передача по значению, те данные, которые необходимо передать, нужно сначала скопировать, а когда передаётся большой объём данных, то только на передачу затрачивается большое количество времени и ресурсов. В таком случае необходимо использовать передачу по ссылке, в этом случае данные копировать нет необходимости, так как к ним обеспечен прямой доступ, но нарушают безопасность данных, хранимых в ссылочных переменных, так как открывают прямой доступ к этим данным. Хотя далее мы рассмотрим, как обеспечить целостность данных и скорость их передачи. Для этого, разработаем программу, в которой создадим три функции, аргументы в которых будут передаваться по значению и по ссылке. Вдобавок ко всему этому ещё и передачу через указатель осуществим. Частенько возникает путаница между указателями и ссылками, на первый взгляд и ссылки и указатели работают одинаково, но разница все, же есть и весьма значительная.

Источник

Оцените статью