Лекции по информатике - Структурное программирование, управляющие конструкции, пошаговая детализация

На протяжении 60-х годов попытки создания многих больших программных систем наталкивались на ряд трудностей. Графики создания программного обеспечения обычно не выполнялись, а конечные продукты отличались ненадежностью. Люди начали понимать, что создание программного обеспечения более сложная задача, чем они представляли. Исследовательские работы 60-х годов привели к развитию структурного программирования дисциплинированного подхода к написанию программ, отличающихся от неструктурированных программ ясностью, простотой тестирования и отладки и легкостью модификации.

Одним из наиболее ощутимых результатов этих исследований была разработка в 1971 году Никлаусом Виртом языка программирования Pascal. Pascal, названный в честь математика и философа семнадцатого столетия Блеза Паскаля, был разработан для изучения структурного программирования в академической среде и вскоре стал наиболее предпочитаемым языком программирования во многих университетах.

Приступим к описанию структурной методологии.

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

Узел слияния - 2 входа 1 выход, операции над данными не осуществляются

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

Программа называется простой, если ее схема имеет один вход один выход, и через каждый вход идет путь от входа к выходу.

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

Существует 15 элементарных программ (не более 4 узлов). 7 из них имеют функциональные узлы:

Функция:

Следование:

Если-то-иначе:

Если-то:

Цикл с предусловием:

 

Цикл с постусловием:

Цикл с внутренним условием:

С помощью указанных управляющих конструкций можно добиться сколь угодно высокой сложности.

Обычно операторы программы выполняются друг за другом в той последовательности, в которой они написаны. Это называется последовательным выполнением. Однако некоторые операторы позволяют программисту указать, что следующим должен выполнятся не очередной оператор, а какой-то другой. Это называется передачей управления.

В 60-е годы стало ясно, что неограниченное использование передач управления является источником множества неприятностей при групповой разработке программного обеспечения. Вина была возложена на оператор goto, который позволяет передавать управление в очень широких пределах.

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

Теорема о структурировании: любая простая программа может быть преобразована в функционально ей эквивалентную программу, построенную на основе 3 следующих структур:

  1. Следования.
  2. Если-то-иначе.
  3. Цикл с предусловием.

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

К неструктурным операторам в языке Pascal относятся:

  1. Goto
  2. break
  3. continue
  4. exit
  5. halt

Пошаговая детализация и нисходящее проектирование

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

Вывод: пошаговая реализация это тактика разработки программы, а нисходящее проектирование это стратегия программирования.

Цели структурного программирования

  1. Обеспечить дисциплину программирования
  2. Улучшить читабельность программы
  3. Повысить эффективность программы
  4. Повысить надежность программы
Слава Антонов © 2002 — August 13, 2008
Индекс цитирования
Hosted by uCoz