Данному образовательному сайту пришлось несколько раз менять свое имя. С 2022 года доступ к нему обеспечивается по URL
emc.orgfree.com

emc.km.ru (2001-2007) ==> educomp.org.ru (2007-2011) ==> educomp.runnet.ru (2011-2021) ==> emc.orgfree.com (2022-...)
Более подробно об истории сайта можно прочитать здесь.


Учебные модели компьютера



Модели (software):

"Е14" (parallel !!!)
"S9PU" (parallel)

Модели (hardware):






Награды сайта
Награды сайта 2005

" Условие: Выдать таблицу умножения заданного числа.

Уточнение: Если заданое число - А, то требуется вывести на табло 1хА, 2хА, ... 9хА.

Решение:

             Ввести А;

             Делать от I=1 до 9;
                { Вычислить R=АхI;
                  Напечатать R
                }  (* конец цикла *)
                Остановить машину;

Написание программы для СМ "Малютка" удобнее начинать с распределения памяти.

Нам требуется выделить ячейки ОП под переменные A, I, R, под константы 1, 9. Быть может, и еще для чего-нибудь.

Распределение памяти:
АдресСодержимоеКомментарий
01- здесь будет значение переменной A;
021- вводится один раз;
039- вводится один раз;
04 - здесь будет значение переменной I;
05R- здесь будет значение переменной R;
06 ... - оставим на всякий случай, хотя место под
09 числа можно выделить где угодно в ОП. Хоть в самом ее конце.

В ячейку 00 занесем константу 00A, указывающую, что программа начинается с ячейки 00A.

Теперь можно приниматься за программу.

Ввод числа А производится вручную. Поэтому в программе никаких особенных операторов для этого не требуется.

Далее стоит оператор цикла. Есть множество способов его реализации. Воспользуемся таким:

  • Сначала зашлем в переменную цикла начальное значение;
  • Затем проверим, не пора ли кончать цикл. И если пора - скакнем за пределы цикла (на оператор остановки);
  • Если не пора - выполняем тело цикла;
  • Последними операторами цикла сделаем увеличение I на 1 и безусловный переход на проверку в начале;

Постараемся записать этот алгоритм на языке СМ "Малютка":
0A002- Начальное значение засылаем в сумматор...
0B104- и сохраняем в переменной цикла.

Теперь встает вопрос о проверке. Имеет смысл вычесть из I конечное значение цикла - 9, и если в результате получится отрицательное число - выходить из цикла.

Но у нас нет проверки на отрицательность (смотри предыдущий файл). Зато есть проверка на нуль. Поэтому вычитаем из I число 10, и в случае равенства 0, выходим из цикла.

Нет у нас и операции вычитания. Надо сначала вызвать константу, затем сменить у нее знак, а уж потом сложить.

Поэтому имеет смысл вместо 9 запасти в третьей ячейке константу -10.

Немного меняем распределение памяти:
01A- вводится каждый раз;
021- вводится один раз;
03-10- вводится один раз; (отображается, как 80А)
04I- вводить не надо;
05R- вводить не надо;
06...- запас.
09...-

Продолжаем написание программы:
0CA03- Вычитаем из I десятку (переменная цикла к этому моменту - в сумматоре).
0DE..- Если получили 0 - выходим из цикла. Пока неизвестно, на какую ячейку.
0E001- Вызываем A в сумматор.
0FB04- Умножаем A на I. Собственно говоря, R нам и не надо. Можно ...
10C00- сходу выдать сумматор на табло.

Пора заканчивать цикл:
11004- Вызываем I в сумматор.
12A02- Добавляем к сумматору 1 и ...
13104- сохраняем в I.

Осталось передать управление на начало цикла. Начало цикла, между прочим, предполагает, что в сумматоре должна быть переменная I. Это в нашей программе выполняется.
1440C- Безусловная передача на начало цикла.
15F00- Остановка машины.

Не забудем записать в ячейку 0D адрес передачи управления
0DE15
и программа готова. "


© А.И.Сенокосов, А.Г.Гейн, 1995
Цитируется по книге Сенокосов А.И., Гейн А.Г. "Информатика 8-9" с разрешения авторов
© Оформление Web-страницы Е.А.Еремин, 2001


Автор сайта - Евгений Александрович Еремин (Пермский государственный педагогический университет). e_eremin@yahoo.com


Free Web Hosting