Реферат Курсовая Конспект
Секции программы - раздел Программирование, Логическое программирование Секция Domains-(Объявление Областей Определения). 1...
|
Секция domains-(объявление областей определения).
1 Способ.
имя области = d
где d- любой тип. Например
person=string
nomer=integer
2.Способ.
Имя_списка = d*,
Где d- один из типов или имя области; *- указатель списка.
Например; spisok_celych=integer*
Spisok_bukv=char*
3. Способ.
-составная_область=функтор1(d1,d2,…);функтор(d3,d4,…);
где d1,d2,d3,d4,… любой тип.
Objekt=int(integer);str(string)
-mesto=spravo;slevo;
4.Способ.
file=имя1,имя2…
где имя1,имя2 –символические имена файлов.
-file=input_file,output_file
Секция predicates (объявление предикатов):
Имя_предиката(d1,d2,…)
Где d1,d2- соответственно области определения агрумента1, аргумента2,… .
Math(person, person)
Otec(person, person).
Секция database (объявление оперативной базы данных):
Синтаксис объявления точно такой же как в секции predicates.
Объявленные здесь предикаты указывают область определения динамической базы данных dbasedom, которая генерируется автоматически. При работе с динамической базой все термы должны соответствовать этой области. Здесь объявленные предикаты не должны быть в секции predicates , но дизъюнкты этих предикатов могут присутствовать в секции clauses.
Секция clauses (дизъюнкты)
Это собственно база данных, где и записываются все дизъюнкты всех предикатов.
.math(“Евдокия”,”Мария”).
.math(“Юля”,Syn):-Syn=”»Евгений”;Syn=”Игнатий”.
Секция goal (цель)
Здесь указывается вопрос, на который должен ответить ТП. Записывается он как дизъюнкт без головы и знака “:-”. Если в пользовательской программе нет цели (нет goal), то перед выполнением программы цель запрашивается.
Программа родственных отношений выглядит так:
domainsperson=stringpredicates /*предикаты*/
math(person,person) /*мать */
swekrow(person,person) /*свекровь*/
otec(person,person) /* отец */
djadja(person,person) /* дядя */
wopros /*вопрос */
clauses
math ("Евдокия","Мария").
math ("Юлия","Евгений").
math ("Юлия","Игнатий").
otec ("Евгений","Мария").
djadja ("Игнатий","Мария").
swekrow ("Юлия","Евдокия").
wopros:-math(Math,"Мария"),
swekrow(Swekrow,Math),
math (Swekrow,Gost),
write ("возможный гость ",Gost),
nl,
fail. /*вывод всех решений*/
wopros:-write(">нет решений") /*нет решения*/
goal
makewindow(1,74,7," рабочее окно",16,0,8,80),
wopros.
Предикат wоpros ( без аргументов) формирует высказывание:
Возможный гость “Евгений”
Возможный гость “Игнатий”
No solutin нет решений
В базе данных факт math(“Юлия”,”Евгений”) стоит первым и выводится при просмотре тоже первым.
– Конец работы –
Эта тема принадлежит разделу:
Логическое программирование... После многолетних теоретических работ по математической логике в году в... Для программиста особенность языка Пролог состоит в том что он на основе выражений логики предикатов может заниматься...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Секции программы
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов