Методология императивного программирования
Методология императивного программирования – это подход, основанный на последовательном изменении состояния вычислителя пошаговым образом.
Императивное программирование – это исторически первая поддерживаемая аппаратно методология программирования. Она ориентирована на классическую фон Неймановскою модель, которой присущи следующие характеристики:
1. Единственная последовательно адресуемая память (программа и данные хранятся в одной памяти, адреса областей которой составляют единую последовательность).
2. Память является линейной одномерной.
3. Отсутствует явное различие между командами и данными (их идентифицируют неявным способом при выполнении операций).
4.Назначение данных определяется логикой программы.
Методы и концепции:
1.Последовательное изменение состояний вычислителя.
2.Пошаговый контроль управления потоком команд.
Вычислительная модель представляет собой описание последовательного изменения состояний вычислителя (применяемая математическая модель - машина Тьюринга).
Применяемая структура данных – последовательность пар ячеек «адрес -> значение».
Синтаксис и семантика. Основным синтаксическим понятие - оператор. При этом различают:
1. Атомарные операторы – никакая их часть не является самостоятельным оператором (например, оператор присваивания, оператор безусловного перехода, вызова процедуры и т.п.).
2.Структурные операторы, объединяющие другие операторы в новый, более крупный оператор (например, составной оператор, операторы выбора, цикла и т.п.).
На практике для описания синтаксиса языков широко применяется формальная система обозначений Бэкуса – Наура. В ней одни синтаксические категории определяются через другие последовательно. В данной системе обозначений используются:
1. Метапеременные — представляют собой слова или группы русских слов, заключённых в угловые скобки. Под значением метапеременной понимается некоторая конечная последовательность основных символов языка, из которых, в конечном счёте, состоят программы.
2. Символ ::= означает «определяется как».
3. Символ | означает «или».
4. Символ * означает «произвольное количество повторений (в том числе ноль раз) того символа, за которым он указан».
Символы, указанные в квадратных скобках — являются необязательными.
Пример варианта синтаксиса описания алгоритмов в императивной модели программирования:
<оператор> ::= <простой оператор>|
|<структурный оператор>;
<простой оператор> ::=<оператор присваивания>|
|<оператор вызова>|
|<оператор возврата>;
<структурный оператор> ::=
<оператор последовательного исполнения>|
|<оператор ветвления>|<оператор цикла>;
<оператор присваивания> ::= <переменная>::=<выражение>;
<оператор вызова> ::= <имя программы>(<список параметров>);
<оператор возврата> ::= return [<выражение>];
<оператор последовательного исполнения> ::=
begin <оператор>* end;
<оператор выбора> ::= if <выражение> then <оператор>*
(elseif <выражение> then <оператор>*)*
[else <оператор>*]
end;
<оператор цикла> ::= while <выражение > dо <оператор>* end;
Средство структурирования – подпрограмма (процедура или функция). Подпрограммы имеют параметры и локальные определения и могут быть вызваны рекурсивно. Функции возвращают значения как результат своей работы.
Типичный подход к решению задачи: сначала исполняется алгоритм, решающий первую задачу. Результаты его работы сохраняются в специальном месте памяти, которое известно следующему алгоритму, и используется им и т.д.
Императивныеязыки программирования представляют собой компактное средство описания функции переходов между состояниями вычислителя.
Считается, что первым алгоритмическим языком программирования был язык Plankalkuel (от plan calculus), разработанный в 1945-1946 гг. Конрадом Цузе (Konrad Zuse).
Наиболее известные и распространённые императивные языки программирования, были созданы в конце 50-х – середине 70-х годов XX века.
1. Fortran (1954)
2. Algol (1960)
3. Pascal (1970)
4. C (1972)
5. ICON (1974)
Класс задач. Данная методология наиболее пригодна для решения задач, в которых последовательное исполнение каких-либо команд является естественным. Пример – управление современными аппаратными средствами. С ростом сложности задачи императивные программы становятся менее читаемыми.