Мои дипломная, курсовые и контрольные работы можно скачать со страницы "Учёба"
Контрольная разбита на страницы →
→ Пролог: вычисление факториала, члена ряда, скорости схождения
→ Пролог: вычисление степени, члена ряда, скорости схождения
→ Пролог: удаление чётных чисел и замена строчных букв
→ Лисп: вычисление факториала, члена ряда, скорости схождения
→ Лисп: вычисление степени, члена ряда, скорости схождения
Часто у тех, кто пытался освоить этот язык, возникает впечатление, что приходится программировать задом наперёд. Вспоминается анекдот про проктолога, который удаляет гланды через анальное отверстие. Даже названия созвучны "пролог - проктолог"... → Далее → Пролог: удаление чётных чисел и замена строчных букв
Написать предикаты на языке Пролог.
а) степень (2, 3, Х)
Х = 8
predicates st(integer,integer,integer) clauses st(F,1,F):-!. st(Y,N,X):-N1=N-1, st(Y,N1,X1), X=X1*Y. Dialog Goal: st(3,4,X) X=81 1 Solution
б) вычисление n-ого члена ряда
ряд (2, Х)
predicates row(integer,real) clauses row(N,X):-S=N*N, X=1/S Dialog Goal: row(3,X) X=0,11111111111 1 Solution
в) вычисление скорости схождения ряда
Количество шагов, за которые достигается точность
Скорость (0.01, N)
N = 21
Решение предполагает рекурсивный подход:
predicates skor(real,integer) f(integer,real,integer,real,real) clauses skor(T,N):-f(N,_,1,1,T). f(N,F,N,F,T):-T>1/F,!. f(N,F,N1,_,T):-N11=N1+1, F11=N11*N11, f(N,F,N11,F11,T).
Но учитывая простоту заданной формулы можно схитрить:
predicates skor(real,integer) clauses skor(To,N):-N=1/sqrt(To)+0.5.
Диалог в обоих программах будет одинаковым:
Dialog Goal: Skor(0.028,H) H=6 1 Solution Goal: Skor(0.026,H) H=7 1 Solution Goal: Skor(0.01,H) H=11 1 Solution
Далее → Пролог: удаление чётных чисел и замена строчных букв