Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция ФилП.docx
Скачиваний:
10
Добавлен:
19.09.2019
Размер:
401.58 Кб
Скачать

Программирование второго порядка

Здесь мы рассм некоторые возможности пролога которые выходят за рамки логич модели.

Термин прог 2го порядка означает, что мы будем рассм предикаты которые опирируются множествами.

В прологе есть встроенные предикаты, собир в список все решения какой либо цели.

Bagof /3. – множество в котором могут быть дубликаты. Этот предикат строит список элементов Bag, в него входят все объекты Term, удовл цели Goal.

Bagof(Term,Goal,Bag).

Список детей некоторого Х.

Дети(Х,Дети):-

Bagof(Д,родитель(Х,Д),Дети).

Результат каждого запуска

Запускается и в случае успеха выполняется

Список результатов

Если мы не хотим чтобы в список решений (???целей ???) заносились дубликаты мы должны исп setof/3, он раб также как bagof, только исключает дубликаты.

Set – множество.

?- дети(tom,X).

X = [bob,liz].

Setof(Term,Goal,Bag).

Рассмотрим, как работать с базой данный

Все факты и правила программы принято называть БД. Мы можем БД менять в процессе работы программы. Т.е. мы можем дополнять программу, можем удалять что то из программы.

Если взять процедуру выше, bagof, она может быть реализована с исп операций занесения в БД, мы можем каждый ответ заносить в виде факта, когда факты кончатся, то перейти к их соединению. Получим процедуру bagof.

Есть след предикаты:

  • Вставка новых предложений: цель assert(С) – всегда успешна, и имеет побочный эффект - заносит предложение С в базу данных.

  • asserta/1 – заносит в начало,

  • assertz/1 – заносит в конец.

  • Пример. ?- assert( (мать(X,Y) :- родитель(X,Y), женщина(X) )).

Если в БД заносится правило то его нужно закл в круглые скобки!

***По курсовой работе!***

Разделы курсовой работы.

1 пункт – Введение

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

2 пункт – постановка задачи

Нужно изложить все те сведения, которые необходимы для формулировки задачи и дать саму формулировку задачи.

Пример. Тема нахождение эйлерового цикла. Она касается графа. Нужно про граф, про путь, узлы графа, дуги графа… Чтобы была целостная …

3 пункт – выбор структуры данных

Подумать какие будут объекты, состояния.

Можно к примеру не исп а сказать что списки используются и всё.

Нужно объяснить что есть что. Список ребер, вершин, решений…

4 пункт – формулировка алгоритма

Здесь нужно все случаи, базовые, общие для рекурсивных процедур описать.

5 – примеры работы программы

Если тема – нах эй цикла, то нужно взять несколько графов, для них найти..показать…

Здесь не нужны экранные формы. Исходные данные – результаты, объяснить, как получилось.

6 – заключение

Кратко написать какие получили результаты. Результаты всей работы.

7 – список литературы

8 – приложение

Это текст программы.