Пример 4. Работа с массивами.

Пусть требуется написать программу для ввода массива x из 100 вещественных чисел и вычисления суммы всех элементов этого массива:

Будем предполагать, что длина программы не превышает 200 ячеек, и поместим массив x, начиная с 200-ой ячейки памяти. Вещественную переменную S с начальным значением 0.0 и целую переменную i с начальным значением 100 разместим в конце текста программы. На рис. 3.4 приведён текст этой программы.

 

Команда Комментарий
ВВВ Read(x); массив x в ячейках 200¸299
СЛВ 008 008 S := S+x[1]
СЛЦ 011 Модификация команды в ячейке 2
ВЧЦ 010 010 009 n := n-1
УСЛ Следующая итерация цикла
ВЫВ 008 Write(S)
СТОП Стоп
<0.0> Переменная S = 0.0
Целая константа 1
Переменная n с начальным значением 100
Константа переадресации

 

Рис 3.4. Текст программы четвёртого примера.

 

Рассматриваемая программа выделяется своим новым приёмом программирования и может быть названа самомодифицирующейся программой. Обратим внимание на третью строку программы. Содержащаяся в ней команда изменяет исходный код программы (команду в ячейке 2) для организации цикла перебора элементов массива. Модифицируемая команда рассматривается как целое число, которое складывается со специально подобранное константой переадресации. Согласно одному из принципов фон Неймана, числа и команды в учебной машине неотличимы друг от друга, а, значит, изменяя числовое представление команды, мы можем изменять и её суть.

У такого метода программирования есть один существенный недостаток: модификация кода программы внутри её самой может привести к путанице и вызвать появление ошибок. Кроме того, самомодифицирующуюся программу трудно понимать и вносить в неё изменения. В нашей учебной машине это, однако, единственный способ обработки массивов. В других архитектурах ЭВМ, с которыми мы познакомимся несколько позже, есть и другие, более эффективные способы работы с массивами, поэтому метод с модификацией команд не используется.








Дата добавления: 2015-10-05; просмотров: 683;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.