(progl con LISP/mac
 
latino7
;coniuga presente indicativo regolare latino 1 2 3 4 coniugazione 
;richiede inserimento infinito e perfetto con READ 
;attivazione pausa con READ
 
(defun prima(tempo)
(setq desl’(o as at amus atis ant))
(setq des2’(abam abas abat abamus abatis abant))
(setq des3’(abo abis abit abimus abitis abunt))
(setq des4’(i isti it imus istis erunt))
(setq des5’(eram eras erat eramus eratis erant))
(setq des6’(ero eris erit erimus eritis erint)))
 
(defun seconda(tempo)
(setq desl’(eo es et emus etis ent))
(setq des2’(ebam ebas ebat ebamus ebatis ebant))
(setq des3’(ebo ebis ebit ebimus ebitis ebunt))
(setq des4’(i isti it imus istis erunt))
(setq des5’(eram eras erat eramus eratis erant))
(setq des6’(ero eris erit erimus eritis erint)))
 
 
(defun terza(tempo)
(setq desl’(o is it imus itis unt))
(setq des2’(ebam ebas ebat ebamus ebatis ebant))
(setq des3’(am es et emus etis ent))
(setq des4’(i isti it imus istis erunt))
(setq des5’(eram eras erat eramus eratis erant))
(setq des6’(ero eris erit erimus eritis erint)))
 
 
(defun quarta(tempo)
(setq desl’(io is it imus itis iunt))
(setq des2’(iebam iebas iebat iebamus iebatis iebant))
(setq des3’(iam ias iat iamus iatis iant))
(setq des4’(i isti it imus istis erunt))
(setq des5’(eram eras erat eramus eratis erant))
(setq des6’(ero eris erit erimus eritis erint)))
 
 
(defun coniuga(desinenze radice)
(let((conta ø))
(dotimes(conta 6 ø)
(setq des(elt desinenze conta))
(setq forma(append radice des))
(print forma))))
 
(defun tratto(stringa)
(print stringa))
 
(defun pausa(stringal)
(print stringal)
(setq tasto(read)))
                                                                                 
        
(setq x O)
(setq c O)
(print "scrivi prima persona presente indicativo 1 2 3 4 coniugaziOne")
(print "tra O e distanziando lettere")
(print "es. (i a u d o)")
(pri nt "===    "                          
(terpri)
 
 
;coniugazione presente indicativo latino ;richiesta infinito con READ
;richiesta perfetto con READ
;si deve scrivere tra parentesi e distanziando lettere
 
 
(setq presente(read))
(setq lungo(length presente))
(setq index(- lungo 2))
(setq fine(subseq presente index))
(if(equal fine ‘(e o))(setq c 2)(setq c 3))
;distingue seconda da terza coniugazione
                                                                                 
         
(print "scrivi infinito verbo 1 2 3 4 cOniugazione")
(print "tra O e distanziando lettere")
(print "es. (1 a u d a r e)")
(print "..."
                                                         )
(terpri)
(setq infinito(read))
(setq radice(butlast infinito 3))
                                                                                 
  
(print "scrivi perfetto indicativo stesso verbo")
(print "tra O e distanziando lettere")
(print "es. (1 a u d a v i)")
(print ‘‘.....) (terpri)
(setq perfetto(read))
(setq radiceZ(butlast perfetto 1))
                                                                                 

(setq lunghezza(length infinito))
(setq indice(- lunghezza 3))
(setq finale(subseq infinito indice))
                                                                                 
 
(if(equal c 3)(setq x 3)(setq b ø))
(if(equal c 2)(setq x 2)(setq b ø))
(if(equal finale ‘(a r e))(setq x 1)(setq b ø))
(if(equal finale’(i r e))(setq x 4)(setq b ø))
                                                                                 
   
;programma principale e chiamata a funzioni
(setq stringa "..."                  
(setq stringal "premi c + RETURN per proseguire")
 
(cond((= x 1)(prima desl))((= x 2)(seconda desl))
x 3)(terza desl))((= x 4)(quarta desl)))
 (coniuga desl radice)(tratto stringa)
 
(cond((= x 1)(prima des2))((= x 2)(seconda des2))
x 3)(terza des2))((= x 4)(quarta des2)))
(coniuga des2 radice)(tratto stringa)
 
(cond((= x 1)(prima des3))((= x 2)(seconda des3))
x 3)(terza des3))((= x 4)(quarta des3)))
(coniuga des3 radice)(tratto stringa)
 
(cond((= x 1)(prima des4))((= x 2)(seconda des4))
x 3)(terza des4))((= x 4)(quarta des4)))
(coniuga des4 radice2)(tratto stringa)
 
(cond((= x 1)(prima des5))((= x 2)(seconda des5))
x 3)(terza des5))((= x 4)(quarta des5)))
(coniuga des5 radice2)(tratto stringa)
 
(cond((= x 1)(prima des6))((= x 2)(seconda des6))
x 3)(terza des6))((= x 4)(quarta des6)))
(coniuga des6 radice2)(tratto stringa)

;