- •Лабораторные работы по курсу “Системы искусственного интеллекта”
- •1. Введение.
- •2. Структура программы.
- •Раздел predicates
- •Раздел clauses
- •Комментарии
- •Лабораторная работа №3 “Организация циклов” Варианты:
- •Лабораторная работа №4 “Работа со строками” Варианты :
- •Лабораторная работа №5 “Работа со списками” Варианты :
- •Лабораторная работа №6 “Создание базы данных” Варианты :
- •Лабораторная работа №7 “Организация экспертной системы”
Лабораторные работы по курсу “Системы искусственного интеллекта”
1. Введение.
Система программирования Turbo-Prolog за короткое время получила широкое распространение и приобрела многочисленных сторонников. Разнообразные диалоговые и сервисные возможности выделяют ее среди других Prolog-систем.
2. Структура программы.
Обычно программа на Turbo-Prolog имеет следующую структуру :
constants — определение констант
domains — определение типов данных
predicates — определение предикатов
clauses — определение фактов и правил
Содержимое разделов constants и domains может отсутствовать, но для улучшения читабельности и ясности программы рекомендуется всегда описывать константы и домены в тексте.
Перед разделом clauses (или после него ) может располагаться раздел goal. В этом разделе определяется цель , которую необходимо достичь для решения поставленной задачи. Цель может состоять из нескольких подцелей. Если разрабатываемая программа предназначена для работы в пакетном режиме, т.е. если необходимо создать exe — файл, раздел goal не может быть опущен.
В программе могут присутствовать еще два раздела, обеспечивающие определение глобальных доменов и предикатов
global domains
global predicates
Определение типов данных и предикатов в этих разделах позволяет обеспечить межмодульный интерфейс.
Наконец, перед разделом predicates может быть дополнительный раздел , содержащий определение предикатов динамической базы данных. Этот раздел называется
database
Таким образом, программа на Turbo-Prolog может состоять из следующих разделов :
constants
domains
global domains
database
predicates
global predicates
clauses
goal
Раздел predicates
В этом разделе определяются предикаты (отношения). Каждый предикат определяется со своим именем и аргументами (параметрами). Если типы данных некоторых аргументов предопределены, то они должны быть описаны заранее в разделе domains.
Раздел clauses
В этом разделе определяются факты и правила. Факт представляется именем предиката, за которым следуют аргументы, заключенные в круглые скобки. Заканчивается запись факта точкой. Все имена предикатов должны начинаться со строчной буквы.
Правило состоит из заголовка и тела. Заголовок представляет собой предикат, тело состоит из термов, которые могут быть связаны между собой словами or или and (в транскрипции Turbo Prolog’а “;” и “,”). Между заголовком и телом стоит знак “:-”, означающий “если”. Каждое правило должно заканчиваться точкой. Имена переменных должны начинаться с прописной буквы и могут содержать буквы, цифры и знак подчеркивания “_”. Максимальная длина имени — 250 знаков.
Особую роль играют несвязанные переменные, Они представляются знаком “_”.
Комментарии
Комментарии могут располагаться в произвольных местах программы. Они начинаются с символов “/*” и заканчиваются символами “*/”.
Запуск системы
Система запускается файлом Prolog.exe. Появляется сообщение об инициализации системы, исчезающее при нажатии любой клавиши. Затем появляется главное меню со стандартным для Turbo-сред набором опций и четыре рабочих окна : редактирования, диалога, сообщений и трассировки. Ниже выводятся значения функциональных клавиш.
3. Типы данных
Symbol — последовательность букв, цифр и знаков подчеркивания, начинающаяся со строчной буквы или заключенная в кавычки.
String — любая последовательность символов, заключенная в кавычки.
Char — отдельный символ, заключенный в апострофы.
Integer — целое число в диапазоне от -32768 до 32767.
Real — любое число, которое может быть представлено в экспоненциальной форме.
File — имя файла
Примеры :
symbol — person, a1, b2, auto_nummer, ‘Prolog’;
string — “хорошая погода”, “123 / 234”, “Кочан”;
“char — ‘f’, ‘5’, ‘!’, ‘*’;
integer — 4, 24, -975;
real — 34, 0.245, -234.22;
file — Peter, balista, new4.
Данные типа symbol в отличие от данных типа string находятся в таблице символов. А таблица символов располагается в оперативной памяти. Поэтому использование данных типа symbol ускоряет работу программы, однако вначале, для построение таблицы символов, требуется дополнительное время.
Лабораторные задания
Лабораторная работа №1 “Знакомство с Turbo Prolog”
Создать программу начального знакомства с языком, которая должна выдавать на экран текст приветствия.
1 этап
Программа выдает на экран приветствие типа : «Вас приветствует ПРОЛОГ»
2 этап
Программа запрашивает имя пользователя, осуществляет его ввод с клавиатуры и последующую выдачу сообщения, например : «Вася – Вас приветствует ПРОЛОГ».
Использовать предикаты writeиreadln, сделать вариант сGOALи без нее.
Лабораторная работа №2 “Установление родственных связей”
Создать программу,описывающую родственные взаимоотношения группы людей изображенной на рис.1
П


амела
Том
Джейн
Л




инда
Боб
Лиз Билл
Н


ил
Пат Эмми
Рэд
Джин Энн
рис.1 Схема родственных отношений.
При разработке программы использовать предикаты типа:
родитель;
мужчина;
женщина.
Построить предикаты — сестра, предок, потомок, отец, мать и один по индивидуальному заданию.
