Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Семестр 8 - Контрольная работа Функциональное и....doc
Скачиваний:
2
Добавлен:
07.12.2018
Размер:
114.18 Кб
Скачать

(Для всех вариантов)

1. Создать запрос в соответствии с вариантом к следующему набору фактов на языке Пролог-Д:

рейс(Челябинск,Анталья,Ту154).рейс(Челябинск,Хургада,А310).

рейс(Челябинск,Москва,Б737).рейс(Екатеринбург,Лондон,Б757).

рейс(Екатеринбург,Гамбург,А310).рейс(Екатеринбург,Москва,Ил96).

рейс(Екатеринбург,Хургада,А310).рейс(Москва,Анталья,Б737).

рейс(Москва,Хабаровск,Ту204).рейс(Москва,СПб,Ан148).

аэропорт(Челябинск,Баландино).аэропорт(Екатеринбург,Кольцово).

аэропорт(Москва,Внуково).аэропорт(СПб,Пулково).аэропорт(Лондон,Хитроу).

2. Составить программу на языке Пролог-Д для решения заданной в варианте задачи с использованием набора фактов о ценах:

товар(масло,32).товар(хлеб,14).товар(молоко,23).товар(рис,26).товар(мыло,15).

товар(творог,26).товар(кефир,14).товар(соль,9).

Варианты заданий контрольной работы

1 вариант

1. Какие самолёты летают в Анталью?

2. Составить правило «товары» для упорядочения заданного списка товаров по возрастанию цены, например:

?товары([рис,хлеб,молоко,мыло],A).

А=[хлеб,мыло,молоко,рис]

2 вариант

1. Какие самолёты летают из Москвы?

2. Составить правило «сумма» для подсчета стоимости заданного списка товаров, например:

?сумма([рис,хлеб,молоко,мыло],с).

с=78

3 вариант

1. Из каких аэропортов летают самолёты Б737?

2. Составить правило поиска в заданном списке товаров самого дешёвого, например:

?дешёвый([рис,хлеб,молоко,мыло],д).

д=хлеб

4 вариант

1. В какие города летают самолёты А310?

2. Составить правило поиска в заданном списке товаров самого дорогого, например:

?дорогой([рис,хлеб,молоко,мыло],д).

д=рис

5 вариант

1. Между какими городами летает Ту204?

2. Составить правило поиска пар товаров с одинаковыми ценами, например:

?пара(а,б).

а=хлеб а=рис

б=кефир б=творог

6 вариант

1. В какие города летают А310 из Екатеринбурга?

2. Составить правило отбора из заданного списка тех товаров, цены которых не превышают заданную величину, например:

?отбор([мыло,масло,кефир,творог,соль],15,А).

А=[мыло,кефир,соль]

7 вариант

1. Какие аэропорты принимают самолёты Б737?

2. Составить правило отбора из заданного списка тех товаров, цены которых не превышают цену первого в списке, например:

?отбор([мыло,масло,кефир,творог,соль],А).

А=[мыло,кефир,соль]

8 вариант

1. Какие самолёты можно увидеть во Внукове?

2. Составить правило поиска цены самого дорогого товара из заданных в списке, например:

?дорогой([рис,хлеб,молоко,мыло],д).

д=26

9 вариант

1. Между какими аэропортами летает Ан148?

2. Составить правило поиска цены самого дешёвого товара из заданных в списке, например:

?дешёвый([рис,хлеб,молоко,мыло],д).

д=14

10 вариант

1. Из каких аэропортов есть рейсы в Хургаду?

2. Составить правило поиска таких троек, где вместо одного товара можно купить два других за ту же сумму, например:

?товары(а,б,в).

а=молоко б=кефир в=соль

Пример выполнения задания контрольной работы

0 вариант

  1. В какие города летают самолеты из аэропорта Внуково?

  2. Составить правило вычисления количества товаров, которые по карману владельцу суммы в 20 рублей, если покупается только один товар из возможных, заданных списком, например:

?сколько ([рис,хлеб,молоко,мыло],20,к).

к=2

Решение

  1. В какие города летают самолеты из аэропорта Внуково?

Запрос может состоять из двух частей:

Во-первых: к какому городу «г» относится аэропорт Внуково?

?аэропорт(г,Внуково).

г=Москва

Во-вторых: в какие города «д» летают самолёты из Москвы? При этом тип самолёта не важен, маскируем его анонимной переменной «_».

?рейс(Москва,д,_).

д=Анталья

д=Хабаровск

д=СПб

Составной запрос выглядит так: в какие города «д» есть рейсы из города «г», к которому относится аэропорт Внуково?

рейс(Челябинск,Анталья,Ту154).рейс(Челябинск,Хургада,А310).

рейс(Челябинск,Москва,Б737).рейс(Екатеринбург,Лондон,Б757).

рейс(Екатеринбург,Гамбург,А310).рейс(Екатеринбург,Москва,Ил96).

рейс(Екатеринбург,Хургада,А310).рейс(Москва,Анталья,Б737).

рейс(Москва,Хабаровск,Ту204).рейс(Москва,СПб,Ан148).

аэропорт(Челябинск,Баландино).аэропорт(Екатеринбург,Кольцово).

аэропорт(Москва,Внуково).аэропорт(СПб,Пулково).

аэропорт(Лондон,Хитроу).

?аэропорт(г,Внуково),рейс(г,д,_).

г=Москва

д=Анталья

д=Хабаровск

д=СПб

  1. Составить правило вычисления количества товаров, которые по карману владельцу суммы в 20 рублей, если покупается только один товар из возможных, заданных списком, например:

?сколько ([рис,хлеб,молоко,мыло],20,к).

к=2

Во-первых, из пустого списка можно выбрать 0 товаров при любой сумме в кармане:

сколько([],_,0).

Во-вторых, если товар «а» в голове списка нам по карману (его цена «ц» не превышает располагаемую сумму «с»), то здесь нужно поставить отсечение «!», исключающее переход к другому варианту (где товар нам не по карману), затем нужно подсчитать количество доступных товаров «н» в хвосте списка «Б» и, увеличив «н» на единицу, получить искомое количество «к».

сколько([а|Б],с,к):-товар(а,ц),НЕ(БОЛЬШЕ(ц,с)),!,

сколько(Б,с,н),СЛОЖЕНИЕ(н,1,к).

Наконец, последняя, третья альтернатива правила «сколько» будет выбрана только в том случае, если разбор второй альтернативы не дошёл до отсечения, а это значит, что головной элемент списка нам не по карману, или его цена неизвестна, и количество доступных товаров в списке равно количеству доступных товаров в хвосте списка:

сколько([_|Б],с,к):-сколько(Б,с,к).

Целиком программа выглядит так:

товар(масло,32).товар(хлеб,14).товар(молоко,23).товар(рис,26).

товар(мыло,15).товар(творог,26).товар(кефир,14).товар(соль,9).

сколько([],_,0).

сколько([а|Б],с,к):-товар(а,ц),НЕ(БОЛЬШЕ(ц,с)),!,

сколько(Б,с,н),СЛОЖЕНИЕ(н,1,к).

сколько([_|Б],с,к):-сколько(Б,с,к).

?сколько ([рис,хлеб,коньяк,мыло,масло,творог,кефир,соль],25,к).

к=4