Неизвестно - Prolog

Здесь есть возможность читать онлайн «Неизвестно - Prolog» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Старинная литература, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Prolog: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Prolog»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Prolog — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Prolog», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Рис 16 2 Основной цикл работы системы управляемой образцами В этом примере - фото 113

Рис. 16. 2. Основной цикл работы системы, управляемой образцами.

В этом примере база данных согласуется с пусковыми образцами

модулей 1, 3 и 4; для выполнения выбран модуль 3.

16. 1. 3. Пример составления программы

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

В качестве иллюстрации, рассмотрим элементарное упражнение по программированию - вычисление наибольшего общего делителя D двух целых чисел А и В . Рассмотрим классический алгоритм Евклида:

Для того, чтобы вычислить наибольший общий делитель D чисел А и В , необходимо:

Повторять циклически, пока А и В не совпадут:

если А > В , то заменить А на А - В , иначе заменить В на В - А .

После выхода из цикла А и В совпадают; наибольший общий делитель D равен

А (или В ).

Тот же самый процесс можно описать при помощи двух модулей, управляемых образцами:

Модуль 1

Условие В базе данных существуют такие два числа X и Y , что X > Y .

Действие Заменить X на разность X - Y .

Модуль 2

Условие В базе данных имеется число X .

Действие Выдать результат X и остановиться.

Очевидно, что всегда, когда условие Модуля 1 удовлетворяется, удовлетворяется также и условие Модуля 2, и мы имеем конфликт. В нашем случае конфликт можно разрешить при помощи простого управляющего правила: всегда отдавать предпочтение Модулю 1. База данных первоначально содержит числа А и В .

Здесь нас ждет приятный сюрприз: оказывается, что наша программа способна решать более общую задачу, а именно, она может вычислять наибольший общий делитель для любого количества чисел. Если в базу данных загрузить несколько целых чисел, то программа выведет их наибольший общий делитель. На рис. 16.3 показана возможная последовательность изменений, которые претерпевает база данных прежде, чем будет получен результат. Обратите внимание на то, что предварительные условия модулей могут удовлетворяться одновременно в нескольких местах базы данных.

Рис 16 3 Процесс вычисления наибольшего общего делителя множества чисел - фото 114

Рис. 16. 3. Процесс вычисления наибольшего общего делителя

множества чисел. Первоначально база данных содержит числа

25, 10, 15 и 30. Вертикальная стрелка соединяет число с его

"заменителем". Конечное состояние базы данных: 5, 5, 5, 5.

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

Назад | Содержание | Вперёд

Назад | Содержание | Вперёд

16. 2. Простой интерпретатор программ, управляемых образцами

Для описания модулей, управляемых образцами, мы применим следующую синтаксическую конструкцию:

ЧастьУсловия ---> ЧастьДействия

Часть условия представляет собой список условий:

[ Условие1, Условие2, Условие3, . . .]

где Условие1, Условие2и т.д. - обычные прологовские цели. Предварительное условие запуска модуля считается выполненным, если все цели, содержащиеся в списке, достигнуты. Часть действия - это список действий:

[ Действие1, Действие2, . . .]

Каждое отдельное действие - это, как и раньше, прологовская цель. Для того, чтобы выполнить список действий, нужно выполнить все действия из списка. Другими словами, все соответствующие цели должны быть удовлетворены. Среди допустимых действий будут действия, соответствующие манипулированию базой данных: добавить, удалитьили заменитьте или иные объекты базы данных.

На рис. 16.4 показано, как выглядит наша программа вычисления наибольшего общего делителя, записанная в соответствии с введенным нами синтаксисом.

% Продукционные правила для нахождения наибольшего общего

% делителя (алгоритм Евклида)

:- ор( 300, fx, число).

[ число X, число Y, X > Y ] --->

[ НовХ is X - Y, заменить( число X, число НовХ) ].

[ число X ] ---> [ write( X), стоп ].

% Начальное состояние базы данных

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Prolog»

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


Отзывы о книге «Prolog»

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

x