Составители:
Рубрика:
117
Совсем просто выглядит правило для нахождения среднего значения
набранных очков:
Average = Sum / Number
Правило Average использует подсчитанное правилом Sum_list значения пе-
ременных Sum и Number. Результатом применения этого правила является
присвоение переменной Average частного от деления Sum и Number, т. е.
114.4.
Программа "Очки" (листинг 5.7) демонстрирует использование преди-
ката findall для сбора данных из
базы данных в список.
____________________________________________________________
Листинг 5.7
/* Программа: Очки */
/* Назначение: Показ использования предиката */
/* findall для вычисления среднего значения. */
domains
name = string
points = real
list = points *
predicates
football(name,points)
sum_list(list,points,integer)
report_average_football_score
goal
report_average_football_score.
clauses
/* факты (футбольная база данных) */
football("Ohio State",116.0).
foot-ball("Michigan",121.0).
football("Michigan State",114.0).
football("Purdue",99.0).
football("UCLA",122.0).
report_average_football_score:-
findall(Points,football(_,Points),Point_list),
sum_list(Point_list,Sum,Number),
Average = Sum / Number,
write("College Football Power Rating:"),
nl,
write(" Average Points = ",Average).
sum_list([],0,0).
sum_list([H|T], Sum, Number) :-
sum_list(T,Sum1,Number1),
Sum = H + Sum1,
Совсем просто выглядит правило для нахождения среднего значения набранных очков: Average = Sum / Number Правило Average использует подсчитанное правилом Sum_list значения пе- ременных Sum и Number. Результатом применения этого правила является присвоение переменной Average частного от деления Sum и Number, т. е. 114.4. Программа "Очки" (листинг 5.7) демонстрирует использование преди- ката findall для сбора данных из базы данных в список. ____________________________________________________________ Листинг 5.7 /* Программа: Очки */ /* Назначение: Показ использования предиката */ /* findall для вычисления среднего значения. */ domains name = string points = real list = points * predicates football(name,points) sum_list(list,points,integer) report_average_football_score goal report_average_football_score. clauses /* факты (футбольная база данных) */ football("Ohio State",116.0). foot-ball("Michigan",121.0). football("Michigan State",114.0). football("Purdue",99.0). football("UCLA",122.0). report_average_football_score:- findall(Points,football(_,Points),Point_list), sum_list(Point_list,Sum,Number), Average = Sum / Number, write("College Football Power Rating:"), nl, write(" Average Points = ",Average). sum_list([],0,0). sum_list([H|T], Sum, Number) :- sum_list(T,Sum1,Number1), Sum = H + Sum1, 117