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


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


Почему для данной задачи можно пользоваться 16-битовыми числами? Определите также слово ?BLK=, чтобы при вводе 50 55 ?BLK= в стек помещался флаг истина, если контрольные суммы равны, и ложь в противном случае.

Хранение символьных строк в блоках

До сих пор мы рассматривали хранение в блоках только чисел, представленных в двоичной форме. Если вы попробуете вывести на экран листинг блока, на котором были записаны числа, то увидите какую-либо чушь. Однако так же успешно, как и числа, в блоках можно хранить строки

Если после загрузки программы ввести слово FETCHPHONES, то в память будет введен последний (обновленный) телефонный справочник. Больше того, если слово FETCHPHONES было последним в загруженных блоках, то все массивы окажутся автоматически инициализированными. Теперь если в справочнике производятся изменения, то, чтобы запомнить его содержимое на диске, вам нужно только ввести слово SAVEPHONES. Но не будем торопиться. В гл. 9 мы создали два слова, с помощью которых можно было изменять записи в справочнике: STOREPHONE и ERASEPHONE. Можно сделать так, что справочник будет записываться автоматически, если внести простое изменение в определения этих слов, а именно включить в конце определения слово SAVEPHONES (перед ;). Тогда если справочник изменялся, то он будет автоматически обновляться на диске. Теперь можно выключать компьютер в любой момент без потери данных. Таким образом, можно сделать справочник составной частью вашего Форта. И все же данный пример фактически не так уж много разъяснил вам, как работать со строками в блоках. Единственное, что мы сделали, - это записали в массивы в блоки. Но делать со строками можно гораздо больше.

Для разбора (разделения) слов, содержащихся в блоках на диске, можно использовать слово WORD подобно тому, как мы использовали слово QUERY в гл. 9. Рассмотрим, как это делается, на примере. Выберите блок для эксперимента (пусть это будет блок 50) и введите редактором в первую строку блока фразу "The quick brown fox".


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