Повышает ли читабельность программ структурное кодирование

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

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

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

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

Лекция 4 Принципы разработки

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

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

При разработке алгоритмов обычно используют метод пошаговой детализации (поэтапно):

1. На первом этапе описываются решения поставленной перед программой задачи, выделяются подзадачи.

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

Например:Требуется разработать программу, которая с определенной точностью eps находит значение аргумента x по заданному значению функции y при известном значении n

При n>1 функция является монотонно возрастающей, значение аргумента x можно определить с помощью метода половинного деления. В чем заключается это метод?

1. Находим отрезок [x1, x2], который удовлетворяет условию: f(x1)

lign=»left»>2. Делим полученный отрезок пополам: xt=(x1+x2)/2 и определеяем в какой половине отрезка находится x. Для этого сравниваем два значения: f(x1) и y.

3. Полученный отрезок вновь делим пополам, процесс повторяется до тех пор, пока разность x1 и x2 не станет меньше заданного значения eps.

При разработке алгоритма данной программы используем метод пошаговой детализации.

1 Этап. Общая структура программы:

2 этап. Детализируем операцию определения x:

Определить x1 такое, что f(x1)

Определить x2 такое, что f(x2)>=y

Программирование: Экстремальное программирование

Определить x на интервале [x1, x2]

3 этап. Детализируем операцию определения x1. Значение x1 подбираем таким образом, чтобы выполнялось условие f(x1)0, следовательно, берем любое значение x, например x1=1 и будем его пследовательно уменьшать, допустим в 2 раза. Таким образом определим значение x1, удовлетворяющее данному условию:

цикл — пока f(x1)>y

4 этап. Детализируем операцию определения x2. Значение x2 определяем аналогично x1, но исходное значение будем последовательно увеличивать в 2 раза.

5 этап. Детализируем операцию определения x. Определение x выполняется последовательным сокращением отрезка [x1, x2].

цикл — пока x2-x1>eps

сократить отрезок [x1, x2]

6 этап. Детализируем операцию сокращения отрезка [x1, x2]. Интервал определения x сокращаем делением пополам и отбрасываем половину, которая не удовлетворяет условию f(x1)

Сократить интервал определения x:

Таким образом, за 6 этапов разработан следующий алгоритм:

цикл — пока f(x1)>y

цикл — пока x2-x1>eps

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

Достоинства метода пошаговой детализации:

1. Сохраняется концептуальная целостность программы: от сложного к простому.

2. Проектирование программы, кодирование, проверку и документирование можно делать параллельно.

3. В каждый момент времени (даже в начале разработки) имеется работающий вариант программы.

4. Фразы естественного языка, будучи закомментированными, служат хорошим путеводителем по программе.

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

Базовые структуры: следование,развилка, цикл.

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

Пример 1. Пешеход шел по пересеченной местности. Его скорость движения по равнине v1 км/ч, в гору — v2 км/ч и под гору — v3 км/ч. Время движения соответственно t1, t2 и t3 ч. Какой путь прошел пешеход?

Читайте также:
Как установить программу igo

1. Ввести v1, v2, v3, t1, t2, t3.

5. S := S1 + S2 + S3.

6. Вывести значение S.

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

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

Пример 2. Дано натуральное число n. Если число нечётное и его удвоение не приведет к выходу за 32767 (двухбайтовое целое число со знаком), удвоить его, иначе — оставить без изменения.

Чтобы удовлетворить условию удвоения, число n должно быть нечетным и меньше 16384.

1. Ввести число n

2. Если число n нечетное и меньше 16384, то n := n * 2

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

Источник: studfile.net

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

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

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

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

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

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

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

3) уменьшить время и стоимость программной разработки. Достижимо при повышении производительности труда программиста;

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

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

Он предполагает строгий методический подход к программированию, придает творческому процессу определенную строгость и дисциплину.

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

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

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

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

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

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

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

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

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

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

• программа должна разделяться на независимые части, называемые модулями;

• модуль — это независимый блок, код (текст) которого физически и логически отделен от кода других модулей;

Читайте также:
Брандмауэр это программа ответ

• модуль выполняет только одну логическую функцию, иначе говоря, должен решать самостоятельную задачу своего уровня по принципу: один программный модуль — одна функция;

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

⇒ от входных данных;

⇒ от того, какому программному модулю предназначены его

⇒ от предыстории вызовов программного модуля;

• размер программного модуля желательно ограничивать одной-двумя страницами исходного листинга (50-100 строк исходного кода);

• модуль должен иметь только одну входную и одну выходную точку;

• взаимосвязи между модулями устанавливаются по иерархической структуре;

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

• при создании модуля можно использовать только стандартные управляющие конструкции: выбор, цикл, блок (последовательность операторов);

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

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

• идентификаторы переменных и модулей должны быть смысловыми, «говорящими»;

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

• желательно не допускать вложенности операторов IF более, чем трех уровней;

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

Источник: studopedia.su

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

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

Рис. 26 Основные этапы разработки программного обеспечения.

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

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

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

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

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

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

3) уменьшить время и стоимость программной разработки. Достижимо при повышении производительности труда программиста;

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

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

Принцип абстракции.

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

Принцип формальности.

Он предполагает строгий методический подход к программированию, придает творческому процессу определенную строгость и дисциплину.

Принцип модульности.

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

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

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

Нисходящее проектирование.

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

Читайте также:
С помощью какой программы открыть файл bin на телефоне

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

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

Структурное кодирование.

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

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

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

Модульное программирование.

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

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

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

· модуль — это независимый блок, код (текст) которого физически и логически отделен от кода других модулей;

· модуль выполняет только одну логическую функцию, иначе говоря, должен решать самостоятельную задачу своего уровня по принципу: один программный модуль — одна функция;

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

Þ от входных данных;

Þ от того, какому программному модулю предназначены его выходные данные;

Þ от предыстории вызовов программного модуля;

· размер программного модуля желательно ограничивать одной-двумя страницами исходного листинга (50-100 строк исходного кода);

· модуль должен иметь только одну входную и одну выходную точку;

· взаимосвязи между модулями устанавливаются по иерархической структуре;

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

· при создании модуля можно использовать только стандартные управляющие конструкции: выбор, цикл, блок (последовательность операторов);

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

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

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

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

· желательно не допускать вложенности операторов IF более, чем трех уровней;

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

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

Вопросы к главе 8.

1. Понятие жизненного цикла программного продукта.

2. Основные этапы разработки программного обеспечения.

3. Дать определение технологии программирования.

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

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

6. Использование нисходящего проектирования.

7. Дать определение структурному кодированию.

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

9. Особенности модульного программирования.

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

1. Вирт Н. Алгоритмы и структуры данных. М., Мир, 1989.

2. Вирт Н. Алгоритмы + структуры данных = программы. М., Мир,1985.

3. Дайитбегов Д.М., Черноусов Е.А. Основы алгоритмизации и алгоритмические языки. Учебник. М., Финансы и статистика, 1992.

4. Джонс Ж.,Харроу К. Решение задач в системе Турбо Паскаль. М., Финансы и статистика, 1989.

5. Епанешников А.М., Епанешников В.А. Программирование в среде Turbo Pascal 7.0. М., Диалог-МИФИ, 1995.

6. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. М.. МЦНМО, 1999.

7. Лэнгсам Й., Огенстайн М., Тэненбаум А Структуры данных для персональных ЭВМ, М., Мир, 1989.

8. Семашко Г.Л., Салтыков А.И. Программирование на языке Паскаль. М., Наука, 1988

9. Турбо Паскаль 7.0. К., Торгово-издательское бюро BHV, 1996

10. Фаронов В.В. Turbo Pascal 7.0. Начальный курс. Учебное пособие. М., Нолидж,1998.

Источник: allrefrs.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru