Начальный курс программирования на языке Форт


           

таблицу полей на последнее используемое


241 LIST 0 ( Поля) 1 VARIABLE ЗАПИСЬ# ( текущая запись)

2 VARIABLE ТИП ( указатель • таблицу полей на последнее используемое поле) 3 : ЧТО ( -- a) PAD 100 + ; 4 ( смешение) ( длина) 5 CREATE Фамилии 0 , 16 , 6 CREATE имя 16 , 12 , 7 CREATE работа 28 , 24 , 8 CREATE телефон 52 , 12 , 9 10 64 CONSTANT /ЗАПИСЬ ( число вайт в одной записи) 11 1024 CONSTANT /БЛОК ( число байт в одном блоке) 12 /БЛОК /ЗАПИСЬ / CONSTANT ЗАП/БЛК ( число записей в блоке) 13 244 CONSTANT ФАЙЛЫ ( с данного блока начинаютcя файлы) 14 2 ( блоки) ЗАП/БЛК * CONSTANT МАКС-ЗАП ( максимальное число записей) 15

242 LIST 0 ( Записи) 1 : ВВЕРХ 0 ЗАПИСЬ# ! ; 2 : ВНИЗ 1 ЗАПИСЬ# +! ; 3 : ПОДРОВНЯТЬ ( а # а #) >R SWAP R> MIN CMOVE ; 4 : ЧТЕНИЕ ( a #) 2DUP BLANK ASCII , WORD COUNT 5 2SWAP ПОДРОВНЯТЬ ; 6 : ЗАПИСЬ ( -- а) ЗАПИСЬ# @ ЗАП/БЛК /MOD ФАЙЛЫ + BLOCK 7 8 SWAP /ЗАПИСЬ * + ; 9 10 : ПОЛЕ ( a -- a' n) 2@ ЗАПИСЬ + SWAP ; 11 12 : ПОМЕСТИТЬ ( а) ПОЛЕ ЧТЕНИЕ UPDATE ; 13 14 15

364 LIST 0 .ПОЛЕ вывод информации из заданного поля записи. 1 .ИМЯ вывод имени и фамилии из заданной записи 2 3 ЗАПОМНИТЬ устанавливает, ЧТО собой представляет текстовый 4 аргумент и ТИП поля, по которому будет осуществляться поиск. 5 ПУСТАЯ установка указателя записи на следующую доступную 6 (свободную) запись; если достигнуто значение МАКС-ЗАП,то ABORT. 7 Запись, первый байт которой равен 32 (пробел) или 0, считается пустой. 8 -НАЙТИ побайтное сравнение фрагмента из ЧТО с содержимым выбранного 9 поля каждой записи. Если сравнение успешное или цикл поиска завершен, 10 выдается флаг "истина". Это логическое значение используется 11 словами (ПАРА), найти, все и еще 12 (ПАРА) по адресам двух полей выбираются два текстовых фрагмента и 13 сравниваются с содержимым выбранных полей каждой записи. 14 15

243 LIST 0 ( Выдача информации) 1 : .ПОЛЕ ( a) ПОЛЕ -TRAILING TYPE SPACE ; 2 : .ИМЯ имя .ПОЛЕ фамилия .ПОЛЕ ; 3 4 : ЗАПОМНИТЬ ( a) DUP ТИП ! 2+ @ ASCII , TEXT 5 PAD ЧТО ROT CMOVE ; 6 7 : ПУСТАЯ TRUE МАКС-ЗАП 0 DO I ЭАПИСЬ# ! ЗАПИСЬ C@ 33 < IF 8 NOT LEAVE THEN LOOP ABORT" Переполнение файла" ; 9 : -НАЙТИ ( - t) TRUE ТИП @ МАКС-ЗАП ЗАПИСЬ# @ DO I0 I ЗАПИСЬ# ! DUP ПОЛЕ ЧТО -TEXT 0= IF 11 SWAP NOT SWAP LEAVE THEN LOOP DROP ; 12 : ОТСУТСТВУЕТ ." Сведения отсутствуют " ; 13 : (ПАРА) ( a) МАКС-ЗАП 0 DO I ЗАПИСЬ# ! -НАЙТИ IF 14 ОТСУТСТВУЕТ LEAVE ELSE DUP ПОЛЕ PAD -TEXT 0= IF 15 .ИМЯ LEAVE THEN THEN LOOP DROP ;

244 LIST 0 Филлмор Миллард президент нет телефона 1 Линкольн Авраам президент нет телефона 2 Бронте Эмилия писатель нет телефона ... 245 LIST 0 Ван Еарен Абигейл обозреватель 555-2233 ...


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





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий