Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
Prolog Programlama LİSTELER (LISTS)
2
Listeler Sonlu sayıda elemandan oluşan bir Prolog veri gösterimidir.
Örneğin; [ali, veli, hasan, yusuf] [ali, akıllı(hasan), X, 2, kamil] [ ] [ali, [veli, hasan], [kamil, kısa(mustafa)]] [[ ], a(z), [2, [b,c]], [ ], Z, [2, [b,c]]]
3
Listeler Liste elemanları kare parantezler arasına yazılır.
Listenin uzunluğu listede bulunan eleman sayısıdır. Her tür Prolog terimi liste elemanı olabilir. [ ] özel bir liste olan boş listeyi gösterir.
4
Baş ve Kuyruk Boş olmayan bir listenin Baş (Bas) ve Kuyruk (Kuyruk) şeklinde iki parçadan oluştuğu düşünülür. Baş kısmı listedeki ilk elemandır. Kuyruk ise, listedeki ilk elemanı ayırdığımızda geriye kalan listedir. Boş listenin baş ve kuyruğu yoktur.
5
Örnekler [ali, veli, yusuf, hasan] Baş: Kuyruk: ali
• [[ ], a(z), [2, [b,c]], [ ], Z, [2, [b,c]]] Baş: [ ] Kuyruk: [a(z), [2, [b,c]], [ ], Z, [2, [b,c]]] [a(z)] Baş: a(z) Kuyruk: [ ]
6
Örnekler ?- [Bas|Kuyruk] = [ali, veli, yusuf, hakan]. Bas = ali
Kuyruk = [veli,yusuf,hakan] yes ?- [X|Y] = [ ]. no ?- [X|Y] = [ali, veli, yusuf, hakan]. X = ali Y = [veli,yusuf,hakan] yes
7
?- [X,Y|Kuyruk] = [[ ], a(z), [2, [b,c]], [], Z, [2, [b,c]]] .
Y = a(z) Z = _4543 Kuyruk = [[2, [b,c]], [ ], Z, [2, [b,c]]] yes ?-
8
?- [X1,X2,X3,X4|Kuyruk] = [ali, veli, mustafa, yusuf, hakan].
X1 = ali X2 = veli X3 = mustafa X4 = yusuf Kuyruk = [hakan] yes ?- ?- [ _,X2, _,X4|_ ] = [ali, veli, mustafa, yusuf, hakan]. X2 = veli X4 = yusuf yes ?-
9
eleman/2 eleman(X,[X|T]). eleman(X,[H|T]):- eleman(X,T).
?- eleman(hakan,[hakan,tahir,veli,yusuf]). yes ?-
10
eleman/2 eleman(X,[X|T]). eleman(X,[H|T]):- eleman(X,T).
?- eleman(veli,[hakan,tahir,veli,yusuf]). yes ?-
11
eleman/2 eleman(X,[X|T]). eleman(X,[H|T]):- eleman(X,T).
?- eleman(zeki,[hakan,tahir,veli,yusuf]). no ?-
12
eleman/2 eleman(X,[X|T]). eleman(X,[H|T]):- eleman(X,T).
?- eleman(X,[hakan,tahir,veli,yusuf]). X = hakan; X = tahir; X = veli; X = yusuf; no
13
a2b([a|L1],[b|L2]):- a2b(L1,L2).
?- a2b([a,a,a],[b,b,b]). yes ?-
14
a2b([a|L1],[b|L2]):- a2b(L1,L2).
?- a2b([a,a,a,a],[b,b,b]). no ?-
15
a2b([a|L1],[b|L2]):- a2b(L1,L2).
?- a2b([a,t,a,a],[b,b,b,c]). no ?-
16
a2b([a|L1],[b|L2]):- a2b(L1,L2).
?- a2b([a,a,a,a,a], X). X = [b,b,b,b,b] yes ?-
17
a2b([a|L1],[b|L2]):- a2b(L1,L2).
?- a2b(X,[b,b,b,b,b,b,b]). X = [a,a,a,a,a,a,a] yes ?-
18
Ekle ve Tersi ekle([],L,L). ekle([H|T],L2,[H|L3]):- ekle(T,L2,L3). tersi([],[]). tersi([H|T],L) :- tersi(T,R), ekle(R,[H],L).
19
Listeler ile SDO başlangıç(q0). son(q2). geçiş(q0, a, q1).
geçiş(q1, b, q2). geçiş(q2, b, q2). % Başlama Durumu parser(String) :- başlangıç(SimdikiDurum), parser(String, SimdikiDurum). % Bitme Durumu parser([], SimdikiDurum) :- son(SimdikiDurum). % Ara İşlemler parser([Ilk|Gerisi], SimdikiDurum) :- geçiş(SimdikiDurum,Ilk, SonrakiDurum), parser(Gerisi,SonrakiDurum).
20
- parser([a,b,b,b,b]). Yes. - parser([a,b,b,b,a]). No. - parser(X)
?- parser([a,b,b,b,b]). Yes ?- parser([a,b,b,b,a]). No. ?- parser(X). X = [a, b] ; X = [a, b, b] ; X = [a, b, b, b] ...
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.