Задания контрольной работы по дисциплине «Функциональное и логическое программирование»



Скачать 34.67 Kb.
Дата22.04.2016
Размер34.67 Kb.
Задания контрольной работы по дисциплине

«Функциональное и логическое программирование»

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

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


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

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

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

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

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

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

аэропорт(Москва,Внуково).аэропорт(СПб,Пулково).аэропорт(Лондон,Хитроу).
2. Составить программу на языке Пролог-Д для решения заданной в варианте задачи с использованием набора фактов о ценах:
товар(масло,32).товар(хлеб,14).товар(молоко,23).товар(рис,26).товар(мыло,15).

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



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

1 вариант

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

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

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

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

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


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

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

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

K=2
Решение



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

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

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

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

S=Москва


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

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

T=Анталья

T=Хабаровск

T=СПб

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



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

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

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

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

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

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

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

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


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

S=Москва


T=Анталья

T=Хабаровск

T=СПб


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

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

K=2


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

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

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

сколько([A|B],S,K):-товар(A,C),C=

сколько(B,S,N), K is N+1.

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

сколько([_|B],S,K):-сколько(B,S,K).

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

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

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

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

сколько([A|B],S,K):-товар(A,C),C=

сколько(B,S,N), K is N+1.

сколько([_|B],S,K):-сколько(B,S,K).



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

K=4


База данных защищена авторским правом ©bezogr.ru 2016
обратиться к администрации

    Главная страница