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



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


Упражнения 2. 01 из 03 ) ( 1.) : PLOT1 CR DEPTH 0 DO MIN XS CR LOOP ; ( Заметьте, насколько элегантнее MIN, чем IF ... THEN. как это сделано в главе 1. ) ( 2.) : РLOТ2 РRINT CR DEPTH 0 DO 79 MIN XS CR LOOP CRT ; ( 3. ) : YS 0 DO 89 EMIT LOOP ; : PLOT3 CR DEPTH 2/ 0 DO YS CR XS CR LOOP ; ( 4. ) : PLOT4 CR DEPTH 0 DO I . 3 SPACES XS CR LOOP ; ( 5. ) : PLOT5 CR DEPTH 0 DO I . 3 SPACES 1- SPACES ." X" CR LOOP ; ( 1- необходима перед SPACES для того, чтобы поместить "X" в конец строки. )

Блок 41 [41 :0]. (Глава 5. Упражнения 2. 02 из 03 ) ( 6.) : PLOT6 CR DEPTH 0 DO I . SPACE 1- 75 1000 */ SPACES ." Х" CR LOOP ; ( Заметьте, что масштабирование выполнено с использованнем 75. ) ( 7.) : PLOT7 CR DEPTH 2/ 0 DO SWAP XS YS CR LOOP ; ( 8. ) : PLOT8 CR DEPTH 2/ 0 DO SWAP 1- SPACES ." X" 1- SPACES ." Y" CR LOOP ; ( 9. ) : PLOT9 СR DEPTH 2/ О DO SWAP 1- SPACES ." X" DUP 1- SPACES ." Y" . CR LOOP ; ( 10. ) : PLOT10 CR DEPTH 2/ 0 DO SWAP 1- SPACES ." X" DUP 60 1000 */ 1- SPACES ." Y" . CR LOOP ;

Блок 42 [42 :0] ( Глава 5. Упражнения 2. 03 из 03 ) ( 11.) : PLOT11 CR DEPTH 2/ 0 SWAP 0 DO OVER SWAP - 3 PICK SWAP 0 DO CB ." ." LOOP SPACES ." X" SWAP OVER . . LOOP DROP ; ( Это описание можно упростить, использовав переменную или второй стек, стек возвратов, который будет описан в следующих главах, вы можете убедиться тeпeрь, насколько проще временное запоминание чисел в PAD как в: ) : PLOT12 CR DEPTH 2/ 0 PAD ! 0 DO OVER OVER PAD @ - 0 DO CR ." ." LOOP SPACES ." X" DUP PAD I . . LOOP ; ( Хотя и не намного короче, PLOT12 имеет более простые манипуляции со стеком, так как предшествующая величина Х [или 0 в начале] записана в PAD. )

Блок 43 [43 :0] ( Глава 5. Упражнения 3. 01 из 03 ) ( 1. ) : UD$. ( ud -- ) TYPE ; ( 2. ) : UD$. ( u -- ) 0 TYPE ; ( 3. ) : S#. ( n -- ) DUP 0< NEGATE SWAP OVER DABS TYPE ; ( Здесь и в следующем упражнении NEGATE, как обсуждалось ранее, в FORTH-83 присутствовать не должен.) ( 4. ) : S$.R ( n1 n2 -- ) SWAP DUP 0< NEGATE SWAP OVER DABS ROT OVER - SPACES TYPE ; ( Длина поля n2, хранится в стеке пока это необходимо, а затем используется ROT OVER - SPACES, как в описании U.R в тексте. )




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