Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тема консультации: Основные принципы структурного программирования.

Поиск

КОНСУЛЬТАЦИЯ К ЗАНЯТИЮ №75

ПО УЧЕБНОЙ ДИСЦИПЛИНЕ

ОДП.02. Информатика и ИКТ

Дата: 01.04.2022г.

 

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

Исходя из этих проблем, ведущими программистами 70-х годов (Дейкстра, Вирт, Дал, Xoap, Йордан, Константин, Майерс и др.) были разработаны строгие правила ведения проектов, которые получили название структурной методологии.

Важным этапом в становлении этого подхода стали международные конференции по программированию, проведенные в 1968-69 годах. На второй из них Эдсгер Дейкстра впервые использовал термин «структурное программирование» и предложил принципиально новый способ создания программ. Он рассматривал программу как совокупность иерархических абстрактных уровней, которые позволяли:

1) четко структурировать программу, что улучшило ее понимание программистами;

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

3) сокращать сроки разработки программ.

Еще одним толчком к изменению способа программистского мышления стало опубликованное письмо Дейкстры редактору одного из научных издательств, которое было озаглавлено «Оператор GOTO нужно считать вредным». Это письмо вызвало острую полемику среди программистов того времени, но в итоге победило все-таки структурное мышление, которое, кроме Дейкстры, активно поддерживали профессор Цюрихского технического университета Вирт и профессор Оксфордского университета Xoap. Одним из результатов полемики было доказательство того, что любая программа может быть написана, используя только простую последовательность операторов, итеративную конструкцию типа while (пока) и конструкцию выбора case (выбор), а оператор goto (перейти к) не является необходимой управляющей конструкцией в структурном программировании. К сожалению, споры об операторе goto имели один отрицательный «побочный эффект» — довольно часто программирование без goto стало отождествляться со всем структурным программированием. Однако цели структурного программирования намного глобальнее и серьезнее.

 

 ОСНОВЫ ТЕХНОЛОГИИ СТРУКТУРНОГО ПРОГРАММИРОВАНИЯ

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

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

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

·        нисходящее проектирование (проектирование сверху вниз);

·    модульное (процедурное) программирование;

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

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

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

·      последовательное исполнение — однократное выполнение операций в том порядке, в котором они записаны в тексте программы;

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

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

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

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

3. Разработка программы ведётся пошагово, методом «сверху вниз».

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

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

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

К достоинствам структурного программирования можно отнести следующее:

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

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

3. Сильно упрощается процесс тестирования и отладки структурированных программ.

Основные принципы структурного программирования сведены в табл. 1.

 

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

 



Поделиться:


Последнее изменение этой страницы: 2024-06-17; просмотров: 5; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.75.217 (0.008 с.)