Задание. Задача: создать программу Домашние животные с использованием составных объектов

Задача: создать программу Домашние животные с использованием составных объектов.

Создание программы

1. Создать программу:

Domains

person=person (p_name,address) % функтор персона состоит из функтора

имя персоны и функтора адрес персоны

p_name=p_name (name, fameli) % функтор имя персоны состоит из

объектов имени и фамилии

address =address (hous,street,sity) % функтор адрес персоны состоит из

объектов дом,улица, город

animal=animal(vid,a_name) % функтор животные состоит из объектов вид

животного, кличка животного

hous=integer % домен дом – числовой

vid,a_name,name,fameli,street,sity=symbol % домены вид животного,

кличка животного, имя персоны, фамилия

персоны, улица, город – символьные

Predicates

owns(person,animal) % описание составного объекта персона имеет

животного (состоит из функторов

персона и животное)

Clauses

owns(person(p_name(oleg,petrov),address(12,mira,toliatti)),animal(horse,leo)).

owns(person(p_name(oleg,petrov),address(12,mira,toliatti)),animal(dog,dik)).

owns(person(p_name(liza,rizova),address(15,matrosova,toliatti)),animal(dog,bim)).

owns(person(p_name(olga,ivanova),address(46,mira,toliatti)),animal(cat,vacia)).

owns(person(p_name(sergei,orlova),address(16,sovetskai,toliatti)),animal(dog,mili)).

owns(person(p_name(pasha,nikolaev),address(55,matrosova,toliatti)),animal(dac,kra)).

Goal

owns(person(p_name(Name_person,Famili_person),address(_,_,_)),animal(dog,Name_dog)). % показать всех хозяев собак и клички собак

Получим результат:

Name_person=oleg, Famili_person=petrov, Name_dog=dik

Name_person=liza, Famili_person=rizova, Name_dog=bim

Name_person=sergei, Famili_person=orlova, Name_dog=mili

3 Solutions

В данной программе использовались многоуровневые составные объекты. На рисунке 10 представлено дерево многоуровневого составного объекта owns.


Рисунок 10 - Дерево многоуровневого составного объекта owns

Добавим в программу выражение: персонам нравятся те виды животных, которые они содержат.

like(Name,Fameli,Vid):-owns (person (p_name (Name,Fameli), address(_,_,_)), animal(Vid,_)).

2. Определить какие животные нравятся Олегу Петрову, если ему нравятся те же животные что и Ольге Ивановой.

3. Показать всех персон содержащих лошадей, проживающих не в городе Тольятти.

4. Добавить в функтор персона составной объект дата рождения, дерево составного объекта дата рождения представлено на рисунке 11.

 
 


Рисунок 11 - Дерево составного объекта birthday

5. Показать всех персон именинников в мае месяце на содержащих кошек.

6. Организовать 2-3 запроса с составной целью.

Вопросы для самоконтроля

1. Перечислите и опишите виды объектов в Visual Prolog.

2. Дайте определение простому объекту данных.

3. Перечислите простые виды объектов в Visual Prolog.

4. Дайте определение составному объекту данных.

5. Дайте определение функтору.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: