Составители:
Рубрика:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 100
- 101
- 102
- 103
- 104
- …
- следующая ›
- последняя »