Морская звезда - аквапарк.
При изменении индекса

При изменении индекса i на 1 должна быть произведена переадресация всех команд, зависящих от i. Это команды с адресами р — 3, р+1 и, на первый взгляд, р. Но при более внимательном изучении программы видно, что значение последней команды определяется значением заготовки zlf которая засылается командой р — 2 в ячейку р. Значит, если мы хотим изменить вид команды р, нам нужно менять заготовку zv Кроме того, от i зависит первый адрес заготовки z3. Следовательно, нам нужно осуществить переадресацию для i : = i + 1 содержимого четырех ячеек (р — 3, р+1, *i, г3).
При записи константы, с помощью которой осуществляется переадресация заготовок zx и г3, мы столкнемся с небольшой проблемой. Содержимое первого адреса этих заготовок должно изменяться на п единиц при изменении i на единицу. Однако записать соответствующую константу переадресации в виде нельзя, так как в силу соглашения 4 (см. гл. 5) буква я, занимающая позицию адреса в команде или константе, заменяет адрес ячейки, где хранится значение величины я, а не само это значение. Можно воспользоваться соглашением 9 (§ 6 гл. 6), по которому буква я обозначает значение величины я, если она входит в состав выражения, занимающего позицию адреса, и записать первый адрес заготовки в виде 1 х я, я + О или просто +я. На последнем варианте мы и остановимся. Так как подобные обозначения адресов будут в дальнейшем встречаться очень часто, то мы закрепим их смысл в виде отдельного и последнего
Соглашения   о   записи   символических адресов (продолжение; см. стр. 78, 81, 109)
10, Если в записи команды некоторый адрес заменен буквой с предшествующим ей знаком +, то во время выполнения программы этот адрес должен быть численно равен текущему значению переменной или постоянной величины, обозначенной в соответствующем алгоритме той же буквой.
Эта программа составлена по простым рецептам, и, разумеется, решает поставленную задачу. Но в ней далеко не использованы все резервы для экономии времени работы машины.
Попробуем улучшить эту программу. Для этого познакомимся с новым приемом программирования — восстановлением команд.
Предположим, что в процессе выполнения программы встречается простой цикл.
Чтобы получить начальный вид команды — восстановить ее — достаточно вычесть из значения ее адресной части, с которым завершился цикл, это суммарное приращение. Сделать это можно, например, операцией вычитания мантисс (— М).
При использовании восстановления команд (вместо их формирования) в ячейку, предназначенную для переменной команды, при составлении программы обязательно должно быть записано исходное значение этой команды. Возможны два варианта, в зависимости от того, что выполняется первым при работе программы — сам цикл или восстановление переменной команды.