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



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


факторизируем [a + b]^2 ) : (A.+.B)^2 ( а b -- n ) + DUP * ; ( г. факторизируем 3[а + b]^2 : 3.(A.+.B)^2 ( a b -- n ) (A.+.B)^2 3 * ; ( д. факторизируем [a + b]^4 ) : (a.+.b)^4 ( a b -- n) (A.+.B)^2 DUP * ; ( Оказывается даже сложные выражения могут стать простыми за счет факторизации)

Блок 26 [26 :0] ( Глава 4. Упражнения 4. 01 из 03 ) ( 1. ) ( а. 25E15 б. 25E-5 в. 25E5 г. 25E-6 д. 1Е-5 е. 1 ж. 25E2 з. 500.005 и. 499.998 к. 499.995 ) ( 2. ) : EXP* ( m1 e1 m2 e2 -- m3 e3 ) ROT + ROT ROT * SWAP ; ( 3. ) ( Здесь не принято никаких мер против переполнения : : EXP/ ( m е m е -- m е) ROT SWAP - 2 - ROT 100 * / SWAP ; ( Мантисса - 2 и показатель * 100 способствуют ( 4. ) ( предотвращению переполнения ) : TOM ( km m - m ) SWAP 1000 * + ; ( 5. ) : TOCMMM ( mm -- m mm ) 10 /MOD SWAP ;

Блок 27 [27 :0] ( Глава 4. Упражнения 4. 02 из 03 ) ( 6. ) : TOKM ( m -- km m ) 1000 /MOD SWAP ; ( 7. ) : TOFT ( mi ft - ft ) ROT 5280 * + ; ( 8. ) : TOMILES ( ft - mi ft ) 5280 /MOD SWAP ; ( 9. ) : FTTOM ( ft -- m) 305 1000 */ ; ( 10. ) : ТОMЕТRIС ( mi ft -- km cm ) TOFT FTTOM TOKM ; ( 11. ) : C->F ( c -- f ) 9 5 */ 320 + ;

Блок 28 [28 :0] ( Глава 4. Упражнения 4. 03 из 03 ) ( 12. ) : CIRCUM ( -- длина окружности в мм ) 10000 355 113 */ 3 8 */ ; ( Проблема заключается в подавлении переполнения) ( 13. ) : IN->FT ( in -- ft ) 12 /MOD SWAP 6 / + ; ( 6 / + эквивалентно добавлению 2/12 остатка. )

Блок 29 [29 :0] ( Глава 4. Упражнения 5. 01 из 13 ) ( 1.) 4.294.967.296 равно 2 в 32-ой степени. ) ( 2. ) ( 2DROP [ d -- ] 2DUP [ d -- d d ] 2SWAP [ d1 d2 -- d2 d1 ] 2OVER [ d1 d2 -- d1 d2 d1 ] 2ROT [ d1 d2 d3 -- d2 d3 d1 ] Не существует стандартных слов-эквивалентов PICK, ROLL или DEPTH для чисел двойной длины ) ( 3.) : NEW2DROP ( d -- ) DROP DROP ; ( 4. ) ( Это не то же самое. Число двойной длины содержит старшее и младшее числа, каждое из которых должно быть задублировано. )

Блок 30 [30 :0] ( Глава 4. Упражнения 5. 02 из 03 ) ( 5. ) : NEW2DUP ( d -- d d ) OVER OVER ; ( 6. ) 2SWAP83 ( d1 d2 -- d2 d1 ) 3 ROLL 3 ROLL ; ( F-83) 2SWAP79 ( d1 d2 -- d2 d1 ) 4 ROLL 4 ROLL ; ( F-79) ( 7. ) 2ROT83 ( d1 d2 d3 -- d2 d3 d1 ) 5 ROLL 5 ROLL ; ( F-83) 2ROT7( ( d1 d2 d3 -- d2 d3 d1 ) 6 ROLL 6 ROLL ; ( F-79) ( 8. ) 2OVER83 ( d1 d2 -- d1 d2 d1 ) 3 PICK 3 PICK ; ( F-83) 2OVER79 ( d1 d2 -- d1 d2 d1 ) 4 PICK 4 PICK ; ( F-79) ( 9. ) 2ROLL83 2 * DUP ROLL SWAP 1- ROLL ; ( FORTH-83) 2ROLL79 2 * DUP 1+ ROLL SWAP ROLL ; ( FORTH-79)




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