Cflp Laborator |
|
Facultatea de
Automatica si Calculatoare
Departamentul de Calculatoare |
Home | Lucrarea 1 | Lucrarea 2 | Lucrarea 3 | Lucrarea 4 | Lucrarea 5 | Proiect |
Lucrarea 6 | Lucrarea 7 | Lucrarea 8 | Lucrarea 9 | Lucrarea 10 |
Lucrarea 7 | |||
Subiecte |
PRINT primeşte un singur argument pe care îl evaluează şi îl tipăreşte pe o linie nouă. Următorul exemplu afişează pătratele numerelor întregi până când îl oprim:
(defun bore-me () (do ((n 0 (+ n 1))) (nil) (print (* n n)))) (bore-me) 0 1 4 9 ...
PRINT returnează valoarea argumentului. Când întâlneşte (READ), interpretorul LISP se opreşte şi aşteaptă ca utilizatorul să scrie o expresie. Această expresie, fără evaluare, devine valoarea lui (READ). Din cauză că READ nu afişează nimic pentru a indica faptul că aşteaptă o expresie la intrare, este o practică bună să folosim înainte PRINT pentru a semnala că se aşteaptă un răspuns.
Convenţii pentru simboluri speciale
Câteodată este util să avem simboluri ce conţin caractere speciale (spaţii, paranteze etc.) Acest lucru se realizează prin plasarea de bare verticale în jurul simbolului:
|
||
(setq simbol1 '|(| ) |(| (setq simbol2 '|un simbol| ) |un simbol| (print simbol1) |(| |(| (print simbol2) |un simbol| |un simbol| |
|||
Dacă dorim un simbol neutilizat, putem genera simboluri noi cu GENSYM.
(GENSYM) G1 (GENSYM) G2
TERPRI începe o linie nouă. PRIN1 seamănă cu PRINT dar nu afişează pe o linie nouă şi nu scrie un spaţiu la sfârşit. PRINC este asemănător cu PRIN1 dar nu vă afişa nici o bară verticală dacă există.
(print simbol2) |un simbol| |un simbol| (prin1 simbol2)|un simbol| |un simbol| (princ simbol2)un simbol |un simbol|
|
|||
Probleme
1. Scrieţi o procedură PRETTY-PRINT care primeşte un argument (listă generalizată), şi îl afişează după regula:
(<element-1> <element-2> <element-3> ... <element-n>) Orice element care este la rândul lui listă, va fi afişat în acelaşi fel recursiv.
|