prelucrari de obiecte,liste(03.03.2016)
TRANSCRIPT
-
8/17/2019 Prelucrari de Obiecte,Liste(03.03.2016)
1/3
Prelucrari de obiecte.Liste
O lista este un ansamblu de obiecte de acelasi tip. Numarul de obiecte al
unei liste nu este defnit. Elementele pot f obiecte compuse. Se poate
declara o lista de liste. Elementele unei liste se separa prin virgule, tot
ansamblul se ia in paranteze patrate.
Defnitie: Se numeste lista o consecutivitate omogena ordonata deelemente.
[1,2,3,4,! " lista de intregi
[[1,2!,[3,4,!! " lista de liste de intregi
[! " lista vida
#ipurile de liste sunt declarate in sectiunea domains.
E$emplu%
domains
nume&dom'real
lista'nume&dom(
llista'lista(unde lista este tipul listei si specifca o lista de numere reale, iar llista
specifca o lista de liste.
i'integer
li'i( ) lista de integer
sau
li'integer(
s's*mbol
ls's( )) lista de simboluri
+rimul element al unei liste se numeste capul listei, iar restul elementelor
ormeaza coada listei. -oada listei la rindul sau este tot de tip lista. +entru a
separa capul listei de coada se utilizeaza simbolul / 0 .
Exemple:
[1,2,3,4,! -ap% 1 -oada% [2,3,4,!
[[1,2!,[3,4,!! -ap% [1,2! -oada%[3,4,!
[ion,ana,maria! -ap% ion -oada%[ana,maria!
[1.2! [!
[! -ap% nedefnit -oada%nedefnit[[a,b,c!,[$,*!,[n,m,!!
[[3,2!,[4,!!
n procesul de unifcare, o variabila poate f constituita ca o lista sau un
element al listei.
5ista1 5ista2 6nifcare
[a,b,c! [7,8,9! 7'a, 8'b, 9'c
[7/8! [,4,3! 7', 8'[4,3!
[$,*,z,v! [:,;/-! :'$,;'*,-'[z,v!
-
8/17/2019 Prelucrari de Obiecte,Liste(03.03.2016)
2/3
[3/7! [2,1! nu se unifca
[a/51! [8/[b!! 8'a,51'[b!
[1,2,3,4! [7,8/&! 7'1,8'2
E$emple de interpretari ale listelor%
5ista
[7/8! [7,8,9! liste de 3 elemente
[&/&! [7/[8/[9/[!!!!
[7/&!
[&/8!
#oate listele
nevide
5ista de 1 element % [1!, [7!, [7/[!!, [&!
5ista de cel putin 4 elemente% [a,&,&,b!
5ista cu cel putin 2 elemente% [7,8/&!
Procesarea listelor
Sc.
+=[-ap/-oada!>%)prelucrare=-ap>,+=-oada>.
Sint multe conditii de stopare al recursiei la procesarea listelor%
a>. :tingerea listei vide
b>. ?asirea elementului cautat
c>. -apul listei indeplineste sau nu indeplineste o careva conditie stabilita
d>. 5ista intreaga indeplineste careva conditii etc@
Predicate de procesare al listelor:1>. :fsarea listei% afsare=[!>.
afsare=[7/A!>%)Brite=7>,nl,afsare=A>.
?oal%
)Cafsare=[a,b,c,d!> --> a b c d
2>. 5ungimea unei liste%
lungime=[!,D> ( conditie limita)F sirul vid,adica valoare D
lungime=[&/5!,N>%)lungime=5,N1>,N'N1G1
?oal%
Clungime=[1,2,3,H,13!,N> )FN'
-
8/17/2019 Prelucrari de Obiecte,Liste(03.03.2016)
3/3
3>. Suma unei liste%
suma=[!,D> " limita
suma=[7/S!,N>%)suma=S,N1>,N'N1G7
4>. :partenenta unui element la o lista
member=7,[7/&!>
member=7,[&/8!>%)member=7,8>
?oal% member=b,[a,b,c!> )F *es =b apartine listei>
member=7,[a,b,c!> )F7'a,7'b,7'c
Iaca 7 este concretizat si 7 este un element al unei liste 8 atunci
member=7,8> este adevarat, in caz contrar este als. Iaca 7 nu este
determinat si scopul este determinist, atunci 7 se concretizeaza cu primul
element al listei 8. n cazul nondeterminismului, 7 se concretizeaza pe rind cu
toate elementele din 8.