Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Головы и хвосты






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

Головой из списка [a, b, c] является a, хвостовой частью - [b, c], хвостом - c.

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

Это означает, что, концептуально, списки имеют древовидную структуру точно так же как другие составные объекты. Древовидная структура [a, b, c, d]:

list

/ \

a list

/ \

b list

/ \

c list

/ \

d []

Обработка списков

Пролог обеспечивает способ создавать голову и хвостовую часть явного списка. Вместо того, чтобы отделять элементы запятыми, Вы можете отделить голову и хвостовую часть вертикальной чертой (|). Например,

[a, b, c] is equivalent to [a|[b, c]]

и, продолжая процесс,

[a|[b, c]] = [a|[b|[c]]] = [a|[b|[c|[]]]].

Использование списков

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

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

Составные списки

Составные списки - списки, которые содержат больше чем один тип элемента. Вы нуждаетесь в специальных объявлениях, чтобы обработать списки элементов множественного типа, потому что Visual Prolog требует, чтобы все элементы в списке принадлежали тому же самому домену. Способ создавать список в Прологе, который сохраняет эти различные типы элементов, состоит в том, чтобы использовать функторы, потому что домен может содержать больше чем один тип данных как параметры к функторам.

Рассмотрим пример:

База данных содержит факты вида: student(имя, курс). Создать проект, позволяющий сформировать список студентов 1-го курса.

1. Создайте новый проект:

PREDICATES

nondeterm student(symbol, integer)

spisok

 

CLAUSES

student(vova, 3).

student(lena, 1).

student(dima, 1).

student(ira, 2).

student(marina, 1).

spisok: - student(X, 1), write (X), nl, fail.

2. Пропишите цель:

GOAL

write(" Список студентов 1-курса"), nl, spisok.

Пролог должен вывести (рис. 1):

lena

dima

marina

Рис. 1. Вывод результата программы

 

3. Создайте новый проект и сформируйте список из N элементов, начиная с 2. Каждый следующий на 4 больше предыдущего.


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал