Cflp Laborator |
Facultatea de Automatica şi Calculatoare Departamentul de Calculatoare |
Home | Lucrarea 1 | Lucrarea 2 | Lucrarea 3 | Lucrarea 4 | Lucrarea 5 | Lucrarea 6 | Lucrarea 7 | ||
Lucrarea 8 | Lucrarea 9 | Lucrarea 10 | Lucrarea 11 | Lucrarea 12 | Lucrarea 13 | Proiect | Orar |
Lucrarea 2 | ||||||||||||||||||||||||||||||||
Subiecte
|
L I S PÎn LISP procedurile şi datele au aceeaşi structură: lista generalizată.
LISP înseamnă manipulare de simboluri.
Când o paranteză stângă şi una dreaptă înconjoară
ceva, numim rezultatul o listă şi vorbim de elementele sale.
Expresie /\ / \ / \ / \ / \ Atom Lista /\ / \ / \ / \ Numar Simbol /\ / \ / \ / \ Întreg Real
Primitivele CAR şi CDR(CAR L) - returnează primul element
al listei L
Având expresia: (A B C) Iar (CDR '(A B C)) returnează (B
C).
------- ----->| CAR |----> A --------- | ------- | -------- (A B C) ==| |==>| CONS |--> (A B C) | ------- | -------- ----->| CDR |----> (B C) ----- -------
Al doilea element al listei se obţine astfel: Atomii simbolici pot avea valori Unui atom simbolic i se poate atribui o valoare (număr sau simbol sau listă) la care acel atom simbolic va fi evaluat. Acest lucru se realizează cu procedura SETQ (prin efect lateral!). (SETQ L '(A B)) L (A B) 'L L (CAR L) A (CDR L) (B) Procedurile APPEND, LIST şi CONSAPPEND uneşte liste.
LIST construieşte o listă din argumentele sale:
CONS inserează un nou prim element într-o listă:
------- ----->| CAR |----> A --------- | ------- | -------- (A B C) ==| |==>| CONS |--> (A B C) | ------- | -------- ----->| CDR |----> (B C) ----- -------
Procedurile LENGTH, REVERSE, SUBST şi LASTLENGTH returnează lungimea unei liste.
REVERSE inversează o listă:
SUBST înlocuieşte o expresie cu alta într-o listă: (SUBST <expr.nouă> <expr. veche> <listă>)
LAST returnează o listă ce concţe ultimul element:
Evaluarea formelorCând interpretorul LISP primeşte o formă o trimite primitivei EVAL, care evaluază toate argumentele după care apelează procedura din capul listei.
-------------------- Da -------------------------- Da ----------------------------------- < Este S atom? >---->< Este S numar? >-------->| Returneaza numarul. | -------------------- --------------------------- ----------------------------------- | | | | Nu | Nu V | ------------------------------- | | Ret. valoarea lui S. | | ------------------------------- V ------------------------------ ------------------------------- < Este QUOTE primul > Da | Returneaza al doilea | < atom din S? >----------->| element din S. | ------------------------------- -------------------------------- | | Nu V ------------------------- ----------------------- < Indica primul > Da | Nu evaluaza | < element din S o >---------->| argumentele | < tratare speciala? > | - caz special. | -------------------------- ----------------------- | | Nu V ----------------------------------------- | Foloseste EVAL pe toate | | elementele lui S în | | afara de primul. | ------------------------------------------ | | V ------------------------------------ | Aplica primul element | | al lui S valorilor | | rezultate si returneaza | | rezultatul. | ------------------------------------ ProblemeProblema 1. Atomi şi liste. Problema 2. Atomi simbolici. Funcţii. Problema 3. CAR şi CDR 1. Problema 4. CAR şi CDR 2. Problema 5. CAR şi CDR 3. Problema 6. APPEND şi LIST Problema 7. Evaluaţi exemplele de la LENGTH, REVERSE, SUBST, LASTşi CONS Problema 8. Evaluaţi exemplele de la Evaluarea formelor |