Назад | Содержание| Вперёд 6. 5. Ввод программ: ...

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

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 кодов символов, образующих Атом.

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









Главная | В избранное | Наш E-MAIL | Добавить материал | Нашёл ошибку | Наверх