Основы построения и функционирования интеллектуальных информационных систем. Былкин В.Д - 129 стр.

UptoLike

129
В Прологе формулировка понятия «быть элементом списка» делается так:
X является элементом списка Y, если X равен первому элементу списка, или X является
элементом списка Z, полученного из Y отбрасыванием первого элемента. Запись соответствующей
процедуры непосредственно на языке Пролог выглядит так:
Является_элементом (X, [ Первый Z ]):
- Х= Первый;
Является_ злементом(Х, Z).
Операция "]" в Прологе соответствует логической операции "ИЛИ". Операция "j" разделяет
список на две части - первый элемент его и остальное. Если такая процедура введена в базу данных
Пролога, можно вводить запрос:
? - является_элементом (3,[ 1,3,5,7]).
Ответ: Да.
В определении этой процедуры используется такой на первый взгляд странный прием, как
определение некоторого понятия с помощью его же. Так, в определении понятия "является элементом
списка" мы пользуемся самим этим понятием так, как будто оно уже определено. В программировании
такой прием называется рекурсией. В традиционных процедурных языках программирования рекурсия
хотя и допускается, но используется редко, от случая к случаю. В языках же логического
программирования рекурсия является основой всего. Она заменяет собой понятие цикла, как, например,
в данной процедуре, и обеспечивает циклическое повторение некоторых действий над каждым из
множества значений, заданного списком.
Необычной особенностью языка Пролог является то, что в некоторых случаях можно задавать не
все требуемые параметры процедуры- В этом случае Пролог сам пытается подобрать подходящие
значения. Например, если з запросе, содержащем вызов процедуры «является_элементом», вместо
заданного значения указать переменную, то решением задачи будут все элементы списка. ?
является_элементом (N,[1,3,5,7]). Ответ:
N=1
N32
N=5
N=7
В Прологе формулировка понятия «быть элементом списка» делается так:
     X является элементом списка Y, если X равен первому элементу списка, или X является
элементом списка Z, полученного из Y отбрасыванием первого элемента. Запись соответствующей
процедуры непосредственно на языке Пролог выглядит так:
     Является_элементом (X, [ Первый Z ]):
     - Х= Первый;
     Является_ злементом(Х, Z).
     Операция "]" в Прологе соответствует логической операции "ИЛИ". Операция "j" разделяет
список на две части - первый элемент его и остальное. Если такая процедура введена в базу данных
Пролога, можно вводить запрос:
      ? - является_элементом (3,[ 1,3,5,7]).
      Ответ: Да.
      В определении этой процедуры используется такой на первый взгляд странный прием, как
определение некоторого понятия с помощью его же. Так, в определении понятия "является элементом
списка" мы пользуемся самим этим понятием так, как будто оно уже определено. В программировании
такой прием называется рекурсией. В традиционных процедурных языках программирования рекурсия
хотя и допускается, но используется редко, от случая к случаю. В языках же логического
программирования рекурсия является основой всего. Она заменяет собой понятие цикла, как, например,
в данной процедуре, и обеспечивает циклическое повторение некоторых действий над каждым из
множества значений, заданного списком.
   Необычной особенностью языка Пролог является то, что в некоторых случаях можно задавать не
все требуемые параметры процедуры- В этом случае Пролог сам пытается подобрать подходящие
значения. Например, если з запросе, содержащем вызов процедуры «является_элементом», вместо
заданного значения указать переменную, то решением задачи будут все элементы списка. ? —
является_элементом (N,[1,3,5,7]). Ответ:
   N=1
   N32
   N=5
   N=7




                                               129