- •Общие сведения о Прологе, области применения, отличия Пролога от других языков программирования.
- •6. Утверждения программы Турбо-Пролога: факты и правила.
- •7. Раздел goal программы Visual Prolog.
- •8. Этапы программирования на Visual Prolog.
- •9.Декларативный и процедурный смысл программы на Прологе.
- •10.Сопоставление. Правила сопоставимости термов, структур.
- •12.Арифметика Visual Prolog. Арифметические функции.
- •13,14. Рекурсия в Visual Prolog. Пример рекурсивного правила (вычисление факториала, возведение числа в целую степень).
- •14.Рекурсия и эффективность рекурсивных правил на Visual Prolog .
- •15 Стандартные предикаты. Поточный шаблон стандартных предикатов.
- •16.Стандартные предикаты ввода-вывода в Прологе.
- •17.Отсечение в программах на Прологе.
- •18.Отрицание в правилах Visual Prolog.
- •19.Использование составных объектов в Visual Prolog. Простые и составные структуры.
- •20. Списки как основная структура данных в Visual Prolog. Описание списков. Голова и хвост списка .
- •23. Преобразование строки в список символов или атомов.
- •Преобразование строки в символ
- •24.Преобразование данных из одного типа в другой.
- •Преобразование строки в символ
- •25. Преобразование, определяемые пользователем. Пользователь может определить преобразование, не предусмотренные предикатами. Например: целые числа в действительные и наоборот.
- •26. Предикаты Visual Prolog для работы с файлами.
- •27. Описание файловых доменов, переадресация внешних устройств.
- •28. Запись данных в файл на Visual Prolog
- •29. Чтение данных из файла на Visual Prolog
- •30. Дозапись данных в конец существующего файла на Visual Prolog.
- •31.Создание меню средствами Visual Prolog.
- •32.Способы организации цикла в программах на Прологе.
- •33.Создание динамических баз данных средствами Visual Prolog.
- •34. Статические и динамические базы данных в программах на Visual Prolog.
- •35.Способы занесения информации в динамическую базу данных на Visual Prolog.
- •36.Предикаты Турбо-Пролога для работы с базой данных.
Общие сведения о Прологе, области применения, отличия Пролога от других языков программирования.
Искусственный интеллект (ИИ) – это научное направление, связанное с разработкой программ, связанных с различной деятельностью, требующей человеческого интеллекта. К области применения ИИ относятся следующие:
Восприятия и распознавание образа;
Математика и математическое доказательство теорем;
Игры (шахматы);
Решение задач;
Понимание естественного языка.
Обычные языки программирования не очень удобны для разработки систем ИИ. Для построения данных систем были разработаны специальные языки, т.к. Пролог, имеющий встр. механизмы вывода, и ЛИСП – ориентированный на обработку списков.Теоритической основа Пролога явл-ся раздел символьной логики,называемый исчислением предикатов.Области применения:-Управление производственными процессами.-использование баз данных;-перевод с одного языка на другой;-создание интерфейса на естественном языке;-создание экспертных систем;-доказательство теорем и др. На Прологе удобно описывать различные структуры данных, такие как списки и деревья. Отличие от традиционных процедурных языков-Пролог язык описаний, а не как язык предписаний.Свое название Пролог получил от слов "ПРОграммирование на языке ЛОГики". На самом деле Пролог не является чистым языком логического программирования, но его создание - важный этап в этом направлении. Используемый в прологе подход состоит, в описании известных фактов и отношений (правил), касающихся решаемой задачи, а не в предписании последовательности шагов, выполняя которые ЭВМ решает задачу. Решение на прологе следует из составленного описания.
2.Основные элементы Visual Prolog: имена объектов, имена отношений, атомы, термы, константы, переменные, структуры.Объекты данных в Прологе называются термами. Терм может быть константой, переменной или структурой. Атом – синтаксически неделимый терм. Это повествовательное предложение, которое может быть истинно или ложно, но не то и другое одновременно. Атом рассматривают, как единое целое, его структуру и состав не анализируют. Например, "Иванов работает на заводе", "Петров является студентом" и т.п. Констаныты относятся к одному из стандартных типов данных:
Тип |
Ключевое слово |
|
Диапазон значений |
Пример |
Символы |
char |
Все символы |
‘a’, ‘C’, ‘%’ |
|
Целые числа |
integer |
-32678…32767 |
-153, 125 |
|
Действительные числа |
real |
-1E-307…1E308 |
2.48 |
|
Строки |
string |
Последовательность символов |
“Sony”, “256” |
|
Символьные имена |
symbol |
|
real_data, ‘Delete string’ |
|
Файлы |
file |
Допустимое в ДОС имя файла |
a.txt |
Переменная – имя начинается с большой буквы или знака подчеркивания. В качестве имени может использоваться знак подчеркивания и называется анонимной. Она может использоваться вместо любой переменной, однако она никогда не принимает конкретного значения. Структуры(сложные термы)–объекты,кот.состоят из нескольких компонент. Записывается с помощью указания ее функтора и компонента.Компоненты заключаются в ( ) и разделяются запятыми.Функтор записывается перед открывающей скобкой. Число компонент в структуре называется арностью структуры.В качестве компонент могут быть переменные или структуры. data_r(12,mart,1962)-data_r – функтор, 12, mart, 1962 – компоненты. Арность приведенной структуры равна 3м.Все структурные объекты можно избразить в виде деревьев. Корнем дерева является функтор, а ветвями, выходящими из него- компоненты.
3 Структура программы Visual Пролога, разделы программы.
Програма содержит описание задачи, имеющее 3 компоненты:
имена и структуры объектов, используемых в задаче;
имена отношений, которые существуют между объектами;
Факты и правила, описывающие отношения.
Программа состоит из нескольких разделов, каждому из которых предшествует ключевое слово.
/* комментарии */
domains <описание типов данных>
predicates <описание предикатов>
clauses <утверждения (предложения)>
goal <целевое утверждение>
В программе необязательно наличие всех разделов. Обычно должны быть 3й и 4й. Могут присутствовать еще 2 раздела для определения глобальных доменов и предикатов – global domains, global predicates. Они позволяют обеспечить междумодульный интерфейс, если программа состоит из нескольких модулей. Программа может создать несколько разделов domains, predicates, clauses. При этом надо соблюдать следующие ограничения: - раздел должен начинаться с ключевого слова; - при компиляции поддерживается только одна цель, может быть только один раздел goal; - все предложение раздела clauses, описывающие один и тот же предикат должны записываться друг за другом; - при компиляции может обрабатываться только один раздел глобальных предикатов, при этом перед ним не должен использоваться раздел объявления обычных предикатов; - разделы, создающие предикаты базы данных должны использоваться перед объявлением всех глобальных и обычных предикатов.
4. Способы объявления доменов (типов данных) Visual Прологе.
Раздел domains
4 способа объявления типов данных (доменов):
name =d , где name – имена объектов стандартного типа, d – один из стандартных доменов (integer, real, char, string, symbol и др.).
list = element*, где list – список элементов element, element – элемент, описанный в разделе domains или один из стандартных типов, * - список.
num1=f1 (d11,…,d1M);f2)d21,…,d2N)Тип num1 включает сложные объекты, которые объявляются путем установления пунктора и описаний всех входящих в него компонент.
file = name1; name2; Используется для обращения к файлам по символическим именам. Может быть только один оператор этого типа. Символические имена файлов, если их несколько, задаются в качестве альтернативы.
5.Объявление предикатов в программах Visual Пролога.
Раздел predicates
Предикат (отношение) – в общем случае эта структура выглядит так:
predname (comp1, …, compN), где
predname – имя предиката,
comp1, …, compN – типы компонентов, описанные в разделе domains или стандартные типы.
fio=string
den, god = integer
mes = symbol
predicates
anketa (fio, den, mes, god)
Если в предикатах используется только стандартные типы данных, то раздел domains может отсутствовать.
predicates
anketa (string, integer, symbol, integer)
Предикат может состоять только из имени., например,
predicates
result
Допускается многократное объявление предиката с одним и тем же именем. Альтернатива необязательно должна иметь одинаковое число компонентов.