Блок 58 [58 :0] ( Глава 6. Упражнения 4. 06 из 06 ) ( 7и. ) : DKEY KEY DUP 31 > OVER 127 < AND IF 32 - DVORAK + С@ THEN ; ( DKEY используется также, где обычно ) ( 8. ) ( применяется KEY ) CREATE KEYBD FIND DKEY , FIND KEY , VARIABLE ?KBD ( В Форт-83 используйте ' вместо FIND. CONSTANT было бы быстрее, но скорость здесь не важна.) : CHOICE CR ." Type 1 for Dvorak" CR ." Type 2 for QWERTY" KEY DUP 49 - 0 MAX 1 MIN 2* KEYBD + @ ?KBD ! ; : NEWKEY ?KBD @ EXECUTE ; : TEST BEGIN NEWKEY EMIT 0 UNTIL ; ( Используется для теста клавиатуры. )
Блок 59 [59 :0] ( Глава 6. Упражнения 5. 01 из 03 ) ( 1.) 9 ARRAY NUMBERS : CLASS ( вес -- ) 10 / 0 МАХ 9 MIN ; : COUNTS ( n -- ) CLASS 1 SWAP NUMBERS +! ; ( 2.) 9 ARRAY WTSUM : !W ( вес счет -- ) DUP CLASS WTSUM +! ; ( 3. ) : .TOT-#S CR 10 0 DO I NUBMERS @ 6 .R LOOP ; : .TOT-WT CR 10 0 DO I WTSUM @ 6 .R LOOP ; : .AVE-WT CR 10 0 DO I WTSUM @ ( 4. ) I NUMBERS @ / 6 .R LOOP ; : !WT ( w -) DUP COUNTS !W .TOT-WT .TOT-#S .AVE-WT ; : INIT 10 0 DO DO 0 I WTSUM ! 0 I NUMBERS ! LOOP ; ( Используйте INIT для начального обнуления массива)
Блок 60 [60 :0] ( Глава 6. Упражнения 5. 02 из 03 ) 1 8 ARRAY NUMWTS : CLASS ( вес --) 10 / 0 МАХ 9 MIN ; ( Аналог.