Мои дипломная, курсовые и контрольные работы можно скачать со страницы "Учёба"

Контрольная работа по предмету Функциональное и логическое программирование

Контрольная разбита на страницы →
Пролог: вычисление факториала, члена ряда, скорости схождения
Пролог: вычисление степени, члена ряда, скорости схождения
Пролог: удаление чётных чисел и замена строчных букв
Лисп: вычисление факториала, члена ряда, скорости схождения
Лисп: вычисление степени, члена ряда, скорости схождения

Эта контрольная запомнилась больше всего, как самая загадочная. Главная загадочность в ней язык программирования Пролог. В своё время этот язык задумывался для сближения машинного языка с человеческой логикой.

Но то, что получилось в результате, оказалось довольно сложным для понимания именно людьми. В листинге программ на прологе нет привычной последовательности операций или циклов, в программах только условия... → Далее → Пролог: вычисление степени, члена ряда, скорости схождения

Задание. Написать предикаты на языке Пролог.
а) вычисление факториала.
fact(3,X)
Х=6

Программа вычисления простого факториала по восходящей стратегии рекурсии:

predicates
  fact(integer,integer)
  f(integer,integer,integer,integer)
clauses
  fact(N,F):-f(N,F,1,1).
  f(N,F,N,F):-!.
  f(N,F,N1,F1):-N11=N1+1,
                F11=F1*N11,
                f(N,F,N11,F11).

Dialog

Goal: fact(3,X)
X=6

Программа вычисления факториала из формулы: (2k-1)!

predicates
  f(integer,real,integer,real)
  fact(integer,real)
clauses
  fact(N,F):-f(N,F,1,1).
  f(N,F,Z,F):-Z=2*N-1,!.
  f(N,F,N1,F1):-N11=N1+1,
                F11=F1*N11,
                f(N,F,N11,F11).

Dialog

Goal: fact(3,X)
X=120

б) вычисление n-ого члена ряда Ряд для программы на пролог
ряд (2, Х)

  predicates
  f(integer,real,integer,real)
  fun(integer,real)
clauses
  fun(N,X):-f(N,F,1,1),
            X=1/F.
  f(N,F,Z,F):-Z=2*N-1,!.
  f(N,F,N1,F1):-N11=N1+1,
                F11=F1*N11,
                f(N,F,N11,F11).

Dialog

Goal: fun(2,X)
X=0,16666666667

в) вычисление скорости схождения ряда Ряд для программы на пролог
точность точность, скорость, ряд на прологе
Количество шагов, за которые достигается точность
Скорость (0.01, N)

predicates
  f(integer,real,integer,real,real)
  skor(real,integer)
clauses
  skor(T,N):-f(N,_,1,1,T).
  f(N,F,X,F,T):-N=(X+1)/2, T>1/F,!.
  f(N,F,N1,F1,T):-N11=N1+1,
                F11=F1*N11,
                f(N,F,N11,F11,T).

Dialog

Goal: Skor(0.00001,H)
H=5
1 Solution
Goal: Skor(0.01,H)
H=3
1 Solution

Далее → Пролог: вычисление степени, члена ряда, скорости схождения