🗊Презентация Типовые процедуры обработки списков в программах на языке Пролог

Нажмите для полного просмотра!
Типовые процедуры обработки списков в программах на языке Пролог, слайд №1Типовые процедуры обработки списков в программах на языке Пролог, слайд №2Типовые процедуры обработки списков в программах на языке Пролог, слайд №3Типовые процедуры обработки списков в программах на языке Пролог, слайд №4Типовые процедуры обработки списков в программах на языке Пролог, слайд №5Типовые процедуры обработки списков в программах на языке Пролог, слайд №6Типовые процедуры обработки списков в программах на языке Пролог, слайд №7Типовые процедуры обработки списков в программах на языке Пролог, слайд №8Типовые процедуры обработки списков в программах на языке Пролог, слайд №9Типовые процедуры обработки списков в программах на языке Пролог, слайд №10Типовые процедуры обработки списков в программах на языке Пролог, слайд №11Типовые процедуры обработки списков в программах на языке Пролог, слайд №12Типовые процедуры обработки списков в программах на языке Пролог, слайд №13Типовые процедуры обработки списков в программах на языке Пролог, слайд №14Типовые процедуры обработки списков в программах на языке Пролог, слайд №15Типовые процедуры обработки списков в программах на языке Пролог, слайд №16Типовые процедуры обработки списков в программах на языке Пролог, слайд №17Типовые процедуры обработки списков в программах на языке Пролог, слайд №18Типовые процедуры обработки списков в программах на языке Пролог, слайд №19Типовые процедуры обработки списков в программах на языке Пролог, слайд №20Типовые процедуры обработки списков в программах на языке Пролог, слайд №21Типовые процедуры обработки списков в программах на языке Пролог, слайд №22Типовые процедуры обработки списков в программах на языке Пролог, слайд №23Типовые процедуры обработки списков в программах на языке Пролог, слайд №24Типовые процедуры обработки списков в программах на языке Пролог, слайд №25Типовые процедуры обработки списков в программах на языке Пролог, слайд №26Типовые процедуры обработки списков в программах на языке Пролог, слайд №27Типовые процедуры обработки списков в программах на языке Пролог, слайд №28Типовые процедуры обработки списков в программах на языке Пролог, слайд №29Типовые процедуры обработки списков в программах на языке Пролог, слайд №30

Содержание

Вы можете ознакомиться и скачать презентацию на тему Типовые процедуры обработки списков в программах на языке Пролог. Доклад-сообщение содержит 30 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Язык SWI Prolog
Типовые процедуры обработки списков в программах на языке Пролог
Описание слайда:
Язык SWI Prolog Типовые процедуры обработки списков в программах на языке Пролог

Слайд 2





Типовые процедуры обработки списков
Типовые процедуры обработки списков не
являются стандартными предикатами системы
программирования языка Пролог.
Описание слайда:
Типовые процедуры обработки списков Типовые процедуры обработки списков не являются стандартными предикатами системы программирования языка Пролог.

Слайд 3





Предикат add
Предикат add(X,Y,Z) истинен, если список
Z получается добавлением терма Х в
начало  списка Y.  Схема отношения этого
предиката имеет вид:
add(<терм>,<список>,<список>).
Описание слайда:
Предикат add Предикат add(X,Y,Z) истинен, если список Z получается добавлением терма Х в начало списка Y. Схема отношения этого предиката имеет вид: add(<терм>,<список>,<список>).

Слайд 4





Декларативное описание предиката add
Декларативное описание предиката add
формулируется следующим образом:    
Терм X является головой списка Z, а
список Y  хвостом списка Z. 
Процедура add(X,Y,Z) состоит из факта:
add(X,Y,[X|Y]).
Описание слайда:
Декларативное описание предиката add Декларативное описание предиката add формулируется следующим образом: Терм X является головой списка Z, а список Y  хвостом списка Z. Процедура add(X,Y,Z) состоит из факта: add(X,Y,[X|Y]).

Слайд 5





Предикаты revers1 и revers2.

Предикаты revers1 и revers2 являются
предикатами обращения списков и определяют
одно и то же отношение различными
способами. Схема отношения этого предиката
имеет вид:
revers(<список>,<список>).
Описание слайда:
Предикаты revers1 и revers2. Предикаты revers1 и revers2 являются предикатами обращения списков и определяют одно и то же отношение различными способами. Схема отношения этого предиката имеет вид: revers(<список>,<список>).

Слайд 6





Предикаты revers1 и revers2.

Процедура revers определяется двумя
способами:
простым обращением;
обращением с накоплением.
Описание слайда:
Предикаты revers1 и revers2. Процедура revers определяется двумя способами: простым обращением; обращением с накоплением.

Слайд 7





Предикаты revers
Предикат revers(X,Y) истинен, если список Y содержит все элементы списка Х, которые записаны в списке Y в обратном порядке. Перестановку элементов списка в обратном порядке можно произвести путем многократного выполнения процедуры append.
Описание слайда:
Предикаты revers Предикат revers(X,Y) истинен, если список Y содержит все элементы списка Х, которые записаны в списке Y в обратном порядке. Перестановку элементов списка в обратном порядке можно произвести путем многократного выполнения процедуры append.

Слайд 8





Простое обращение. Декларативное определение предика revers1
1)	обращенный пустой список есть пустой
список;
2)	если список Х можно разделить на голову Н
и хвост Xs, то Zs есть обращенный список, если
Ys обращенный хвост списка X, Zs получен
путем присоединения к Ys головы Н списка X.
Описание слайда:
Простое обращение. Декларативное определение предика revers1 1) обращенный пустой список есть пустой список; 2) если список Х можно разделить на голову Н и хвост Xs, то Zs есть обращенный список, если Ys обращенный хвост списка X, Zs получен путем присоединения к Ys головы Н списка X.

Слайд 9





Процедура простого обращения
Простое обращение выполняется
процедурой revers1, которая использует
процедуру append и состоит из двух
предложений:
revers1([ ],[ ]).
revers1([H|Xs],Zs): revers1(Xs,Ys),        					append(Ys,[H],Zs).
Описание слайда:
Процедура простого обращения Простое обращение выполняется процедурой revers1, которая использует процедуру append и состоит из двух предложений: revers1([ ],[ ]). revers1([H|Xs],Zs): revers1(Xs,Ys), append(Ys,[H],Zs).

Слайд 10





Обращение с накоплением
В процедуре revers2 введен дополнительный предикат rev с тремя аргументамисписками, где первый аргумент  исходный список, второй аргумент  накапливающийся список, а третий аргумент  результирующий, обращенный список.
Описание слайда:
Обращение с накоплением В процедуре revers2 введен дополнительный предикат rev с тремя аргументамисписками, где первый аргумент  исходный список, второй аргумент  накапливающийся список, а третий аргумент  результирующий, обращенный список.

Слайд 11





Декларативное определение предиката rev
Декларативное определение предиката rev формулируется следующим образом:
1)	если первый аргумент есть пустой список, то второй и третий аргументы представляют собой один и тот же список;
Описание слайда:
Декларативное определение предиката rev Декларативное определение предиката rev формулируется следующим образом: 1) если первый аргумент есть пустой список, то второй и третий аргументы представляют собой один и тот же список;

Слайд 12





Декларативное определение предиката rev
2)	первый аргумент непустой список [H|Хs], и его  можно разделить на голову Н и хвост Xs;  в этом случае применение предиката rev к списку [H|Хs] и накапливающемуся списку L равносильно применению предиката rev к хвосту списка Xs и списку [H|L];  при этом получается обращенный список Y.
Описание слайда:
Декларативное определение предиката rev 2) первый аргумент непустой список [H|Хs], и его можно разделить на голову Н и хвост Xs; в этом случае применение предиката rev к списку [H|Хs] и накапливающемуся списку L равносильно применению предиката rev к хвосту списка Xs и списку [H|L]; при этом получается обращенный список Y.

Слайд 13





Процедура revers2
Обращение списка с накоплением
выполняется процедурой revers2,
состоящей из трех предложений и
содержит дополнительный предикат rev:
revers2(X,Y):rev(X,[ ],Y).
rev([ ],Y,Y).
rev([H|Xs],L,Y):rev(Xs,[H|L],Y).
Описание слайда:
Процедура revers2 Обращение списка с накоплением выполняется процедурой revers2, состоящей из трех предложений и содержит дополнительный предикат rev: revers2(X,Y):rev(X,[ ],Y). rev([ ],Y,Y). rev([H|Xs],L,Y):rev(Xs,[H|L],Y).

Слайд 14





Предикат delete
Предикат delete(X,L,M) принимает значение
“истина”, если список M получается в
результате удаления первого вхождения
терма Х из списка  L. 
Схема отношения этого предиката имеет
вид:
delete(<терм>,<список>,<список>).
Описание слайда:
Предикат delete Предикат delete(X,L,M) принимает значение “истина”, если список M получается в результате удаления первого вхождения терма Х из списка L. Схема отношения этого предиката имеет вид: delete(<терм>,<список>,<список>).

Слайд 15





Декларативное описание предикат delete
Декларативное описание предиката next
формулируется следующим образом:    
1)	Если X    голова списка L, то предикат
delete(X,L, M) истинен и M есть  хвост
списка L.
2)	Если X принадлежит хвосту списка, то
предикат delete необходимо применить к
хвосту списка L.
Описание слайда:
Декларативное описание предикат delete Декларативное описание предиката next формулируется следующим образом: 1) Если X  голова списка L, то предикат delete(X,L, M) истинен и M есть хвост списка L. 2) Если X принадлежит хвосту списка, то предикат delete необходимо применить к хвосту списка L.

Слайд 16





Декларативное описание предикат delete
3)	Если X не принадлежит списку L, то  предикат delete(X,L, M) ложен.
Описание слайда:
Декларативное описание предикат delete 3) Если X не принадлежит списку L, то предикат delete(X,L, M) ложен.

Слайд 17





Процедура delete
Процедура delete(X,Y,L) состоит из двух
правил:
delete(X,[X|B],B):!.
delete(X,[Y|L],[Y|M]): delete(X,L,M).
Описание слайда:
Процедура delete Процедура delete(X,Y,L) состоит из двух правил: delete(X,[X|B],B):!. delete(X,[Y|L],[Y|M]): delete(X,L,M).

Слайд 18





Предикат number_list
Предикат number_list(L) определяет,
является ли список X списком числовых
термов.  Схема отношения этого предиката
имеет вид:
number_list(<список>).
Описание слайда:
Предикат number_list Предикат number_list(L) определяет, является ли список X списком числовых термов. Схема отношения этого предиката имеет вид: number_list(<список>).

Слайд 19





Декларативное описание предиката number_list(L)
1)	Список L включает один элемент Х. Тогда предикат number_list([X]) истинен, если X числовой терм.
2)	Список L можно разделить на голову Н и хвост Xs. Тогда L есть список числовых термов, если H числовой терм и хвост списка есть список числовых термов.
Описание слайда:
Декларативное описание предиката number_list(L) 1) Список L включает один элемент Х. Тогда предикат number_list([X]) истинен, если X числовой терм. 2) Список L можно разделить на голову Н и хвост Xs. Тогда L есть список числовых термов, если H числовой терм и хвост списка есть список числовых термов.

Слайд 20





Процедура number_list
Процедура number_list(X,Y) состоит из двух
правил:
number_list([]): number(X).
number_list(X,[_|T]):  number(X), 						number_list(X,T).
Предикат number(X) стандартный предикат
системы Arity Prolog, этот предикат истинен,
если Х  числовой терм.
Описание слайда:
Процедура number_list Процедура number_list(X,Y) состоит из двух правил: number_list([]): number(X). number_list(X,[_|T]):  number(X), number_list(X,T). Предикат number(X) стандартный предикат системы Arity Prolog, этот предикат истинен, если Х  числовой терм.

Слайд 21





Предикат sumlist
Предикат sumlist(L,Sum) определяет
сумму элементов числового списка. 
Схема отношения этого предиката имеет
вид:
sumlist(<список>,<целочисленный терм>).
Описание слайда:
Предикат sumlist Предикат sumlist(L,Sum) определяет сумму элементов числового списка. Схема отношения этого предиката имеет вид: sumlist(<список>,<целочисленный терм>).

Слайд 22





Декларативное описание предиката sumlist(L)
Сумма элементов пустого списка равна нулю.
Если исходный список состоит L из  головы Н и  хвоста Т, то сумма элементов списка L равна сумме элементов хвоста списка T плюс Н.
Описание слайда:
Декларативное описание предиката sumlist(L) Сумма элементов пустого списка равна нулю. Если исходный список состоит L из головы Н и хвоста Т, то сумма элементов списка L равна сумме элементов хвоста списка T плюс Н.

Слайд 23





Процедура sumlist
Процедура sumlist(L,Sum) состоит из двух
правил:
sumlist([ ],0).
sumlist([H|T],Sum): sumlist(T,SumT),
					Sum is SumT+H.
Описание слайда:
Процедура sumlist Процедура sumlist(L,Sum) состоит из двух правил: sumlist([ ],0). sumlist([H|T],Sum): sumlist(T,SumT), Sum is SumT+H.

Слайд 24





Предикат delrepeat
Предикат delrepeat (L,LS) истинен, если список получается из списка  S путем удаления всех повторений элементов.  Схема отношения этого предиката имеет вид:
delrepeat(<список>,<список>).
Описание слайда:
Предикат delrepeat Предикат delrepeat (L,LS) истинен, если список получается из списка S путем удаления всех повторений элементов. Схема отношения этого предиката имеет вид: delrepeat(<список>,<список>).

Слайд 25





Предикат delrepeat
Удаление повторений элементов выполняется процедурой delrepeat с накоплением списка, состоящей из четырех предложений и содержит дополнительный предикат delrep.
Описание слайда:
Предикат delrepeat Удаление повторений элементов выполняется процедурой delrepeat с накоплением списка, состоящей из четырех предложений и содержит дополнительный предикат delrep.

Слайд 26





Декларативное описание предиката delrepeat
1)	если первый аргумент есть пустой список, то второй и третий аргументы представляют собой один и тот же список;
2)	если первый аргумент непустой список [H|Хs], и голова Н принадлежит хвосту списка T, то процедура delrep рекурсивно вызывается с аргументами T и  S1;  при этом элемент H не включается в накапливающийся список S1;
Описание слайда:
Декларативное описание предиката delrepeat 1) если первый аргумент есть пустой список, то второй и третий аргументы представляют собой один и тот же список; 2) если первый аргумент непустой список [H|Хs], и голова Н принадлежит хвосту списка T, то процедура delrep рекурсивно вызывается с аргументами T и S1; при этом элемент H не включается в накапливающийся список S1;

Слайд 27





Декларативное описание предиката delrepeat
3)	если первый аргумент непустой список [H|Хs], и голова Н не  принадлежит хвосту списка T, то элемент H включается в накапливающийся список S1 и получается список S2. Затем процедура delrep рекурсивно вызывается с аргументами T и S2.
Описание слайда:
Декларативное описание предиката delrepeat 3) если первый аргумент непустой список [H|Хs], и голова Н не принадлежит хвосту списка T, то элемент H включается в накапливающийся список S1 и получается список S2. Затем процедура delrep рекурсивно вызывается с аргументами T и S2.

Слайд 28





Процедура delrepeat
delrepeat(S,SF):-delrep(S,[ ],SF).
delrep([ ],S,S).
delrep([H|T],S1,SF):-member(H,T),!,delrep(T,S1,SF).
delrep([H|T],S1,SF):-append(S1,[H],S2),delrep(T,S2,SF).
Описание слайда:
Процедура delrepeat delrepeat(S,SF):-delrep(S,[ ],SF). delrep([ ],S,S). delrep([H|T],S1,SF):-member(H,T),!,delrep(T,S1,SF). delrep([H|T],S1,SF):-append(S1,[H],S2),delrep(T,S2,SF).

Слайд 29





Полный текст процедуры delrepeat
delrepeat(S,SF):-delrep(S,[ ],SF).
delrep([ ],S,S).
delrep([H|T],S1,SF):-member(H,T),!,
					delrep(T,S1,SF).
delrep([H|T],S1,SF):-append(S1,[H],S2),
					delrep(T,S2,SF).
member(X,[X|_]).
member(X,[Y|T]):-member(X,T).
append([],X,X).
append([H|T1],X,[H|T2]):-append(T1,X,T2).
Описание слайда:
Полный текст процедуры delrepeat delrepeat(S,SF):-delrep(S,[ ],SF). delrep([ ],S,S). delrep([H|T],S1,SF):-member(H,T),!, delrep(T,S1,SF). delrep([H|T],S1,SF):-append(S1,[H],S2), delrep(T,S2,SF). member(X,[X|_]). member(X,[Y|T]):-member(X,T). append([],X,X). append([H|T1],X,[H|T2]):-append(T1,X,T2).

Слайд 30





Выполнение процедуры delrepeat
% d:/ИИС/Для МИСИС/ПРАКТИКА/delrepeat.txt compiled 0.02 sec, 2,208 bytes
1 ?- delrepeat([1,1,2,2,4,7,4,8],SF).
SF = [1, 2, 7, 4, 8] 
Yes
2 ?-
Описание слайда:
Выполнение процедуры delrepeat % d:/ИИС/Для МИСИС/ПРАКТИКА/delrepeat.txt compiled 0.02 sec, 2,208 bytes 1 ?- delrepeat([1,1,2,2,4,7,4,8],SF). SF = [1, 2, 7, 4, 8] Yes 2 ?-



Похожие презентации
Mypresentation.ru
Загрузить презентацию