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

UptoLike

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

77
domains
name, sex, department = symbol
pay_rate,hours, gross_pay = real
predicates
employee(name,sex,department,pay_rate,hours)
make_pay_roll_report
compute_gross_pay(pay_rate,hours,gross_pay)
goal
write("Отчет о выплатах служащим"),
nl, nl,
make_pay_roll_report.
clauses
employee("John Walker ","M","ACCT",3.50,40.00).
employee("Tom Sellack ","M","OPER",4.50,36.00).
employee("Betty Lue ","F","DATA",5.00,40.00).
employee("Jack Hunter ","M","ADVE",4.50,25.50).
employee("Sam Ray ","M","DATA",6.00,30.00).
employee("Sheila Burton ","F","ADVE",5.00,32.50).
employee("Kelly Smith ","F","ACCT",5.00,25.50).
employee("Diana Prince ","F","DATA",5.00,20.50).
make_pay_roll_report :-
employee(Name,_,Dept,Pay_rate,Hours),
compute_gross_pay(Pay_rate,Hours,Gross_pay),
write(Name,Dept," $", Gross_pay),nl,
fail.
compute_gross_pay(Pay_rate,Hours,Gross_pay) :-
Gross_pay = Pay_rate * Hours.
_________________________________________________________
В программе формирования платежной ведомости предикат em-
ployee имеет пять объектов:
employee(name,sex,department,pay_rate,hours)
/* служащий(имя, пол, отдел, почасовая_оплата, часы) */
Так как объекты pay_rate (почасовая оплата), hours
(часы) и gross_pay
(выплата) принадлежат домену типа real, то над ними можно выполнять опе-
рации десятичной арифметики. Правило для вычисления выплаты несложно:
compute_gross_pay(Pay_rate, Hours, Gross_pay) :-
Gross_pay=Pay_rate*Hours.
Задача правила make_pay_roll_report (выдать отчет о выплатах) за-
ключается в формировании отчета. Оно вызывает правило comute_gross_pay
для вычисления выплат.
domains
    name, sex, department = symbol
    pay_rate,hours, gross_pay = real

predicates
      employee(name,sex,department,pay_rate,hours)
      make_pay_roll_report
      compute_gross_pay(pay_rate,hours,gross_pay)

goal
      write("Отчет о выплатах служащим"),
                                 nl, nl,
                                 make_pay_roll_report.
clauses
      employee("John Walker      ","M","ACCT",3.50,40.00).
      employee("Tom Sellack      ","M","OPER",4.50,36.00).
      employee("Betty Lue        ","F","DATA",5.00,40.00).
      employee("Jack Hunter      ","M","ADVE",4.50,25.50).
      employee("Sam Ray          ","M","DATA",6.00,30.00).
      employee("Sheila Burton ","F","ADVE",5.00,32.50).
      employee("Kelly Smith ","F","ACCT",5.00,25.50).
      employee("Diana Prince ","F","DATA",5.00,20.50).

       make_pay_roll_report :-
                       employee(Name,_,Dept,Pay_rate,Hours),
                       compute_gross_pay(Pay_rate,Hours,Gross_pay),
                       write(Name,Dept," $", Gross_pay),nl,
                       fail.

     compute_gross_pay(Pay_rate,Hours,Gross_pay) :-
                    Gross_pay = Pay_rate * Hours.
_________________________________________________________

      В программе формирования платежной ведомости предикат em-
ployee имеет пять объектов:
      employee(name,sex,department,pay_rate,hours)
            /* служащий(имя, пол, отдел, почасовая_оплата, часы) */
      Так как объекты pay_rate (почасовая оплата), hours (часы) и gross_pay
(выплата) принадлежат домену типа real, то над ними можно выполнять опе-
рации десятичной арифметики. Правило для вычисления выплаты несложно:
compute_gross_pay(Pay_rate, Hours, Gross_pay) :-
                                             Gross_pay=Pay_rate*Hours.
      Задача правила make_pay_roll_report (выдать отчет о выплатах) за-
ключается в формировании отчета. Оно вызывает правило comute_gross_pay
для вычисления выплат.


                                                                         77