Свободные и связанные переменные

До тех пор, пока переменная не получила какого-либо значения, она называется «свободной».

Когда переменная примет значение, она становится «связанной». Однако она остается связанной только в течение времени, необходимого для получения одного ответа на запрос

После этого Пролог «развязывает» ее, возвращается и ищет альтернативные решения. Это очень важный момент: нельзя хранить информацию, задавая значения переменных. Переменные служат частью процесса сопоставления, а не «хранилищем» информации. Область действия переменной — ровно одно предложение (правило или запрос программы).

Вопрос

отправная точка логического вывода, происходящего при выполнении программы. На любой вопрос компьютер будет пытаться дать ответ «Да» или «Нет» в зависимости от того, согласуется или нет утверждение, стоящее в вопросе, с фактами и правилами базы знаний. Вопрос, не содержащий переменных, является общим: «имеет ли место факт...?».

телефон(иванов,т561532). телефон(петров,т642645). телефон(сидоров,т139833).

можно поставить вопрос

? - телефон (иванов,Т123456).

ответ будет «Нет», так как константа т123456 не согласуется ни с одним фактом

Вопрос, в котором имеются переменные, является частным: «для каких значений переменных факт... имеет место?». В процессе сопоставлений при выполнениях программы переменные получат значения тех констант (конкретизируются), для которых сопоставление запроса в целом успешно, и они будут выведены на экран.

в ответ на вопрос

? - телефон (иванов,X).

к базе знаний примера 1 на экране появится сообщение

х=т561532 и будет дан ответ «Да».

27. Язык Лисп как представитель семейства языков функционального программирования.

Язык Лисп — один из первых языков обработки данных в символьной форме.

В Лиспе и программа, и обрабатываемые ею данные представляются в одной и той же форме — в форме списка.

Программы могут обрабатывать и преобразовывать другие программы и даже самих себя.

Функциональный подход к программированию

Вся обработка информации и получение искомого результата могут быть представлены в виде вложенных и/или рекурсивных вызовов функций, выполняющих некоторые действия, так что значение одной функции используется как аргумент другой.

Значение этой функции становится аргументом следующей и т.д., пока не будет получен конечный результат — решение задачи.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: