Язык программирования Форт



Приложение Д. Ответы к упражнениям - часть 12


Блок 54 [54 :0] ( Глава 6. Упражнения 4. 02 из 06 ) ( 3. ) VARIABLE COUNT1 VARIABLE COUNT2 VARIABLE COUNT3 0 COUNT1 ! 0 COUNT2 ! 0 COUNT3 ! VARIABLE WT1 VARIABLE WT2 VARIABLE WT3 0 WТ1 ! 0 WT2 ! 0 WT3 ! ( 4а. ) : CLASS ( wt -- n ) 100 / 0 MAX 2 MIN ; ( 4b. ) CREATE COUNTADDRS COUNT1 , COUNT2 , COUNT3 , CREATE WTADDRS WT1 , WT2 , WT3 , ( 4c. ) : BW ( wt --) DUP CLASS 2 * DUP 1 SWAP COUNTADDRS + @ +! WTADDRS + @ +! ;

Блок 55 [55 :0] ( Глава 6. Упражнения 4. 03 из 06 ) ( 4d. ) : SUMMARY ( n -- ) CR ." In class " DUP . ." there are " 2 * DUP COUNTADDRS + @ @ . ." bolts with a total weight of " DUP WTADDRS + @ @ . CR ." and а mean weight of " DUP WTADDRS + @ @ SWAP COUNTADDRS + @ @ / . ." ." CR ; ( 5. ) CREATE COUNT 0 , 0 , 0 , CREATE WEIGHTS 0 , 0 , 0 , : NBW ( wt -- ) DUP CLASS 2 * DUP 1 SWAP COUNT + +! WEIGHTS + +! ; ( Упражн. 4х5 иллюстрируют 2 способа сделать одну и ту же вещь. 4 также показывает насколько легко использовать переменные совместно с таблицами. Обратите внимание на сходство описания WT и NWT. NWT лучше, так как оно требует меньше памяти и времени, хотя 4 имеет небольшое преимущество контроля значений с помощью, например, WT1 @ . .)

Блок 56 [56 :0] ( Глава 6. Упражнения 4. 04 из 06 ) ( 5. ) : SMPHRASE ." under 200 grams, is " ; : MDPHRASE ." 100 to 200 grams, is " ; : LGPHRASE ." more then 200 gramss, is " ; CREATE PHRASES FIND SMPHRASE , FIND MDPHRASE , FIND LGPHRASE , ( В Форт-8З следует использовать ' вместо FIND . ) ( 6. ) 0 CONSTANT SMALL 2 CONSTANT MEDIUM 4 CONSTANT LARGE : SAY ( n -- n ) DUP PHRASES + @ EXECUTE ; : CNT ( n -- ) ." Total count, " SAY COUNT + @ . ; : WEICHT ( n -- ) ." Total weight, " SAY WE1GHTS + @ . ; : AVERAGE ( n -- ) ." AVERAGE weight, " SAY DUP WEIGHTS + @ SWAP COUNTS + @ / . ; ( SAY удаляет ненужные части следующих слов; эта техника, наэываемая разбором, широко используется в Форте.)

Блок 57 [57 :0] ( Глава 6.


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