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)) 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 |