Программирование на Турбо-Прологе - стр. 8
2.3.Арифметические действия
Турбо-Пролог располагает двумя числовыми типами доменов: целыми и действительными числами. Четыре основные арифметические операции - это сложение, вычитание, умножение и деление. Для их реализации в Турбо-Прологе используются предикаты.
Пример 1. Поиск нужного элемента в списке
domains
i=integer
s=symbol
i_list=i* /* определение
типа "список целых чисел" */
s_list=s* /* определение типа "список атомов" */
predicates
/* предикат member определяется над списками двух типов */
member(i,i_list)
member(s,s_list)
clauses
member(Head,[Head|_]).
member(Head,[_|Tail]):-member(Head,Tail).
Пример 2. Определение суммы элементов списка
domains
i=integer
i_list=i*
predicates
sum_list(i_list,i)
clauses
/* Если список пуст, то сумма его элементов равна нулю */
sum_list([],0).
/* Иначе найти сумму элементов хвоста списка
и прибавить к ним голову */
sum_list([H|T],Sum,Number):- sum_list(T,Sum1,Number1), Sum=H+Sum1.
Пример 3. Реализация арифметики
domains
i=integer
r=real
predicates
add(i,i,i)
sub(i,i,i)
mul(i,i,i)
div(i,i,i)
fadd(r,r,r)
fsub(r,r,r)
fmul(r,r,r)
fdiv(r,r,r)
clauses
add(X,Y,Z) :- Z=X+Y. sub(X,Y,Z):- Z=X-Y.
mul(X,Y,Z):- Z=X*Y. div(X,Y,Z):- Z=X/Y.
fadd(X,Y,Z) :-Z=X+Y. fsub(X,Y,Z):- Z=X-Y.
fmul(X,Y,Z):-Z=X*Y. fdiv(X,Y,Z):-Z=X/Y.
2.3. Варианты заданий
1. Определить максимальный элемент в списке.
2. Определить число элементов в списке.
3. Определить произведение элементов списка.
4. Исключить из списка отрицательные элементы.
5. Выполнить сортировку элементов списка по возрастанию.
6. Даны два списка, имеющие ненулевое пересечение. Построить список, включающий все элементы указанных двух списков без повторений.
Содержание Назад Вперед