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

UptoLike

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

100
В этих выражениях num, realnum и time все представляют предикаты
списков. Предикатам списков обычно присваиваются имена, которые харак-
теризуют либо тип элемента (num), либо сами данные (time).
Введение списков в программу с необходимостью отражается на трех
ее разделах. Домен списка должен быть описан в разделе domains, а рабо-
тающий со списком предикат
- в разделе predicates. Наконец, нужно ввести
сам список; то есть, другими словами, его нужно задать где-то в программе:
либо в разделе clauses, либо в разделе goal. Покажем, как можно создавать
в программе списки и как их использовать.
Каждый элемент приведенного ниже списка обозначает одну из птиц.
birds(["sparrow", "robin", "mockingbird", "thunderbird", "bald eagle"]).
Если
этот список необходимо использовать в программе, то следует
описать домен элементов списка; ему логично присвоить имя подобное
name_birds (названия птиц). Как уже известно, список может содержать мно-
го элементов, может содержать один элемент, а может не содержать ни од-
ного.
Отличительной особенностью описания списка является наличие звез-
дочки (*) после имени
домена элементов. Так запись
bird_name *
указывает на то, что это домен списка, элементами которого являются
bird_name, т. е. запись bird_name* следует понимать как список, состоящий
из элементов домена bird_name. Описание в разделе domains, следовательно,
может выглядеть либо как
bird_list = bird_name *
bird_name = symbol ,
либо как
bird_list = symbol *
Домен bird_list является доменом списка элементов типа
symbol (спи-
ска птиц).
В разделе описания предикатов predicates требуется присутствия имени
предиката, а за ним заключенного в круглые скобки имени домена.
birds(bird_list)
Как видим, описание предиката списка ни в чем не отличается от опи-
сания обычного предиката.
Сам список присутствует в разделе утверждений clauses:
birds(["sparrow","robin","mockingbird","thunderbird", "bald eagle"]).
Чуть позднее будет
описано, как использовать списки в разделе про-
граммы goal.
Законченный пример использования списков приведен в программе
"Списки" (листинг 5.1), в которую дополнительно включены список из 7
целых чисел (домен number_list) и предикат score.
____________________________________________________________
Листинг 5.1
/* Программа: Списки */
/* Назначение: Работа со списками. */
      В этих выражениях num, realnum и time все представляют предикаты
списков. Предикатам списков обычно присваиваются имена, которые харак-
теризуют либо тип элемента (num), либо сами данные (time).
      Введение списков в программу с необходимостью отражается на трех
ее разделах. Домен списка должен быть описан в разделе domains, а рабо-
тающий со списком предикат - в разделе predicates. Наконец, нужно ввести
сам список; то есть, другими словами, его нужно задать где-то в программе:
либо в разделе clauses, либо в разделе goal. Покажем, как можно создавать
в программе списки и как их использовать.
      Каждый элемент приведенного ниже списка обозначает одну из птиц.
birds(["sparrow", "robin", "mockingbird", "thunderbird", "bald eagle"]).
      Если этот список необходимо использовать в программе, то следует
описать домен элементов списка; ему логично присвоить имя подобное
name_birds (названия птиц). Как уже известно, список может содержать мно-
го элементов, может содержать один элемент, а может не содержать ни од-
ного.
      Отличительной особенностью описания списка является наличие звез-
дочки (*) после имени домена элементов. Так запись
            bird_name *
указывает на то, что это домен списка, элементами которого являются
bird_name, т. е. запись bird_name* следует понимать как список, состоящий
из элементов домена bird_name. Описание в разделе domains, следовательно,
может выглядеть либо как
            bird_list = bird_name *
            bird_name = symbol ,
либо как
            bird_list = symbol *
      Домен bird_list является доменом списка элементов типа symbol (спи-
ска птиц).
      В разделе описания предикатов predicates требуется присутствия имени
предиката, а за ним заключенного в круглые скобки имени домена.
            birds(bird_list)
      Как видим, описание предиката списка ни в чем не отличается от опи-
сания обычного предиката.
      Сам список присутствует в разделе утверждений clauses:
birds(["sparrow","robin","mockingbird","thunderbird", "bald eagle"]).
      Чуть позднее будет описано, как использовать списки в разделе про-
граммы goal.
      Законченный пример использования списков приведен в программе
"Списки" (листинг 5.1), в которую дополнительно включены список из 7
целых чисел (домен number_list) и предикат score.
____________________________________________________________
                         Листинг 5.1
/* Программа: Списки                          */
/* Назначение: Работа со списками.             */


                                                                       100