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


УСОВЕРШЕНСТВОВАННЫЙ ГЕНЕРАТОР БЕССМЫСЛЕННЫХ СООБЩЕНИЙ


Генератор бессмысленных сообщений, о котором шла речь в гл. 10, имеет существенный недостаток: необходимо осуществлять возврат каретки в определении слова СООБЩЕНИЕ. Это ведет к мозаичному выводу фраз.




Для того чтобы генерировать несколько сообщений, мы должны поручить самой программе фиксировать моменты, когда требуется возврат каретки. Следующий ниже листинг приводится без всяких

комментариев. Приобретайте навыки чтения программ на Форте. Попробуйте сделать определения более ясными. Результат работы нашей программы выглядит так: В ДАННОМ СООБЩЕНИИ МЫ РАССКАЖЕМ ВАМ О ТОМ, ЧТО ВКЛАДЫВАЯ ИМЕЮЩИЕСЯ В НАЛИЧИИ СРЕДСТВА В ИНТЕГРИРОВАННЫЙ ЦИФРОВОЙ КОМПЛЕКС ПРИМЕНЯЯ АВТОНОМНЫЙ КУЛЬТУРНЫЙ ПРОДУКТ ПРЕДСТАВЛЯЕТСЯ ВОЗМОЖНЫМ ДАЖЕ НЕСМОТРЯ НА КВАЛИФИЦИРОВАННЫЙ ЦИФРОВОЙ ПРОЕКТ ЕЦЕ БОЛЬШЕ КРЕПИТЬ УНИКАЛЬНЫЙ ПРОГРАММНЫЙ ОБЪЕМ.

С ОДНОЙ СТОРОНЫ, ИССЛЕДОВАНИЯ ПОКАЗАЛИ, ЧТО СТРУКТУРИРОВАННО ПРИМЕНЯЯ ОБЩИЙ ТРУДОВОЙ ОБЪЕМ УЧИТЫВАЯ АВТОМАТИЗИРОВАННЫЙ ПРОГРАММНЫЙ АВТОМАТ СТАНОВИТСЯ НЕОСУЩЕСТВИМЫМ ПОДНИМАЯ СЛУЧАЙНЫЙ ПРОИЗВОДСТВЕННЫЙ ПРОЦЕСС ЕЩЕ БОЛЬШЕ КРЕПИТЬ КВАЛИФИЦИРОВАННЫЙ МНОГООТРАСЛЕВОЙ ПРИНЦИП.

С ДРУГОЙ СТОРОНЫ, ТЕМ НЕ МЕНЕЕ, ПРАКТИЧЕСКИЙ ОПЫТ ПОКАЗЫВАЕТ, ЧТО СТРУКТУРИРОВАННО ПРИМЕНЯЯ ЦИФРОВОЙ ХИМИЧЕСКИЙ КОМПЛЕКС УЧИТЫВАЯ НЕОБЫЧАЙНЫЙ МНОГООТРАСЛЕВОЙ АВТОМАТ НЕОБХОДИМО РАССМАТРИВАЯ НЕОБЫЧАЙНЫЙ ПРОГРАММНЫЙ КРИТЕРИИ ФУНКЦИОНИРОВАТЬ КАК ВРЕМЕННЫЙ ЦИФРОВОЙ ПРОЕКТ.

В РЕЗУЛЬТАТЕ НАШЕ ПРЕДЛОЖЕНИЕ ЗАКЛЮЧАЕТСЯ В ТОМ, ЧТО СТРУКТУРНО ПРИМЕНЯЯ СЛУЧАЙНЫЙ КУЛЬТУРНЫЙ ИНТЕРЕС УЧИТЫВАЯ СИСТЕМАТИЗИРОВАННЫЙ ЦИФРОВОЙ УРОВЕНЬ НЕОБХОДИМО РАССМАТРИВАЯ ЦИФРОВОЙ ТРУДОВОЙ ПРОЕКТ ЕЩЕ БОЛЬШЕ КРЕПИТЬ СИНХРОНИЗИРОВАННЫЙ КОРОТКОВОЛНОВЫЙ КРИТЕРИИ.

Block # 156 0 ( Генератор бессмысленных выражений, вариант с самоформатированием ) 1 VARIABLE ОСТАТОК \ количество оставшихся символов, подлежащих сканировании 2 VARIABLE ПО-ГОРИЗОНТАЛИ \ текущее положение курсора для вывода по 3 \ горизонтали 4 70 CONSTANT ПРАВГРАН \ правая граница 5 : СКАНЕР ( длина-поиска -- адр-пробела | конец-поля) 6 2DUP + ROT ROT OVER + SWAP ВО 1 С@ BL = 7 IF DROP I LEAVE THEN LOOP ; 8 : ДАЙСЛОВО ( a -- a слово-счетчик) \ получ.
очереди, слова для форматирования 9 DUP ОСТАТОК @ BUP 0> IF СКАНЕР ELSE DROP THEN OVER - 10 DUP 1+ NEGATE ОСТАТОК +! ; 11 : СЮДА? ( счетчик -- 1=подходит для данной строки) 12 ПО-ГОРИЭОНТАЛИ @ + ПРАВГРАН < ; 13 : SPACE' ПО-ГОРИЗОНТАЛИ @ IF SPACE 1 ПО-ГОРИЭОНТАЛИ +! THEN ; 14 : CR' CR 0 ПО-ГОРИЗОНТАЛИ ! ; 15 157 LOAD 158 LOAD

Block # 157 0 ( Генератор бессмысленных выражений, вариант с самоформатированием ) 1 : .СЛОВО ( а # -- ) \ вывод слова, если необходимо, выполнение CR 2 DUP СЮДА? IF SPACE' ELSE CR' THEN 3 DUP ПО-ГОРИЗОНТАЛИ +! TYPE ; 4 : СЛЕДУЮЩЕЕ ( a # -- след.адр.) 5 + 1+ ; 6 : ВЫВОД ( а #символов -- ) \ вывод сформатированного текста 7 ОСТАТОК ! 8 BEGIN ДАЙСЛОВО DUP WHILE 2DUP .СЛОВО СЛЕДУЮЩЕЕ REPEAT 9 2DROP ; 10 : АБРЕД ( -- а) 161 BLOCK ; \ случайные слова 11 : ОБОРОТЫ ( -- а) 160 BLOCK ; \ связывающие обороты 12 : ВВЕДЕНИЯ ( - a) 1S9 BLOCK ; \ начала фраз 13 : БРЕД ( #строки #столбца -- а) \ получение адреса слова 14 20 * SWAP 64 * + АБРЕД + ; 15

Block # 158 0 ( Генератор бессмысленных выражений, вариант с самоформатированием ) 1 : .БРЕД ( #строки #столбца -- ) ВРЕД 20 ВЫВОД ; 2 : ЧАСТЬ-РЕЧИ ( #строки -- ) CREATE , \ определение частей речи 3 DOES> @ 10 CHOOSE SWAP .БРЕД ; 4 0 ЧАСТЬ-РЕЧИ 1ПРИЛАГАТЕЛЬНОЕ 5 1 ЧАСТЬ-РЕЧИ 2ПРИЛДГАТЕЛЬНОЕ 6 2 ЧАСТЬ-РЕЧИ СУЩЕСТВИТЕЛЬНОЕ 7 : ФРАЗА 1ПРИЛАГАТЕЛЬНОЕ 2ПРИЛАГАТЕЛЬНОЕ СУЩЕСТВИТЕЛЬНОЕ ; 8 : ОБОРОТ ( #группы -- ) [ 4 64 * ] LITERAL * 9 3 CHOOSE 64 * + ОБОРОТЫ + 64 ВЫВОД ; 10 : ПОВЕСТВОВАНИЕ 4 0 DO I ОБОРОТ ФРАЗА LOOP ." ." CR' ; 11 : ВВЕДЕНИЕ ( #абзаца -- ) 12 CR' 64 * ВВЕДЕНИЯ + 64 ВЫВОД ; 13 : СООБЩЕНИЕ CR' CR' 4 0 DO I ВВЕДЕНИЕ ПОВЕСТВОВАНИЕ LOOP ; 14 15

Block # 159 0 В ДАННОМ СООБЩЕНИИ МЫ РАССКАЖЕМ ВАМ О ТОМ, ЧТО 1 С ОДНОЙ СТОРОНЫ, ИССЛЕДОВАНИЯ ПОКАЗАЛИ, ЧТО 2 С ДРУГОЕ СТОРОНЫ, ТЕМ НЕ МЕНЕЕ, ПРАКТИЧЕСКИЙ ОПЫТ ПОКАЗЫВАЕТ, ЧТО 3 В РЕЗУЛЬТАТЕ НАШЕ ПРЕДЛОЖЕНИЕ ЗАКЛЮЧАЕТСЯ В ТОМ, ЧТО 4 5 6 7 8 9 10 11 12 13 14 15

Block # 160 0 ПРИМЕНЯЯ 1 ВКЛАДЫВАЯ ИМЕЮЩИЕСЯ В НАЛИЧИИ СРЕДСТВА В 2 СТРУКТУРИРОВАННО ПРИМЕНЯЯ 3 4 ИМЕЯ В ВИДУ 5 ЧТОБЫ КОМПЕНСИРОВАТЬ 6 УЧИТЫВАЯ 7 8 ПРЕДСТАВЛЯЕТСЯ ВОЗМОЖНЫМ ДАЖЕ НЕСМОТРЯ НА 9 СТАНОВИТСЯ НЕОСУЩЕСТВИМЫМ ПОДНИМАЯ 10 НЕОБХОДИМО РАССМАТРИВАЯ 11 12 ФУНКЦИОНИРОВАТЬ КАК 13 СОЗДАТЬ 14 ЕЩЕ БОЛЬШЕ КРЕПИТЬ 15

Block # 161 0 ВЫСОКИЙ КУЛЬТУРНЫЙ УРОВЕНЬ 1 ОБЩИЙ ПРОИЗВОДСТВЕННЫЙ ИНТЕРЕС 2 АВТОМАТИЗИРОВАННЫЙ НАУКОЕМКИЙ КОМПЛЕКС 3 ЗАПЛАНИРОВАННЫЙ ВАЛОВОЙ ОБЪЕМ 4 ИНТЕГРИРОВАННЫЙ ЦИФРОВОЙ КОЭФФИЦИЕНТ 5 КВАЛИФИЦИРОВАННЫЙ МНОГООТРАСЛЕВОЙ ПРИНЦИП 6 ПРЕДСТАВИТЕЛЬНЫЙ ХИМИЧЕСКИЙ ГЕНЕРАТОР 7 ТЕХНОЛОГИЧЕСКИЙ НЕПРЕРЫВНЫЙ ПРОЦЕСС 8 АВТОНОМНЫЙ АППАРАТНЫЙ ИНТЕРФЕЙС 9 ЦИФРОВОЙ НЕЗАВИСИМЫЙ АВТОМАТ 10 СИНХРОНИЗИРОВАННЫЙ ФУНКЦИОНАЛЬНЫЙ КРИТЕРИЙ 11 СИСТЕМАТИЗИРОВАННЫЙ КОРОТКОВОЛНОВОЙ ПРОЕКТ 12 СЛУЧАЙНЫЙ ОТРИЦАТЕЛЬНЫЙ ИМПУЛЬС 13 НЕОБЫЧАЙНЫЙ ТРУДОВОЙ ПОДЪЕМ 14 ВРЕМЕННЫЙ НЕХАРАКТЕРНЫЙ СПАД 15 УНИКАЛЬНЫЙ ПРОГРАММНЫЙ ПРОДУКТ


Содержание раздела