Определяет или считывает символьное имя файла для устройства ввода.
( i ) – связывает текущее устройство чтения с открытым файлом. Под СимвИменемФайла понимается символьное имя клавиатуоы либо симвоьное имя файла, открытого для чтения или модификации.
(o) – связывеат символьное имя файла с именем текущего устройства чтения, которое может быть клавиатурой или файла.
readdevice (X) X= клавиатура
writedevice ( СимвИмяФайла ) (symbol) : (i) (o)
Определяет или считывает символьное имя файла для устройства вывода.
( i ) – переназначает текущее устройство записи на открытый файл с именем СимвИмяФайла, который может быть одним из заранее определенных символьных имен ( screen или printer ) или имеет символьное имя, задаваемое пользоваетелем для файла, открытого для записи или модификации.
( o ) – связывает параметр СимвИмяФайла с именем текущего устрйоства записи, которое может иметь имя screen , printer или символьное имя файла.
Описание файловых доменов
Для того, чтобы использовать в прграмме файлы, необходимо в раздел domains произвести описание файлового домена:
Работа с программой ПРОЛОГ
file – стандартный тип домена
datafile – символьное имя файла (логическое имя файла)
В файл описания логично указать несколько символьных имен, но само описание должно быть единственным.
file = df1; df2; df3 % (; или )
Предикат ТП для работы с файлами
Удаление файлов
deletefile (ИмяФайлаДОС) ( string ) : ( i )
Параметр ИмяФайлаДОС может создать имя накопителя, но не должен указывать путь.
deletefile («C: progr.pro”)
Сохранение файла
save (ИмяФайлаДОС) ( string ) : ( i )
Используется для записи на внешнйи накопитель динамической базы данных. После этого файо можно снова загрузить в ОП. Если заданный файл ИмяФайлаДОС уже существует, то его содержимое уничтожается.
Переименование файлов
renamefile (СтИмяФДОС, НовИмяФДОС) ( string , string ) : ( i , i )
Проверка наличия файла
existfile (ИФД) ( string ) : ( i )
Выполняется успешно, если заданный файл имеется в текущем каталоге.
Сброс данных из внутреннего файлового буфера в заданный файл
flash ( СимвИФ ) (file) : (i)
Позволяет организовывать передачу данных на стандартный интерфейс до того, как буфер будет заполнен.
Установка накопителя и пути
disc ( ПутьДОС ) (string) : (i) (o)
(i) – устанавливает путь и накопитель
(o) – связывает с параметром текущий накопитель и путь.
Вывод текущего каталога
dir (Путь, СпецификацияФайла, ИФД) ( string , string , string ) : ( i , i , o )
Выдается каталог имен файлов в соответствии с заданными параметрами и присваивается 3-му параметру имя выбранного из каталога файла.
Открытие файлов
— для чтения : openread
— для записи: openwrite
— для чтения/записи : openmodify
— для заполнения (до записи) : openappend .
Формат этих предикатов одинаков: (СИФ, ИФД) ( file , string ) : ( i , i )
Пролог — попытка объяснить без программирования
Закрытие файла
closefile ( СИФ ) (file) : (i)
Для стандартных устройств (клава, экран, принтер) опции открытия и закрытия файла выполнять не нужно (автоматически).
Проверка на конец файла
eof ( СИФ ) (file) : (i)
Выполняется успешно, если указатель текущей позиции файла указывает на конец файла.
Установка или чтение типа файал
filemode ( СИФ , тип ) (file, integer) : (i, i) (i, o)
( i , i ) – устанавливает тип файла ( 0 – текстовый, 1 – бинарный)
( i , o ) – читает тип заданного файла и связывает его с параметром тип файла.
Устанвока или чтение позиции указателя файла
filepos ( СИФ , Позиция , Режим ) (file, real, integer) : (i, i, i) (i, o, i)
( i , i , i ) – устанавливает указатель данного файла на заданню позицию (Режим=0 – относительно начала файла, =1 – текущей позиции, =2 – конца)
( i , o , i ) – определяет позицию указателя относительно начала файла.
Чтение строки из файла
file_str ( ИФД , Строка ) (string, string) : (i, o) (i ,i)
( i , o ) – читает строку из заданного файла и связывает ее с параметрм строка.
Максимально допустимый размер строки 64 кБайта. Признаком конца строки является символ Ctrl — Z (126).
Запись в файл
Последовательность действий, необходимая для записи в файл:
1. Открытие файла с помощью предиката openwrite . Если файла с указанным именем нет, то создаетс яновый файл. Если файл уже есть, то его содержимое будет утрачено. Чтобы от этого застраховаться, можно сначала проверить наличие файла предикатом existfile , и принять соответствующие меры, если existfile будет успешным.
2. Назначение файла в качнстве устройства записи предиката writedevice .
3. Самма запись в файл write или writef .
4. Использование любых других предикатов и правил, отвечающих назначению программы.
5. Закрытие файла предикатом closefile .
/* Вывод информации на экран дисплея в файл на диск */
openwrite (data, «a1.dat”),
Источник: prolog.ucoz.com
Study Число положительное или равно нулю»):-
find_solution (X , «Число равно нулю»):-
find_solution (X , «Число отрицательное или равно нулю»):-
goal
find_solution (0 , КакоеЧисло).
КакоеЧисло=Число положительное или равно нулю
КакоеЧисло=Число равно нулю
КакоеЧисло=Число отрицательное или равно нулю
А если мы изменим тип детерминизма на procedure то получим ошибку компиляции.
E;Test_Goal, pos: 407, 590 Nondeterministic clause: find_solution
Для избежания данной проблемы мы вынуждены пользоваться отсечением (cut, !).
predicates
procedure find_solution (integer , string)
clauses
find_solution (X , «Число положительное или равно нулю»):-
find_solution (X , «Число равно нулю»):-
find_solution (X , «Число отрицательное или равно нулю»):-
goal
find_solution (0 , КакоеЧисло).
Вот результат запуска программы:
КакоеЧисло=Число равно нулю
Следующим шагом на пути создания библиотеки dll будет создание специального файла определений для экспорта. Ведь согласитесь, что глупо все объявленные предикаты делать общедоступными для пользователей. Если у вы начинали программировать под windows и разрабатывали библиотеки в конце win3.11 и вначале win95, то до появления директив, вроде:
__declspec(dllexport)
использовался специальный файл *.DEF, в котором описывались характеристики библиотеки и указывались имена экспортируемых функций.
Когда мы создали проект типа “dll”, среда Vip5 автоматически сгенерировала данный файл, но к сожалению не добавила его к проекту. Придется нам самим для удобства дальнейшей его правки добавить к проекту. Используйте кнопку “New” в менеджере проекта, и выберите на диске данный файл.
Пролог (язык программирования)
Mercury , Prolog ) — язык и система логики предикатов первого порядка .
Основными понятиями в языке Пролог являются факты, правила логического вывода и запросы, позволяющие описывать базы знаний, процедуры логического вывода и принятия решений.
Факты в языке Пролог описываются логическими предикатами с конкретными значениями. Правила в Прологе записываются в форме правил логического вывода с логическими заключениями и списком логических условий.
Особую роль в интерпретаторе Пролога играют конкретные запросы к базам знаний, на которые система логического программирования генерирует ответы «истина» и «ложь». Для обобщенных запросов с переменными в качестве аргументов созданная систем Пролог выводит конкретные данные в подтверждение истинности обобщенных сведений и правил вывода.
Факты в базах знаний на языке Пролог представляют конкретные сведения (знания). Обобщённые сведения и знания в языке Пролог задаются правилами логического вывода (определениями) и наборами таких правил вывода (определений) над конкретными фактами и обобщенными сведениями.
Начало истории языка относится к 1970-м годам. [1] Будучи декларативным языком программирования , Пролог воспринимает в качестве программы некоторое описание задачи или баз знаний, и сам производит логический вывод, а также поиск решения задач, пользуясь механизмом
- 1 Развитие
- 2 Межплатформенность
- 3 Архитектура
- 4 Критика
- 5 Новая перспектива
- 6 Примечания
- 7 Ссылки
- 8 Литература
Развитие [ ]
Интерес к Прологу поднимался и затихал несколько раз, энтузиазм сменялся жёстким неприятием. Наиболее высоко был поднят интерес к языку Пролог, как к языку будущего, во время разработок японской национальной программы компьютеры пятого поколения в 1980-х годах, когда разработчики надеялись, что с помощью Пролога можно будет сформулировать новые принципы, которые приведут к созданию компьютеров более высокого уровня интеллекта.
Язык Пролог в 1980-х годах был включен в ряд советских вузовских и школьных учебников баз знаний и моделей экспертных систем. С этой целью на IBM PC и ряде советских школьных компьютеров были реализованы учебные русскоязычные интерпретаторы Пролога.
В языке Прологе факты описываются в форме логических предикатов с конкретными значениями. Правила вывода описываются логическими предикатами с определением правил логического вывода в виде списка предикатов над базами знаний и процедурами обработки информации.
Межплатформенность [ ]
Пролог реализован практически для всех известных операционных систем и платформ (в том числе для Архитектура [ ]
Критика [ ]
Пролог критикуется в первую очередь за свою недостаточную гибкость, отчего решения на обычных языках программирования (типа Новая перспектива [ ]
Перспектива развития всемирной Сети, известной как проект OWL, основанного на концепции First-Order Logic (FOL) [2] , реализацию которой, в свою очередь, можно рассматривать как значительно более расширенную технику классического Prolog.
Примечания [ ]
- ↑История языка Prolog
- ↑http://www.ruleml.org/fol
Ссылки [ ]
- Международный стандарт ISO для языка Пролог
- tuProlog — основанный на Java облегчнный Пролог
- Русский Пролог — Актор
- Visual Prolog
- Gprolog (GNU Prolog)
- Болгарский Клубничный Пролог
- SWI-пролог
- Искусственный интеллект: стагнация или новая перспектива
Источник: cybernetics.fandom.com