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


УПРАЖНЕНИИ


4.1. Какое значение оставляет в стеке выражение 0= NOT при следующих значениях аргумента- 1, 0, 200?

4.2. Объясните, как поведет себя артишок при указанных выше значениях

4.3. Определите слово с именем РАЗРЕШЕНИЕ, которое берет из стека значение, соответствующее возрасту некоторого лица, и выводит одно из двух сообщений (согласно установленным в вашей местности порядкам)- Употребление спиртных напитков разрешено По возрасту не положено

4.4. Определите слово с именем ПРОВЕРКА-ЗНАКА, которое проверяло бы число, находящееся в стеке, и выдавало бы одно из трех сообщений- «ПОЛОЖИТЕЛЬНОЕ», «НУЛЬ» или «ОТРИЦАТЕЛЬНОЕ».

4.5. Напишите определение <> (не равно), которое в отличие от определения — (минус) всегда оставляло бы в стеке значение «истина» или "ложь"

4.6. Напишите определение XOR, используя другие логические операторы, такие, как AND, OR и NOT.

4.7. В гл 1 мы определили слово с именем STARS, но оно не выполняется правильно с аргументом, равным нулю (В Форт-системах, соответствующих Стандаргу-83, будет выведено 65535 звездочек, в остальных— одна) предложите на основе старого определения новый вариант STARS, который был бы свободен от указанного недостатка.

4.8. Напишите определение слова NEGATE (оно, между прочим, входит о состав Форт-систем), которое меняло бы знак числа в стеке на противоположный (4 - пpи этом становится —4, и наоборот). После этого, используя NEGATE, создайте слово ABS, чтобы поместить в стек абсолютное значение заданного числа n (Слово ABS также есть в вашей системе.)

4.9. Напишите определение слова /UP, которое округляло бы остаток от деления, не равный нулю. (При решении задачи: «Сколько ящиков потребу ется для упаковки п предметов?», для размещения округленного остатка потребуется дополнительный ящик.)

4.10. Напишите определение для слова  WITHIN (В ИНТЕРВАЛЕ) которое выбирает из стека три аргумента ( n нижняя-граница верхняя-граница -- )

и помещает в стек истинное значение только в том случае, когда n находится внутри диапазона: нижняя-граница <= n < верхняя-граница

4.11. Существует игра с угадыванием числа (программируя ее, вы получите больше удовольствия, чем в нее играя). Вначале вы вводите некоторое число в стек, причем можете сохранить это число в тайне, выполнив слово PAGE - которое очищает экран терминала. Затем вы просите своего партнера попытаться угадать задуманное число. Предполагаемое значение играющий должен ввести вместе со словом УГАДАЙ например. 100 УГАДАЙ

Компьютер должен выдать ответ «Слишком большое», «Слишком маленькое» или «Правильно!». Напишите определение для слова УГАДАЙ в предположении, что после нескольких попыток ответа введенные числа будут находиться в стеке. После правильного ответа стек необходимо очистить

4.12. С помощью операторов IF ... ELSE ... THEN напишите определение с именем ПРОПИСЬ, которое выводит число, находящееся в стеке, в виде слов на естественном языке. Диапазон выводимых чисел от -4 до 4. Если в стеке находится число вне этого диапазона, то должно выдаваться сообщение «Выходит за диапазон». Например: 2 ПРОПИСЬ Дра ок -4 ПРОПИСЬ Минус четыре ок 7 ПРОПИСЬ Выходит за диапазон ок

Создайте по возможности короткое определение. (Указание: слово ABS выдает абсолютное значение числа, находящегося в стеке).

4.13. Используя созданное в упр. 4.10. определение WITHIN, разработайте еще одну игру с угадыванием чисел и назовите ее ЛОВУШКА. По условию игры вы вводите значение, не известное вашему партнеру, после чего он пытается угадать заданное число, вводя два числа, между которыми, по его мнению, заключено искомое значение, например:0 1000 ЛОВУШКА Между ок

330 660 ЛОВУШКА Между ок 440 550 ЛОВУШКА Вне ок 330 440 ЛОВУШКА Между ок

и т. д. до тех пор, пока ваш партнер не отгадает ответ: 391 391 ЛОВУШКА Вы угадали! ok

Совет: вы можете предусмотреть в своей программе следующее: когда с искомым числом совпадает только одно число из задаваемого интервала, она не будет выдавать «Между».

Про ошибки на сайте обязательно сообщите .




Начало  Назад  Вперед