В чем сущность структурного подхода к программированию

Учитель информатики

Сайт учителя информатики. Технологические карты уроков, Подготовка к ОГЭ и ЕГЭ, полезный материал и многое другое.

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

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

Информатика. 11 класса. Босова Л.Л. Оглавление

На всех этапах подготовки к алгоритмизации задачи широко используется структурное представление алгоритма.

Cтруктурное программирование воплощает принципы системного подхода в процессе создания и эксплуатации программного обеспечения ЭВМ. В основу структурного программирования положены следующие достаточно простые положения:

Структурное программирование иногда называют еще «программированием без GO TO». Рекомендуется избегать употребления оператора перехода всюду, где это возможно, но чтобы это не приводило к слишком громоздким структурированным программам.

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

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

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

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

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Первая (а) структура — тип последовательность (или просто последовательность), вторая (б) – структура выбора (ветвление), третья (в) – структура цикла с предусловием.

9.1. Общее представление о структурном программировании

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

Одна из таких технологий — структурное программирование — была разработана ещё в начале 70-х годов прошлого века и связана с именем выдающегося нидерландского ученого Эдсгера Дейкстры (1930-2002).

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

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

1. Любая программа строится из трёх базовых управляющих конструкций: последовательность, ветвление, цикл.
2. В программе базовые управляющие конструкции могут быть вложены друг в друга произвольным образом.
3. Повторяющиеся фрагменты программы можно оформить в виде подпрограмм (процедур и функций). В виде подпрограмм можно оформить логически целостные фрагменты программы, даже если они не повторяются.
4. Все перечисленные конструкции должны иметь один вход и один выход.
5. Разработка программы ведётся пошагово, методом «сверху вниз».

О методе разработки алгоритма «сверху вниз» вы получили представление в курсе информатики основной школы. Напомним его ключевые моменты на примере разработки некоторой программы.

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

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

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

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

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

Действия по вычислению длины отрезка представляют собой логически целостный фрагмент, который целесообразно оформить в виде вспомогательного алгоритма.

9.2. Вспомогательный алгоритм

Пример 1. Применим метод «сверху вниз» для разработки алгоритма нахождения периметра треугольника, заданного координатами своих вершин.

Пусть ХА, ХВ, YA, YB, ХС, YC — координаты вершин треугольника ABC. Его периметр — сумма длин отрезков АВ, ВС и АС.

Из курса геометрии вам известна формула для вычисления длины отрезка АВ по координатам его концов (рис. 2.11):

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Действия по вычислению длины отрезка представляют собой логически целостный фрагмент, который целесообразно оформить в виде вспомогательного алгоритма.

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рис. 2.11. Отрезок АВ

Вспомогательный алгоритм — это алгоритм, целиком используемый в составе другого алгоритма.

На рисунке 2.12 представлены:

1) блок-схема алгоритма вычисления периметра треугольника, предполагающая вызов вспомогательного алгоритма Отрезок;
2) блок-схема вспомогательного алгоритма Отрезок.

При вызове вспомогательного алгоритма указываются его параметры (входные данные и результаты). Параметрами вспомогательного алгоритма Отрезок являются величины XI, Y1, Х2, Y2, D. Это формальные параметры, они используются при описании алгоритма. При конкретном обращении к вспомогательному алгоритму формальные параметры заменяются фактическими параметрами, т. е. именно теми величинами, для которых будет исполнен вспомогательный алгоритм. Типы, количество и порядок следования формальных и фактических параметров должны совпадать.

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рис. 2.12. Алгоритм вычисления периметра треугольника и вспомогательный алгоритм Отрезок

Команда вызова вспомогательного алгоритма исполняется следующим образом:

1) формальные входные данные вспомогательного алгоритма заменяются значениями фактических входных данных, указанных в команде вызова вспомогательного алгоритма;
2) для заданных входных данных исполняются команды вспомогательного алгоритма;
3) полученные результаты присваиваются переменным с именами фактических результатов;
4) осуществляется переход к следующей команде основного алгоритма.

Каким будет результат работы алгоритма при следующих исходных данных: ХА = 1, ХВ = 2, ХС = 3, YA = 1, YВ = 3, YC = 1.

9.3. Рекурсивные алгоритмы

Алгоритм называется рекурсивным, если на каком-либо шаге он прямо или косвенно обращается сам к себе.

Пример 2. Как известно, факториал натурального числа n определяется следующим образом: n! = 1 • 2 • 3 • … • n; 0! считается равным единице (0! = 1).

Иначе это можно записать так:

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

В определении факториала через рекурсию имеется условие n ≤ 1, при достижении которого вызов рекурсии прекращается.

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

Пример 3. Определим функцию S(n), вычисляющую сумму цифр в заданном натуральном числе n:

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Самостоятельно определите функцию К(n), которая возвращает количество цифр заданного натурального числа n.

Пример 4. Алгоритм вычисления значения функции F(n), где n — натуральное число, задан следующими соотношениями:

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Требуется выяснить, чему равно значение функции F(7). По условию, F(1) = F(2) = 1.

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Подобные вычисления можно проводить в уме, а их результаты фиксировать в таблице:

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Пример 5. Исполнитель Плюс имеет следующую систему команд:

1) прибавь 1;
2) прибавь 2;
3) прибавь 4.

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

С помощью первой из них исполнитель увеличивает число на экране на 1, с помощью второй — на 2, с помощью третьей — на 4. Программа для исполнителя Плюс — это последовательность команд. Выясним, сколько разных программ, преобразующих число 20 в число 30, можно составить для этого исполнителя.

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

Число, меньшее 20, при заданных начальных условиях и системе команд исполнителя Плюс получить невозможно. Следовательно, при n 20 может быть получено из чисел n — 1, n — 2 и n — 4 одной из трёх команд, входящих в систему команд исполнителя — «прибавь 1», «прибавь 2» и «прибавь 4» соответственно. При этом каждая программа получения из исходного числа чисел n-1, n-2 и n-4 удлинится на одну команду и будет приводить к числу n. Следовательно, К(n) = К(n — 1) + + К(n — 2) + К(n — 4).

Запишем все соотношения, определяющие функцию К(n):

Заполним по этой формуле таблицу для всех значений n от 20 до 30:

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Итак, существует 169 различных программ, с помощью которых исполнитель Плюс может преобразовать число 20 в 30.

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

1. Матрёшка — русская деревянная игрушка в виде расписной куклы, внутри которой находятся подобные ей куклы меньшего размера.

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

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

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

3. Примером рекурсивной структуры является замечательное стихотворение Р. Бернса «Дом, который построил Джек» в переводе С. Маршака.

4. Рекурсивную природу имеют геометрические фракталы. На рисунке представлено построение одного из геометрических фракталов — треугольника Серпинского. Чтобы его получить, нужно взять равносторонний треугольник с внутренней областью, провести в нём средние линии и «выкинуть» центральный из четырёх образовавшихся маленьких треугольников. Дальше эти же действия нужно повторить с каждым из оставшихся трёх треугольников, и т. д.

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

9.4. Запись вспомогательных алгоритмов на языке Pascal

Запись вспомогательных алгоритмов в языках программирования осуществляется с помощью подпрограмм. В языке Pascal различают два вида подпрограмм: процедуры и функции.

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

Описание процедуры имеет вид:

procedure ( ; var: );

begin

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

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

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Выполните программу на компьютере.

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

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

Описание функции имеет вид:

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

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

Для вызова функции достаточно указать её имя со списком фактических параметров в любом выражении, в условиях (после слов if, while, until) или в операторе write главной программы.

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

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Выполните программу на компьютере.

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

САМОЕ ГЛАВНОЕ

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

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

1) любая программа строится из трёх базовых управляющих конструкций: последовательность, ветвление, цикл;
2) в программе базовые управляющие конструкции могут быть вложены друг в друга произвольным образом;
3) повторяющиеся фрагменты программы можно оформить в виде подпрограмм (процедур и функций). В виде подпрограмм можно оформить логически целостные фрагменты программы, даже если они не повторяются;
4) все перечисленные конструкции должны иметь один вход и один выход;
5) разработка программы ведётся пошагово, методом «сверху вниз».

Вспомогательный алгоритм — это алгоритм, целиком используемый в составе другого алгоритма.

Алгоритм называется рекурсивным, если на каком-либо шаге он прямо или косвенно обращается сам к себе.

Запись вспомогательных алгоритмов в языках программирования осуществляется с помощью подпрограмм. В языке Pascal различают два вида подпрограмм: процедуры и функции.

Вопросы и задания

1. В чём заключается сущность структурного программирования? Какие преимущества обеспечивает эта технология?

2. Какой алгоритм называется вспомогательным?

3. Вспомните, в чём состоит суть метода последовательного построения (уточнения) алгоритма. Как он называется иначе?

4. Опишите основные шаги разработки программы методом «сверху вниз».

5. Дан прямоугольный параллелепипед, длины рёбер которого равны а, b и с.

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

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

6. Какой вспомогательный алгоритм называется рекурсивным? Что такое граничное условие и каково его назначение в рекурсивном алгоритме?

7. Алгоритм вычисления значения функции F(n), где n — натуральное число, задан следующими соотношениями:

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Требуется выяснить, чему равно значение функции F(10).

8. Исполнитель Калькулятор имеет следующую систему команд:

1) прибавь 1;
2) умножь на 2.

С помощью первой из них исполнитель увеличивает число на экране на 2, с помощью второй — в 2 раза.

1) Выясните, сколько разных программ, преобразующих число 1 в число 20, можно составить для этого исполнителя.
2) Сколько среди них таких программ, у которых в качестве промежуточного результата обязательно получается число 15?
3) Сколько среди них таких программ, у которых в качестве промежуточного результата никогда не получается число 12?

9. Попробуйте найти рекурсивные синтаксические структуры:

1) в поэме А. Блока «Двенадцать»;
2) в стихотворении М. Лермонтова «Сон»;
3) в романе М. Булгакова «Мастер и Маргарита»;
4) в фольклоре.

10. Найдите информацию о таких геометрических фракталах, как Снежинка Коха, Т-квадрат, Н-фрактал, кривая Леви, Драконова ломаная.

11. Напишите программу вычисления значения функции F(n), рассмотренной в примере 4 этого параграфа. Вычислите с её помощью значение функции F(7).

12. Напишите программу вычисления

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Не выполняя программу на компьютере, выясните, что получится в результате работы этой программы.

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

Дополнительные материалы к главе смотрите в авторской мастерской.

Источник

Основные технологии

Основные понятия, факты

Структурное программирование. Модульное программирование. Объектно-ориентированное программирование. Базовые принципы ООП: инкапсуляция, наследование, полиморфизм.

Навыки и умения

Разработка программ с использованием принципов структурного, модульного, объектно-ориентированного программирования.

Основными технологиями разработки программного обеспечения являются

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

Распространены две методики (стратегии) разработки программ, относящиеся к структурному программированию: программирование «сверху вниз» и программирование «снизу вверх».

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

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

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

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

Достоинства структурного программирования :

1) повышается надежность программ (благодаря хорошему структурированию при проектировании, программа легко поддается тестированию и не создает проблем при отладке);

2) повышается эффективность программ (структурирование программы позволяет легко находить и корректировать ошибки, а отдельные подпрограммы можно переделывать (модифицировать) независимо от других);

3) уменьшается время и стоимость программной разработки;

4) улучшается читабельность программ.

Резюме

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

— программирование должно осуществляться сверху вниз;

— весь проект должен быть разбит на модули (подпрограммы) с одним входом и одним выходом;

— недопустим оператор передачи управления в любую точку программы ( goto );

— документация должна создаваться одновременно с программированием в виде комментариев к программе.

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

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

Модульное программирование предназначено для разработки больших программ.

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

Модуль ( unit ) – программная единица, текст которой компилируется независимо (автономно).

Модуль содержит 4 раздела: заголовок, интерфейсная часть (раздел объявлений), раздел реализации и раздел инициализации.

INTERFACE <интерфейсная часть>

Источник

В чем сущность структурного подхода к программированию

Достоинства структурного программирования по сравнению с интуи­тивным неструктурным программированием:

· уменьшение трудностей тестирования программ;

· повышение производительности труда программистов;

· повышение ясности и читабельности программ, что упрощает их со­провождение;

· повышение эффективности объектного кода программ как с точки зрения времени их выполнения, так и с точки зрения необходимых затрат памя­ти.

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

К концепциям структурного программирования относятся:

· отказ от использования оператора безусловного перехода ( GoTo );

· применение фиксированного набора управляющих конструкций;

· использование метода нисходящего проектирования

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

· конструкции принятия двоичного (дихотомического) решения;

· конструкции обобщенного цикла.

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 1 Изображение функционального блока в структурном программировании

Конструкция принятия двоичного (дихотомического) решения называет­ся также конструкцией If-Then-Else (если-то-иначе), разветвлением или ветвле­нием. Это структура, обеспечивающая выбор между двумя альтернативными путями вычислительного процесса в зависимости от выполнения некоторого условия. Изображается с помощью символов «Решение» и «Процесс»

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 2 Изображение конструкции If-Then-Else в структурном программировании

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

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 3 Изображение конструкции обобщенного цикла в структурном программировании

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

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

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

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

· вложенные на произвольную глубину операторы If-Then-Else ;

· циклические операторы (ци кл с пр едусловием).

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

· дополнительные конструкции организации цикла:

· цикл с параметром как вариант цикла с предусловием;

· цикл с постусловием, называемый в структурном программировании циклом «До», в котором тело цикла выполняется перед проверкой условия выхода из цикла и повторяется до выполнения условия;

· использование оператора Case как расширения конструкции If-Then-Else ;

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

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 4 Представление функционального блока

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 5 Представление конструкции If-Then-Else

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 6 Представление цикла с предусловием

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 7 Представление цикла с постусловием

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 8 Представление конструкции цикла с параметром

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 9 Представление конструкции Case по методу Дамке

Достоинства метода Дамке:

· схема алгоритма, представленная с помощью данного метода, нагляд­нее, чем классическая, особенно для больших программ;

· метод Дамке удобно использовать при разработке алгоритма по методу нисходящего проектирования;

· метод Дамке удобен при коллективной разработке ПС, так как позволя­ет независимо разрабатывать отдельные функциональные части программы.

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

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

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 10 Представление функционального блока

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 11 Представление блока следования

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 12 Представление блока решения

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 13 Представление блока Case

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 14 Представление цикла с предусловием

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 15 Представление цикла с постусловием

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

· программа состоит из модулей. Данный признак для модульной про­граммы является очевидным;

· модули являются независимыми. Это значит, что модуль можно изме­нять или модифицировать без последствий в других модулях;

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

· упрощение разработки ПС;

· исключение чрезмерной детализации обработки данных;

· упрощение сопровождения ПС;

· облегчение чтения и понимания программ;

· облегчение работы с данными, имеющими сложную структуру.

· модульность требует дополнительной работы программиста и опреде­ленных навыков проектирования ПС.

Классические методы структурного проектирования модульных ПС делятся на три основные групп:

· методы нисходящего проектирования;

· методы расширения ядра;

· методы восходящего проектирования.

На практике обычно применяются различные сочетания этих методов.

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

Суть метода нисходящего проектирования заключается в следующем.

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

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

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

Таким образом, на каждом шаге разработки уточняется реализация фраг­мента алгоритма, то есть решается более простая задача.

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

Существуют различные способы реализации пошагового уточнения.

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

При использовании данного способа разбиение программы на модули осуществляется эвристическим способом.

Еще одним классическим способом реализации пошагового уточнения является использование комментариев для описания обработки данных.

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

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

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

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

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

Метод восходящего проектирования целесообразно применять в следую­щих случаях:

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

· заранее известно, что некоторые простые или стандартные модули по­требуются нескольким различным частям программы (например, подпрограмма анализа ошибок, ввода-вывода и т.п.).

При использовании метода восходящего проектирования в первую оче­редь реализуются функции нижнего уровня программы. На основе полученных модулей проектируются программные компоненты более высокого уровня. Часто используется сочетание методов нисходящего и восходящего проектиро­вания. Такое сочетание возможно различными способами.

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

Существует два подхода к реализации методов расширения ядра.

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

Второй подход основан на определении областей хранения данных с по­следующим анализом связанных с ними функций. Данный подход использует метод определения спецификаций модуля, разработанный Парнасом.

Метод JSP Джексона

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

Метод JSP основывается на возможности представления структур данных и структур программ единым набором основных конструкций. М. Джексоном предложены четыре основные конструкции данных.

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

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

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 16 Конструкция последовательности данных

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 17 Пример последовательности данных

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

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 18 Пример правильного представления конструкции выбора данных

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

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 19 Конструкция повторения данных

Элементарными являются те компоненты, которые не разбиваются далее на подкомпоненты. Примерами элементарных конструкций являются, напри­мер, первая запись D и запись D на, компоненты число N, ме­сяц M, год Y Компонент может являться элементарным, потому что его нельзя разло­жить дальше или потому, что с практической точки зрения отсутствует необхо­димость в его дальнейшем разбиении.

Метод JSP основывается на возможности представления структур данных и структур программ единым набором основных конструкций. Существует че­тыре основных конструкции данных: конструкция последовательности, конст­рукция выбора, конструкция повторения и элементарная конструкция.

В чем сущность структурного подхода к программированию. Смотреть фото В чем сущность структурного подхода к программированию. Смотреть картинку В чем сущность структурного подхода к программированию. Картинка про В чем сущность структурного подхода к программированию. Фото В чем сущность структурного подхода к программированию

Рисунок SEQ Рисунок \* ARABIC 20 Иерархическая структура данных

Большинство структур (иерархическая, сетевая, реляционная) реальных наборов данных может быть сведено к иерархическим структурам, которые мо­гут быть представлены в нотации структур метода JSP Джексона.

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

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

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

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

Этапы проектирования программного средства

Метод JSP реализуется пятью этапами:

· Проектирование структур входных и выходных данных.

· Идентификация соответствий между структурами данных.

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

· Перечисление и распределение выполняемых операций.

· Создание текста программы на метаязыке структурированного описания.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *