Структурное программирование

Автор работы: Пользователь скрыл имя, 20 Января 2014 в 14:29, курсовая работа

Описание работы

При создании средних по размеру приложений (несколько тысяч строк исходного кода) используется структурное программирование, идея которого заключается в том, что структура программы должна отражать структуру решаемой задачи, чтобы алгоритм решения был ясно виден из исходного текста[1]. При этом необходимо иметь средства для создания программы не только с помощью трех простых операторов, но и с помощью средств, более точно отражающих конкретную структуру алгоритма.

Файлы: 1 файл

Курсовая - Структурное программирование.doc

— 146.00 Кб (Скачать файл)

 

 

 

2.2. Основные управляющие конструкции структурного программирования

При программировании модуля следует иметь ввиду, что программа должна быть понятной не только компьютеру, но и человеку: и разработчик модуля, и лица, проверяющие модуль, и тестовики, готовящие тесты для отладки модуля, и сопроводители ПС, осуществляющие требуемые изменения модуля, вынуждены будут многократно разбирать логику работы модуля. В современных языках программирования достаточно средств, чтобы запутать эту логику сколь угодно сильно, тем самым, сделать модуль трудно понимаемым для человека и, как следствие этого, сделать его ненадежным или трудно сопровождаемым. Поэтому необходимо принимать меры для выбора подходящих языковых средств и следовать определенной дисциплине программирования. Впервые на это обратил внимание Дейкстра и предложил строить программу как композицию из нескольких типов управляющих конструкций (структур), которые позволяют сильно повысить понимаемость логики работы программы. Программирование с использованием только таких конструкций назвали структурным.

 
Рисунок 1 - Основные управляющие конструкции структурного программирования.

 

Основными конструкциями  структурного программирования являются: следование, разветвление и повторение (рис. 1). Компонентами этих конструкций являются обобщенные операторы (узлы обработки) S, S1, S2 и условие (предикат) P. В качестве обобщенного оператора может быть либо простой оператор используемого языка программирования (операторы присваивания, ввода, вывода, обращения к процедуре), либо фрагмент программы, являющийся композицией основных управляющих конструкций структурного программирования. Существенно, что каждая из этих конструкций имеет по управлению только один вход и один выход. Тем самым, и обобщенный оператор имеет только один вход и один выход.

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

Очень часто при воплощении структурного программирования на некоторых языках программирования оператор перехода (GO TO) используется для реализации структурных конструкций, не снижая основных достоинств структурного программирования. Запутывают программу как раз "неструктурные" операторы перехода, особенно переход на оператор, расположенный в тексте модуля выше (раньше) выполняемого оператора перехода. Тем не менее, попытка избежать оператора перехода в некоторых простых случаях может привести к слишком громоздким структурированным программам, что не улучшает их ясность и содержит опасность появления в тексте модуля дополнительных ошибок. Поэтому можно рекомендовать избегать употребления оператора перехода всюду, где это возможно, но не ценой ясности программы.

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

 

 

2.3. Контроль структуры программы

Для контроля структуры  программы можно использовать три метода:

- статический контроль;

- смежный контроль;

- сквозной контроль.

Статический контроль состоит в оценке структуры программы, насколько хорошо программа разбита на модули с учетом значений рассмотренных выше основных характеристик модуля[10].

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

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

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

Структурное программирование до сих пор было у нас представлено как свойство или оценка окончательного текста программы.

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

 

 

2.4. Метод пошаговой детализации текста модуля

Мыслительный процесс называется пошаговой детализацией и был первоначально предложен Э.Дейкстрой [1], а затем улучшен Н.Виртом [6].

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

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

В методе пошаговой детализации  можно выделить следующие существенные этапы :

  1. На этом уровне создается общее описание программы в целом. Определяются основные логические шаги, требуемые для решения задачи, даже если пока неизвестно, как их выполнить. Эти логические шаги могут отражать различные физические шаги решения или могут быть удобными групповыми именами для тех действий, выполнение которых представляется довольно смутно. Последовательности шагов, требуемых для решения задачи, записываются на обычном языке или на псевдокоде.
  2. Здесь в общих терминах детализируется описание шагов, введенных на этапе 1. В детализированное описание может входить обозначение циклических структур, в то время как действия внутри циклов могут по-прежнему оставаться неясными. Таким образом, выполняются только общие эскизы сложных действий.
  3. На этом и последующих уровнях в виде последовательных итераций производятся те же действия, что описаны на этапе 2. При каждой новой итерации уточняются детали, оставшиеся неясными после предыдущих итераций, и создаются более определенные описания. По мере выполнения итераций неопределенные детали становятся все проще и проще, так что на каком-то этапе могут быть полностью описаны.
  4. Разработка завершена: в модульном виде получено описание требуемой программы. Перевод этого описания в программу на конкретном языке программирования должен быть достаточно простой задачей.

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

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

 

 

2.5. Выводы по главе

Структурное программирование внесло порядок в царство-анархии. Руководителю работ и инспектору оно подарило надежность! Наглядность. Наглядность стала делать программное обеспечение более управляемым! Обозримым! Стал возможным сквозной контроль! Появились стандарты и возможности обмена программами. Были прояснены сложнейшие проблемы. Разработка программного обеспечения вступила в новую эру. 
         Многие программистские организации публично объявляют свою верность структурному программированию — и не пользуются его методологией. Некоторые до сих пор путают со структурным программированием другие хорошие методы. Большинство не знает точно, что это такое. 
Любая достаточно крупная команда разработчиков программного обеспечения, не пользующаяся четко определенными методами структурного программирования, не может считаться достаточно компетентной.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заключение

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

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

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

Следовательно, цель курсовой работы достигнута, поставленные задачи выполнены.

 

 

 

 

 

 

 

Список литературы

 

  1. Дж.Хьюз, Дж.Мичтом. Структурный подход к программированию. М.: Мир, 2005. -759 с.
  2. Дейкстра Э.. Заметки по структурному программированию// У.Дал, Э.Дейкстра, К.Хоор. Структурное программирование. - М.: Мир, 2007. – 504 с.
  3. Жоголев Е.А.. Технологические основы модульного программирования / / Программирование, 2004, #2. – 80 с.
  4. Зелковец М.Д., А.Шоу, Дж.Гэннон. Принципы разработки программного обеспечения. М.: Мир, 2008. – 340 с.
  5. Майерс Г.А.. Надежность программного обеспечения. М.: Мир, 2008. 480 с.
  6. Н.Вирт. Систематическое программирование. - М.: Мир, 2005. – 182 с.
  7. Турский В. Методология программирования. - М.: Мир, 2009. – 272 с.
  8. Фуксман А.Л. Технологические аспекты создания программных систем. М.: Статистика, 2005. – 170 с.
  9. Гагарина Л.Г. Алгоритмы и структуры данных: учеб. пособие/

  Л.Г. Гагарина, В.Д.  Колдаев. – М.: Финансы и статистика; ИНФА-М, 2009.       – 309.: ил.

10.      А. Павловская, Ю. А. Щупак. C/C++. Структурное программирование: Практикум. 2008. – 240 с.

 




Информация о работе Структурное программирование