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

32. Списки в Прологе. Применение списков в программе.

Список - это упорядоченный набор объектов, следующих друг за другом. Составляющие списка внутренне связаны между собой, поэтому с ними можно работать и как с группой (списком в целом), так и как с индивидуальными объектами (элементами списка).

Турбо-Пролог позволяет выполнять со списком целый ряд

операций. Их перечень включает:

  • доступ к объектам списка

  • проверка на принадлежность к списку

  • разделение списка на два

  • слияние двух списков

  • сортировку элементов списка в порядке возрастания или убывания

Списки бывают полезны при создании баз знаний (баз данных), экспертных систем, словарей; перечень областей применения можно продолжать еще долго.

Список является набором объектов одного и того же доменного типа. Объектами списка могут быть целые числа, действительные числа, символы, символьные строки и структуры.

Порядок расположения элементов является отличительной чертой списка; те же самые элементы, упорядоченные иным способом, представляют уже совсем другой список. Порядок играет важную

роль в процессе сопоставления. Турбо-Пролог допускает списки, элементами которых являются структуры. Если структуры принадлежат к альтернативному домену, элементы списка могут иметь разный тип.

Совокупность элементов списка заключается в квадратные скобки ([]), а друг от друга элементы отделяются запятыми.

Список может содержать произвольное число элементов, единственным ограничением является лишь объем оперативной памяти. Список может содержать всего один элемент и даже не содержать элементов вовсе:

["summer"]

[]

Список, не содержащий элементов, называется пустым или нулевым списком. Непустой список можно рассматривать как состоящий из двух частей: первый элемент списка - его голова, и остальная часть списка - хвост. Голова является элементом списка, хвост есть список сам по себе. Голова - это отдельное неделимое значение. Если список состоит из одного элемента, то его можно разделить на голову, которой будет этот самый единственный элемент, и хвост, являющийся пустым списком.

Применение списков в программе

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

num([1,2,3,6,9,3,4])

realnum([3.2,4.6,1.1,2.64,100.2])

time(["YESTERDAY","TODAY","TOMORROW"])

В этих выражениях num, realnum и time все представляют предикаты списков.

Введение списков в программу с необходимостью отражается на трех ее разделах. Домен списка должен быть описан в разделе domains, а работающий со списком предикат - в разделе predicates. Нужно ввести сам список; то есть, другими словами, его нужно задать где-то в программе: либо в

разделе clauses, либо в разделе goal.

Отличительной особенностью описания списка является наличие звездочки (*) после имени домена элементов.

Описание в разделе domains, следовательно, может выглядеть либо как

bird_list = bird_name *

bird_name = symbol

либо как

bird_list = symbol *

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

birds(bird_list)

Сам список присутствует в разделе утверждений clauses:

birds(["sparrow","robin","mockingbird","thunderbird","bald eagle"]).