НОВОСТИ   БИБЛИОТЕКА   ЮМОР   КАРТА САЙТА   ССЫЛКИ   О САЙТЕ  




предыдущая главасодержаниеследующая глава

2.4. Синтаксис предложений Пролога

Синтаксис, как известно,- это часть грамматики, в которой анализируетвя правильность расположения слов в предложении. Стандартный синтаксис Пролога представляет определенные трудности для начинающих и не может быть изучен так же, как синтаксис обычного языка. По этой причине целесообразно использовать более близкую человеку систему, которая переводит предложения обычного естественного языка в предложения стандартного Пролога. На ЭВМ типа Spectrum такая система называется SIMPLE. Ниже приведены некоторые типы предложений, которые допускаются системой SIMPLE:

Простое предложение  Tom isa man

 [Том это человек]

Условное предложение  Jim owns Spot if Spot white

 [Джим владеет Слотом, если Спот белый]

Конъюнкция (and)  X isa black-dog if isa dog and X black

 [X это черная-собака, если X это собака и X черная]

Дизъюнкция (or)  Y isa animal if (either Y isa dog or Y isa cat)

 [Y это животное если (Y это собака или Y это кошка)]

Отрицание (not)  Joe owns X if X isa dog and not X white

 [Джо владеет Х, если X это собака и X не белая]

isall   X isall (Y: Joe owns Y)

 [X существует (Y: Джо владеет Y)]

forall  (forall Joe owns X then X black)

 [(для всех: если Джо владеет X, то X черная)]

Существуют некоторые ограничения, накладываемые на использование Tpjex последних конструкций. В основном это касается условий isall и forall. В связи с этим основное внимание сначала будет уделено первым пяти конструкциям. Система SIMPLE после выдачи команды listall преобразует пять первых предложений к виду

Tom isa man

X isa black-dog if

 X isa dog and

 X black

X isa animal if

 (either X isa dog or X isa cat)

Jim owns Spot if

 Spot white

Joe owns X if

 X isa dog and

 not X white

Отметим некоторые характерные черты приведенного выше текста.

  1. Строки текста не пронумерованы.
  2. Строки расположены не в том порядке, в котором они вводились в ЭВМ. В Прологе принято располагать строки, описывающие одно и то же отношение, рядом. Первым было введено предложение, характеризующее отношение "isa"; поэтому далее следуют все предложения, в которых первым употребляется именно это отношение, а затем идут предложения, связанные с отношением "owns". Кроме того, в системе формируются относительные номера предложений, описывающих одно и то же отношение. Например, предложение "Tom isa man" имеет номер 1, поскольку оно является первым, описывающим отношение "isa".
  3. В четвертом предложении было использовано имя Y, а после преобразования оно заменено на X. Это может смутить начинающих программистов, особенно если до этого они работали на Бейсике. В Прологе буквы х, у и z резервируются для использования в качестве имен переменных. Напомним, что такие переменные, называемые несвязанными, не принимают в программе конкретных значений до начала обработки запроса. Пролог всегда назначает переменным, входящим в предложение, имена в следующей последовательности: X, Y, Z, х, у, z, X1, Х2, Х3, x1, х2 и т. д. Для того чтобы у программистов не возникало лишних вопросов, рекомендуем им использовать имена переменных строго в указанном порядке.
  4. Весьма важно употребление круглых скобок в предложениях типа
    (either isa dog or X isa cat).
    Использование скобок делает процесс ввода предложений с более чем одним ог (или) неудобным. Например, возникают конструкции вида
    (either X isa dog or (either X isa cat or X isa rat)).
    Операция or может быть реализована разбивкой одного утверждения с несколькими ог на элементарные утверждения, каждое из которых описывает только одно условие. Утверждение с большим числом условий действительно следует разбивать на более мелкие.
  5. Система программирования Пролог поддерживает словарь, содержащий информацию обо всех используемых отношениях. Чтобы получить такую информацию на ЭВМ типа Spectrum, достаточно напечатать либо list diet, либо all (x:х diet). Можно также определить число утверждений, связанных с каждым отношением; для этого следует использовать (all х:х diet and x defined). Если необходимо просмотреть все утверждения, связанные с каким-то отношением, можно использовать команду list R, где R - имя отношения. Всю программу можно уничтожить с помощью команды kill all, а одно отношение - с помощью команды kill R. Для уничтожения одного утверждения следует использовать команду delete RN, где N - номер утверждения в отношении. Для модификации отношения необходимо ввести команду edit RN и обычным путем, подводя курсор в нужное место, внести исправления.
  6. Расположение текста программы (листинга) при его выводе на экран организовано следующим образом. После if и and печать продолжается на следующей строке с отступом в пять позиций. Это приводит к тому, что различные предикаты, относящиеся к одному утверждению, размещаются на разных строках, что, в свою очередь, позволяет подчеркнуть логическую структуру каждого утверждения. В сравнительно редко встречающейся ситуации, когда длина строки превышает допустимую, возможен перенос на следующую строку. Перенесенной части строки всегда предшествуют два пробела. Отметим также, что разделять слова на части (одна на одной строке, другая - на другой) запрещено. В заключение отметим, что утверждения Пролога могут располагаться пользователем и на одной строке, а сама система в дальнейшем произведет их перераспределение по строкам.

Ниже приведен текст программы на Прологе в стандартной форме, полученный в результате выполнения команды LIST ALL (не следует путать с текстом, полученным после выполнения команды list all в системе SIMPLE):

((owns Jim Spot)

(white Spot))

((owns Joe X)

(isaXdog).

(NOT white X))

((isa Tom man))

((isa X black-dog)

(isa X dog)

(black X))

((isa X animal)

(OR ((isa X dog)) ((isa X cat))))

((infix isa))

((infix owns))

((postfix black))

((postfix white))

((diet isa))

((diet owns))

Такой текст несколько труднее для восприятия, чем текст, производимшй системой SIMPLE. Но следует отметить, что по мере накопления опыта большинство пользователей предпочтет все-таки стандартный синтаксис. Это произойдет прежде всего потому, что система SIMPLE занимает объем оперативной памяти, равный 16K, а такого объема памяти вполне достаточно для размещения большой программы на Прологе.

предыдущая главасодержаниеследующая глава








© Злыгостев А.С., 2001-2019
При использовании материалов сайта активная ссылка обязательна:
http://informaticslib.ru/ 'Библиотека по информатике'
Рейтинг@Mail.ru
Поможем с курсовой, контрольной, дипломной
1500+ квалифицированных специалистов готовы вам помочь