Практическое задание
Пусть дана следующая программа:
p: - a, b.
p: - c.
Декларативный смысл которой следующий: p будет истиной тогда и только тогда, когда будут истинны одновременно a и b, или будет истинным с. Каков декларативный смысл следующих программ?
а) p: - a,!,b.
p: - c.
b) p: - c.
p: - a,!,b.
Следующие отношения классифицируют числа на три класса – положительные, нуль и отрицательные:
класс(Число, положительное): - Число>0.
класс(0, нуль).
класс(Число, отрицательное): - Число<0.
Сделать данную процедуру более эффективной с помощью отсечения.
Пусть имеется программа:
р(4).
р(5):- !.
р(6).
Напишите ответы Пролог-системы на такие запросы:
а) цель: p(X).
б) цель: p(X), p(Y).
c) цель: p(X), !, p(Y).
Объясните полученные ответы.
Напишите программу нахождения максимума двух чисел, используя предикат отсечения.
Индивидуальное задание 1. Разработать программу на языке Турбо-Пролог, использующую метод отсечения и отката для решения следующей задачи: из состава студенческой группы выбрать и вывести на экран фамилии студентов, удовлетворяющих одному из условий таблицы 3. Номер варианта совпадает с остатком от деления номера зачетной книжки на 25.
Примечание: фамилии, годы рождения студентов и пр., используемые при построении базы данных программы, не обязательно должны соответствовать фактическим данным.
Таблица 3.
№ варианта |
Условие выборки |
1 |
Родившихся в 1979 году |
2 |
Родившихся в Рыбнице |
3 |
Живущих в общежитии |
4 |
Изучавших немецкий язык |
5 |
Сдавших экзамен по высшей математике на «4» |
6 |
Состоящих в браке |
7 |
Живущих вместе с родителями |
8 |
Сдавших в школе экзамен по химии на «5» |
9 |
Учившихся в рыбницкой школе |
10 |
Живущих на ул. Вершигора |
11 |
Имеющих автомобиль |
12 |
Имеющих компьютер |
13 |
Чья работа связана с командировками |
14 |
Чье имя Александр |
15 |
Имеющих детей |
16 |
Блондинов |
17 |
Имеющих спортивный разряд |
18 |
Служивших в армии |
19 |
Владеющих украинским языком |
20 |
Работающих по специальности |
21 |
Переболевших гриппом в текущем году |
22 |
Совершивших прыжки (прыжок) с парашютом |
23 |
Умеющих стрелять |
24 |
Владеющих приемами рукопашного боя |
25 |
Летавших на самолете |
Индивидуальное задание 2. Составить программу на языке Турбо-Пролог для вычисления функций А = А(x, y, z) и В = В(x, y, z) при условиях, заданных в таблице 2. Задачу решить для двух значений x, заданных соответственно в верхней и нижней строках.
Таблица 2.
№ варианта |
Вид функций при условиях |
x |
y |
z |
1 |
0,981
-0,32 |
-2,625 |
0,512 | |
2 |
-1,251
8,367 |
0,827 |
0,001 | |
3 |
0,263
3,251 |
0,321 |
0,466 | |
4 |
6,002
-0,622 |
3,235 |
0,541 | |
5 |
1,625
6,31 |
5,4 |
0,252 | |
6 |
0,625
17,421 |
10,365 |
0,828 | |
7 |
0,451
2,444 |
0,869 |
-0,166 | |
8 |
0,335
0,001 |
0,025 |
0,805 | |
9 |
5,982
3,258 |
4,005 |
-0,661 | |
10 |
8,251
-0,92 |
0,11 |
0,765 | |
11 |
1,542
0,085 |
0,261 |
0,032 | |
12 |
5,061
1,426 |
1,22 |
3,5 | |
13 |
-4,5
1,62 |
0,75 |
0,845 | |
14 |
0,025
3,741 |
-0,82 |
0,16 | |
15 |
0,412
0,011 |
0,275 |
-0,486 | |
16 |
-15,246
3,52 |
4,642 |
2,401 | |
17 |
6,55
0,08 |
2,75 |
0,15 | |
18 |
0,465
5,15 |
6,33 |
3,25 | |
19 |
15,331
-2,23 |
-0,823 |
15,221 | |
20 |
|
1,825
9,052 |
8,426 |
17,5 |
21 |
7,8
0,65 |
-5,5 |
2,3 | |
22 |
6,32
-0,85 |
1,25 |
0,22 | |
23 |
7,15
0,11 |
2,55 |
0,12 | |
24 |
1,34
4,31 |
2,981 |
3,075 | |
25 |
3,75
0,22 |
-6,72 |
1,05 |