Способ мышления-Форт


         

DUP ЗАРЯДИТЬ DUP ЦЕЛИТЬ СТРЕЛЯТЬ


: ЗАПУСТИТЬ ( ракета#) DUP ЗАРЯДИТЬ DUP ЦЕЛИТЬ СТРЕЛЯТЬ ;
В соответствии с соглашением, последняя версия предпочтительней, поскольку ЗАРЯДИТЬ и ЦЕЛИТЬ получаются чище. Если бы Вам понадобилось написать слово ГОТОВ, Вы могли бы это сделать так:
: ГОТОВ ( ракета#) DUP ЗАРЯДИТЬ ЦЕЛИТЬ ;
а не
: ГОТОВ ( ракета#) ЗАРЯДИТЬ ЦЕЛИТЬ DROP ;
------------------------------------------------------------ СОВЕТ Используйте ноль в качестве точки начала отсчета. ------------------------------------------------------------
По привычке люди нумеруют вещи, начиная с первой: "первая, вторая, третья," и т.д. С другой стороны, математические модели более естественно работают при начале отсчета от нуля. Поскольку компьютеры являются процессорами чисел, программное обеспечение становится легче писать при использовании нуля в качестве точки отсчета.
Для иллюстрации предположим, что у нас есть таблица 8-байтовых записей. Первая запись занимает первые восемь байтов таблицы. Для вычисления ее начального адреса мы добавляем "0" к адресу ТАБЛИЦА. Для вычисление начального адреса "второй" записи мы добавляем "8" к адресу ТАБЛИЦА.
Рис.4-6. Таблица 8-байтовых записей.
ТАБЛИЦА +--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | П Е Р В А Я З А П И С Ь | +--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | В Т О Р А Я З А П И С Ь | +--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
Легко написать формулу для получения таких результатов:
первая запись начинается на: 0 Х 8 = 0 вторая запись начинается на: 1 Х 8 = 8 третья запись начинается на: 2 Х 8 = 16
Мы можем легко написать слово, которое преобразует номер записи в ее стартовый адрес:
: ЗАПИСЬ ( #записи -- адрес) 8 * ТАБЛИЦА + ;
Так в терминах компьютера имеет смысл называть "первой записью" 0-вую запись.
Если постановка Вашей задачи предполагает начало отсчета с единицы, то все нормально. Используйте счет относительно нуля по всей Вашей задаче и затем, только в "лексиконе пользователя" (наборе слов, которые будет употреблять конечный пользователь) сделайте преобразование из одной привязки в другую:

Содержание  Назад  Вперед