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



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


Блок 89 [89 :0] ( Глава 9. Упражнения 1. 02 из 04 ) ( 3.) : .ЕУЧЕ ( адр -- ) 0 BEGIN OVER OVER + С" 0= 0= WHILE 1+ REPEAT 1+ TYPE ; ( В Форт-83 вы можете просто выдать адр SPAN @ TYPE ) ( 4.) CREATE $SPACE 258 ALLOT ( оставляет 2 байта для нулей ...) : GET$ ( -- адр ) $SPACE 1+ 255 OVER OVER BLANK ." ?" OVER OVER EXPECT -TRAILING $SPACE C! 1- ; ( В Форт-83 это описание будет иметь вид: ) : 83GET$ ( - $адр ) $SPACE 1+ 258 ." ?" EXPECT $SPACE DUP SPAN @ SWAP C! ;

Блок 90 [90 :0] ( Глава 9. Упражнения 1. 03 из 04 ) ( 5. ) : ADD$ ( - $адр) $SPACK C@ 255 < IF $SPACE DUP C@ + 255 $SPACE C@ - 1+ OVER OVER BLANK ." ?" OVER OVER EXPECT -TRAILING $SPACE C@ + $SPACE С! DROP $SPACE ELSE ." Not enough room to add string " $SPACE EXIT THEN ; ( 6.) : ADD$1 ( -- $адр ) $SPACE C@ 255 < IF $SPACE DUP C@ + 255 $SPACE C@ - 1+ OVER OVER BLANK ." ?" OVER OVER EXPECT -TRAILING $SPACK C@ + DUP 254 > IF DROP DROP $SPACE EXIT THEN $SPACE C! DROP $SPACE ELSE ." Not enough room to add string! " $SPACE EXIT THEN ;

Блок 91 [91 :0] ( Глава 9. Упражнения 1. 04 из 04 ) ( 7.) : !DOLLAR$ ( d --) SWAP OVER DABS DUP $SPACE C! $SPACE 1+ SWAP CMOVE ; ( 8. ) : LEFT$ ( адр1 n -- адр2 ) OVER C@ MIN DUP ROT 1+ PAD 1+ ROT CMOVE PAD C! PAD ;

Блок 92 [92 :0] ( Глава 9. Упражнения 2. 01 из 02 ) ( 1. ) ( следует ли нам заботиться о начальном обнулении длины ? ) : VARIABLE ( n -- ) CREATE ALLOT ; ( 2. ) : $! ( $адр1 $адр2 -- ) OVER C@ 1+ CMOVE ; ( 3. ) : $GET ( $адр -- ) 34 WORD SWAP OVER C@ 1+ CMOVE ; ( 4. ) : $" ( --$адр ) 34 WORD PAD OVER C@ 1+ CMOVE PAD ; ( 5. ) ( $" входная строка" $SPACE $! , например, решает стоящую задачу.) ( 6. ) CREATE CHOCES $1 , $2 , $3 , $4 , $5 , $6 , $7 . $8 , $9 , $10 , ) : .$CHOISE ( n -- ) 1- 2 * CHOICES + @ COUNT TYPE ;

Блок 93 [93 :0] ( Глава 9. Упражнения 2. 02 из 02 ) ( 7. ) 2 20 $VARIABLE 1STRING 20 $VARIABLE 2STRINC 3 20 $VARIABLE 3STRING 20 $VARIABLE 4STRING CREATE NSTRING 1STRING , 2STRING , 3STRING , 4STRING , : PARSE$ TIB 80 BLANK 0 >IN ! ." ?" QUERY 4 0 DO 35 WORD I 2 * NSTRING + @ $! LOOP TIB 80 BLANK ; ( 8. ) : PARSE$1 TIB 80 BLANK 0 >IN ! ." ?" QUERY 4 0 DO 35 WORD >IN @ .


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