;gestione strutture dati
;--------------------------

;struttura1

(prog1
(print"")

;definire struttura dati per libreria
(defstruct libreria titolo autore editore)

;inserimento dati per ogni record
(setq libro1(make-libreria :titolo "fisica" :autore "rossi" :editore "sei"))
(setq libro2(make-libreria :titolo "chimica" :autore "verdi" :editore "sei"))
(setq libro3(make-libreria :titolo "greco" :autore "neri" :editore "paravia"))
(setq libro4(make-libreria :titolo "latino" :autore "bassi" :editore "sei"))
(setq libro5(make-libreria :titolo "disegno" :autore "grassi" :editore "ldc"))
(setq libro6(make-libreria :titolo "arte" :autore "zanella" :editore "scuola"))
;-----------------------------------------------------------------------------
;mostra struttura
(print(symbol-plist 'libreria))
;----------------------------------------------------------------------------
;accesso a valori relativi ad attributi per record da indicare

(print(libreria-titolo libro1))
(print(libreria-autore libro1))
(print(libreria-editore libro1))
(print(libreria-titolo libro1))
(print(libreria-titolo libro2))
(print(libreria-titolo libro3))
(print(libreria-autore libro4))
(print(libreria-autore libro5))
(print(libreria-autore libro6))
(print(libreria-editore libro1))
(print(libreria-editore libro2))
(print(libreria-editore libro3))
;-------------------------------
)

;gestione strutture dati
;--------------------------

;struttura2

(prog1
(print"")

;definire struttura dati per libreria
(defstruct libreria titolo autore editore)

;inserimento dati per ogni record
(setq libro1(make-libreria :titolo "fisica" :autore "rossi" :editore "sei"))
(setq libro2(make-libreria :titolo "chimica" :autore "verdi" :editore "sei"))
(setq libro3(make-libreria :titolo "greco" :autore "neri" :editore "paravia"))
(setq libro4(make-libreria :titolo "latino" :autore "bassi" :editore "sei"))
(setq libro5(make-libreria :titolo "disegno" :autore "grassi" :editore "ldc"))
(setq libro6(make-libreria :titolo "arte" :autore "zanella" :editore "scuola"))
;-----------------------------------------------------------------------------
;mostra struttura
(print(symbol-plist 'libreria))
;----------------------------------------------------------------------------
;accesso a record completi
(print libro1)
(print libro2)
(print libro3)
(print libro4)
(print libro5)
(print libro6)
;-------------------------
)

;gestione strutture dati
;--------------------------

;struttura3

(prog1
(print"")

;definire struttura dati per libreria
;con stringa esplicativa e dati costanti per ogni record
;es.attributo rilegatura con valore costante tascabile
;non si inserisce nei singoli record

(defstruct libreria "stringa esplicativa" titolo autore editore
 (rilegatura '(tascabile)))

;inserimento dati per ogni record
(setq libro1(make-libreria :titolo "fisica" :autore "rossi" :editore "sei"))
(setq libro2(make-libreria :titolo "chimica" :autore "verdi" :editore "sei"))
(setq libro3(make-libreria :titolo "greco" :autore "neri" :editore "paravia"))
(setq libro4(make-libreria :titolo "latino" :autore "bassi" :editore "sei"))
(setq libro5(make-libreria :titolo "disegno" :autore "grassi" :editore "ldc"))
(setq libro6(make-libreria :titolo "arte" :autore "zanella" :editore "scuola"))
;-----------------------------------------------------------------------------
;mostra struttura
(print(symbol-plist 'libreria))
;----------------------------------------------------------------------------
(print(libreria-rilegatura libro1))
(print(libreria-rilegatura libro2))
(terpri)
;accesso a record completi
(print libro1)
(print libro2)
(print libro3)
(print libro4)
(print libro5)
(print libro6)
;-------------------------
)
ritorna