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



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


Блок 70 [70 :0] ( Глава 7. Упражнения 4. 01 из 02 ) ( 1.) CREATE МАТH , FIND + , FIND - , FIND * , FIND / , ( В Форт-83 используйте ' вместо FIND ) : ARITH ( n1 n2 n3 -- ) 1- 2* MATH + @ EXECUTE ; : ARITH' ( n1 n2 n3 -- n4 ) DUP 0 > ОVER 5 < AND IF 1- 2* MATH + @ EXECUTE ELSE DROP DROP DROP 0 ТHEN ; ( 2.) : ARITH-' ( n1 n2 n3 -- n4 ) NCASE 1 3 4 " + - * / OTHERWISE DROP DROP 0 CASEND ; ( 3. ) : NEWARITH ( n1 n2 -- n3 ) KEY ACASE +-*/" + - * / OTHERWISE DROP DROP 0 CASEND ;

Блок 71 [71 :0] ( Глава 7. Упражнения 4. 02 из 02 ) ( 4. ) : NEWARITH' KEY DUP 43 = IF DROP + ELSE DUP 45 = IF DROP - ELSE DUP 42 = IF DROP * ELSE 47 = IF / ELSE DROP DROP 0 THEN THEN THEN THEN ; ( 5.) : NEWARITH'' ( --) KEY ACASE +-*/" + - * / OTHERWISE ." Incorrect input " ABORT CASEND ; ( 6. ) ( Если вы хотите изменить задание путем замены содержимого вектора. Векторное исполанениее кроме того быстрее. )

Блок 72 [72 :0] ( Глава 8. Упражнения 1. 01 из 06 ) ( 1. ) : ASCIITAB ( - ) CR 1+ SWAP DO I 4 .R 3 SPACES I EMIT CR LOOP ; ( 2. ) : ASCIICHAR ( -- ) CR 33 9 0 DO 10 0 DO DUP I J 10 * + + 4 .R LOOP CR 10 0 DO DUP I J 10 * + + 3 SPACES EMIT LOOP CR LOOP DROP : ( 3. ) : ZERDIAG ( адр -- ) 5 0 DO DUP I 5 * I + 2 * + 0 SWAP ! LOOP DROP ;

Блок 73 [73 :0] ( Глава 8. Упражнения 1. 01 из 06 ) ( 4.) : SUMCOL ( адр -- n1 n2 n3 n4 n5 ) 5 0 DO 0 SWAP 5 0 DO DUP I J + 2 * + @ ROT + SWAP LOOP LOOP DROP ; ( 5.) : X^5 ( n - n^5 ) DUP 4 0 DO OVER * LOOP ;

Блок 74 [74 :0] ( Глава 8. Упражнения 1. 03 из 06 ) ( 6.) : D** ( n1 n2 -- ) ?DUP 0= IF DROP 1. - ELSE DUP 1 = IF DROP 0 ELSE 0 ROT 0 2SWAP 2OVER 2SWAP DROP 1- 0 DO 2OVER D* LOOP 2SWAP 2DROP THEN THEN ( 7. ) : DUMP ( адр -- ) CR BASE @ SWAP HEX 10 0 DO 16 0 DO DUP I J 16 * + + C@ 3 .R LOOP CR LOOP DROP BASE ! ;

Блок 75 [75 :0] ( Глава 8. Упражнения 1 04 из 06 ) ( 8. ) : DUMP2 CR BASE @ SWAP HEX 10 0 DO DOP I 16 * + 5 .R 16 0 DO DUP I J 16 * + + С@ 3 .R LOOP CR LOOP DROP BASE ! ; ( 9. ) : DUMP3 ( адр -- ) CR BASE @ SWAP HЕХ 5 0 DO DUP I 16 * + 5 U.R 16 0 DO DUP I J 16 * + + С@ 3 .R LOOP CR 5 SPACES 16 0 DO DUP 2 SPACES I J 16 * + + С@ DUP 32 < OVER 127 > OR IF DROP 46 EMIT ELSE EMIT THEN LOOP CR LOOP DROP BASE ! ;




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