Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практикум по дисциплине Логическое и функциональное программирование

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
696 Кб
Скачать

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

Программирование структур данных на языке Prolog

Порядок выполнения работы:

В соответствии с вариантом написать программу поиска решения задачи на языке ПРОЛОГ с использованием структур данных. Во всех вариантах используется дерево, предложенное на рисунке.

3

2

5

1 2

8

9

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

1.

2.

3.

 

 

 

1. Определить макси-

1.Найти второй по вели-

1. Сформировать

мальный элемент списка

чине элемент списка чисел

новый список из тех

чисел [5, 2, 9, 8, 3, 1].

[1, 5, 2, 6, 3].

элементов списка [7, 1,

2. Определить число

2. Вычислить среднее

3, 8, 5, 4, 2], которые

вхождений элемента 2

арифметическое всех

стоят на нечетных

в дерево.

элементов дерева.

позициях.

 

 

2. Определить, входят

 

 

ли элементы 7 и 8 в

 

 

дерево.

4.

5.

6.

 

 

 

1. Подсчитать количе-

1. Найти сумму макси-

1. Определить среднее

ство целых чисел, вхо-

мального и минимального

арифметическое значе-

дящих в список [1, 2, 2,

элементов списка [8, 4, 2,

ние чисел списка [6, 3,

3, 4, 5, 5, 6, 6] только

6, 15].

7, 9, 4, 1].

один раз. Список упоря-

2. Найти в дереве длину

2. Определить, сколько

дочен.

(число ветвей) пути от

элементов дерева

2. Найти наибольший

корня до ближайшей вер-

находится на каждом

элемент дерева.

шины с элементом n.

уровне.

7.

8.

9.

 

 

 

1. Найти сумму элемен-

1. Перенести в конец

1. Получить новый

тов данного списка, ко-

списка [1, 2, 3, 4, 5] все

список из двух следу-

 

 

 

 

11

 

торые стоят на четных

четные элементы.

ющим образом: в нача-

позициях. Список [5, 1,

2. Определить максималь-

ло нового списка поме-

3, 7, 8, 4].

ную глубину дерева, т.е.

стить все четные эле-

2. Найти число вершин

число ветвей в самом

менты списка [5, 2, 4,

на n-м уровне дерева

длинном из путей от корня

8], а в конец – все не-

(корень считать верши-

дерева до листьев.

четные элементы спис-

ной 0-го уровня).

 

ка [1, 2, 5, 8, 7].

 

 

2. Вывести элементы

 

 

из всех листьев дерева.

 

 

 

10.

11.

12.

 

 

 

1. Определить элемент

1. Определить минималь-

1. Найти предпослед-

списка [1, 2, 3, 4, 6, 7, 9],

ный элемент списка чисел

ний по величине эле-

имеющий минимальное

[5, 2, 9, 8, 3, 1].

мент списка чисел

отклонение от среднего

2. Определить число

[1, 5, 2, 6, 8].

значения элементов

вхождений элемента 8 в

2. Вычислить сумму

списка.

дерево.

значений всех элемен-

2. Вывести все элементы

 

тов дерева.

дерева в порядке их воз-

 

 

растания.

 

 

 

 

 

13.

14.

15.

 

 

 

1. Сформировать новый

1. Подсчитать количество

1. Найти сумму эле-

список из тех элементов

целых чисел, входящих в

ментов данного списка,

списка [7, 1, 3, 8, 5, 4, 2],

список [6, 6, 5, 5, 4, 3, 2, 2,

которые стоят на не-

которые стоят на пози-

1] только один раз. Список

четных позициях. Спи-

циях, кратных трем.

упорядочен по убыванию.

сок [5, 1, 3, 7, 8, 4].

2. Определить, входят

2. Найти наименьший эле-

2. Найти число вершин

ли элементы 1 и 4 в де-

мент дерева.

дерева, являющихся

рево.

 

листьями.

 

 

 

16.

17.

18.

 

 

 

1. Определить, является

1. Сформировать новый

1. Подсчитать количе-

ли список симметрич-

список из тех элементов

ство целых чисел, вхо-

ным.

списка [9, 3, 2, 7, 6, 5, 1],

дящих в список [7, 7, 6,

2. Определить, сколько

которые стоят на позици-

6, 5, 4, 3, 2, 1] только

элементов дерева нахо-

ях, кратных двум.

один раз. Список упо-

дятся на 3-м уровне.

2. Определить, входят ли

рядочен по возраста-

 

элементы 2 и 5 в дерево.

нию.

 

 

2. Найти наибольший

 

 

элемент дерева.

 

 

 

 

12

 

19.

20.

21.

 

 

 

1. Найти сумму элемен-

1. Определить максималь-

1. Найти третий по ве-

тов данного списка, ко-

ный элемент списка чисел

личине элемент списка

торые стоят на четных

[6, 3, 7, 9, 4, 1].

чисел [5, 1, 3, 7, 8, 4].

позициях. Список [5, 1,

2. Определить, сколько

2. Определить, сколько

3, 2, 2, 9].

уровней у дерева.

элементов дерева

2. Вычислить среднее

 

находится на 1 и 2

арифметическое всех

 

уровне дерева.

листьев дерева.

 

 

22.

23.

24.

 

 

 

1. Сформировать новый

1. Подсчитать количество

1. Найти сумму эле-

список из тех элементов

целых чисел, входящих в

ментов данного списка,

списка [4, 6, 3, 7, 2, 5, 1],

список [7, 7, 6, 6, 5, 4, 3,

которые стоят на не-

которые стоят на пози-

2, 1], и вывести повторя-

четных позициях. Спи-

циях, не кратных двум.

ющиеся. Список упоря-

сок [3, 6, 2, 5, 4, 7].

2. Определить, входят

дочен по убыванию.

2. Вычислить среднее

ли элементы 1 и 3 в де-

2. Найти наименьший

арифметическое всех

рево.

элемент дерева.

листьев дерева на 2-м

 

 

уровне.

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

Граф. Связность. Длина пути

Порядок выполнения работы:

В соответствии с вариантом написать программу нахождения пути между вершинами и определить, является ли граф связным.

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

1.

2.

3.

4.

5.

6

13

7.

8.

 

9.

 

 

 

 

10.

11.

 

12.

 

 

 

 

13.

14.

 

15.

 

 

 

 

16.

17.

 

18.

 

 

 

 

19.

20.

 

21.

 

 

 

 

22.

23.

 

24.

 

 

 

 

 

 

14

 

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

Трансформация формул

Порядок выполнения работы:

1.Представить заданные формулы (исходную, заменяемую и замещающую) в префиксной форме.

2.Закодировать формулы в виде термов языка ПРОЛОГ.

3.Составить программу на языке ПРОЛОГ для замены одного терма на другой в исходном терме.

4.Осуществить трансформацию исходной формулы.

5.Представить полученную в п.4 формулу в инфиксной форме.

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

В исходной формуле заменить подформулу Р на подформулу R.

Исходная формула F

Заменяемая

Замещающая

подформула P

подформула R

 

 

 

 

 

 

1

(x*y/5-z)+x*y*w

x*y

x-a*y+1

 

 

 

 

2

(x ~(x&y)) ((~y ~(x&y) (x y x&y))

~(x&y)

~x (~y&z)

 

 

 

 

3

(x z) ((y z) (x y z)) (x y z))

A B

~A B

 

 

 

 

4

~((x ~(p q)) t&s)

~(A B)

~A&~B

 

 

 

 

5

(x x&y) (x z (x x&y))

x x&y

x z

 

 

 

 

6

~((x z)&(x y))&(~(x&z) t&u)

~(A&B)

~A ~B

 

 

 

 

7

(a>b a=1)&(d 100 f=q&(a>b a=1)

a>b a=1

p-1=2*q

 

 

 

 

8

(x&y z x) (z (y&z x))

A B

(A B)&(B A)

 

 

 

 

9

x|z y x|(z x|y y)

A|B

~A ~B

 

 

 

 

10

a*x 4+b*x 3+c*x 2+d*x+e

A B

B*A (B-1)

 

 

 

 

11

(x y)&(a b&(z w))

A&(B C)

A&B A&C

 

 

 

 

12

p&q a&b&(c x&y)

A B&C

(A B)&(A C)

 

 

 

 

13

(~ (p q) (~p&q)*r|~p

~A&B

A ~B

 

 

 

 

14

~ (((~p q) (p^r))&(p r)) |~q

~(A&B)

~A ~B

 

 

 

 

15

(x*y-z/w)+x*y*z/w

z/w

x-a*y-3

 

 

 

 

 

15

 

 

16

(~x z) (( ~y z) (x ~y c)) (x ~y z))

~A B

A B

 

 

 

 

17

(z z&y)->(x z (y y&x))

A A&B

A B

 

 

 

 

18

a*x 8-b*x 7+c*x 6+d*x-10

A B

B/(A (B+1))

 

 

 

 

19

(x (y&z) x) & (z (y&z x))

(A B)&(B A)

A B

 

 

 

 

20

(x ~(x&y)) ((~y ~(x&y) (x y x&y))

~(A&B)

~A ~B

 

 

 

 

21

~((x (p~&~q) t&s)

~A&~B

~(A B)

 

 

 

 

22

~p q ~a&b&(c ~x y&p)

A B

~A B

 

 

 

 

23

~x ~z y ~x ~ (z ~x ~y y)

~A ~B

A|B

 

 

 

 

24

a*x 4+b*x 3+c*x 2+d*x+e

B*A

A (n-1)|B

 

 

 

 

Примечания: В данной таблице приняты следующие обозначения.

1)Большими буквами A и B обозначены подформулы;

2)Знак обозначает логическую функцию «эквивалентность»;

3)знак | обозначает логическую функцию Шеффера;

4)Знак ~ обозначает логическую функцию отрицания;

5)Знак означает логическую функцию «импликация»;

6)Знак означает арифметическую операцию возведения в степень;

7) Старшинство операций (в порядке убывания): а) отрицание; б) конъюнкция, функция Шеффера; в) дизъюнкция; г) импликация.

Подписано в печать 20.06.2016г. Формат 60х90 1/16. Объём 1,0 усл.п.л. Тираж 50 экз. Изд. № 46. Заказ 78.

ООО «Брис-М». Москва, ул. Авиамоторная, д. 8а.

16

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]