Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Spec_Mov_3k_4k_Lect.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.46 Mб
Скачать

Вопросы на самостоятельную проработку

  • Определить возможные варианты решений для примера, приведенного в лекции последним, для целевого вопроса «?- дед(U, V), отец(пётр, V»?

  • Унифицируются ли термы: 1) zeta(X, f(Y), k) и b(12, f(Y), Z); 2) zeta(X, f(Y), Y) и zeta(12, f(4), 7);?

  • Чему равен НОУ для термов: lambda(f(g(X)), X, 10, 23) и lambda(f(g(Z)), Z, Y, 23)?

К оглавлению

Лекция 3. Основы программирования в среде Турбо-Пролога

«Чистый Пролог», который рассматривался до сих пор предполагается абсолютно недетерминированной системой, результаты работы которой не зависят от порядка размещения фактов и правил в программе. В реализациях Пролога это не так. Имеются средства для влияния на порядок вычислений и конечные результаты, встроенные предикаты для связи с внешней средой и арифметических вычислений, введены типы данных для увеличения скорости работы.

Разделы программы

Программа на Турбо-Прологе состоит из нескольких разделов:

  • опции кампилятора (задаются вначале программы),

  • константы,

  • домены,

  • спецификация предикатов базы данных,

  • спецификация предикатов программы,

  • цель,

  • предложения (определения предикаторов или правила).

Все разделы необязательны. Например, вся программа может состоять из единственного раздела цели:

goal

readint(x), y = x + 3, write (x,” + 3 = “, y).

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

Опции компилятора

trace

project “название проекта”

include “другой исходный файл”

Эти опции необязательны. trace – определяет необходимость трассировки при выполнении всех предикатов, содержащихся в файле. Для связывания нескольких модулей в один исполняемый - необходимо в каждом из них указать project; include позволяет совместно компилировать данный файл с другим исходным. Связи м/у модулями определяются посредством объявления глобальных областей значений доменов и глобальных преликатов. Тогда к ним можно обращаться за пределами модуля. С разделами domains, predicates и database можно использовать ключевое слово global, указывая, что разделы доступны из нескольких программных модулей.

Имена переменных

Должны начинаться с большой буквы или значка подчеркивания. Специальное имя – (знак подчеркивания) означает согласование с произвольным значением.

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

Имеются четыре способа указания областей определения предикатов:

  • переименование областей,

  • указание файлов,

  • списки,

  • составные области.

Стандартными типами (областями или доменами) являются – integer, char, real, file, string, symbol. Примеры констант из этих областей:

mother, jewdokia - symbol

“Евдокия”, “abc” - string

‘&’ - char

169, 15670 - integer

1.4e-4, 0.32 - real

Пример

Примеры переимено вания, указания списков и перечисления файлов:

domains

person = string

apples, height = integer

myList = symbol*

lstofChar = char*

file = sales; salaries

Домены person – строковый

apples, height – целого типа,

myList – список символов,

lstofChar – список литер,

file – стандартная составная область для 0-арных функторов, определяющих имена файлов,

sales, salaries – имена дополняют стандартную область, которая содержит:

  • keyboard (клавиатура) screen (экран)

  • printer (параллельная печать) com 1 (серийный интерфейс)

  • stdin ( стандартный ввод) stdont (стандартный вывод)

  • stderr (вывод ошибок)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]