no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
| — | jui:cviko4 [2011/08/16 20:33] (current) – created - external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== JUI - 4. cviceni ====== | ||
| + | ===== Vystupni funkce===== | ||
| + | |||
| + | <code lisp> | ||
| + | ;;format out_stream " | ||
| + | |||
| + | ;; 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 " | ||
| + | (print (Eval (Read)))) | ||
| + | (interpret) | ||
| + | ) | ||
| + | </ | ||
| + | |||
| + | ===== 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 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 | ||
| + | (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 | ||
| + | ) | ||
| + | ) | ||
| + | </ | ||