Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Prolog.docx
Скачиваний:
3
Добавлен:
25.09.2019
Размер:
59.65 Кб
Скачать

16Списки. Описание списков в программе. Голова и хвост списка.

Список – специальный вид сложного терма, состоящий из последовательности термов, заключенных в [ ] и разделенных запятыми.

domains

list = integer* % целочисленный список

Если элементы списка имеют смешанный тип, то должно быть соответствующее описание:

domains

element = c (char); i (integer)

list = element*

[c(‘a’), i(6), i(-8), c(‘X’)]

Списки являются основной структурой программы на ТП. Для удобства обработки введены два понятия: голова (head), хвост (tail).

Основные примеры обработки списков:

Список

Голова

Хвост

[‘a’, ‘b’, ‘c’]

‘a’

[‘b’, ‘c’]

[1]

1

[ ]

[ ]

не определена

не определена

[[1, 2, 3], [2, 3, 4], [ ]]

[1, 2, 3]

[[2, 3, 4], [ ]]

Для отделения головы спсика от хвоста используется символ “|” [X|Y].

17Основные стандартные предикаты Турбо-Пролога для работы со строками.

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

Определение длины строки

Str_len (строка, длина) (string, string) : (i, o) (i, i)

(i, o) – с параметром длина связывается количество символов в строке

(i, i) – выполняетсмя успешно, если строка имеет указанную длину.

Конкатенация строк

concat (Стр1, Стр2, Стр3) (string, string, string) : (i, i, o) (o, i, i) (i, o, i) (i, i, i)

Создание подстрок

frontstr (КопСтр, ВхСтр, ВыхСтр, Остаток) (integer, string, string, string) : (i, i, o, o)

Разделение строки на две части

frontchar (строка, ПервСимвол, Остаток) (string, char, string) (i, o, o) (i, i, o) (i, o, i) (i, i, i)(o, i, i)

Используется для преобразования строки в список символов

convert (“ “, [ ]).

convert (Str, [H|T]):- frontchar (Str, H, Ost), convert (Ost, T).

Прверка на строку

isname (строка) (string) : (i)

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

Формирование атомов из строк

fronttoken (Строка, Атом, Остаток) (string, string, string) : (i, o, o) (i, i, o) (i, o, i) (i, i, i) (o, i, i)

Атом – последовательность символов, имеющих смысл. Атомы могут быть : именем ТП, строчным представлением числа, отдельным символом (кроме пробела).

(i, i, o) fronttoken (“Go to cursor”, X, Y) X=”Go” Y=”to cursor”

18Преобразование строки в список символов.

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

Преобразование прописных букв в строчные и наоборот

upper_lower (Стр1, Стр2) (string, string) : (i, i) (i, o) (o, i)

(i, i) upper_lower (“B”, “b”) True

(i, o) upper_lower (“ABC”, X) X=”abc”

(o, i) upper_lower (X, “abc”) X=”ABC”

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]