prelucrari de obiecte,liste(03.03.2016)

Upload: liuda-love

Post on 06-Jul-2018

218 views

Category:

Documents


0 download

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.