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

UptoLike

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

44
В формулировке запроса к программе можно использовать не только
одну переменную, но и несколько. Если, к примеру, Вы введете две перемен-
ные, то программа выдаст все возможные комбинации значений, удовлетво-
ряющие данные переменные.
Применение внешних целей бывает полезно при записи коротких це-
левых формулировок, а также для получения всего набора
допустимых зна-
чений. Другое преимущество этого средства программирования заключается
в том, что оно позволяет адресовать базе данных совершенно произвольные
вопросы.
* Упражнение
3.1. Придумайте и напишите программу, использующую предикат
capital(state,city) /* столица (государство, город) */
Введите в базу данных утверждения, касающиеся Вашей страны, а также
трех ее соседей. Ваша программа будет интерактивной, поэтому
в нее не сле-
дует включать раздел goal. Еще раз позволим себе напомнить, что все имена
предикатов должны начинаться с маленьких букв, также как и имена объ-
ектов, если Вы, конечно, не заключаете их в кавычки.
Запустите Вашу программу и введите цели, реализующие следующие
вопросы: Какой город является столицей Вашей
страны ?
Столицей какой страны является Москва ?
3.3.2 Предикаты и утверждения разных арностей
Как уже говорилось в предыдущей главе, при трансляции утвержде-
ний Турбо-Пролог контролирует правильность написания имени предиката,
количество объектов и типы их доменов. Термин арность обозначает число
объектов утверждения. Так утверждение likes(mary, apples) имеет арность 2.
Большинство программ, написанных на Турбо-Прологе, содержит не-
сколько различных утверждений. Примером этих "
несколько" может слу-
жить наличие в программе утверждений likes(mary,apples), runs(john,6.3)
и drinks(beth,tea,coke). Если в вопросе содержится утверждение watches(john,
cats), то Турбо-Пролог пытается найти соответствие с предикатом
watches, все остальные предикаты при этом игнорируются. Процесс сопос-
тавления начинается с поиска утверждений с предикатом watches. Затем
ищутся утверждения, которые имеют такое же общее число объектов. В ут-
верждении с watches объектов два: john и cats. Количество объектов в пре-
дикате вопроса и утверждениях программы должно совпасть, иначе процесс
сопоставления прекращается.
Если утверждения с таким же, как в вопросе, предикатом и таким же
числом объектов найдены, то
Турбо-Пролог проверяет соответствие типов
объектов. В случае с watches(john,cats) как john, так и cats принадлежат
типу symbol. Если в типах объектов обнаруживается несоответствие, то счи-
тается, что попытка сопоставления окончилась неуспешно.
Рассмотрим теперь такие предикаты разных арностей:
go_home
      В формулировке запроса к программе можно использовать не только
одну переменную, но и несколько. Если, к примеру, Вы введете две перемен-
ные, то программа выдаст все возможные комбинации значений, удовлетво-
ряющие данные переменные.
      Применение внешних целей бывает полезно при записи коротких це-
левых формулировок, а также для получения всего набора допустимых зна-
чений. Другое преимущество этого средства программирования заключается
в том, что оно позволяет адресовать базе данных совершенно произвольные
вопросы.

* Упражнение
      3.1. Придумайте и напишите программу, использующую предикат
      capital(state,city) /* столица (государство, город) */
Введите в базу данных утверждения, касающиеся Вашей страны, а также
трех ее соседей. Ваша программа будет интерактивной, поэтому в нее не сле-
дует включать раздел goal. Еще раз позволим себе напомнить, что все имена
предикатов должны начинаться с маленьких букв, также как и имена объ-
ектов, если Вы, конечно, не заключаете их в кавычки.
      Запустите Вашу программу и введите цели, реализующие следующие
вопросы: Какой город является столицей Вашей страны ?
Столицей какой страны является Москва ?
     3.3.2 Предикаты и утверждения разных арностей
       Как уже говорилось в предыдущей главе, при трансляции утвержде-
ний Турбо-Пролог контролирует правильность написания имени предиката,
количество объектов и типы их доменов. Термин арность обозначает число
объектов утверждения. Так утверждение likes(mary, apples) имеет арность 2.
       Большинство программ, написанных на Турбо-Прологе, содержит не-
сколько различных утверждений. Примером этих "несколько" может слу-
жить наличие в программе утверждений likes(mary,apples), runs(john,6.3)
и drinks(beth,tea,coke). Если в вопросе содержится утверждение watches(john,
cats), то Турбо-Пролог пытается найти соответствие с предикатом
watches, все остальные предикаты при этом игнорируются. Процесс сопос-
тавления начинается с поиска утверждений с предикатом watches. Затем
ищутся утверждения, которые имеют такое же общее число объектов. В ут-
верждении с watches объектов два: john и cats. Количество объектов в пре-
дикате вопроса и утверждениях программы должно совпасть, иначе процесс
сопоставления прекращается.
       Если утверждения с таким же, как в вопросе, предикатом и таким же
числом объектов найдены, то Турбо-Пролог проверяет соответствие типов
объектов. В случае с watches(john,cats) как john, так и cats принадлежат
типу symbol. Если в типах объектов обнаруживается несоответствие, то счи-
тается, что попытка сопоставления окончилась неуспешно.
       Рассмотрим теперь такие предикаты разных арностей:
             go_home


                                                                          44