Вспомните задачу о Вычислителе, умеющем только умножать на 2 и прибавлять 1 (задание 2). Разрабатывать для него рациональные (короткие) программы будет значительно проще, если вы воспользуетесь следующей блок−схемой:
Используя эту блок−схему, составьте рациональные программы получения из числа 0 чисел 1024 и 500.
Блок−схема предполагает обратный процесс — уменьшение необходимого числа до 0. Порядок действий для выполнения поставленной задачи будет обратным последовательности действий, сделанных в процессе следованию данной блок−схеме.
Исполнение блок−схемы для числа 1024:
1) 1024 — четное, делим на 2 (получаем 512);
2) 512 — четное, делим на 2 (получаем 256);
3) 256 — четное, делим на 2 (получаем 128);
4) 128 — четное, делим на 2 (получаем 64);
5) 64 — четное, делим на 2 (получаем 32);
6) 32 — четное, делим на 2 (получаем 16);
7) 16 — четное, делим на 2 (получаем 8);
8) 8 — четное, делим на 2 (получаем 4);
9) 4 — четное, делим на 2 (получаем 2);
10) 2 — четное, делим на 2 (получаем 1);
11) 1 — нечетное, вычитаем 1 (получаем 0).
Значит, программа получения числа 1024 из числа 0:
1) прибавить 1 (результат: 1);
2) умножить на 2 (результат: 2);
3) умножить на 2 (результат: 4);
4) умножить на 2 (результат: 8);
5) умножить на 2 (результат: 16);
6) умножить на 2 (результат: 32);
7) умножить на 2 (результат: 64);
8) умножить на 2 (результат: 128);
9) умножить на 2 (результат: 256);
10) умножить на 2 (результат: 512);
11) умножить на 2 (результат: 1024).
Исполнение блок−схемы для числа 500:
1) 500 — четное, делим на 2 (получаем 250);
2) 250 — четное, делим на 2 (получаем 125);
3) 125 — нечетное, вычитаем 1 (получаем 124);
4) 124 — четное, делим на 2 (получаем 62);
5) 62 — четное, делим на 2 (получаем 31);
6) 31 — нечетное, вычитаем 1 (получаем 30);
7) 30 — четное, делим на 2 (получаем 15);
8) 15 — нечетное, вычитаем 1 (получаем 14);
9) 14 — четное, делим на 2 (получаем 7);
10) 7 — нечетное, вычитаем 1 (получаем 6);
11) 6 — четное, делим на 2 (получаем 3);
12) 3 — нечетное, вычитаем 1 (получаем 2);
13) 2 — четное, делим на 2 (получаем 1);
14) 1 — нечетное, вычитаем 1 (получаем 0).
Значит, программа получения числа 500 из числа 0:
1) прибавить 1 (результат: 1);
2) умножить на 2 (результат: 2);
3) прибавить 1 (результат: 3);
4) умножить на 2 (результат: 6);
5) прибавить 1 (результат: 7);
6) умножить на 2 (результат: 14);
7) прибавить 1 (результат: 15);
8) умножить на 2 (результат: 30);
9) прибавить 1 (результат: 31);
10) умножить на 2 (результат: 62);
11) умножить на 2 (результат: 124);
12) прибавить 1 (результат: 125);
13) умножить на 2 (результат: 250);
14) умножить на 2 (результат: 500).