Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Prolog Programlama LİSTELER (LISTS).

Benzer bir sunumlar


... konulu sunumlar: "Prolog Programlama LİSTELER (LISTS)."— Sunum transkripti:

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] ...


"Prolog Programlama LİSTELER (LISTS)." indir ppt

Benzer bir sunumlar


Google Reklamları