Методология императивного программирования

Методология императивного программирования – это подход, основанный на последовательном изменении состояния вычислителя пошаговым образом.

Императивное программирование – это исторически первая поддерживаемая аппаратно методология программирования. Она ориентирована на классическую фон Неймановскою модель, которой присущи следующие характеристики:

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)

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