Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы искусственного интеллекта.doc
Скачиваний:
66
Добавлен:
10.02.2015
Размер:
80.38 Кб
Скачать

Обработка списков. Объявление и использование.

Списки — это упорядоченный набор объектов одного и того же типа следующие друг за другом. Объектами списка могут быть целые, действительные, символьные величины, строки, и сложные объекты. Совокупность элементов списка заключается в [ , ] . Количество элементов списка — это длина. Список, не содержащий ни одного элемента, называется пустым. При описании списков, после указания типа или имени списка, ставится символ *.

Domains

list = integer*

name = symbol

listname = name*

Для обработки списка, его делят на голову и хвост. Голова — это первый элемент списка, а хвост — вся его остальная часть.

Операции деления списка на голову и хвост изображают в виде вертикальной черты [Head | Tail]. Данное определение позволяет организовать рекурсию списков, разделяя непустой список на голову и хвост. Хвост в свою очередь также является списком, который можно разделить на голову и хвост. И так до тех пор, пока список не окажется пустым, у которого нет головы.

Обработка строк. Предикаты для строк. Встроенные предикаты для преобразования типов. Использование строк.

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

frontchar(String,FrontChar,RestString)

Разделяет заданную строку String согласно поточному шаблону на две части: первый символ FrontChar и оставшаяся часть строки RestString.

fronttoken(String,Token,RestString)

Разделяет строку, заданную параметром String, на лексему Token и остаток RestString согласно поточному шаблону. (Лексема – это последовательность символов, имеющих смысл. Она определяется либо как имя в соответствии с синтаксисом Турбо-Пролога, либо как строчное представление числа, при этом знак возвращается отдельно, либо как отдельный символ.)

frontstr(Lenght,Inpstring,StartString,RestString)

Разделяет строку Inpstring на две части. StartString будет иметь длину Lenght первых символов исходной строки, RestString представляет собой остаток строки InpString.

concat(String1,String2,String3)

Слияние строк , согласно поточному шаблону, по формуле: String3 = String1 + String2.

str_len(String,Length)

Определяет длину Length строки String.

isname(StringParam)

Завершается успешно, если StringParam есть имя, удовлетворяющее синтаксису Пролога.

Стандартные предикаты для преобразования одного типа в другой.

char_int(Char,Code)

str_int(String,Integer)

str_char(String,Char)

str_real(String,real)

Файлы. Оисание. Стандартные предикаты. Операции над файлами.

Для описания файлового типа используется служебное слово file, описание:

file=символическое имя файла

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

stdin — стандартное устройство ввода (по умолчанию является клавиатура)

stdout — стандартное устройство вывода. (монитор)

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

Стандарное устройство ввода и вывода открывать и закрывать не нужно.

Стандартные предикаты для работы с файлами 1)предикат для открытия файла

openread(f,N) — открывает файл для чтения, первый параметр — это внутреннее или символическое имя файла, второе — строка задающая внешнее имя файла. Если файл с указанным внешним именем не обнаружен,то предикат ложный, и выводится ошибка.

openwrite(f,N) — открывает файл для записи, записывает в новый файл, если уже сущетсвует файл с таким именем,то он будет стерт. Если файл не создан — ошибка.

openappend(f,N) — открывает файл для записи в конец файла. Если файл с указанным именем не найден,то выводится сообщение об ошибке.

openmodify(f,N) — открывает файл для чтения и записи. Если файла нет, то ошибка.

2)проверка на существование файла на диске

existfile(N) — истинен, если файл с указанным именем сущ-т, иначе ложен.

3)закрытие файла

closefile(f) — закрывает файл.

4) удаление и переименование файла

deletfile(N) — удаляет файл, но предварительно файл должен быть закрыт, если файл удалить не получится, то выводится об этом сообщение. closefile(f). deletfile(“d:\\a.txt'')

renamefile(N,New) — Переименовывает файл N в New. Файл должен быть закрыт. closefile(f), renamefile(“c:\\b.txt”,”c:\\c.txt”).

5)проверка конца файла: eof(f) — успешен, если достигнут конец файла.

6)переопределение текущего уст-ва ввода и вывода

readdevice(имя устр-ва) — опр-т уст-во для ввода информации: readdevice(f) readdevice(klybard)

writedevice(имя уст-ва) — опр-т уст-во для вывода информации: writedevice(screen)

7)для вывода иформации, используются встроенные предикаты: write, writef, nl

8)для ввода предикаты: readreal, readint, readln, readchar, readterm.