Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 4.doc
Скачиваний:
0
Добавлен:
02.08.2019
Размер:
96.77 Кб
Скачать

Процессы преобразования и выполнение программ

4.1. Декомпозиция

Языки программирования высокого уровня в значительной степени ориентированы на человеческий способ мышления. Алгоритмы, написанные на таких языках не понятны машинам. Их необходимо трансформировать в последовательность команд, которые будут вызываться соответствующие, вполне определенные, действия машины. Эта последовательность команд называется машинно-ориентированный язык. Характерным для этого языка является полное отсутствие сложных конструкций, например, таких как: разыменование, обобщенные виды, вызов процедуры, арифметические выражения с тремя и более действиями и т. д.

Формы машинно-ориентированного языка всегда элементарны. Допускаются:

1) обозначения, например: 10, ложь, «Иванов» и т.д.;

2) одноместные формулы, типа: 18 или (V) 20, sign a, abs b и т.д.;

3) двуместные формулы, например: 14+3, а*а, «Паро»+ «ход» и т.д.

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

Продемонстрируем разложение (декомпозицию) выражение в «трехадресную форму» на примере:

х=(а*b+(а+d)*c)/(a*a+b*b)

h 1=a; a

h2=b; b Один операнд (h2)

h1=a*b; x и одна переменная (h1)

h2=a; a

h3=d; d Один операнд (h3)

h2=h2+h3; + и одна переменная (h2)

h 3=c; c

h2=h2*h3; x Два операнда (h3, h2)

h1=h1+h2; + и одна переменная (h1)

h2=a; a

h3=a; a Один операнд (h3)

h2=h2*h3; x и одна переменная (h2)

h3=b; b

h4=b; b Один операнд (h4)

h3=h3*h4; x и одна переменная (h3)

h 2=h2+h3; +

h1=h1/h2; / Один операнд (h2) и одна

переменная (h1)

Замечание1.

Информация в правом столбце не имеет отношение к реализации схемы вычисления. Если этот правый столбец записать в строку с лево направо, то получим так называемую польскую инверсную запись (ПОЛИЗ) декомпонированной формулы.

Замечание 2.

В приведенном примере, первой становится свободной та переменная, куда значение было помещено последним (h4, h3, h2 и h1 – последовательность освобождения переменных). Память организованной по такому принципу называется магазином. После исполнения формулы, результат находится в первой переменной магазина h1 (и ни в какой другой – это контроль!).

Определение.

Трехадресная форма - это форма, в которой задаются, как максимум, два операнда иодна переменная для результата.

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

СМ=СМ+а.

Самостоятельно провести перевод в одноадрестную форму приведенную выше формулу, используя понятие сумматор.

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

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