Documente Academic
Documente Profesional
Documente Cultură
Lisp
Lisp
.Introducere in Limbajul Lisp Lansarea programului se poate face direct din run apeland executabilul lisp In Allegro CL 5.01 compilarea unui program Lisp se poate realiza atat prin scrierea codului direct de la linia de comanda, precum si prin incarcarea sa de pe un fisier extern Pentru scrierea pe ecran a unui sir de caractere se utilizeaza functia write string USER (1) : (write-string Hello,World) va afisa pe ecran string-ul cu si fara ghilimele; Functia de adunare + (implicita ) se utilizeaza in lisp in felul urmator: USER (2) : (+ 2 4) Rezultatul operatiei de adunare va fi afisat pe linia imediat urmatoare; Pentru a aduna un vector de dimensiune 5 : USER(3): (+ 50 20 23 1 9) 103 Operatia de impartire a 2 numere : USER(4): (/ 20 5) 4 Operatia de inmultire a 2 numere User(5): (* 20 5)
Astfel, vom defini prima functie care va afisa pe ecran un sir de carcactere (in-package :user) (defun hello() (write-string Hello World))
Structura de date fundamentala in limbajul LISP (List Processor) este Lista. Aceasta este delimitata prin paranteze. Deschiderea si inchiderea parantezelor denota inceputul si sfarsitul listei. O expresie poate avea valoare de adevar (diferita de NIL) sau poate fi evaluata ca falsa (NIL) Exercitiu Sa se realizeze functia recursiva de calcul a factorialului unui numar < 13. Sa se apeleze aceasta functie lisp.
Sa se scrie in Lisp functia care implementeaza sirul lui Fibonacci si returneaza al n-lea numar din sir. Functia va fi recursiva. De recapitulat : iterativitate si recursivitate; tipuri de recursivitate; liste simplu- inlantuite
Sa se scrie o functie care compara 2 numere si returneaza 2 siruri de caractere. Daca primul numar este mai mare atunci va da un mesaj Primul numar este mai mare, in caz contrar Va da mesajul (Al doilea numar este mai mare)
(DEFUN COMPARA (X Y) (COND ((EQUAL X Y) "NUMERELE SUNT EGALE") ((< X Y) "PRIMUL NUMAR ESTE MAI MIC") ((> X Y) "PRIMUL NUMAR ESTE MAI MARE") ) )
Sa se realizeze programul Doctor care va afisa pe ecran ; - Pacientul e Okay daca variabila temperatura are valoarea 37 - Daca pacientul are intre 37 si 38 de grade se afiseaza mesajul Stare Subfebrila - Daca pacientul are 38 de grade, se afiseaza mesajul Ai febra - In caz contrar tuturor celor de mai sus se afiseaza mesajul Ia o aspirina!
(defun doctor (temper) (cond((< temper 37) (print Pacientul e OK) nil) ((< temper 38) ( print Stare subfebrila) nil) ((= temper 38) (print Ai febra) nil) (t ( print Ia o aspirina ) nil)))