Составители:
Рубрика:
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
