Prolog Homework Help у вас под рукой!

Пролог — это язык программирования, который используется для решения задач, связанных с объектами и отношениями между объектами. В этой главе мы покажем основные элементы языка в реальных программах, не отвлекаясь на детали, формальные правила и исключения. На данный момент мы не пытаемся быть полными или точными. Мы хотим быстро подвести вас к тому моменту, когда вы сможете писать полезные программы, поэтому для этого мы должны сосредоточиться на основах: фактах, вопросах, переменных, союзах и правилах. Другие возможности Пролога, такие как списки и рекурсия, будут рассмотрены в следующих главах.

Мы используем Пролог, когда хотим, чтобы компьютер решал задачи, которые могут быть выражены в виде объектов и их взаимосвязей. Например, когда мы говорим «Джон владеет книгой», мы заявляем, что отношения, право собственности, существуют между одним объектом «Джон» и другим отдельным объектом «книгой». Кроме того, отношения имеют определенный порядок: Джон владеет книгой, но книга не владеет Джоном! Когда мы задаем вопрос «Есть ли у Джона книга?», мы пытаемся узнать об отношениях.

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

Следует упомянуть еще один момент философии, после чего приступим к программированию. Мы все знакомы с использованием правил для описания отношений между объектами. Например, правило «Две женщины — сестры, если они обе женщины и у них одни и те же родители» кое-что говорит нам о том, что значит быть сестрами. Он также говорит нам, как узнать, являются ли два человека сестрами: просто проверьте, являются ли они обе женщинами и имеют ли они одних и тех же родителей. Что важно отметить в отношении правил, так это то, что они обычно чрезмерно упрощены, но они приемлемы в качестве определений. В конце концов, нельзя ожидать, что определение расскажет нам все о чем-то. Например, большинство людей согласятся, что в реальной жизни «быть сестрами» — это гораздо больше, чем следует из приведенного выше правила. Однако когда мы решаем конкретную проблему, нам нужно сосредоточиться только на тех правилах, которые помогают решить эту проблему. Итак, мы должны рассмотреть воображаемое и упрощенное определение, если оно достаточно для наших целей.

Компьютерное программирование на Прологе состоит из:

  • декларирование некоторых фактов об объектах и ​​их отношениях,
  • определение некоторых правил об объектах и ​​их отношениях, а также
  • задавать вопросы об объектах и ​​их отношениях.

Например, предположим, что мы сообщили Прологу наше правило о сестрах. Затем мы могли бы задать вопрос, являются ли Мэри и Джейн сестрами. Пролог просматривал бы то, что мы рассказали ему о Мэри и Джейн, и возвращал бы ответ «да» или «нет», в зависимости от того, что мы сказали ему раньше. Таким образом, мы можем рассматривать Пролог как хранилище фактов и правил, и он использует факты и правила для ответов на вопросы. Программирование на Прологе состоит из предоставления всех этих фактов и правил. Система Prolog позволяет использовать компьютер как хранилище фактов и правил и предоставляет способы делать выводы из одного факта в другой.

Пролог — это разговорный язык, а это означает, что вы и компьютер ведете своего рода беседу. Предположим, что вы сидите за компьютерным терминалом и попросили использовать Prolog. Компьютерный терминал, который вы используете, имеет клавиатуру и дисплей. Вы используете клавиатуру для ввода символов в компьютер, а компьютер использует дисплей (экран или бумагу) для ввода результатов обратно вам. Prolog будет ждать, пока вы введете факты и правила, относящиеся к проблеме, которую вы хотите решить. Затем, если вы зададите правильные вопросы, Prolog обработает ответы и покажет их на дисплее.

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

Сначала мы обсудим факты об объектах. Предположим, мы хотим сообщить Прологу, что «Джону нравится Мэри». Этот факт состоит из двух объектов, называемых «Мэри» и «Джон», и отношения, называемого «лайки». В Прологе нам нужно записать факты в стандартной форме, например:

любит (Джон.Мэри).

Важны следующие вещи:

  • Имена всех отношений и объектов должны начинаться со строчной буквы. Например, как, Джон, Мэри.
  • Отношения записываются первыми, объекты записываются через запятую, а объекты заключаются в пару круглых скобок.
  • Точка « . ” должен стоять в конце факта.

При определении отношений между объектами с помощью фактов следует обращать внимание на то, в каком порядке записываются объекты в круглых скобках. На самом деле порядок произволен, но мы должны определиться с каким-то порядком и быть последовательными в этом. Например, в приведенном выше факте мы поместили «лайкер» в качестве первого из двух объектов в круглые скобки, а понравившийся объект мы поставили во второй слот. Итак, тот факт, что нравится (Джон, Мэри), не то же самое, что нравится (Мэри.Джон). Первый факт говорит о том, что Джон любит Мэри, а второй факт говорит о том, что Мэри любит Джона, в соответствии с нашим текущим произвольным соглашением. Если мы хотим сказать, что Мэри нравится Джон, то мы должны прямо сказать об этом:

Лайки (Мэри, Джон).

Посмотрите на следующие примеры фактов вместе с возможными интерпретациями на английском языке:

ценный (золото). Золото ценно.

женщина (Джейн). Джейн — женщина.

владеет (Джон, золото). Джон владеет золотом.

отец (Джон, Мэри). Иоанн — отец Марии.

дает (Джон, книга, Мэри). Джон дает книгу Мэри.

Каждый раз, когда используется имя, это имя относится к конкретному отдельному объекту. Из-за нашего знакомства с английским языком совершенно ясно, что имена джон и джейн относятся к отдельным лицам. Но в некоторых других фактах мы использовали названия «золото» и «драгоценность», и не обязательно очевидно, что они означают. Такое имя логики называют «неисчисляемым словом». При использовании имен мы должны решить, как интерпретировать имя. Например, название «золото» может относиться к объекту. В этом случае мы думаем об объекте как о каком-то конкретном куске золота, который мы обозначаем словом «золото». И когда мы говорим на Прологе ценный (золото), мы имеем в виду, что этот конкретный кусок золота, который мы назвали золотом, является ценным. С другой стороны, мы могли бы интерпретировать название «золото» как означающее слово, обозначающее химический элемент «золото», имеющий атомный номер 79, и когда мы говорим «ценный» (золото), мы подразумеваем, что химический элемент «золото» является ценным. Итак, существует более одного способа интерпретации имени, и именно вы, программист, принимаете решение об интерпретации. Проблем быть не должно, если вы последовательно интерпретируете имена. Важно заранее выявить различия между различными интерпретациями, чтобы мы были вполне уверены в том, что означают имена.

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

Имена объектов и отношений совершенно произвольны. Вместо такого термина, как любит (джон,мэри), мы могли бы точно так же представить это как (b, c), и помнить, что а означает нравится, b означает Джон, а с означает Мэри. Однако обычно мы выбираем имена, которые помогают нам запомнить, что они представляют. Итак, мы должны заранее решить, что означают наши имена и в каком порядке я буду аргументировать. После этого мы должны оставаться последовательными.

Отношения могут иметь произвольное количество аргументов. Если мы хотим определить предикат play, где мы упоминаем двух игроков и игру, в которую они играют друг с другом, нам нужны три аргумента. Вот два примера этого:

играть(джон,мэри.футбол).

играть (Джейн, Джин, Бадайстон).

Это важно для представления сложных взаимодействий между отношениями, как мы увидим позже.

Мы также можем объявлять факты, которые не соответствуют действительности в реальном мире. Мы могли бы написать king(john, France), чтобы объявить, что Джон — король Франции. В реальном мире это явно неверно, особенно потому, что Франция отменила монархию примерно в 1792 году. Но Пролог этого не знает, и ему все равно. Факты в Прологе просто позволяют вам выражать произвольные отношения между объектами.