Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Головы и хвосты
Список - действительно рекурсивный составной объект. Состоит из двух частей: голова списка, которая является первым элементом, и хвостовой части, которая является списком, включающим все последующие элементы. Хвост списка - последний элемент списка.Например, Головой из списка [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 больше предыдущего.
|