Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Понятие о технологии программирования



Принципы структурной алгоритмизации

Впервые понятие «программистская деятельность» ввели инженеры, обслуживающие цифровой компьютер «Марк-1» в Гарвардском университете (1944 г.). В то время практически все было впервые. При написании программ для вычисления артиллерийских баллистических таблиц впервые стали применять многократно используемые последовательности — подпрограммы. Устранение неисправности, вызванной попаданием мотылька (bug — насекомое) в электрические цепи машины, привело к появлению понятия «отладка» (debugging), которое используется сейчас для обозначения поиска неисправностей в компьютере и его программном обеспечении. Впервые была предложена программа-компоновщик как вспомогательное средство для создания других программ из нескольких различных подпрограмм... и т.д.

Появление языков программирования высокого уровня дало мощный импульс развитию программного обеспечения. Однако первоначально не было выработано подходов (методологий) к программированию, использование которых позволило бы уменьшить вероятность пропуска ошибок в программах, упрощало бы их понимание, облегчило бы модификацию программ и их сопровождение. Значительный вклад в теорию программирования внес научный сотрудник фирмы «Барроуз» (Burroughs) голландский ученый Эдсгер Дейкстра (E.W. Dijkstra). В 1968 г. в работе под названием «Заметки по структурному программированию» он доказал, что большинство программ неоправданно сложны из-за отсутствия в них четкой математической структуры. По мнению Дейкстры, использование трех типов управляющих структур — простой последовательности, альтернативы и повторения — позволило бы программистам обходиться без операторов безусловного перехода (goto) и тем самым преодолеть сложность и запутанность программ, добиться простоты их модификации. Проверку программ Дейкстра предложил производить математическими методами, а не просто тестированием, которое, по его мнению, может показать лишь наличие ошибок, а не их отсутствие.

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

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

• программа должна состоять из мелких шагов. Размер шага определяется количеством решений, принимаемых программистом на каждом шаге. Таким образом, сложная задача разбивается на достаточно простые, легко воспринимаемые части;

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

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

Структурная алгоритмизация основывается на двух принципах:

• последовательная детализация алгоритма «сверху вниз»;

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

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

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

• возможность демонстрации правильности программ на различных этапах решения задач;

• наглядность программ;

• простота модификации (внесения изменений).

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

1. Начало;

2. Список данных: данные: тип; ...; данные: тип;

3. Ввод (исходные данные);

4. Вывод (исходные данные);

5. Обработка результатов испытаний;

6. Оценка надежности двигательной установки;

7. Выбор оптимальных параметров;

8. Вывод (результат);

9. Конец.

Затем следует определить, какие из использованных нами конструкций «понятны» ЭВМ, имеющейся в нашем распоряжении. Дело в том, что алгоритм может быть реализован в ЭВМ, если он содержит только элементарные предписания и структуры, входящие в базовый набор (о них речь пойдет ниже). Элементарными, т.е. не требующими детализации, мы будем считать следующие предписания или операции: Начало; Конец; Список данных; Ввод; Вывод; вычислительные операции, реализуемые операторами присваивания (: =). Сложные конструкции, которые ЭВМ не может реализовать сразу, разбиваются на более простые. Например, предписание 5 для рассматриваемого алгоритма может быть записано так:

5.1. Начало 5;

5.2.... Операции, раскрывающие смысл обработки

результатов испытаний...;

5.N. Конец 5.

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

Обратите внимание на то, что предписания 1-4 и 8-9, как правило, присутствуют в каждом алгоритме, разрабатываемом методом структурной алгоритмизации.

Базовый набор структур

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

• последовательной (линейной) структуры (рис. 8, а);

ветвящейся структуры (рис. 8, б).

 
 

• циклической структуры (рис. 8, в).

Рис. 8. Базовый набор структур:

а — последовательная (линейная) структура;

б — ветвящаяся структура; в — циклическая структура

 

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


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-08-31; Просмотров: 501; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.018 с.)
Главная | Случайная страница | Обратная связь