.
Меню сайта
|
Программа с преобразованиямиПрограмма с преобразованиямиДопустим, что значения площади круга нужно определить только для некоторых ранее
вычисленных значений радиуса — скажем, записанных в ячейках памяти № 21—80 (рис. 10). Тогда, как и прежде, в ячейку № 20 помещаем p, а в ячейки № 81 и 82 — специальные числа 0-01-01-00 и 3-80-80-19, значение которых выяснится в дальнейшем. Вычисления будем вести по следующей программе:
По первой команде вычисляется квадрат первого значения радиуса (из ячейки № 21), который затем по второй команде умножается на p. По третьей команде вычисленное значение площади круга заносится в таблицу окончательных результатов. Теперь нужно повторить те же самые операции, но уже над новым значением радиуса, хранящимся не в 21-й, а в 22-й ячейке. Для этого можно было бы включить в программу в качестве четвертой команды 3-22-22-19 (возвести новое значение радиуса в квадрат) с последующим повторением второй и третьей команд без изменения. Затем должна следовать команда 3-23-23-19 (возвести в квадрат значение радиуса из ячейки № 23) и т. д. При большом количестве различных значений радиуса программа получалась бы очень громоздкой. Легко сообразить, что вводимые вновь команды 3-22-22-19, 3-23-23-19,... могут быть получены из первой команды 3-21-21-19 последовательным прибавлением к ней числа 0-01-01-00, хранящегося в ячейке № 81: и т. д. Таким образом, посредством арифметических действий над числом, изображающим команду, может быть осуществлено систематическое изменение ее адресов (в данном случае первого и второго), а если потребуется, то и кода действия. Такая операция изменения адреса (называемая переадресацией) как раз и осуществляется по четвертой команде рассматриваемой программы. При этом число, изображающее новую (переадресованную) команду, направляется в ту же ячейку № 1, где хранилась исходная команда (в случае надобности переадресованную команду можно было бы поместить и в другую ячейку памяти). По пятой команде выполняется сравнение переадресованной команды (числа) из ячейки № 1 с командой 3-80-80-19, специально введенной для этого в ячейку № 82. Пока первый и второй адреса переадресованной команды не больше 80 (использованы еще не все значения радиуса, хранящиеся в ячейках № 21— 80), согласно команде сравнения осуществляется возврат к началу программы, т. е. к исполнению переадресованной первой команды. Когда же все значения радиуса будут исчерпаны, команда примет вид 3-81-81-19, т. е. превзойдет число в ячейке № 82, и по команде сравнения машина перейдет к выполнению следующей (шестой) команды, означающей остановку.
|
ПОИСК
Block title
|