Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
6.4. Определите отношение
начинается(Атом, Символ)
для проверки, начинается ли Атом с символа Символ.
6.5. Определите процедуру plural, которая преобразует английские существительные из единственного числа во множественное, добавляя к слову окончание s. Например:
?- plural(table, X).
X = tables
6.6. Напишите процедуру
поиск(Ключслово, Предложение)
которая при каждом вызове находит в текущем входном файле предложение, содержащее заданное ключевое слово Ключслово. Предложение в своей исходной форме должно быть представлено в виде последовательности символов или в виде атома (процедуру читпредложение из данного раздела можно соответственно модифицировать).
6.5. Ввод программ: consult, reconsult
Передавать программы пролог-системе можно при помощи двух встроенных предикатов: 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 ничего не сказано.
Следует еще раз заметить, что детали "консультирования" с файлами зависят от конкретной реализации Пролога. Это замечание касается и большинства остальных встроенных процедур.
Резюме
• Ввод и вывод (отличный от связанного с вопросами к программе) осуществляется посредством встроенных процедур. В данной главе описан простой и практичный набор таких процедур, имеющихся во многих реализациях Пролога.
• Файлы являются последовательными. Существуют текущие входной и выходной потоки. Пользовательский терминал рассматривается как файл с именем user.
• Переключение между потоками осуществляется с помощью процедур:
sее(Файл)
Файл становится текущим входным потоком
tell(Файл)
Файл становится текущим выходным потоком
seen
закрывается текущий входной поток
told
закрывается текущий выходной поток
• Файлы читаются и записываются двумя способами:
как последовательности символов
как последовательности термов
Встроенные процедуры для чтения и записи символов и термов таковы:
rеad(Терм)
вводит следующий терм
write(Терм)
выводит Терм
put(КодСимвола)
выводит символ с заданным ASCII-кодом
get0(КодСимвола)
вводит следующий символ
gеt(КодСимвола)
вводит ближайший следующий "печатаемый" символ
• Две процедуры облегчают форматирование:
nl начинает новую строку
tab(N) выводит N пробелов
• Процедура nаmе(Атом, СписокКодов) осуществляет синтез и декомпозицию атомов. СписокКодов — список ASCII кодов символов, образующих Атом.
Дата публикования: 2015-10-09; Прочитано: 140 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!