Логічні задачі на мові програмування Prolog

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Логічні задачі на мові програмування Prolog

 

Завдання 1.

1. Ввести запропонований текст програми, реалізувати її і записати на диск.
divdicates
hello.
goal
hello.
clauses
hello: -
makewindow (1,7,7, "Моя перша програма", 4,56,14,22),
nl, write ("Введіть ваше ім'я, \ n", "потім натисніть Enter."),
cursor (4,6),
readln (Name), nl,
write ("Ласкаво просимо \ n в PDC Prolog, \ n ","", Name ,"!").
Результат: Ласкаво просимо в PDC Prolog, Vladimir!
2. Навмисне ввести друкарські помилки в текст програми і ознайомитися з повідомленнями про ці всі помічені, виправити їх.
divdicates
hello.
goal
hello.
clauses
hello: -
makewindow (1,7,7, "Моя перша програма", 4,56,14,22)
nl, write ("Введіть ваше ім'я, n", "потім натисніть Enter."),
cursor (4,6),
readln (Name) nl,
write ("Ласкаво просимо \ n в PDC Prolog, \ n", ", Name ,!").
Результат: 423 Syntax eror.

Завдання 2.

Реалізувати програму з введенням перерахованих нижче цілей і перевірити отримані результати. Цілі зовнішні.
divdicates
book (symbol, symbol, symbol, integer).
clauses
book ("Фігурне В.Е.", "IBM PC для користувача", "ФиС", 1988).
book ("Пєтухов О.А.", "Проектування ОРБД", "Суднобудування", 1984).
book ("Пєтухов О.А.", "Об'єктно-реляційні моделі даних", "СЗПІ", 1987).
book ("Пєтухов О.А.", "Моделювання СМО", "СЗПІ", 1989).
book ("Пєтухов О.А.", "PDC Prolog", "СЗПІ", 2000).
book ("Анкудінов Г.І.", "Теорія автоматів", "СЗПІ", 1997).
book ("Миколаїв В.І.", "Дискретні структури", "СЗПІ", 1999).
Результат: X = Proektirovanie OR BD, Y = SUDOSTROENIE, Z = 1984
X = Object models of DATA, Y = SZPI, Z = 1987
X = Modelirovanie CMO, Y = SZPI, Z = 1989
X = PDC Prolog, Y = SZPI, Z = 2000
4 Solutions
X = Proektirovanie OR BD
X = Object models of DATA
X = Modelirovanie CMO
X = PDC Prolog
4 Solutions
E = Petuchov OA, X = Object models of DATA, Z = 1987
E = Petuchov OA, X = Modelirovanie CMO, Z = 1989
E = Petuchov OA, X = PDC Prolog, Z = 2000
E = Ankudinov GI, X = Automat theory, Z = 1997
E = Nikolaev VI, X = Diskretniye struktury, Z = 1999
5 Solutions

Завдання 3.

Реалізувати програму з введенням всіх перерахованих зовнішніх цілей і перевірити отримані результати:
domains
name = symbol
year_in, year_out = integer
divdicates
parents (name, name)
woman (name)
man (name)
offspring (name, name)
father (name, name)
mother (name, name)
parent_parents (name, name)
brother (name, name)
grandfather (name, name)
grandmother (name, name)
emperor (name, year_in, year_out)
emperor_was (name, integer)
clauses
parents ("Петро III", "Павло I").
parents ("Катерина II", "Павло I").
parents ("Павло I", "Олександр I").
parents ("Павло I", "Микола I").
parents ("Микола I", "Олександр II").
parents ("Олександр II", "Олександр III").
parents ("Олександр III", "Микола II").
woman ("Катерина II").
man ("Петро III").
man ("Павло I").
man ("Алексндр I").
man ("Микола I").
man ("Олександр II").
man ("Олександр III").
man ("Микола II").
offspring (Y, X):-parents (X, Y).
father (X, Y):-parents (X, Y), man (X).
mother (X, Y):-parents (X, Y), woman (X).
parent_parents (X, Z):-parents (X, Y), parents (Y, Z).
brother (X, Y):-parents (Z, X), parents (Z, Y), man (X), X <> Y.
grandfather (X, Y):-father (X, Z), father (Z, Y).
grandmother (X, Y):-mother (X, Z), father (Z, Y).
emperor ("Петро III", 1761,1762).
emperor ("Катерина II", 1762,1796).
emperor ("Павло I", 1796,1801).
emperor ("Олександр I", 1801,1825).
emperor ("Микола I", 1825,1855).
emperor ("Олександр II", 1855,1881).
emperor ("Олександр III", 1881,1894).
emperor ("Микола II", 1894,1917).
emperor_was (X, Y):-emperor (X, A, B), Y> = A, Y <= B.
Результат: Y = aleksandr IX = petr III, A = 1761, B = 1762 X = pavel I
1 Solution X = ekaterina II, A = 1762, B ​​= 1 769 1 Solution
X = pavel I, A = 1796, B = 1801
X = aleksandr I, A = 1801, B = 1825
X = nikolay I, A = 1825, B = 1855
X = aleksandr II, A = 1855, B = 1881
X = aleksandr III, A = 1881, B = 1894
X = nikolay II, A = 1894, B = 1917
8 Solutions

Завдання 4.

1. Реалізувати наведену програму:
domains
name = symbol
divdicates
star (name)
planet (name)
revolve (name, name)
satellite (name, name).
goal
satellite (X, "Марс"),
write (X, "супутник Марса."),
nl.
clauses
star ("Сонце").
planet ("Земля").
planet ("Марс").
revolve ("Земля", "Сонце").
revolve ("Марс", "Сонце").
revolve ("Місяць", "Земля").
revolve ("Фобос", "Марс").
revolve ("Деймос", "Марс").
satellite (X, Y):-planet (Y), revolve (X, Y).
Результат: Фобос супутник Марса.
2. Написати та реалізувати програму встановлення родинних зв'язків: Василь має дочку Ольгу, у якої два сини Михайло і Максим. Використовувати зовнішні і внутрішні цілі.
domains
name = symbol
divdicates
men (name)
mama (name)
sons (name, name)
doughter (name, name)
deda (name, name)
brother (name, name).
goal
doughter (Z, Y),
write (Z, Y),
nl.
clauses
men ("Vaciliy").
men ("Michail").
men ("Maxim").
mama ("Olga").
sons ("Michail", "Olga").
sons ("Maxim", "Olga").
doughter ("Olga", "Vasiliy").
deda (X, Y): - men (X), men (Y), sons (X, Y), doughter (Z, Y).
brother (X, Y): - men (X), men (Y), sons (X, Z), sons (Y, Z), X <> Y.
Результат: Olga, Vaciliy

Завдання 5.

1. Реалізувати таку програму: Отримати псевдовипадкові речові числа в діапазоні від 0 до 1.
goal
random (X),
Z = X,
write ("Псевдовипадкові дійсне число від 0 до 1:", Z),
nl.
Результат: 0,64823988962
2. Отримати випадкові цілі числа в діапазоні від 0 до 10 та від 10 до 35.
goal
random (10, X),
Z = X,
write ("Псевдовипадкові дійсне число від 0 до 10:", Z),
nl.
Результат: 5
goal
random (25, X),
Z = X + +10,
write ("Псевдовипадкові дійсне число від 10 до 35:, Z),
nl.
Результат: 21

Завдання 6.

1.

Реалізувати наведену пргограмму для обчислення
goal
write ("X ="),
readint (X),
nl,
write ("K ="),
readreal (K),
nl,
Z = exp (sin (X)) + sqrt (K + X * X),
write ("Z =", Z).
Результат: X = 5, K = 16, Z = 6,7864292326
2. У режимі калькулятора обчислити X = (2 + 5) * 3,4, тобто вводячи значення 2, 5, 3.4 з клавіатури.
goal
write ("X ="),
readint (X),
nl,
write ("K ="),
readint (K),
nl,
write ("N ="),
readreal (N),
nl
Z = (X + K) * N,
write ("Z =", Z).
Результат: 23,8

Завдання 7.

  1. Реалізувати наведену програму з зовнішньої зв'язком, виконавши всі чотири арифметичні операції.
divdicates
operation (symbol, real, real)
clauses
operation ("+", X, Y):-Z = X + Y,
write (X ,"+", Y ,"=", Z),
nl.
operation ("-", X, Y):-Z = XY,
write (X ,"-", Y ,"=", Z),
nl.
operation ("*", X, Y):-Z = X * Y,
write (X ,"*", Y ,"=", Z),
nl.
operation ("/", X, Y):-Z = X / Y,
write (X ,"/", Y ,"=", Z),
nl.
Результат: Z = 8 +2 Z = 8-2 Z = 8 * 2 Z = 8 / 2
Z = 10 Z = 6 Z = 16 Z = 4
1 Solution 1 Solution 1 Solution 1 Solution
2. Реалізувати цю ж програму з внутрішньою метою
divdicates
operation (symbol, real, real)
Goal
write ("Vvedite chisla"),
nl,
readreal (X),
nl,
readreal (Y),
nl,
operation ("+", X, Y),
operation ("-", X, Y),
operation ("*", X, Y),
operation ("/", X, Y).
clauses
operation ("+", X, Y):-Z = X + Y,
write (X ,"+", Y ,"=", Z),
nl.
operation ("-", X, Y):-Z = XY,
write (X ,"-", Y ,"=", Z),
nl.
operation ("*", X, Y):-Z = X * Y,
write (X ,"*", Y ,"=", Z),
nl.
operation ("/", X, Y):-Z = X / Y,
write (X ,"/", Y ,"=", Z),
nl.
Результат: Vvedite chisla
2
4
2 +4 = 6
2-4 =- 2
2 * 4 = 8
2 / 4 = 0,5

Завдання 9.

Реалізувати програму завдання 4 з новою метою, що використовує вбудований предикат fail, і проаналізувати отриманий результат.
domains
name = symbol
divdicates
men (name)
mama (name)
sons (name, name)
doughter (name, name)
deda (name, name)
brother (name, name).
goal
deda (X, "Vaciliy"),
write (X, "Vaciliy"),
nl.
clauses
men ("Vaciliy").
men ("Michail").
men ("Maxim").
mama ("Olga").
sons ("Michail", "Olga").
sons ("Maxim", "Olga").
doughter ("Olga", "Vasiliy").
deda (X, Y): - men (X), men (Y), sons (X, Y), doughter (Z, Y), nl,
write ("", X), nl, fail.
brother (X, Y): - men (X), men (Y), sons (X, Z), sons (Y, Z), X <> Y.
Результат: Michail
Maxim

Завдання 10.

Реалізувати програми обчислення суми наступних рядів:
1. 1 + 2 + 3 + ... + 9 + 10
2. 2 + 4 + 6 + ... + 14 + 16
3. 10 + 9 + 8 + ... + 2 + 1
4. 1 + 3 + 5 + ... + 13 + 15
domains
number, sum = integer
divdicates
sum (number, sum)
goal
write ("Сума ряду:"),
sum (1, sum), write (sum).
clauses
sum (11,0).
sum (Number, Sum): -
New_number = Number +1,
sum (New_number, Partial_sum),
Sum = Number + Partial_sum.
Результат: Сума ряду: 55
domains
number, sum = integer
divdicates
sum (number, sum)
goal
write ("Сума ряду:"),
sum (2, sum), write (sum).
clauses
sum (18,0).
sum (Number, Sum): -
New_number = Number +2,
sum (New_number, Partial_sum),
Sum = Number + Partial_sum.
Результат: Сума ряду: 72
domains
number, sum = integer
divdicates
sum (number, sum)
goal
write ("Сума ряду:"),
sum (9, sum), write (sum).
clauses
sum (0,11).
sum (Number, Sum): -
New_number = Number-1,
sum (New_number, Partial_sum),
Sum = Number + Partial_sum
Результат: Сума ряду: 55
domains
number, sum = integer
divdicates
sum (number, sum)
goal
write ("Сума ряду:"),
sum (1, sum), write (sum).
clauses
sum (17,0).
sum (Number, Sum): -
New_number = Number +2,
sum (New_number, Partial_sum),
Sum = Number + Partial_sum.
Результат: Сума ряду: 64

Завдання 12.

Написати програму, що створює список міст. Виконати програму з різними внутрішніми і зовнішніми цілями.
domains
town_list = town *
town = symbol
divdicates
towns (town_list)
goal
towns ([A, B, C, D, E]),
write (A ,",", B ,",", C ,",", D ,",", E).
clauses
towns (["Kazan", "Nignekamsk", "Elabuga", "Bugulma", "Almetevsk"]).

Результат: Kazan, Nignekamsk, Elabuga, Bugulma, Almetevsk

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Завдання
17кб. | скачати


Схожі роботи:
Мова логічного програмування Visual Prolog
Основні поняття математичного програмування Побудова моделі задачі лінійного програмування
Логічні задачі та вправи як засоби розвитку розумових операцій у старших дошкільнят
Задачі нелінійного програмування
Розвязок задачі лінійного програмування
Звіт за курсом прикладні задачі програмування
Побудова математичної моделі задачі лінійного програмування
Рішення задачі лінійного програмування симплекс методом
Рішення задачі лінійного програмування симплексним методом
© Усі права захищені
написати до нас