Задача:
Найти сумму первых 20 натуральных чисел.
Решение:
Сумма будет равна 1+2+3+4+5+6+...+20. Эту последовательность
можно представить в виде арифметической последовательности и найти
сумму по соответствующей формуле. Но поступим по-другому, ведь
у нас в руках микроЭВМ. Все члены последовательности 1,2,3,4,..,20
отличаются друг от друга на 1. Можно составить такой циклический
алгоритм, который вычислит эту сумму. Пусть s - искомая сумма, i -
счётчик шагов(1,2,3..,20), тогда алгоритм будет такой:
После нажатия на кнопку "Run" "Кроха" выдаст результат на экран (screen)
в десятичном (deg) и двоичном виде (bin).
1) увеличить i на 1
2) вычислить s=s+i (новая сумма=старая сумма + текущее значение счётчика)
3) если 20 больше i, то перейти к 1) действию
4) если 20 меньше или равно i, то распечатать s на экране.
Таким образом, счётчик пробежит все значения от 1 до 20 и вычислит сумму.
Как распределить память? Попробуем распределить её, как в нашем алгоритме.
Договоримся хранить значение счётчика i в ячейке 111, шаг счётчика=1 в ячейке 110,
предел=20 в ячейке 101.
Итак, ячейка 000 будет такой:
000 001 111 110 111
(увеличить i на 1).
Следущая команда:
001 001 100 111 100
(вычислить s=s+i (новая сумма=старая сумма + текущее значение счётчика).
Третья команда:
010 110 101 111 000
(если 20 больше i, то перейти к 1) действию (ячейке 000)).
Остаётся только распечатать результат. Это будет последняя свободная ячейка 011:
011 111 100 100 100
(3 раза распечатать содержимое ячейки 101)
Итак, приведём полный листинг программы перед её запуском:
001 001 100 111 100 (новая сумма=старая сумма + текущее значение счётчика)
010 110 101 111 000 (если 20 больше i, то перейти к 1) действию (ячейке 000))
011 111 100 100 100 (3 раза распечатать содержимое ячейки 101 - конечную сумму)
100 000 000 000 000 (начальное значение суммы = 0)
101 000 000 010 100 (предел счётчика i = 20)
110 000 000 000 001 (шаг счётчика i = 1)
111 000 000 000 000 (счётчик i)
Ещё раз хотим отметить, что некоторые ячейки памяти мы использовали в качестве чисел
, а другие - как команды (хотя и они могут рассматриваться как числа).
А теперь, если хотите, можно решить этот пример на
практике