Программирование >>  Структурное программирование 

1 ... 128 129 130 [ 131 ] 132 133 134 ... 342


Животное

Тип движения

Процент времени

Перемещение

Черепаха

Быстрое ползанье

3 клетки вправо

Скольжение

6 клеток влево

Медленное ползанье

1 клетка вправо

Заяц

Движения нет

Большой прыжок

9 клеток вправо

Сильное скольжение

12 клеток влево

Маленький прыжок

1 клетка вправо

Маленькое скольжение

2 клетки влево

Используйте переменные для отслеживания позиций животного (позиции с номерами 1-70). Каждое животное стартует с позиции 1 ( стартовые ворота ). Если животное скользит налево и должно оказаться перед клеткой 1, движение начинается заново с клетки 1.

Используйте проценты в приведенной таблице, вырабатывая случайные целые числа i в диапазоне от 1 до 10 включительно. Для черепахи при i от О до 5 - быстрое ползанье, при i от 6 до 7 - скольжение, при i от 8 до 10 - медленное ползанье. Аналогичный прием используйте для движения зайца.

Начните движение печатью

ГОНГ !!!!!

И ОНИ ПОШЛИ !!!!!

Затем на каждом такте (т.е. при каждом повторении цикла) печатайте 70-позиционную строку, показывающую букву Ч в позиции черепахи и букву 3 в позиции зайца. Может случиться, что оба животных окажутся на одной и той же клетке. В этом случае черепаха кусает зайца и ваша программа должна печатать ОХ!II, начиная с этой позиции. Все печатаемые позиции, отличающиеся от Ч, 3 или ОХ!П, должны быть пробелами.

После печати каждой строки проверяйте, достигло или миновало животное клетку 70. Если да, то печатайте, кто победитель, и заканчивайте моделирование. Если победила черепаха, печатайте ПОБЕДИЛА ЧЕРЕПАХА!!! УРА!!! Если победил заяц, печатайте: Победил заяц. Эх. Если оба животных победили одновременно, вы можете отдать предпочтение черепахе или напечатать: Равный счет. Если ни одно животное не победило, повторяйте цикл моделирования для следующего отрезка времени. Если вы готовы запустить программу на выполнение, пригласите группу болельщиков. Вы будете изумлены реакцией вашей аудитории!

Специальный раздел: построение вашего собственного компьютера

В следующих нескольких задачах мы покинем мир программирования на языке высокого уровня. Мы разденем донага компьютер и посмотрим его внутреннюю структуру. Мы познакомимся с ма-



шинным языком программирования и напишем несколько программ на машинном языке. Чтобы закрепить этот особенно значимый опыт, мы построим затем компьютер (основываясь на технике программного моделирования), на котором вы сможете выполнять программы на машинном языке!

5.18. (Программирование на машинном языке) Создадим компьютер, который назовем Простотрон. В соответствии со своим именем это простая машина, но, как мы вскоре увидим, достаточно мош;ная. Простотрон выполняет программы, написанные на единственном понимаемом им языке - языке машины Простотрон, или, для краткости, ЯМП.

Простотрон содержит аккумулятор - специальный регистр, в котором находится информация перед тем, как она будет использована Простотроном в вычислениях или специальным образом исследована. Вся информация в Простотроне обрабатывается в терминах слов. Слово - это знаковое четырехзначное десятичное число, например, +3364, -1293, +0007, -0001 и т.д. Простотрон имеет память на 100 слов и эти слова доступны по номерам их ячеек 00, 01, 99.

Перед запуском программы на ЯМП мы должны загрузить ее или разместить в памяти. Первая команда (или оператор) каждой программы на ЯМП всегда помеш;ается в ячейку 00. Моделирующая программа начинает выполнение с этой ячейки.

Каждая команда, написанная на ЯМП, занимает в памяти Просто-трона одно слово (и, следовательно, команды имеют знаковые четырехзначные десятичные номера). Мы будем считать, что знак команды ЯМП всегда плюс, но знак слова данных может быть плюсом или минусом. Каждая ячейка в памяти Простотрона может содержать либо команду, либо значение данных, используемых программой, либо соответствовать неиспользуемой (и, следовательно, неопределенной) области памяти. Первые две цифры каждой команды ЯМП служат кодом операции, который указывает, какая операция выполняется. Коды операций ЯМП приведены на рис. 5.37.

Последние две цифры в команде ЯМП являются операндом и представляют собой адрес ячейки памяти, содержащей слово, к которому относится операция. Теперь рассмотрим несколько простых программ на ЯМП.

Первая программа на ЯМП (Пример 1) считывает два числа с клавиатуры, складывает их и печатает их сумму. Команда +1007 считывает первое число с клавиатуры и помещает его в ячейку 07 (которая имеет нулевое начальное значение). Затем команда +1008 считывает следующее число в ячейку 08. Команда загрузки +2007 помещает первое число в аккумулятор, а команда сложения +3008 прибавляет второе число к числу в аккумуляторе. Все арифметические команды. ЯМП оставляют результаты в аккумуляторе. Команда сохранения +2109 помещает результат обратно в память в ячейку 09, из которой команда печати +1109 берет число и печатает его (как знаковое четырехзначное десятичное число). Команда останова +4300 завершает выполнение.



Код операции

Значение

Операции ввода/вывода:

#define READ 10

Считать слово с терминала в указанную ячейку памяти

#define WRITE 11

Напечатать слово из указанной ячейки памяти на терминале

Операции загрузки/хранения:

tdefine LOAD 20

Загрузить,слово из указанной ячейки памяти в аккумулятор

#define STORE 21

Сохранить слово из аккумулятора в указанной ячейке памяти

Арифметические операции:

#define ADD 30

Сложить слово из указанной ячейки памяти со словом в аккумуляторе (результат оставить в аккумуляторе)

#define SUBTRACT 31

Вычесть слово в указанной ячейке памяти из слова в аккумуляторе (результат оставить в аккумуляторе)

#define DIVIDE 32

Разделить слово в указанной ячейке памяти на слово в аккумуляторе (результат оставить в аккумуляторе)

#define MULTIPLY 33

Умножить слово в указанной ячейке памяти на слово в аккумуляторе (результат оставить в аккумуляторе)

Операции передачи управления:

tdefine BRANCH 40

Передать управление указанной ячейке памяти

tdefine BRAMCHNEG 41

Передать управление указанной ячейке памяти, если значение в аккумуляторе отрицательное

#define BRANCHZERO 42

Передать управление указанной ячейке памяти, если значение в аккумуляторе равно нулю

#define HALT 43

Останов, т.е. программа заканчивает выполнение задания

Рис. 5.37. Коды операций на языке машины Простотрон (ЯМП)

Пример1 Ячейка

Номер

Команда

+1007

(Прочитать А)

+1008

(Прочитать В)

+2007

(Загрузить А)

+3008

(Прибавить В)

+2109

(Сохранить С)

+1109

(Печать С)

+ 4300

(Останов)

+0000

(Переменная А)

+0000

(Переменная В)

+0000

(Результат С)



1 ... 128 129 130 [ 131 ] 132 133 134 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика