МикроЭВМ "Кроха"
На титульную страницу

Задача:

Найти факториал 6!.

Решение:

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

После нажатия на кнопку "Run" "Кроха" выдаст результат на экран (screen) в десятичном (deg) = 720 и двоичном виде (bin). Заметим, что фаториал 7! и более "Кроха" откажется вычислять и выдаст сообщение о переполнении памяти: "Overflow!".
Ещё раз хотим отметить, что некоторые ячейки памяти мы использовали в качестве чисел , а другие - как команды (хотя и они могут рассматриваться как числа).

Кнопка Run запуск программы
Кнопка Step следущий шаг программы
Кнопка Stop Остановить выполняющуюся программу
Кнопка Clear Очистить память "Крохи" и экран.