28766-1 (630386), страница 6

Файл №630386 28766-1 (Лекции по информатике) 6 страница28766-1 (630386) страница 62016-07-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 6)

1) N>0 согласуется при N1=3

2) M1=N1-3 согласуется при N1=3 и M1=2

3) posl (2, U1) приводит ко второму рекурсивному обращению и так как это обращение не согласовано с первым, то последнее утверждение (V=U*N) откладывается.

2. Согласование posl (2, U1) с posl (0, 1) приводит к неудаче. Происходит сопоставление с заголовком 2-го утверждения, что заканчивается удачей, при этом N2=2 и V=U1 . происходит доказательство по цели этого утверждения:

1) согласуется при N2=2

2) согласуется при N2=2 и М2=1

3) posl (1, U2) приводит к повторному рекурсивному обращению

4) откладывается

3. Согласование posl (1, U2) с posl (0, 1) приводит к неудаче. Сопоставление с заголовком 2-го утверждения заканчивается неудачей, при N3=1 и V=U2 . Происходит доказательство по цели этого утверждения:

1) согласуется при N3=1

2) согласуется при N3=1 и М3=0

3) posl (0, N3) приводит к повторному рекурсивному обращению.

Полученное целевое утверждение сопоставляется с первым целевым утверждением posl (0, 1), при этом U3 получает заначение 1.

На этом этап разбиения заканчивается.

II. Этап сборки решения.

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

1) U2=U3*1 , так как U3=1 то U2=1

2) U1=U2*2 U1=2

3) X=U1*3 X=6

2. Возврат и отсечение.

В процессе реализации запроса интерпретатору языка необходимо анализировать множество фактов и правил, к-рые извлекаются в процессе нескольких просмотров соответственных баз фактов. При этом в процессе одного просмотра формируется частичное решение. Процесс в PROLOGе выполняется автоматически путем пометки или заполнения тех модулей, к-рые анализировались перед текущей целью, с тем, чтобы исключить полученное частное решение из дальнейнего рассмотрения. Этот механизм в PROLOGе наз-ся возвратом и реализуется через использование стандартного предиката fail, к-рый всегда имеет значение “ложь”. Этот предикат заставляет интерпретатор проанализировать ещё раз базу фактов, чтобы выполнить более целевое утверждение для других значений переменных. Он позволяет получить в базе все возможные решения.

ПРИМЕР:

domains

p,T=symbo L

predicat s

like (P,T)

poleg (T)

dauses

like (“Иванов”,” пиво”).

like (“Иванов”,” сок”).

poleg(“cok”)...

otv if

like (P,T) and

poleg (T),nl,

write (P),

fail.

goal

otv.

Для управления процессом выполнения программ в PROLOG имеется встроенный предикей cut, кот. кодируется в turbo-PROLOG как !. Основное назначение — остановка процесса возврата, т.е. приостановка выработки дальнейших решений.

Этот процесс в Прологе наз. ОТСЕЧЕНИЕМ. Чаще всего предикей cut используется совместно с fail.

ПРИМЕР

goal

like (P,T)

T= “кефир”,

nl,

write ( “любитель кефира найден”)

!.

fail

Отсечение используется для устранения бесконечных циклов (см. пред. пример):

clauses

posl (0,1) if !

posl(N,V) if

M=N-1

posl (M,U)

V=U*N

Отсечение также используется для устр. взаимоисключающих утверждений.

ПРИМЕР

ball (M,’A”) if M> so,!

ball(M, “B”) if M60,!.

ТЕМА: АГРЕГАТЫ ФАКТОВ

1.Списки

2.Динамическая база фактов

3.Структуры

1. Списки.

Если в пр-ме необходимо организовать с переменными или заранее неопределенным количеством объектов, то испол. списки.

СПИСОК — упорядоченная последовательность эл-в одного типа неопределенной длины, кот м. состоять из 0 и более эл-в.

Константы ,попавшие в список , записываются в [ ] и отделяются друг от друга запятыми.

Исходя из определения списка, два списка , сост. из одних и тех же

эл-в , но расположенных в разном порядке считаются разными. В разделе domains эл-ты списка обяз-но д.б. сопоставлены с определенным типом домена (Sp=integer*).

Список в domains м.б. опосредствован через имя переменной, эл-ты кот. собираются в список.

domains

k_fms = string, kol = integer,

Sp = kol*

predicates

fms ( k_fms, kd, ...)

Списки состоят из заголовка ( начала списка) и захвата (окончания списка). К заголовку относится только 1-й эл-т списка, остальное — хвост.

Список с нулевым количеством эл-в определяется как пустой список, он не имеет ни заголовка ни хвоста.

Для работы со списками в языке имеется ряд встроенных предикатов.

MEMO (, ) — где м.б. задан либо именем Sp, либо непосредственно константами, входящими в этот список.

Предикат определяет принадлежность эл-та к списку.

I — деление списка на голову и хвост [ Head I Tail] или [H I T]

H — или переменной для обозначения заголовка

T — — “ — хвоста

ПРИМЕР

domains

list=char*

predicates

test (List)

clouses

test ( [‘A’, ‘B’ , ‘C’, ‘D’] ).

goal

test ([H/T]),

nl,

write (H)

APPEND ( [ эл-ты старого списка ],[ эл-ты нового списка ], )

— из 2-х списков, старого и нового, создают III список.

REVERS ( [ эл-ты стар. списка], )

— меняет последовательность эл-в на противоположную

FINDALL (,,)

ПРИМЕР

domains

post = string

Kol, Cena, Sum = integer

Sp = integer* ( Sp = Kol*)

Kod = string

predicates

tmc ( P, Kol, Cena)

sum ( Sp, Sum)

goal

write ( “ Введите код”),

readln ( Kod),

nl,

findall ( Kol, tmc ( Pos1, Kod, Kol, Cena), Sp),

sum (Sp, Sum),

write ( “Количество =” , Sum)

clauses

tmc ( “ 001”, “001”, 45, 80)

sum ( [ ], 0).

sum ( [ H/T ], Sum) if

sum ( T, Sum1).

Sum = H + Sum1.

В языке имеется возможность работы с динамической базой фактов, в которой м. объединяться как однородные, так и разнородные предикаты-факторы.

База фактов — нечто среднее м-у реляционной СУБД и массивом. В момент активизации все факты базы переносятся в ОЗУ с внешнего зап. устройства. Для работы с БД создается новый раздел программы, в кот. определяются прототипы предикатов-фактов, объедененных в базу.

DATABASE

прототипы в этом разделе описываются по тем же правилам, что и в predicates.

Раздел database записывается перед разделом predicates и предикаты, кот. в нем описываются не могут описываться в разделе predicates, а ис-ся в разделах clouses и goal. Активизация базы происходит в области ОЗУ, кот. по умолчанию имеет тип домена dbasedom. Этот тип программист не указывает явно в программе в разделе domains, но м. его использовать в качестве аргументов встроенных предикатов языка, что позволяет сократить текст программы при работе с базой.

domains

dbasedom = tms(Post, Kod, Kol, Cena)

database

tmc (Post, Kod, Kol, Cena)

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

asserta

( ) ( dbasedom) : (i)

assertz

— используется для добавления нового факта в базу. Факт д.б. обязательно определен и относится к области dbasedom. При использовании предиката asserta факт добавляется перед остальными фактами имеющегося предиката.

assertz — добавление после — “ —

retraсt()( dbasedom) : (i) — удаление из БД первого факта, кот. сопоставляется с указанным в retraсt фактом. Возможно удаление группы. При этом в факте указывается общее для удаления фактов значение, а на месте всех остальных переменных записываются те переменные, кот. нет в этом предикате.

SAVE() — сокращает все факты дин. базы из ОЗУ на магн. диск под именем

string : (i) заданным в предикате save/

CONSULT() — добавляет в опер. дин. базу все факты из файла на диске с string : (i) указанным именем.

2. Приемы работы с динамической базой фактов.

1.Перезапись фактов из раздела clouses в базу на МД.

domains

Post, Kod = string

Kol, Cena = integer

database

tmc ( Post, Kod, Kol, Cena)

predicates

perezap

dauses

tmc (“001”, “001”, 45,80).

perzap if

save (“data”)

gocel

perezap.

2. Создание базы в процессе диалога

domains

Post, Kod = string

Kol, Cena = integer

Pc = integer &&признак окончания ввода

database

tmc ( Post, Kod, Kol, Cena) &&база создается первоначально

predicates

vvod

clouses

vvod if

write (“Введите код поставщика”),

nl,

readln (post),

nl,

write (“Введите код ТМЦ”),

nl,

readln (Kod),

nl, write (“Введите кол-во ТМЦ”),

nl,

readint (Kol),

write (“Введите цену”),

nl,

readint (Cena),

assertz (tmc ( Post, Kod, Kol, Cena)),

write ( “ Введите признак продолжения s/0”),

pr=0,

vvod.

goal

vvod,

save (“data”)

3.Дополнение базы новыми фактами

goal

consult(“data”),

vvod,

save(“data’).

4.Активизация фактов из файла на диск

domaines

Post, Kod = string

Kol, Cena = integer

Sum, Sum1 = integer

Sp = kol*

database

tmc (Post, Kod, Kol, Cena)

predicates

sum( Sp, Sum)

clouses

sum ( [ ], 0).

sum ( [ H/t ], Sum) if

sum(T,Sum1),

Sum= H + Sum1.

goal

consult (“data”),

write (“Введите код ТМЦ”),

nl,

readln (Kod),

sum(Sp, Sum),

write (Sum).

5.Удаление конкретных фактов из БД

domains

Post, Kod = string

Kol, Cena = integer

database

tmc (Post, Kod, Kol, Cena)

predicates

udal

clouses

udal if

write (“Укажите код поставщика”),

nl,

readln (Post),

write (“Укажите код ТМЦ”),

nl,

readln (Kod),

retract (tmc (Post, Kod, Kol, Cena)),

goal

consult (data),

udal,

save(“data’).

6.Удаление группы факторов

dauses

udal if

write (“Введите код поставщика”),

nl,

readln (post),

retract(tmc (Post, Kod, Kol, Cena)),

С помощью retract производится удаление дин. базы фактов из ОЗУ.

Корректировка содержимого факта.

Операции проихзводятся в 2-а этапа:

1-- с помощью retract осущ. удаление устаревшего факта из базы

2-- assertz — добавление нового факта в базу.

3. Структуры.

СТР-РА — набор объектов, логически связанных между собой в процессе решения задачи и объединенных под одним именем. Стр-ра в П. используется при создании сложной базы фактов и правил.

Если объекты стр-ры относятся к одному типу доменов. то стр-ра наз. однодоменной. Допускается исп-е доменов разного типа, в этом случае стр-ра наз. разнодоменной.

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

ТЕМА: Организация работы с файлами в системе “ ТУРБО-ПРОЛОГ”.

1. Определение файлов.

2. Порядок работы с файлами пользователя в программе.

3.Стандартные предикаты обработки файлов и техника их использования.

1. Определение файлов.

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

1.Входной с экрана дисплея keyboard

2.Выходная форма на экран screen

3.Вых. ф-ма на устройство печати printer

4. — “ — на порт com1

По умолчанию наз-ся файлы (1) и (2). Для переопределения стандартных файлов и файлов пользователя исп-ся станд. предикаты

readdevice

()

(file):(i)

writedevice

ПРИМЕР

readdevice (printer),

write (“Работа завершена”),

readdevice (screen),

...

Файлы пользователя в П. м. представлять собой как Д. так и факты в виде предикатов, при этом 1-я запись файла д. соответствовать 1-му предикату-факту.

Характеристики

Тип файла
Документ
Размер
1,09 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов ответов (шпаргалок)

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7041
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее