甘的部首是什么| 什么终于什么造句| 骆驼趾是什么意思| 顺风顺水是什么生肖| 猴子喜欢吃什么食物| 脂肪是什么组织| 沉默是什么意思| 为什么会长瘤| 炒什么菜适合拌面| 普洱茶是什么茶| 甲减的原因是什么引起的| 胰腺检查挂什么科| 9月23日是什么星座| 胎儿左心室点状强回声是什么意思| 什么情况下要打狂犬疫苗| 孩子咽炎老是清嗓子吃什么药| 羊经后半边读什么| 激素水平是什么意思| 什么是梭织面料| 女人吃芡实有什么好处| 喷砂是什么意思| 大腿骨叫什么骨| 健身吃什么| po是什么| 早退是什么意思| 王字加一笔是什么字| 黑莲花是什么意思| 堤防是什么意思| 脚为什么会抽筋| 治胃病吃什么药| 宠溺是什么意思| 外周动脉僵硬度增高什么意思| thirty什么意思| 阳萎吃什么药| 扬言是什么意思| 红色的月亮是什么征兆| 保重适合对什么人说| 吉利丁片是什么东西| 公蚊子吃什么| 梦见两只狗是什么征兆| 空调滴水是什么原因| 什么时候入秋| 耳朵里面疼用什么药| 吃什么有助于骨头恢复| 手肿是什么原因引起的| 芈姝结局是什么| 骨髓不造血是什么病| 括约肌是什么| 今年是什么属相| 早谢是什么症状| 心律不齐用什么药| 与虎谋皮是什么生肖| 驴血为什么是白色的| 肠息肉吃什么药| 菠菜不能和什么食物一起吃| 金国是什么民族| 阿普唑仑是什么药| 黄色分泌物是什么原因| 吃什么降血压| hrp是什么意思| 蒲公英可以和什么一起泡水喝| 什么是蛇缠腰病| 打呼噜有什么危害| cvm是什么意思| 尧五行属什么| 什么一刻值千金花有清香月有阴| 衄血是什么意思| 严什么的作风| 胸内科主要看什么病| 权衡利弊是什么意思| 什么的西瓜| 黄花菜都凉了是什么意思| 意淫是什么| 翌日是什么意思| 湿气重吃什么食物| 角化异常性疾病是什么| 腿部抽筋是什么原因引起的| 小龙虾吃什么食物| 喜欢喝冰水是什么原因| 朔望月是什么意思| 什么鸟不能吃| 为什么要文化大革命| 梦女是什么| 什么样的葡萄| 小暑吃什么| 宝姿是什么档次的牌子| 6月26日是什么日子| 眉梢有痣代表什么| 养小鬼是什么意思| 瓒字取名有什么寓意| 低密度脂蛋白是什么意思| 三周年祭日有什么讲究| 孩子营养不良吃什么| 汉尼拔是什么意思| 吃什么水果补气血| 女性风湿吃什么东西好| cpp是什么意思| 进国企需要什么条件| 喝酒尿多是什么原因| 七是什么意思| 晚上睡觉脚抽筋是什么原因| 羟苯乙酯是什么| 晚上8点到9点是什么时辰| 沉脉是什么意思| 什么病不能吃空心菜| 天降横财什么意思| 做梦梦到屎什么意思| 解脲支原体阳性是什么意思| fl是什么意思| 手心脚心热吃什么药| 河豚是什么意思| 血脂高是什么原因引起| 吃饱就犯困是什么原因| 身上长肉疙瘩是什么原因| 975是什么意思| 红眼病用什么药| 没有润滑油用什么代替| 乙肝病毒是什么| 四个金读什么| 三个小是什么字| 1966年属什么今年多大| 突兀什么| 氧分压是什么意思| 什么是性病| 膝盖窝疼是什么原因| 阴囊瘙痒用什么药最好| 盐为什么要加碘| 心悸吃什么药| 为什么手会不自觉的抖| 男人左眼跳是什么意思| 牙冠什么材质的好| 类风湿因子高是什么原因| 尖湿锐吃什么药最好| 梦到和别人打架是什么意思| 感冒什么时候能好| 什么是带状疱疹| 朗姆是什么| 裸贷是什么意思| 得失是什么意思| 尿酸高吃什么药| 狗的尾巴有什么作用| 心脏瓣膜关闭不全吃什么药| 两个人背靠背是什么牌子| ms什么意思| 小孩黑眼圈很重是什么原因| 国家为什么不承认鬼神| 什么的垂下| 什么是虎牙| 脾大对身体有什么影响| 上海话十三点是什么意思| 鼻子歪了是什么原因| 地黄长什么样| 嘚瑟是什么意思| 手经常出汗是什么原因| 买单是什么意思| 左眼跳财是什么意思| 胆结石吃什么可以化掉结石| dream car是什么意思| 男人黑眼圈很重是什么原因| 歇夏是什么意思| 阳瘘的最佳治疗方法是什么| 蝉鸣声耳鸣是什么原因引起的| 容易口腔溃疡什么原因| 泡饭为什么对胃不好| 夜盲症是什么| 钢琴10级是什么水平| 做梦梦见掉头发是什么意思| 切除子宫有什么影响| 刚愎自用什么意思| 什么的亮光| 肋间神经痛用什么药| 萎缩性胃炎不能吃什么食物| 泥灸是什么| 去医院看舌头挂什么科| 纤维增殖灶是什么意思| pacs什么意思| 为什么会有霉菌性阴道炎| 脉弱是什么原因导致的| 欧多桑是什么意思| 精神慰藉什么意思| 砂舞是什么意思| 帕金森病是什么病| 女人吃什么补气血效果最好| 咏字五行属什么| 胆结石吃什么| 颈椎挂什么科室| bcc是什么意思| 梦见自己化妆是什么意思| 河里的贝壳叫什么| 5月24号是什么日子| 肾阴虚吃什么食物| 甲醛对人体有什么危害| 指甲盖有竖纹是什么原因| 后会无期什么意思| 胳膊疼挂什么科| 经期喝酒会有什么危害| 那好吧是什么意思| 嗜睡是什么病的前兆| 怀孕了为什么还会出血| 望周知是什么意思| 广州白云区有什么好玩的地方| 青瓜是什么瓜| 恚是什么意思| 胎盘做成胶囊吃有什么好处| 喝什么降血糖| 知柏地黄丸治什么病| 乍一看是什么意思| 磷高了会出现什么症状| 人类免疫缺陷病毒是什么| 什么的池塘| 0是什么意思网络语言| 孔雀蓝配什么颜色好看| 什么溪流| 什么油最健康| 形式是什么意思| 桑黄有什么药用价值| 男人吃什么可以增强性功能| 血糖高适合喝什么酒| 缺铁性贫血吃什么好| 肾炎吃什么食物好| 青少年吃什么钙片有助于长高| 做什么动作可以长高| 神经性皮炎用什么药| 景象什么意思| 彩金是什么材质| 什么叫血氧| 肾积水是什么原因造成的怎么治疗| 说辞是什么意思| 过堂是什么意思| 清明节在什么时候| 洋葱为什么会让人流泪| 吴孟达什么时候去世的| 财源广进是什么生肖| 胸部正侧位片检查什么| 属羊是什么命| 蛇吃什么东西| 老母鸡煲汤放什么食材补气补血| 肝血管瘤有什么症状表现| 摘胆对身体有什么影响| 什么血型的人最聪明| 什么是脑卒中| 大便羊屎粒是什么原因| 蘖是什么意思| 遗精是什么感觉| 化疗前吃什么补充营养| 指甲盖凹凸不平是什么原因| 日文是什么字| 类风湿因子是什么意思| 突然勃不起来是什么原因| 莆田系是什么意思啊| 豆粕是什么东西| 逍遥丸主要治什么病| 农历六月初十是什么日子| 喝什么有助于睡眠| 干燥剂是什么成分| 尿胆红素高是什么原因| 舌根发麻是什么原因| 邓紫棋属什么生肖| 失眠多梦吃什么药| 流黄鼻涕是什么原因| 伏特加兑什么好喝| 花青素是什么| 弃市是什么意思| 脚气用什么药| 百度Przejd? do zawarto?ci

北京医院召开2017年医联体年终总结及表彰大会

Z Wikipedii, wolnej encyklopedii
Prolog
Pojawienie si? 百度 其中,包括万能险和投连险在内的理财型业务保费合计亿元,较2016年同期大幅减少880亿,降幅%,占互联网人身保险保费的%,较2016年同期下降%。

1972

Paradygmat

programowanie logiczne

Typowanie

beztypowy

Implementacje

SWI-Prolog, GNU Prolog

Pochodne

ISO Prolog, Edinburgh Prolog

Aktualna wersja stabilna

9.2.x
(31 stycznia 2024) [±]

Twórca

Alain Colmerauer

Platforma sprz?towa

wieloplatformowy

Platforma systemowa

wieloplatformowy

Prolog (od francuskiego Programmation en Logique) – jeden z najpopularniejszych j?zyków programowania logicznego. Prolog powsta? jako j?zyk programowania s?u??cy do automatycznej analizy j?zyków naturalnych, jest jednak j?zykiem ogólnego zastosowania, szczególnie dobrze sprawdzaj?cym si? w programach zwi?zanych ze sztuczn? inteligencj?. Prolog w przeciwieństwie do wi?kszo?ci popularnych j?zyków jest j?zykiem deklaratywnym.

Program w Prologu sk?ada si? z zestawu klauzul, gdzie ka?da klauzula jest faktem lub regu?? wnioskowania. Aby uruchomi? program, nale?y wprowadzi? odpowiednie zapytanie. Prolog jest j?zykiem programowania s?u??cym do rozwi?zywania problemów, które dotycz? obiektów i relacji mi?dzy obiektami. Mówi?c ?John ma ksi??k?.”, deklarujemy relacje mi?dzy obiektem ?John”, a drugim indywidualnym obiektem ?ksi??ka”. Dodatkowo relacja okre?la konkretn? kolejno??: John jest w?a?cicielem ksi??ki, a nie ksi??ka w?a?cicielem Johna. Zadaj?c pytanie ?Czy John ma ksi??k??” chcemy dowiedzie? si? o relacji mi?dzy tymi dwoma obiektami. Du?o problemów mo?e by? wyra?onych okre?laj?c obiekty i relacje mi?dzy nimi. W Prologu ?obiekt” odnosi si? do bytu, który mo?e by? prezentowany przy u?yciu termu. Wa?ne jest, aby zrozumie?, ?e regu?y s? zazwyczaj uproszczone i w rzeczywisto?ci znacz? wi?cej ni? zawiera to regu?a[1].

Prace nad projektem, dzi?ki któremu powsta? Prolog rozpocz??y si? ju? pod koniec 1970 roku, niemniej jednak wst?pna wersja Prologu zosta?a stworzona w 1971 roku przez Alaina Colmeraurera i Phillipe’a Roussela. Systemy Q, a tak?e do?wiadczenie nabyte przez Alaina Colmeraurera w trakcie ich wdra?ania, mia?y znacz?cy wp?yw na powstanie Prologu. Zal??ka j?zyka Prolog autorzy dopatruj? si? w artykule Alana Robinsona ?Logika zorientowana maszynowo oparta na zasadzie rezolucji”, gdy? artyku? ten by? ?ród?em prac na temat automatyzacji dowodzenia twierdzeń, a taka jest zasadniczo budowa Prolog[2].

Prolog opiera si? na rachunku predykatowym pierwszego rz?du, jednak ogranicza si? tylko do klauzul Horna. Istniej? w nim ponadto wbudowane predykaty wy?szego rz?du.


Ogólne zasady

[edytuj | edytuj kod]

W Prologu podaje si? baz? faktów i regu?. Potem mo?na wykonywa? zapytania na tej bazie. Podstawow? jednostk? w Prologu jest predykat. Predykat sk?ada si? z nag?ówka i argumentów, na przyk?ad: ojciec(tomasz, agata), gdzie ojciec to nag?ówek a tomasz i agata to argumenty. Predykat mo?e zosta? u?yty do wyra?enia pewnych faktów o ?wiecie, które s? znane programowi. W tym przypadku programista musi nada? im znaczenie. Jedn? z interpretacji zdania ojciec(tomasz, agata) jest ?tomasz to ojciec agaty”. Równie dobrze jednak mog?oby to znaczy? ?ojcem tomasza jest agata”. Prolog nie zajmuje si? znaczeniem stwierdzeń. Wszystko co robi to manipulacja symbolami w oparciu o regu?y. Dlatego mo?na wybra? dowolny sposób zapisu tego, ?e ?tomasz to ojciec agaty”, pod warunkiem konsekwentnego przestrzegania kolejno?ci argumentów w ca?ym programie[1].

Pewne predykaty mog?, oprócz wyra?ania faktów, mie? dodatkow? funkcjonalno??, jak na przyk?ad wbudowany predykat

write('Cze??').

który wypisuje na ekranie ?Cze??”.

Regu?y

[edytuj | edytuj kod]

Baza danych Prologu mo?e te? zawiera? regu?y. Przyk?ad regu?y to:

jest(?wiat?o) :- w??czony(przycisk).

Zapis :- oznacza ?wtedy, gdy” lub ?je?li”. Ta regu?a oznacza, ?e zdanie jest(?wiat?o) jest prawdziwe wtedy, gdy prawdziwe jest zdanie w??czony(przycisk). Ka?da regu?a musi by? zakończona kropk?. Regu?y mog? u?ywa? zmiennych. Zmienne zapisuje si? zaczynaj?c od wielkiej litery, dla odró?nienia od sta?ych, zaczynaj?cych si? ma??. Na przyk?ad:

ojciec(X, Y) :- rodzic(X, Y), jest_rodzaju_m?skiego(X).

To oznacza: ?dla ka?dych X i Y, je?li rodzic(X,Y) i jest_rodzaju_m?skiego(X) to ojciec(X, Y). Przes?anka i wniosek s? zapisane w odwrotnej kolejno?ci ni? zwykle w logice. Co wi?cej, regu?y musz? mie? predykat jako wniosek. Nie mo?na napisa? regu?y a;b :- c, czyli ?je?li c to (a lub b)”. Wynika to z ograniczenia zapisu do klauzul Horna.

Zapytania

[edytuj | edytuj kod]

Kiedy zosta?y zdefiniowane fakty mo?na zada? pytania na ich temat. Zapytanie w Prologu wygl?da dok?adnie jak fakt, ale przed nim nale?y postawi? znak zapytania:

 ?- ojciec(tomasz, agata).

co znaczy?oby: ?Czy Tomasz jest ojcem Agaty?”.

Kiedy pytanie jest zadawane w Prologu, system przeszukuje ca?? zdefiniowan? baz?, aby znale?? fakty, które ujednolic? fakt w pytaniu. Je?eli znajdzie je to odpowie – yes, je?eli nie istniej? zwróci odpowied? – no[1].

Dopasowywanie wyra?eń

[edytuj | edytuj kod]

Dopasowywanie jest jednym z fundamentów Prologu. Definicja dopasowywania wyra?eń[3]:

  1. Je?eli term1 i term2 s? sta?ymi, to term1 i term2 s? równe, wtedy i tylko wtedy, gdy s? tym samym atomem lub t? sam? liczb?.
  2. Je?eli term1 jest zmienn?, a term2 jest jakimkolwiek typem termu, to term1 i term2 s? równe, gdy term1 jest instancj? term2. Podobnie jest, gdy term2 jest zmienn?, a term1 jest jakimkolwiek typem termu. (Je?eli term1 i term2 s? zmiennymi, to s? swoimi instancjami i mówimy, ?e wspó?dziel? warto?ci.)
  3. Je?eli term1 i term2 s? termami z?o?onymi, to s? równe wtedy i tylko wtedy, gdy spe?niaj? kolejne wymienione warunki. Maj? one ten sam funktor i arno??. Wszystkie ich koresponduj?ce argumenty pasuj?. Instancje zmiennych s? zgodne.
  4. Dwa termy s? równe, wtedy i tylko wtedy, gdy wynika to z poprzednich trzech klauzul.

Lista jest uporz?dkowan? sekwencj? termów zapisanych w nawiasach kwadratowych przedzielonych przecinkami[4]:

[jab?ko, gruszka, pomarańcza, truskawki]
[1,2,4,7]
[(2+2),dom(texas), X]
[[a,b,c],lista]

Elementami listy mog? by? wszystkie rodzaje termów. Lista mo?e by? tworzona i rozk?adana dzi?ki unifikacji. Ka?da lista mo?e by? podzielona na g?ow? i ogon poprzez symbol ?|”. Ogon listy zawsze jest list?, natomiast g?owa listy jest elementem, np.

[a|[b,c,d]] = [a,b,c,d]
[a|[]] = [a]

Rekurencja

[edytuj | edytuj kod]

Podobnie jak w innych j?zykach programowania w Prologu mo?na u?ywa? rekurencji. Rekurencja pozwala na wykonywanie dzia?ań na li?cie, szukanie konkretnego elementu lub wykonywanie konkretnych dzia?ań na ka?dym napotkanym elemencie – poprzez roz?o?enie problemu na proste elementy, i zst?puj?ce powtarzanie algorytmu. Procedura kończy si?, gdy nie jest potrzebne ponowne wywo?anie[4].

Przyk?ady

[edytuj | edytuj kod]

Operacje na listach

[edytuj | edytuj kod]
% list_member(X,Y) = X nale?y do listy Y
% reimplementacja standardowego member(X,Y)
list_member(X, [X|_]).
list_member(X, [_|Y]) :-
        list_member(X, Y).

% list_append(X,Y,Z) = Z powstaje ze sklejenia X i Y
% reimplementacja standardowego append(X,Y,Z)
list_append([], X, X).
list_append([H|T], X, [H|Y]) :-
        list_append(T, X, Y).

% suma_elementow_listy(Lista, N) = N jest sum? elementów nale??cych do Listy
suma_elementow_listy([], 0).
suma_elementow_listy([H|T], Wynik) :-
        suma_elementow_listy(T, Tmp),
        Wynik is H+Tmp.

% jak wy?ej, lecz z u?yciem rekurencji prawostronnej
suma_elementow_listy_tail(Lista, Wynik) :-
        suma_elementow_listy_tail(Lista, 0, Wynik).
suma_elementow_listy_tail([], Wynik, Wynik).
suma_elementow_listy_tail([H|T], Akumulator, Wynik) :-
        Akumulator2 is H+Akumulator, suma_elementow_listy_tail(T, Akumulator2, Wynik).

Przypisy

[edytuj | edytuj kod]
  1. a b c Clocksin W.F., Mellish Ch.S. (2003) Programming in Prolog.
  2. Colmerauer A., Roussel P. (1992) The birth of Prolog. In: HOPL-II The second ACM SIGPLAN conference on History of programming languages Pages 37-52.
  3. Blackburn P., Bos J., Striegnitz K. (2006) Learn Prolog Now!
  4. a b Covington M.A., Nute D., Vellino A. (1995) Prolog programming in depth.

Linki zewn?trzne

[edytuj | edytuj kod]
口腔溃疡喝什么水 首鼠两端是什么意思 小孩拉肚子吃什么药效果好 ic50是什么意思 乘晕宁又叫什么
同房疼痛什么原因 uvb是什么意思 慢性阑尾炎吃什么药好 狗狗拉肚子是什么原因 阿昔洛韦片治什么病
麻梨疙瘩是什么树 将军是指什么生肖 弯男是什么意思 mic是什么意思 6月28是什么星座
葡萄套袋前打什么药 肺火大吃什么药 分水岭是什么意思 薏米是什么米 买什么化妆品好
耳朵嗡嗡响吃什么药hcv8jop5ns6r.cn 为什么呢hcv8jop0ns7r.cn 胃有息肉的症状是什么hcv8jop4ns5r.cn 嗓子烧灼感是什么原因bjhyzcsm.com 巨细胞病毒igg阳性是什么意思kuyehao.com
动脉导管未闭对宝宝有什么影响hcv7jop5ns5r.cn 什么情况要打破伤风针hcv8jop7ns0r.cn 外阴瘙痒擦什么药hcv9jop0ns1r.cn 深圳属于什么方向hcv9jop5ns5r.cn 阳春是什么意思naasee.com
五月份什么星座hcv8jop5ns6r.cn 拉架棉是什么面料hcv9jop6ns7r.cn 高血糖挂什么科室的号hcv8jop5ns6r.cn 肾阳虚吃什么中成药hcv9jop1ns0r.cn 头上汗多是什么原因hcv9jop8ns3r.cn
手掌疼是什么原因cj623037.com psc是什么病wzqsfys.com 推手是什么意思hcv7jop6ns2r.cn 一毛不拔是什么生肖hcv8jop3ns2r.cn 医院查怀孕做什么检查chuanglingweilai.com
百度