Основы логического программирования на языке ПРОЛОГ (продолжение)

Презентация:



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

Логическое программирование и язык Пролог. План лекции: 1.Понятие логического программирования. 2.Типы предложений в Прологе. 3.Объекты данных – термы.
ВИДЫ МОДЕЛЕЙ ДАННЫХ. Ядром любой базы данных является модель данных. Модель данных представляет собой множество структур данных, ограничений целостности.
Списки в языке Пролог. Определение Список упорядоченное множество объектов одинакового типа. Формально это определение соответствует определению массива.
Основы языка Pasсal.
Лекция 4 Программирование на Паскале. Элементы языка Турбо Паскаль 7.0. Типы данных. Управляющие конструкции.
Логика первого порядка ХНУРЭ, кафедра ПО ЭВМ, Тел , Лекции Н.В. Белоус Факультет компьютерных наук Кафедра.
Основная часть программы на языке Pascal представляет собой последовательность операторов, каждый из которых производит некоторое действие над данными,
ДРУГИЕ ФОРМЫ РЕКУРСИИ I Функциональноепрограммирование Григорьева И.В.
Первая программа на языке Паскаль в среде Турбо Program name_program; Var ; {здесь описываются все идентификаторы: константы, переменные, типы, процедуры,
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 5.
1 из 18 Основные типы данных языка программирования Паскаль.
Логика первого порядка ХНУРЭ, кафедра ПО ЭВМ, Тел , Лекции Н.В. Белоус Факультет компьютерных наук Кафедра.
Логические функции Предикаты и кванторы. «Все люди смертны». «Сократ – человек».
Программирование на языке Паскаль ЗАПИСИ в Паскале (RECORD)
Основы логического программирования на языке ПРОЛОГ.
Тема: Комбинированный тип данных. Цель:. Комбинированный тип данных – это структурированный тип, состоящий из фиксированного числа компонент разного типа.
1 Первая программа на языке Паскаль в среде Турбо Program name_program; Var ; {здесь описываются все идентификаторы: константы, переменные, типы, процедуры,
Организация данных в виде отдельных файлов Файл с данными по договорам договора Дата Организация Директор Адрес Телефон Файл с данными по письмам исх/вх.
Каждый комбинированный тип - это множество записей одной и той же структуры, т.е. имеющих одно и то же число полей, названия и типы которых одинаковы.
Транксрипт:

Основы логического программирования на языке ПРОЛОГ (продолжение)

Объекты данных

Структуры Структурные объекты (или просто структуры) - это объекты, которые состоят из нескольких компонент. Эти компоненты, в свою очередь, могут быть структурами. 1983)

Структуры Например, дата(14, октябрь, 2009) Это структура, состоящая из трех компонент: день, месяц, год. В данном примере все компоненты являются константами.

Структуры Компоненты могут быть переменными. Например, дата(Х, октябрь, 2009)

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

Пример объекта «книга»

Описание структуры на Turbo-Prolog = (,..., )

Пример описание структуры domains предмет = книга(автор, название) автор = автор(фамилия, имя, отчество, дата_рождения) дата_рождения = дата_рождения(год, месяц, день) название, фамилия, имя, отчество = string год, месяц, день = integer студент = string

Пример описание структуры predicates владелец(студент, предмет) clauses владелец(Петрова, книга(автор(Пушкин, Александр, Сергеевич, дата_рождения(1799, 6, 6)), Сказки)).

domains предмет = книга(автор, название) автор = автор(фамилия, имя, отчество, дата_рождения) дата_рождения = дата_рождения(год, месяц, день) название, фамилия, имя,отчество = string год, месяц, день = integer студент = string

domains предмет = книга(автор, название) автор = автор(фамилия, имя, отчество, дата_рождения) дата_рождения = дата_рождения(год, месяц, день) название, фамилия, имя,отчество = string год, месяц, день = integer студент = string predicates владелец(студент, предмет) clauses владелец(Петрова, книга(автор(Пушкин, Александр, Сергеевич, дата_рождения(1799, 6, 6)), Сказки)).

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

В декларативной модели рассматриваются отношения, определенные в программе. Для этой модели порядок следования предложений в программе и условий в правиле не важен.

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

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

Определить максимум из двух чисел max(X,Y,X):-X>Y. /* если первое число больше второго, то первое число - максимум */ max(X,Y,Y):-X<Y. /* если первое число меньше второго, то второе число - максимум */ max(X,Y,Y):X=Y. /* если первое число равно второму, возьмем в качестве максимума второе число */

Определить максимум из двух чисел max(X,Y,X):-X>Y. /* если первое число больше второго, то первое число - максимум */ max(X,Y,Y):-X<=Y. /* если первое число меньше или равно второму, то второе число - максимум */

Отсечение Отсечение (cut) на Прологе обозначается восклицательным знаком "!". Этот предикат предназначен для ограничения пространства поиска, с целью повышения эффективности работы программ. Он всегда завершается успешно.

Определить максимум из двух чисел max2(X,Y,X):-X>Y,!./* если первое число больше второго, то первое число - максимум */ max2(_,Y,Y). /* в противном случае максимумом будет второе число */