Differences
This shows you the differences between two versions of the page.
— |
jui:cviko4 [2011/08/16 22:33] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== JUI - 4. cviceni ====== | ||
+ | ===== Vystupni funkce===== | ||
+ | |||
+ | <code lisp> | ||
+ | ;;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) | ||
+ | ) | ||
+ | </code> | ||
+ | |||
+ | ===== Vstupni funkce ===== | ||
+ | |||
+ | |||
+ | <code lisp> | ||
+ | ;; read - precte vyraz lispu | ||
+ | ;; read-line, read-char | ||
+ | |||
+ | (read) | ||
+ | ;;pak zadame | ||
+ | (3 | ||
+ | 4 | ||
+ | a | ||
+ | b) | ||
+ | ;;vystup: (3 4 a b) | ||
+ | </code> | ||
+ | |||
+ | ---- | ||
+ | |||
+ | <code lisp> | ||
+ | ;;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 | ||
+ | ) | ||
+ | ) | ||
+ | </code> |