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


Глава 10. Хранение программ и данных - часть 11


Большим неудобством в Форте может быть слежение за тем, где находятся программы, особенно если они не находятся в последовательных блоках. Определите слово SHOWBLOCKS (показать_блоки) так. что если вы вводите PACFORTH SHOWBLOCKS то увидите 30 33 36 ok, 5. Для слежения за номерами блоков нескольких программ можно также использовать массив типа того, что мы применили в упражнении 3. Предположим, что у вас имеются массивы номеров блоков программ 1PROG. 2PROG и 3PROG. Создайте массив CREATE #PROGS 5 , 1PROG , 2 PROG , 3PROG , Теперь определите слово ?BLOCKS (в_каких_блоках?) так, что если вы напечатаете #PROGS ?BLOCKS то увидите что-нибудь вроде 1 23 25 26 27 2 31 33 39 3 55 56 57 58 60 Надеемся, что в действительности вы никогда не устроите такой беспорядок в ваших блоках. 6. Определите слово LOADEM так, что если вы напечатаете SPROGS 3 LOADEM то будет загружена программа 3PROG из предыдущего примера.

Эти упражнения могут дать вам первоначальную идею для организации блоков в файлоподобные структуры. Мы рассмотрим детальнее данный вопрос в данной главе дальше.

Работа с содержимым блоков

Очевидно, что нужно иметь способ, позволяющий манипулировать содержимым любого блока. Это должен уметь делать редактор. Возможность управления содержимым блоков требуется также для извлечения данных из блоков. Если вы выбираете блок (n), который содержит какой-то текст, например определения слов, и введете n BLOCK 1024 TYPE то увидите содержимое этого блока, правда выведенное не очень красиво. Слово BLOCK переносит содержимое блока в буфер блока область памяти размером 1024 байта, и оставляет адрес буфера в стеке. После этого 1024 TYPE печатает на экране содержимое буфера. Теперь вы можете делать всевозможные полезные действия с содержимым того блока, которое было перенесено в память словом BLOCK. Если напечатать n BLOCK CR 64 TYPE то вы увидите на экране первые 64 символа из блока n, т.е. его первую строку. Последовательность действий n BLOCK 64 + CR 64 TYPE вызовет печать второй строки.




- Начало -  - Назад -  - Вперед -