Читаем Программирование на языке Пролог для искусственного интеллекта полностью

  % Конец предложения: 46 = ASCII-код для '.'

 читостальное( 32, Списслов) :- !,

  % 32 = ASCII-код для пробела

 читпредложение( Списслов).

  % Пропустить пробел

читостальное( Буква, [Слово | Списслов]) :-

 читбуквы( Буква, Буквы, Следсимв),

  % Считать буквы текущего слова

 nаmе( Слово, Буквы),

  читостальное( Следсимв, Списслов).

читбуквы( 46, [], 46) :- !.

 % Конец слова: 46 = точка

читбуквы( 32, [], 32) :- !.

 % Конец слова: 32 = пробел

читбуквы( Бкв, [Бкв | Буквы], Следсимв) :-

 get0( Симв),

 читбуквы( Симв, Буквы, Следсимв).

Рис. 6.4. Процедура для преобразования предложения в список атомов.

Упражнения

6.4. Определите отношение

начинается( Атом, Символ)

для проверки, начинается ли Атом с символа Символ.

6.5. Определите процедуру plural, которая преобразует английские существительные из единственного числа во множественное, добавляя к слову окончание s. Например:

?- plural( table, X).

X  =  tables

6.6. Напишите процедуру

поиск( Ключслово, Предложение)

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

<p>6.5. Ввод программ: <emphasis>consult, reconsult</emphasis></p>

Передавать программы пролог-системе можно при помощи двух встроенных предикатов: consult и reconsult. Чтобы система считала программу из файла F, нужно поставить цель

?- consult( F).

В результате все предложения программы, содержащейся в F, будут использованы пролог-системой при ответе на дальнейшие вопросы пользователя. Если позже в том же сеансе произойдет "консультация" с другим файлом, предложения этого нового файла будут просто добавлены в конец текущего множества предложений.

Для того, чтобы запустить программу, не обязательно записывать ее в файл, а затем "консультироваться" с ним. Вместо чтения файла система может принимать программу прямо с терминала, который соответствует псевдофайлу user. Добиться этого можно так:

?- consult( user).

После этого система будет ожидать ввода предложений программы с терминала.

В некоторых пролог-системах применяется сокращенная запись для чтения программ из файлов. Файлы, из которых предстоит чтение, просто помещаются в список и этот список используется в качестве цели. Например:

?- [файл1, файл2, файл3].

Это в точности эквивалентно следующим трем целям:

?-  соnsult( файл1), соnsult( файл2), соnsult( файл3).

Встроенный предикат reconsult аналогичен consult. Цель

?- reconsult( F).

даст тот же эффект, что и consult( F) с одним исключением. Если в F есть предложения, касающиеся отношений, которые уже были определены ранее, старые определения заменяются на новые из F. Разница между consult и reconsult в том, что consult всегда добавляет новые предложения, в то время как reconsult переопределяет ранее введенные определения. Однако reconsult не произведет никакого эффекта на те отношения, о которых в F ничего не сказано.

Следует еще раз заметить, что детали "консультирования" с файлами зависят от конкретной реализации Пролога. Это замечание касается и большинства остальных встроенных процедур.

<p>Резюме</p>

• Ввод и вывод (отличный от связанного с вопросами к программе) осуществляется посредством встроенных процедур. В данной главе описан простой и практичный набор таких процедур, имеющихся во многих реализациях Пролога.

• Файлы являются последовательными. Существуют текущие входной и выходной потоки. Пользовательский терминал рассматривается как файл с именем user.

• Переключение между потоками осуществляется с помощью процедур:

sее( Файл)

 Файл становится текущим входным потоком

tell( Файл)

 Файл становится текущим выходным потоком

seen

 закрывается текущий входной поток

told

 закрывается текущий выходной поток

• Файлы читаются и записываются двумя способами:

  как последовательности символов

  как последовательности термов

Встроенные процедуры для чтения и записи символов и термов таковы:

rеad( Терм)

  вводит следующий терм

write( Терм)

  выводит Терм

put( КодСимвола)

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных