Sunteți pe pagina 1din 4

Laborator 7

ntrebri
1) Care este sintaxa general de utilizare a operatorilor?
R: (operator argumente)
2) Indicai operatorii numerici Lisp pentru urmtoarele operaii:
Operator
+
1+
*
1/

Descriere
adunare
adun unu
nmulire
diferen
scade unu
mprire

Exerciii:
1.1 Indicai expresia care se dorete a fi calculat, dac n Lisp s-a utilizat urmtoarea
s-expresie:
(+ (* (1+ 1) 3) (1+ (* 2 2)))
R: (1+1)*3+(1+2*2)
1.2 Indicai care sunt expresiile aritmetice care se calculeaz dac se utilizeaz n Lisp
urmtoarele expresii:
(+ 2 (* (1+ 4) 5))
R : 2+(1+4)*5
(+ (1- (* 2 3)) (1+ (* 2 4)))
R : ((2*3)-1) + ((2*4)+1)
(* (+ 4 2) (+ (/ 6 3) 9))
R : (4+2)* ((6/3)+9)
(- (/ 7 2) (1- (* 2 2)))
R : ((7/2)-((2*2)-1))
(+ (* 7 2) (- 2 4) (* 3 2) (1- 3))
R : ((7*2)+(2-4)+(3*2)+(3-1)
(+ (- (+ 2 3) (* 3 1) (* (1+ 3) (1- 3))) (* 2 1))
R : ((2+3)-(3*1)-((3+1)*(3-1)))+(2*1)

Evaluai expresiile de mai sus folosind tab-ul REPL:


1.3 Reprezentai n Lisp urmtoarele expresii aritmetice:
a2 + 2ab + b2
R: +(*a a )( * 2 a b)(b*b)

3a4 + 2a3 4a2 + a + 9


R: +(-(+(* 3 a a a a )(* 2 a a a ))(* 4 a a ))(a)(9)
x(x+y)(x-y)
R:* x (+x y)(-x y)
(x4 + x3 2x) / x2
R: /(-(+(* x x x x )(* x x x)(* 2 x ))) (* x x)
(x2 + y2 3) / xy
R: (-(+ (* x x ) (* y y) (3))(* x y)
2. Funcii de prelucrare a listelor
Exerciii
1. Completai urmtorul tabel:
Funcie
APPEND

Descriere
Concateneaza 2 liste.

LIST

Returneaza o lista care


contine obiectele
introduse.
Modifica valoarea
continutul celuleivaloarea simbolului la
valoarea data.
Comportament la fel ca
set, doar ca nu se mai
foloseste ' pt. primul
parametru.
Substituie o valoare
data in lista si subliste.

SET

SETQ

SUBST

Exemplu
(append '(1 2 3 4)
'(5 6 7 8))
(list 1 2 3)

Valoare returnat
(1 2 3 4 5 6 7 8)

(set 'n 2)

(setq carnivores
'(lion tiger leopard))

(LION TIGER
LEOPARD)

(setq tree1 '(1 (1 2)


(1 2 3) (1 2 3 4)))
(subst "two" 2 tree1)
(replace
"abcdefghij"
"0123456789"
:start1 4 :end1 7
:start2 4)

(1 (1 "two") (1
"two" 3) (1 "two" 3
4))
"abcd456hij"

(1 2 3)

REPLACE

Actioneaza distructiv
asupra secventei,
actionand pe intervalul
dat.

REVERSE

Returneaza aceeasi
secventa, dar in ordine
inversa.

(setq str "abc")


(reverse str)

(cba)

NREVERSE

Spre deosebire de
reverse, nreverse poate
modifica secventa.

(setq l (list 1
2 3))
(nreverse l)

(3 2 1)

1. Folosii funcia SORT pentru a ordona descresctor elementele unei liste.


(setq tester (list '(1 2 3) '(4 5 6) '(7 8 9)))
(sort tester #'> :key #'car)
2. Folosii funcia SUBST pentru a nlocui toate elementele T dintr-o list cu elemente
NIL.
(setq tree1 '(1 (T 2) (1 T 3) (1 2 3 T)))
(subst "NIL" T tree1)
3. Folosii funcia REVERSE pentru a afia ultimele 3 elemente ale unei liste. (Obs: se
pot folosi i alte funcii cunoscute)
5.Evaluai urmtoarele forme:
3) (APPEND '(A) '(B) '(C))
R: (A B C)
4) (APPEND '(A B) '(A C (D)) '(B D) '((E)))
R:
(APPEND '(A B) '(A C (D)) (B D) '((E)))
5) (APPEND '(A) '() '(B) '())
R: (A B)
6) (LIST '(A) '())
R: (LIST '(A) '())
7) (LIST 'A '(B C) '((D)))
R: (LIST 'A '(B C) '((D)))
8) (LIST '() 'A 'B)
R; (LIST '() 'A 'B)
6. Care este rezultatul evalurii?
1) (APPEND (CAR '((A B C) (D E F) (G))) (CDR (A B (C E))))
R: (A B C B (C E))
2) (APPEND '((A) B) '((C)) '(((D)) E))
R: ((A) B (C) ((D)) E)
3) (LIST (SUBST ('A 'B '(B C (B)))) '(1 2))
R: eroare.
7. S se scrie combinaiile optime de funcii care primind la intrare o list, returneaz o
nou list ce este obinut din lista dat prin inserarea n prima poziie a lungimii listei
date, considernd diferite convenii. Astfel, de exemplu, pentru lista (A B C):
a. (3 A B C)
b. ((3) A B C)
c. ((3) (A B C))

8. S se interclaseze dou liste de numere care sunt ordonate cresctor, de ex (1 3 5 7) i


(2 4 6)
9. Evaluai urmtoarele forme i urmrii rezultatul returnat dup fiecare evaluare:
> (SETQ CULORI '(ALB NEGRU ROSU ALBASTRU GALBEN VERDE))
(ALB NEGRU ROSU ALBASTRU GALBEN VERDE)
> (SETQ X 'CAMASA)
CAMASA
> (SETQ X 'CAMASA)
CAMASA
> (SETQ Y 'TRICOU)
TRICOU
> (SET X (CAR (CDR(CDR(CDR CULORI )))))
ALBASTRU
> (SET Y (CAR (CDR(CDR CULORI))))
ROSU
> CAMASA
> TRICOU
> (SETQ CAMASA 'BLUZA)
BLUZA
> CAMASA
ALB
> (SET X Y)
> (SET X 'ALB)
>X
10. Fie urmtoarele liste (A1 B1 C1 D1 E1), (A2 B2 C2 D2 E2), (A3 B3 C3 D3 E3).
10.1. S se scrie combinaiile de funcii care returneaz lista urmtoare:
a) (A1 A2 A3)
b) (B1 B2 B3)
c) ((E1) (E2) (E3))
d) (A1 B1 C1 C2 D2 E2 B3 C3 D3)
10.2. S se nlocuiasc, n prima list, C1, D1 cu primele dou elemente din lista 2.
10.3. S se nlocuiasc, n a doua list, C2, D2 cu ultimele dou elemente din lista
10.4. Verificai dac elementul al treilea din lista 2 se afl n lista 1.

S-ar putea să vă placă și