Operatori numerici în Lisp
Sintaxa generală este:
(operator argumente)
Această structură poartă numele de expresie Lisp sau formă Lisp, fiind folosite şi denumirile de expresie simbolică sau s-expresie (sau sexp).
În Lisp se pot utiliza următorii operatori numerici:
Operator Descriere
+ adunare
1+ adună unu
* înmulţire
- diferenţă
1- scade unu
/ împărţire
Numărul de argumente este specific fiecărui operator. Astfel, de exemplu, operatorul 1+, care adună 1 la argumentul său, are un singur argument:
(1+ 5)
pe când, operatorul +, de exemplu, are un număr nelimitat de argumente:
(+ 1 2 3 4 5 6 7 8 9)
Exerciţiu
Indicaţi expresia care se doreşte a fi calculată, dacă în Lisp s-a utilizat următoarea s-expresie:
(+ (* (1+ 1) 3) (1+ (* 2 2)))
Liste
S-a definit o listă simplă ca fiind o secvenţă de atomi între paranteze. Mai departe şi acestea pot fi combinate şi încadrate între alte perechi de paranteze formând liste de nivel superior. Foarte multe structuri de date concrete pot fi reprezentate în LISP cu ajutorul listelor.
Astfel, mulţimile cu un număr finit de elemente pot fi reprezentate ca liste. De exemplu, mulţimea echipelor de fotbal dintr-o divizie ar putea fi reprezentată astfel:
(STEAUA DINAMO RAPID)
iar mulţimea materiilor din anul IV, semestrul I ar putea fi reprezentate astfel:
(SISTEME OPERARE)
(INTELIGENTA ARTIFICIALA)
Un caz aparte îl constituie mulţimea vida, pentru care LISP-ul utilizează lista vidă, notată printr-o pereche de paranteze rotunde ”()”. Pentru lista vidă în LISP mai exista reprezentarea de tip atom special, NIL.
Dar, simbolul NIL poate avea în LISP unul din următoarele înţelesuri:
- valoarea de adevăr "fals" (cu observaţia că orice este diferit de NIL este considerat "adevărat")
- atomul simbolic
- lista vida
In notaţia de listă poate fi transpus şi un arbore. Astfel, de exemplu, următorul arbore:
s-ar putea reprezenta în Lisp sub următoarea formă:
((Expresie)
(Atom
(Număr
(Întreg)
(Real)
)
(Simbol)
)
(Lista)
)
De remarcat faptul că limbajul LISP are un format liber şi se recomandă folosirea spaţiilor sau liniilor noi pentru a oferi programelor un aspect cât mai lizibil. De asemenea, atunci când este necesar, este recomandabilă utilizarea comentariilor.
Un alt aspect abordat în continuare este cel impus de o regula sintactica a acestui limbaj, şi anume obligativitatea închiderii tuturor parantezelor deschise. Respectarea acestei reguli este uneori destul de dificilă (mai ales în cazul utilizării unor liste puternic imbricate). De aceea se foloseşte următoarea prescurtare, care, nu este o construcţie sintactică: la sfârşitul unei liste se va folosi paranteza pătrată ‘]’ ca prescurtare a tuturor parantezelor rotunde ‘)’ care mai trebuie închise (regulă valabilă doar pentru anumite versiuni de Lisp, printre care şi Allegro). Astfel,
(A (B (C (D (E (F] este echivalent cu (A (B (C (D (E (F))))))
În plus, se admite şi convenţia parantezei pătrate deschise ‘[’‚ care echivalează cu una rotundă deschisa, ’(’, semnalând însă punctul până la care corespondenta sa ’]’ poate închide toate parantezele rotunde ’)’ rămase deschise. Astfel,
(A [C (E (F] G] este echivalent cu (A (C (E (F))) G)
laboratoarele 2,3,4,5
Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.