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


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


Опишите слово BLOCKNUMBER, которое должно брать число из блока в форме строки символов ASCII и помещать его в стек. Для решения этой задачи вам. возможно, придется освежить в памяти слова CONVERT и NUMBER из гл. 9. 4. Кроме извлечения строк из блоков может оказаться полезным также запоминание их в блоках. Определите слово TOBLOCK, которое действует как BLOCKWORD, но запоминает строку по указанному адресу в указанном блоке в позиции, определенной в переменной POSITION. Строка должна быть представлена в счетной форме, но запоминаться она должна как строка без байта-счетчика с разделителем в конце строки. Слово POSITION нужно изменить так. чтобы оно указывало на позицию, следующую сразу после разделителя. Таким образом, если в POSITION записан 0 и строка "fox" записана, начиная с PAD. то при вводе PAD 50 32 TOBLOCK строка "fox" будет записана в блок номер 50, начиная с нулевого байта; переменная PAD будет изменена на 4, чтобы указывать на байт, следующий сразу после пробела, которым заканчивается строка "fox". Когда подобное изменение POSITION может оказаться полезным?

Использование нескольких блоков в качестве файла

Если вы пользовались файлами, работая с другими языками программирования, то вам, безусловно, понятно, что в Форте мы рассматриваем отдельный блок как короткий файл. Когда мы обсуждали передачу данных между блоками и массивами чисел и символьных строк, используя оператор CMOVE, мы показали вам так называемый метод произвольного доступа при вводе-выводе (т.е. при вводе и выводе) данных, который применяется для доступа к файлам. Мы имели в виду, что данные, находящиеся в записях (в нашем случае в массивах) запоминаются и извлекаются в блоке с указанного пользователем места. В противоположность большинству языков программирования, которые работают с записями фиксированной длины, т.е. производят обмен данными с диском фиксированными порциями информации в байтах, мы могли сами выбирать любое число байтов для обмена с буферами и, следовательно, с диском.


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