Список - это упорядоченный набор объектов - элементов списка, следующих друг за другом. Элементы списка в языке Турбо-Пролог должны принадлежать одному и тому же доменному типу. Объектами списка могут быть: целые числа, действительные числа, символы, символьные строки, структуры.
Совокупность элементов списка заключается в квадратные скобки, а элементы друг от друга отделяются запятыми. Примерами списков являются:
[10,24,1,8,385,0,8]
[0.4,67.43,986.01,914.5]
["ПЕТРОВ П.Р.","ИВАНОВ Б.О.","СИДОРОВ Т.К."]
Список может содержать произвольное число элементов (ограничением является объем доступной оперативной памяти). Список, не содержащий элементов, называется пустым списком и обозначается []. Обработка списков в Турбо-Прологе базируется на разбиении списка на голову - первый элемент в списке и хвост - остальную часть списка. Например, как показано в следующей таблице:
Список | Голова | Хвост |
[1,2,3,4] | 1 | [2,3,4] |
['а'.'b'.'с'] | 'а' | ['bYc'l |
["Курсант"] | "Курсант" | [ ] |
[] | не определено | не определено |
Наглядным представлением процесса разбиения списка на голову и хвост является графическое представление в виде бинарного (двоичного) дерева. Для списка [1,2,3,4] таким деревом будет следующее:
Для использования списков в Пролог-программе необходимо:
1) В разделе domains описать домен списка. Домен списка задается в формате:
= *
319
Например, домен списка, элементами которого являются целые числа, описывается следующим образом:
domains
list_num=integer*
или
list_num=elem*
elem= Integer
2) Описать работающий со списком предикат в разделе predicates, например:
predicates
num(list_num)
3) Ввести или создать в программе собственно список, т.е. задать список в разделах
goal или clauses.
Пример задания списков в Пролог-программе:
domains
Iist1=symbol*
Iist2=num*
num=integer
predicates
name(list1)
score(list2)
clauses
name(["ПЕТРОВ П.Р.","ИВАНОВ Б.О.","СИДОРОВ Т.К."]).