Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

'Документ'
на «4» и «5» С одной «3» (указать фамилии учащихся и предмет) С одной « » (указать фамилии учащихся и предмет) С двумя « » Три и более « » Число неусп...полностью>>
'Документ'
Начальник группы эвакуации материальных ценностей подчиняется председателю эвакуационной комиссии и работает под его руководством. Он отвечает за вед...полностью>>
'Автореферат диссертации'
Работа выполнена на кафедре государственно-правовых дисциплин государственного образовательного учреждения высшего профессионального образования «Вла...полностью>>
'Документ'
Регистрация документов - фиксирование факта создания или поступления путем проставления на нем даты и номера, с последующей записью необходимых сведе...полностью>>

Структура программы на Прологе Программа на Прологе состоит из следующих разделов

Главная > Программа
Сохрани ссылку в одной из сетей:

Структура программы на Прологе

Программа на Прологе состоит из следующих разделов:

  • директивы компилятора;

  • CONSTANTS - раздел описания констант;

  • DOMAINS - раздел описания доменов;

  • DATABASE - раздел описания предикатов внутренней базы данных;

  • PREDICATES - раздел описания предикатов;

  • CLAUSES - раздел описания предложений;

  • GOAL - раздел описания внутренней цели.

В программе не обязательно должны быть все разделы. Однако, как правило, программа содержит, по меньшей мере, разделы PREDICATES и CLAUSES.

В программе может быть несколько разделов описаний CONSTANTS, DOMAINS, PREDICATES, DATABASE и CLAUSES, а GOAL не может быть более одного.

Порядок разделов может быть произвольным, но при этом константы, домены и предикаты должны быть определены до их использования. Однако в разделе DOMAINS можно ссылаться на домены, которые будут объявлены позже.

Директивы компилятора

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

Директива trace применяется при отладке программы для трассирования.

Директива nowarnings используется для подавления предупреждения системы о том, что какая-то переменная встречается в предложении только один раз.

С помощью директивы include при компиляции в исходный текст можно вставить содержимое некоторого файла.

Многие директивы компилятора могут быть не только расположены в тексте программы, но и установлены в меню среды разработки Пролога. Значение директивы компилятора, указанное в тексте программы, имеет более высокий приоритет, чем значение, установленное в меню.

Раздел описания констант

Объявление константы имеет вид: <имя константы>=<значение>

Каждое определение константы должно размещаться в отдельной строке.

Например:

CONSTANTS

pi=3.14

pro_path="c:\\prolog "

Раздел описания доменов

Раздел описания доменов является аналогом раздела описания типов. В Прологе имеются стандартные домены, которые не нужно указывать в разделе описания доменов.

Основные стандартные домены:

integer - целое число (из промежутка -32768...32767);

real - действительное число (лежащее между ±1e-307...±1e308);

char - символ, заключенный в одиночные апострофы;

string - последовательность символов, заключенная в двойные кавычки;

symbol - символическая константа;

file - файл.

В разделе описания доменов объявляются любые нестандартные домены, используемые в качестве аргументов предикатов. Объявление домена имеет следующий вид: <имя домена>=<определение домена>

DOMAINS

i=integer

Из доменов можно конструировать составные или структурные домены (структуры).

Раздел описания предикатов внутренней БД

Начинается раздел описания предикатов внутренней БД с зарезервированного слова DATABASE и описываются в нем те предикаты, которые можно в процессе выполнения программы добавлять во внутреннюю БД или удалять оттуда. Описываются предикаты БД аналогично предикатам в разделе описания предикатов PREDICATES.

Раздел описания предикатов

В данном разделе содержатся описания определяемых пользователем предикатов. В традиционных языках программирования подобными разделами являются разделы описания заголовков процедур и функций. Описание n-местного предиката имеет следующий вид:

<имя предиката>(<имя домена первого аргумента>,...,<имя домена n-го аргумента>).

Домены аргументов должны быть либо стандартными, либо объявленными в разделе описания доменов.

Например, предикат, описывающий отношение "мама" может быть описан следующим образом:

PREDICATES

mother(string,string)

Один предикат может иметь несколько описаний, а процедура, реализующая этот предикат, будет единственной. Это нужно, чтобы предикат работал с аргументами различной природы.

PREDICATES

member(integer,integer*)

member(real,real*)

member(char,char*)

member(string,string*)

Раздел описания предложений

Этот раздел можно считать основным разделом программы, потому что именно в нем содержатся факты и правила, реализующие пользовательские предикаты. Все предикаты, которые применяются в этом разделе и не являются стандартными предикатами, должны быть описаны в разделе описания предикатов или в разделе описания предикатов базы данных.

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

  • между процедурами пропускается пустая строка;

  • тело правила записывается со следующей строки, после строки, в которой был заголовок, с отступом;

  • каждую подцель записывают на отдельной строке, одну под другой.

Эти правила не являются обязательными, но они делают программу более "читабельной".

Раздел описания внутренней цели

Если этот раздел отсутствует, то после запуска программы Пролог-система выдает приглашение вводить вопросы в диалоговом режиме (внешняя цель). При выполнении внешней цели Пролог-система ищет все решения, выводя все возможные значения для переменных, участвующих в вопросе. Если же выполняется внутренняя цель, то осуществляется поиск только первого решения.

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

Предикаты ввода-вывода

Пролог имеет отдельные предикаты для чтения с клавиатуры или из файла данных целого, вещественного, символьного и строкового типа.

Предикат readln считывает строку с текущего устройства ввода и связывает ее со своим единственным выходным параметром.

Предикат readint читает с текущего устройства целое число и связывает его со своим единственным выходным параметром.

Предикат readreal отличается от предиката readint тем, что он считывает не целое, а вещественное число.

Для чтения символа с текущего устройства ввода используется предикат readchar. Есть еще предикат inkey, который так же, как и readchar, читает символ со стандартного устройства ввода. Разница между ними в том, что предикат readchar приостанавливает работу программы до тех пор, пока не будет введен символ, а предикат inkey не прерывает выполнение программы.

Предикат readterm предназначен для чтения сложных термов. У него два параметра: первый входной указывает имя домена, второй параметр конкретизируется термом домена, записанного в первом параметре.

Для записи данных в текущее устройство записи служит предикат write. Он может иметь произвольное количество параметров. Кроме того, в Прологе есть еще и предикат writef, который служит для форматного вывода данных.

Для осуществления перехода на следующую строку (возврат каретки и перевод строки) применяется предикат nl, не имеющий параметров.

Группа предикатов для преобразования типов:

str_int преобразует строку в целое число и наоборот. str_real служит для превращения строки в вещественное число или вещественного числа в строку.

Предикат str_char применяется для преобразования односимвольной строки в один символ и наоборот.

Предикат char_int позволяет переходить от символа к его ASCII-коду и обратно.

Арифметические операции (+, -, * и /), а также целочисленное деление (div) и взятие остатка от деления одного целого числа на другое (mod). Для сравнения чисел можно воспользоваться операциями =, <>, >, >=, <, <=.

Математические функции: логарифмы натуральный (ln) и десятичный (log), квадратный корень (sqrt), модуль (abs), экспонента (exp), синус (sin), косинус (cos), тангенс (tan), арктангенс (arctan).

Функция trunc отбрасывает дробную часть своего параметра, а функция round округляет вещественное число до ближайшего целого.

В Турбо Прологе любой текст, находящийся между символами /* и */, рассматривается как комментарий. Кроме того, любой текст между символом % и концом строки также воспринимается как комментарий. Комментарий игнорируется компилятором Пролога.

5



Скачать документ

Похожие документы:

  1. Собрание сочинений Даниил Хармс. Дневники

    Документ
    ___ (январь - март 19 5 г.) Читай сидя за столом и имей при себе карандаш и бумагу. Записывай мысли из книги, а также и свои, мелькнувшие из-за чтения или по другой какой причине.
  2. 1. Стратегические цели, направления деятельности и приоритеты отрасли «Культура» в 2009 году 3

    Документ
    Федеральным законом «Об общих принципах организации законодательных (представительных) и исполнительных органов государственной власти субъектов Российской Федерации»;
  3. Н. И. Сазонова у истоков раскола русской церкви в XVII веке: исправление богослужебных книг при патриархе никоне (1654-1666 гг.)

    Книга
    В монографии рассматривается церковная реформа патриарха Никона, последствием которой стал церковный раскол. Основное внимание уделено исправлению богослужебного текста, проведенному при патриархе Никоне: рассматривается текстологическая
  4. Князю Мстиславу Мстисла-вовичу Удалому приехал зять, половецкий хан Котян. Уже много десятилетий южные русские княжества вели, по выражению С. М

    Документ
    князю Мстиславу Мстисла-вовичу Удалому приехал зять, половецкий хан Котян. Уже много десятилетий южные русские княжества вели, по выражению С. М. Соловьева, «бесконечную и однообразную» войну с половцами.
  5. Белый Конь Апокалипсиса (1999). Упор делается на древнейшую историю русского народа, на совершенно неисследованные аспекты которой мне удалось выйти учебник

    Учебник
    Раскрыв эту книгу, читатель неожиданно обнаружит, что к тюркским каганатам Великий Туран отношения не имеет, потому что он — неотъемлемая составляющая истории Древней Руси, относящейся к периоду оледенения земли и тысячелетиям после

Другие похожие документы..