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

UptoLike

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

104
Так как хвост списка есть список сам по себе, значение переменной
Tail может быть использовано в качестве объекта рекурсивного вызова
print_list:
print_list(Tail)
Когда испытывается данное подправило, Tail имеет значение [9,5,3].
Снова не проходит первый вариант, и соответствие устанавливается при
помощи второго. Переменной Head присваивается значение 9,котрое затем
печатается на экране. Процесс повторяется
со списком [5,3].
В конце концов, когда переменная Head принимает значение 3, пере-
менной Tail присваивается пустой список. Теперь при рекурсивном вызове
print_list(Tail) значение Tail соответствует объекту правила
print_list([])
Ввиду того, что этот вариант не имеет рекурсивных вызовов, цель счи-
тается удовлетворенной, и таким образом вырабатывается условие окончания
рекурсии print_list. Первый вариант
позоляет print_list завершиться успехом,
когда рекурсивные вызовы опустошат весь список.
Похожий процесс имеет место и при задании цели
print_list(["cat","dog","horse","cow"]).
Сначала переменной Head присваивается значение cat, cat печатается на
экране, а Tail принимает значение ["dog","horse","cow"]. В дальнейшем
при последовательном выполнении рекурсий все эти значения также отобра-
жаются на экран. Наконец, когда
Head приняло значение последнего элемен-
та исходного списка, cow, значением Tail становится пустой список. Вари-
ант
print_list[]
дает успех, тем самым завершая рекурсию.
Рекурсивные правила для работы со списками просты, но вместе с тем
и очень важны, ввиду их применимости в большинстве программ.
* Упражнение
5.10. Для списка ["Boston","Philadelphia","Seattle","Chicago"]
а) нарисуйте диаграмму
работы со списком при помощи метода деления
списка на голову и хвост;
б) запишите значения голов списков в процессе работы метода. в. Напишите
рекурсивное правило, которое печатает все элементы списка через два про-
бела.
5.5. Различные операции над списками
Различные операции, которые можно проделать над списками, вклю-
чают в себя
поиск элемента в списке, деление списка на два, присоединение
одного списка к другому, сортировку списка и создание списка из содер-
жимого базы данных. Настоящий раздел посвящен технике программирова-
ния этих операций.
      Так как хвост списка есть список сам по себе, значение переменной
Tail может быть использовано в качестве объекта рекурсивного вызова
print_list:
             print_list(Tail)
      Когда испытывается данное подправило, Tail имеет значение [9,5,3].
Снова не проходит первый вариант, и соответствие устанавливается при
помощи второго. Переменной Head присваивается значение 9,котрое затем
печатается на экране. Процесс повторяется со списком [5,3].
      В конце концов, когда переменная Head принимает значение 3, пере-
менной Tail присваивается пустой список. Теперь при рекурсивном вызове
print_list(Tail) значение Tail соответствует объекту правила
             print_list([])
      Ввиду того, что этот вариант не имеет рекурсивных вызовов, цель счи-
тается удовлетворенной, и таким образом вырабатывается условие окончания
рекурсии print_list. Первый вариант позоляет print_list завершиться успехом,
когда рекурсивные вызовы опустошат весь список.
      Похожий процесс имеет место и при задании цели
             print_list(["cat","dog","horse","cow"]).
Сначала переменной Head присваивается значение cat, cat печатается на
экране, а Tail принимает значение ["dog","horse","cow"]. В дальнейшем
при последовательном выполнении рекурсий все эти значения также отобра-
жаются на экран. Наконец, когда Head приняло значение последнего элемен-
та исходного списка, cow, значением Tail становится пустой список. Вари-
ант
                    print_list[]
дает успех, тем самым завершая рекурсию.
      Рекурсивные правила для работы со списками просты, но вместе с тем
и очень важны, ввиду их применимости в большинстве программ.

* Упражнение
      5.10. Для списка ["Boston","Philadelphia","Seattle","Chicago"]
а) нарисуйте диаграмму работы со списком при помощи метода деления
списка на голову и хвост;
б) запишите значения голов списков в процессе работы метода. в. Напишите
рекурсивное правило, которое печатает все элементы списка через два про-
бела.



      5.5. Различные операции над списками
      Различные операции, которые можно проделать над списками, вклю-
чают в себя поиск элемента в списке, деление списка на два, присоединение
одного списка к другому, сортировку списка и создание списка из содер-
жимого базы данных. Настоящий раздел посвящен технике программирова-
ния этих операций.


                                                                         104