Разработка базы данных, содержащей сведения об игрушках, предлагаемых в магазине

Страницы работы

Содержание работы

Министерство образования и науки Российской Федерации

Новосибирский Государственный Технический Университет

Кафедра экономической информатики

Лабораторная работа №2

По дисциплине:

«Интеллектуальные информационные системы»

Факультет: Бизнеса

Группа: ФБИ-51

Выполнили:  Бабаев Р.Р.

                      Виленкин А.М.

Преподаватель: Авдеенко Т.В.

Новосибирск

2008 г

Текст задания:

Разработайте   базу данных,  содержащую  сведения  об игрушках, предлагаемых в магазине:  название  игрушки  (кукла,  кубики,  мяч, и т.д.), ее стоимость и воз­растные границы детей, для которых игрушка предназначена. Получить следующие сведения (примерный перечень, придумать еще столько же):

а) название игрушек, цена которых не превышает 400 руб. и кото­рые подходят детям 5 лет;

б) название игрушек, которые подходят как детям 4 лет, так и детям 10 лет;         

в) цены всех кубиков;

г) можно ли дедушке подобрать внуку на день рождения игрушку, любую, кроме мяча, подходящую ребенку 3 лет, и дополнительно мяч так, чтобы суммарная стоимость покупки не превосходила 500 руб.;

д) название наиболее дорогих игрушек (цена которых отличается от самой дорогой игрушки не более чем на  100 руб.

Текст программы

domains

name=symbol.

cost=real.

age=integer.

predicates

nondeterm maxprice(cost,cost).

nondeterm minprice(cost,cost).

nondeterm minpricefor(cost, cost, name).

nondeterm toy(name,cost,age).

nondeterm toybyprice(name,cost,age,age,age)

nondeterm dedushka().

nondeterm select(name, cost, age).

nondeterm counttoy(name, cost).

clauses

toy(baby,180,6).

toy(baby,250,6).

toy(soldier,150,5).

toy(soldier,1300,4).

toy(cube,30,4).

toy(cube,30,3).

toy(cube,20,4).

toy(ball,100,7).

toy(car,200,7).

toy(ship,790,7).

toy(ship,800,4).

toy(ship,810,10).

toy(airplane,700,10).

select(Name, Cost, Age):-toy(Name1, Cost1, Age1),toy(Name, Cost, Age), Name1<>Name, Cost1<>Cost, Age1<>Age.

toybyprice(Name,Cost,Age,L,M):-toy(Name,Cost,Age), Age>=L and Age<=M.

counttoy(Name, Count):-toy(Name,_,_), Count1=Count+1, counttoy(Name, Count1).

counttoy(Name, Count):-write(Name, Count).

dedushka():-toy(Name,Cost,Age), Name<>"ball", Age=3, toy(Name1, Cost1, _), Name1=ball, Cost+Cost1<500.

maxprice(Price, X):-toy(_,Price1,_), Price1>Price, !, maxprice(Price1, X).

maxprice(P,P1):-P1=P, toy(_,P,_).

minprice(Price, X):-toy(_,Price1,_), Price1<Price, !, minprice(Price1, X).

minprice(P,P1):-P1=P, toy(_,P,_).

minpricefor(Price, X, Name):-toy(Name,Price1,_), Price1<Price, !, minpricefor(Price1, X, Name).

minpricefor(P,P1,Name):-P1=P, write("The most chip ",Name, " ").

goal

%vneshnie celi

%counttoy(ship, 0).

% minpricefor(5000, Is, ship).

% minprice(5000, P).

% maxprice(0,P).

%toy(Name, Cost, Age), Cost<400, Age=5.n

/*toy(Name, Cost, Age), Age=4, toy(Name1, Cost1, Age1), Age1=10, Name=Name1.*/

/*toy(Name,Cost,_), Name="cube".*/

/*dedushka().*/

/*toybyprice(Name,Cost,Age,3,4).*/

Результаты выполнения:

1. minpricefor(5000, Is, ship) – поиск наименьшей цены товара «ship»

2. minprice(5000, P) – поиск цены самой дешевой игрушки.

3. maxprice(0,P) – поиск цены самой дорогой игрушки.

4. toy(Name, Cost, Age), Cost<400, Age=5. – поиск игрушки ценой меньшей чем 400 у.е. для пятилетнего ребенка.

6. toy(Name, Cost, Age), Age=4, toy(Name1, Cost1, Age1), Age1=10, Name=Name1 – поиск игрушки подходящей как для 4, так и для 10 летнего ребенка.

7. toy(Name,Cost,_), Name="cube" – поиск цен всех кубиков

8. dedushka() цель дающая ответ на вопрос можно ли дедушке подобрать внуку на день рождения игрушку, любую, кроме мяча, подходящую ребенку 3 лет, и дополнительно мяч так, чтобы суммарная стоимость покупки не превосходила 500 руб.

9. toybyprice(Name,Cost,Age,3,4) поиск игрушек для детей 3-4 лет

4. Декларативный смысл фактов и предложений.

Для задания фактов использовалась следующая конструкция: toy(name,cost,age), где name –это название игрушки, cost – цена и age – возраст ребенка для которого предназначена данная игрушка. Например, игрушка солдат для 3 летнего ребенка, ценой 1300 у.е. – toy(solder, 1300, 3).

Смысл правила: toybyprice(Name,Cost,Age,L,M):-toy(Name,Cost,Age), Age>=L and Age<=M. таков: переменные Name, Cost, Age – служат для вывода на экран названий, цен и возрастных границ для игрушек, L и M используется как константы для задания границ поиска. Правило работает так: по порядку перебираются все факты, и если переменная Age попадает в заданные границы, то правило успешно выполняется с выводом значений на экран. Но поскольку цель является внешней, то вычисления не заканчиваются на первом успехе, они продолжаются до тех пор пока не программа не просмотрит все имеющиеся факты.

Смысле следующего правила основан на рекурсии:

minpricefor(Price, X, Name):-toy(Name,Price1,_), Price1<Price, !, minpricefor(Price1, X, Name).

minpricefor(P,P1,Name):-P1=P, write("The most chip ",Name, " ")

Задавая внешнюю цель: minpricefor(5000, Is, ship) мы вызываем соответствующее правило. Константа 5000 задана для перебора цен всех игрушек (но нам уже заведомо известна цена самой дорого игрушки), переменная Is используется для вывода на экран цены, в данном случае игрушки «корабль». При вызове переменная Price получает значение равное 5000, с которым и будет сравниваться цена первой игрушки, но если ее цена окажется ниже, то через рекурсивный вызов minpricefor, переменная price получит новое значение содержащееся в переменной Price1. Вызов рекурсии будет продолжаться до тех пор (за счет использования оператора отсечения cut), пока программа не переберет все факты. Затем будет вызвано следующее правило с тем же названием minpricefor, которое через переменные P, Name получит соответственно цену и название найденной игрушки и с помощью оператора write выедет их на экран.

Похожие материалы

Информация о работе