Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PROLOG_Labs / Лабораторная работа 4(состав_объекты).doc
Скачиваний:
100
Добавлен:
20.03.2015
Размер:
87.55 Кб
Скачать

2.5. Многоуровневые составные объекты

Visual Prolog позволяет конструировать составные объекты на нескольких уровнях. Например, в:

book(“The Ugly Duckling”, “Andersen”)

вместо фамилии автора можно использовать новую структуру, которая описывает автора более детально, включая имя и фамилию. Вызывая функтор для нового объекта author (автор), можно изменить описание книги на:

book(“The Ugly Duckling”, author( “Hans Christian”, “Andersen”))

В старом определении домена

book(title, author)

вторым аргументом функтора book был author. Но старое определение

author = symbol

может включать только одно имя, а этого уже недостаточно. Определим теперь объект author как составной объект, состоящий из имени и фамилии автора. Это достигается с помощью декларации следующего домена:

author = author(first_name, last_name)

что приводит к следующим определениям:

domains

articles = book(title, author); .. % 1-й уровень

author = author(first_name, last_name) % 2-й уровень

title, first_name, last_name = symbol % 3-й уровень

При использовании составных объектов со многими уровнями часто помогает такое «дерево»:

book

/ \

/ \

title author

/ \

/ \

first_name last_name

Рис. 3. Дерево многоуровневого составного объекта

Декларация домена объявляет только один уровень дерева, а не целое дерево. Например, book не может быть описана таким предложением:

domains

book = book(title, author(first_name, last_name)) % неправильно

Практическое задание

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

  1. Имеется информация о служащих некоторой фирмы (не менее 10): фамилия, имя, отчество, год рождения, пол. Кроме того, известно о том, какую должность занимает служащий и какова его ставка. Построить правила, позволяющие получить

  • ФИО всех служащих;

  • ФИО тех сотрудников, ставка которых превышает указанную пользователем величину;

  • ФИО и должность всех женщин;

  • ФИО и должность людей, старше указанного пользователем возраста.

  1. Описать базу данных о продукции магазина: группа товара, наименование товара, информация о реализации (объем поставок, срок реализации, цена). Написать правила, с помощью которых можно узнать о:

  • всей продукции, имеющейся в магазине;

  • продукции заданной пользователем группы;

  • объем поставок и цену продукции, срок реализации которой составляет меньше 10 суток;

  • сумме, на которую поставляется указанный пользователем товар.

  1. Описать базу данных, хранящую информацию о животных небольшого зоопарка:

Контрольные вопросы

  1. ?

10