JUI - 4. cviceni
Vystupni funkce
;;format out_stream "format_retezec"
;; t = stream na nejvyssi urovni
(format t "~A - ~A je ~A" 3 2 (- 3 2))
3 - 2 je 1
;;~A tiskne jako princ
nebo ~S jako print
~F realne cislo
(Defun interpret()
(print "hlaska>")
(print (Eval (Read))))
(interpret)
)
Vstupni funkce
;; read - precte vyraz lispu
;; read-line, read-char
(read)
;;pak zadame
(3
4
a
b)
;;vystup: (3 4 a b)
;;funkce chci cislo, ktera precte vstup a opakuje tak dlouho dokud neni cislo ktere vytiskne
(defun cislo (hlaska)
(loop
(print hlaska)
(setf a (read))
(when (numberp a) (format t "~a ~%" a) (return a))
)
)
;;precte cislo
(defun cticislo (hlaska)
(loop
(print hlaska)
(setf a (read))
(when (numberp a) (return a))
)
)
;;funkce, ktera precte cislo a vypise n znaku x za sebou
(defun xkrat ()
(setf n (cticislo "Zadej n:"))
(dotimes (i n) (princ 'X))
)
;;funkce, ktera precte dva seznamy, a vypise spojeny seznam (skolni priklad, nepouzivat append)
(defun spoj (a b)
(cond
((car a) (cons (car a) (spoj (cdr a) b)))
(t b)
)
)
(defun vytiskni-spoj ()
(print "zadej 1. seznam")
(setf a (read))
(print "zadej 2. seznam")
(setf b (read))
(print (spoj a b))
)
;;funkce, ktera precte prvek, index a seznam a vlozi prvek na dane misto v seznamu
(defun vloz (seznam kam prvek)
(cond
((null seznam) (cons prvek seznam)) ;;pretekli jsme index, vlozime ihned a vylezeme nahoru
( (> kam 0) (cons (car seznam) (vloz (cdr seznam) (1- kam) prvek))) ;;zanorime se o krok niz
(t (cons prvek seznam)) ;;jsme na spravne pozici
)
)
Back to top