TURBO PROLOG. Терёхин В.В. - 117 стр.

UptoLike

Составители: 

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