Составители:
Рубрика:
75
employee("Sheila Burton ","F","ADVE",5.00). 
employee("Kelly Smith   ","F","ACCT",5.00).  
employee("Diana Prince  ","F","DATA",5.00). 
/* Правило для генерации списка служащих мужского пола  */ 
 show_male_part_time :- 
     employee(Name, "M", Dept, Pay_rate), 
write(Name, Dept,  "$", Pay_rate), 
     nl, 
     fail. 
/* Правило для генерации списка служащих отдела обработки данных */ 
 show_data_proc_dept :- 
     employee(Name, _, "DATA", Pay_rate), 
     write(Name, "$", Pay_rate), 
     nl, 
     fail. 
___________________________________________________________ 
  Утверждения  программы о служащих содержат данные о служащих 
компании, работающих неполный рабочий день.  Предикат базы данных  
имеет вид: 
  employee(name, sex, department, pay_rate) 
    /* служащий(имя, пол, отдел, почасовая_оплата) */ 
Следующее правило
 выдает содержимое всей базы данных: 
show_all_part_time_employees :-  /* выдать_служаших */ 
 employee(Name,Sex,Dept,Pay_rate), 
 write(Name, " ", Sex, " ", Dept,  " ", Pay_rate), 
 nl, 
 fail. 
  Переменные  Name  (имя), Sex (пол), Dept (отдел), Pay_rate (почасовая 
оплата) не означены, и следовательно, все они  могут получить  значения. 
Если бы это правило являлось целью программы, то результатом выполнения 
этой программы был бы список всех служащих с неполным рабочим днем. 
  Предположим,  что  необходимо  получить список, содержащий данные 
только о служащих мужского пола.  Для  этого  требуется, чтобы процесс со-
поставления значений для Sex был успешным только  для  утверждений,  со-
держащих  M в позиции второго объекта. 
Вспомните гл. 2,  где  говорилось,  что  константа  сопоставима только  
сама с собой. Во время внутренней унификации постоянное 
значение M со-
поставимо только с M. Правило,  накладывающее  это условие на выборку 
данных, имеет вид: 
  show_male_part_time :- 
    employee(Name,"M", Dept, Pay_rate), 
    write(Name,Dept, "$",Pay_rate), 
    nl, 
    fail. 
     employee("Sheila Burton ","F","ADVE",5.00).
     employee("Kelly Smith ","F","ACCT",5.00).
     employee("Diana Prince ","F","DATA",5.00).
/* Правило для генерации списка служащих мужского пола */
     show_male_part_time :-
                           employee(Name, "M", Dept, Pay_rate),
                           write(Name, Dept, "$", Pay_rate),
                           nl,
                           fail.
/* Правило для генерации списка служащих отдела обработки данных */
     show_data_proc_dept :-
                           employee(Name, _, "DATA", Pay_rate),
                           write(Name, "$", Pay_rate),
                           nl,
                           fail.
___________________________________________________________
      Утверждения программы о служащих содержат данные о служащих
компании, работающих неполный рабочий день. Предикат базы данных
имеет вид:
            employee(name, sex, department, pay_rate)
                       /* служащий(имя, пол, отдел, почасовая_оплата) */
Следующее правило выдает содержимое всей базы данных:
show_all_part_time_employees :- /* выдать_служаших */
                             employee(Name,Sex,Dept,Pay_rate),
                             write(Name, " ", Sex, " ", Dept, " ", Pay_rate),
                             nl,
                             fail.
      Переменные Name (имя), Sex (пол), Dept (отдел), Pay_rate (почасовая
оплата) не означены, и следовательно, все они могут получить значения.
Если бы это правило являлось целью программы, то результатом выполнения
этой программы был бы список всех служащих с неполным рабочим днем.
      Предположим, что необходимо получить список, содержащий данные
только о служащих мужского пола. Для этого требуется, чтобы процесс со-
поставления значений для Sex был успешным только для утверждений, со-
держащих M в позиции второго объекта.
      Вспомните гл. 2, где говорилось, что константа сопоставима только
сама с собой. Во время внутренней унификации постоянное значение M со-
поставимо только с M. Правило, накладывающее это условие на выборку
данных, имеет вид:
      show_male_part_time :-
                       employee(Name,"M", Dept, Pay_rate),
                       write(Name,Dept, "$",Pay_rate),
                       nl,
                       fail.
                                                                           75
Страницы
- « первая
 - ‹ предыдущая
 - …
 - 73
 - 74
 - 75
 - 76
 - 77
 - …
 - следующая ›
 - последняя »
 
