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 4 | |||||||||||||||||||||||||||||||||
Subiecte
|
Legarea variabilelor. RecursivitateÎn LISP argumentele unei proceduri sunt transmise prin valoare (ca în limbajul C). La intrarea în procedură parametrii sunt legaţi la argumente devenind variabile legate, iar la ieşirea din procedură variabilele legate de procedură primesc vechile valori. Variabilele folosite într-o procedură dar care nu sunt parametrii se numesc variabile libere în raport cu acea procedura şi valoarea lor este determinată lexical. Primitiva LETLET leagă variabile şi le dă valori. (SETQ doar dă valori!) Sintaxa: Legarea este valabilă doar în interiorul corpului lui let. Există varianta LET* care leagă variabilele dar atribuie valorile secvenţial (ca procedura SET). Şi SETQ are varianta PSETQ care atribuie valorile în "paralel".
Primitiva FUNCALLFUNCALL permite apelul indirect al funcţiilor.
RecursivitateAtunci cănd o procedură se apelează pe sine, direct
sau indirect, pentru a rezolva o parte din problemă, avem de a
face cu recursivitate. / m * m^(n-1),
pentru n > 0 Programul implementat în LISP este:
ProblemeProblema 1. Factorial Problema 2. Fibonacci Problema 3. Member Problema 4. Trim-head Problema 5. Trim-tail Problema 6. Count-atoms Problema 7. Însumare, scădere Problema 8. Reverse Problema 9. Presentp Problema 10. Squash |