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

UptoLike

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

102
Пятая цель - это score([S1,_,_,S4,_,S6,_]). На выходе будем иметь
S1=56, S4=89, S6=62. Также как и в случае с третьей целью, внутренне свя-
занные элементы будут выбираться селективно в соответствии с порядком в
списке.
* Упражнения
5.7. Нарисуйте линейный граф для списка
birds(bird_list).
5.8. Нарисуйте дерево для списка
score(number_list).
5.9. Запустите программу "Списки" и введите такое
целевое утвержде-
ние:
birds([S,R,M,T,B]).
Какова будет выдача программы, и в чем она будет отличаться от выдачи
при целевом утверждении birds(All)?
5.4 Использование метода с разделением списка на голову
и хвост
В программе "Списки" для получения доступа к элементам списков
были использованы внешние целевые утверждения. Задание цели в виде
birds(All) обеспечивало
присваивание переменной All всего списка в
целом. Напротив, цель birds([_,_,_,B,_]) позволила извлечь из списка
лишь один элемент. В этом случае, однако, требовалось точное знание
числа элементов списка, являющегося объектом предиката birds. Если за-
дадать цель в виде birds([B1,B2,B3]), то цель не будет удовлетворена ввиду
несоответствия между количеством элементов в списке и
количеством эле-
ментов в целевом утверждении.
Турбо-Пролог, однако, позволяет отделять от списка первый элемент и
обрабатывать его отдельно. Данный метод работает вне зависимости от
длины списка, до тех пор, пока список не будет исчерпан. Этот метод досту-
па к голове списка называется методом разделения списка на голову и
хвост.
Рассмотрим список [4, 9, 5, 3]. В этом исходном списке головой явля-
ется элемент 4, а хвостом - список [9,5,3]. Головой нового списка будет уже
число 9, хвостом - список [5,3]. Этот список также имеет голову 5 и
хвост [3]. Наконец, список [3] состоит из головы - числа 3 и хвоста, яв-
ляющегося пустым списком. Как Вы скоро увидите, неоднократное разде-
ление списка на голову
и хвост играет важную роль в программировании
на Турбо-Прологе.
Операция деления списка на голову и хвост обозначается при по-
мощи вертикальной черты (|):
[Head|Tail].
Head здесь является переменной для обозначения головы списка, пе-
ременная Tail обозначает хвост списка. (Для имен головы и хвоста списка
пригодны любые допустимые Турбо-Прологом имена.)
     Пятая цель - это score([S1,_,_,S4,_,S6,_]). На выходе будем иметь
S1=56, S4=89, S6=62. Также как и в случае с третьей целью, внутренне свя-
занные элементы будут выбираться селективно в соответствии с порядком в
списке.

* Упражнения
     5.7. Нарисуйте линейный граф для списка
            birds(bird_list).
     5.8. Нарисуйте дерево для списка
            score(number_list).
     5.9. Запустите программу "Списки" и введите такое целевое утвержде-
ние:
            birds([S,R,M,T,B]).
Какова будет выдача программы, и в чем она будет отличаться от выдачи
при целевом утверждении birds(All)?

      5.4 Использование метода с разделением списка на голову
      и хвост
      В программе "Списки" для получения доступа к элементам списков
были использованы внешние целевые утверждения. Задание цели в виде
birds(All) обеспечивало присваивание переменной All всего списка в
целом. Напротив, цель birds([_,_,_,B,_]) позволила извлечь из списка
лишь один элемент. В этом случае, однако, требовалось точное знание
числа элементов списка, являющегося объектом предиката birds. Если за-
дадать цель в виде birds([B1,B2,B3]), то цель не будет удовлетворена ввиду
несоответствия между количеством элементов в списке и количеством эле-
ментов в целевом утверждении.
      Турбо-Пролог, однако, позволяет отделять от списка первый элемент и
обрабатывать его отдельно. Данный метод работает вне зависимости от
длины списка, до тех пор, пока список не будет исчерпан. Этот метод досту-
па к голове списка называется методом разделения списка на голову и
хвост.
      Рассмотрим список [4, 9, 5, 3]. В этом исходном списке головой явля-
ется элемент 4, а хвостом - список [9,5,3]. Головой нового списка будет уже
число 9, хвостом -       список [5,3]. Этот список также имеет голову 5 и
хвост [3]. Наконец, список [3] состоит из головы - числа 3 и хвоста, яв-
ляющегося пустым списком. Как Вы скоро увидите, неоднократное разде-
ление списка на голову и хвост играет важную роль в программировании
на Турбо-Прологе.
      Операция деления списка на голову и хвост обозначается при по-
мощи вертикальной черты (|):
             [Head|Tail].
      Head здесь является переменной для обозначения головы списка, пе-
ременная Tail обозначает хвост списка. (Для имен головы и хвоста списка
пригодны любые допустимые Турбо-Прологом имена.)


                                                                        102