Замечание по поводу компиляции строк. Определение слова МАТЕРИАЛ требует трех аргументов для каждого материала, одним из которых является адрес некоторой строки. Слово .МАТЕРИАЛ с помощью этого адреса выводит название рассматриваемого материала. Для помещения этой строки в словарь и передачи адреса слову МАТЕРИАЛ мы определили слово с именем ," (запятая-кавычки).
В первую очередь оно вносит в вершину стека значение HERE для слова МАТЕРИАЛ, так как именно по данному адресу будет компилироваться строка, а затем инициирует слово STRING для компиляции строкового литерала, ограниченного двойной кавычкой. В некоторых системах это слово можно определить следующим образом: : STRING ( с) WORD С@ 1 + ALLOT ;
Block # 246 0 \ Определение массы конической кучи - одинарная длина 1 VARIABLE ПЛОТНОСТЬ VARIABLE ТЕТА VARIABLE Н.М. 2 : ," ( --a) HERE ASCII " STRING ; 3 : .МАТЕРИАЛ Н.М. @ COUNT TYPE SPACE ; 4 : МАТЕРИАЛ ( 'строка плотность тета -- ) CREATE , , , 5 DOES> DUP @ ТЕТА ! 2+ DUP @ ПЛОТНОСТЬ ! 2+ @ Н.М. ! ; 6 7 : ФУТОВ ( футы -- вec-в-масштабе) 10 * ; 8 : ДЮЙМОВ ( вес-в-масштабе -- вес-в-масштабе') 9 100 12 */ 5 + 10 / + ; 10 11 : /TAN ( n - n') 1000 TETA @ */ ; 12 : КУЧА ( вес-в-масштабе -- ) 13 DUP DUP 10 */ 1000 */ 355 339 */ /TAN /TAN 14 ПЛОТНОСТЬ @ 200 */ ." = " . ." тонн " .МАТЕРИАЛ ; 15 247 LOAD
Block # 247 0 \ Таблица материалов 1 \ адрес-строки плотность тета 2 ," цемента" 131 700 МАТЕРИАЛ ЦЕМЕНТ 3 ," рыхлого гравия" 93 649 МАТЕРИАЛ РЫХЛЫЙ-ГРАВИЙ 4 ," плотного гравия" 100 700 МАТЕРИАЛ ПЛОТНЫЙ-ГРАВИЯ 5 ," сухого песка" 90 734 МАТЕРИАЛ СУХОЙ-ПЕСОК 6 ," мокрого песка" 118 900 МАТЕРИАЛ МОКРЫЙ-ПЕСОК 7 ," глины" 120 727 МАТЕРИАЛ ГЛИНА 8 9 10 11 12 ЦЕМЕНТ 13 14 15
Block # 248 0 \ Масса конической кучи - двойная длина 1 VARIABLE ПЛОТНОСТЬ VARIABLE TETA VARIABLE H.М. 2 : ," ( -- a) HERE ASCII " STRING ; 3 : .МАТЕРИАЛ Н.М. @ COUNT TYPE SPACE ; 4 : DU.3 ( du -- ) <# # # # ASCII .HOLD #S #> TYPE SPACE ; 5 : МАТЕРИАЛ ( 'строка плотность тета -- ) CREATE 6 DOES> DUP @ TETA ! 2+ DUP @ ПЛОТНОСТЬ ! 2+ @ Н.М. ! ; 7 : КУБ ( d -- d') 2DUP OVER 10 M*/ DROP 10 M*/ 8 : /TAN ( d -- d') 1000 TETA @ М*/ ; 9 : ФУТОВ ( d -- ) КУБ 355 339 M*/ ПЛОТНОСТЬ @ 1 М*/ 10 /TAN /TAN 5 M+ 1 I0 M*/ 11 2DUP ." = " D. ." фунтов " .МАТЕРИАЛ 12 1 2 M*/ ." или " DU.3 ." тонн " ; 13 247 LOAD 14 15