Differences

This shows you the differences between two versions of the page.

Link to this comparison view

jui:cviko6 [2011/08/16 22:33] (current)
Line 1: Line 1:
 +====== JUI - 6. cviceni ======
  
 +<code lisp>
 +;bloky
 +
 +progn
 +prog1
 +prog1 blok kodu, vraci n-ty vysledek
 +
 +block - pojmenovany blok
 +
 +(return hodnota) vraci z bloku
 +(return-from jmeno-bloku hodnota)
 +
 +(block prvni
 +  (+ 1 2)
 +  (+ 2 3)
 +  (block druhy
 +    (+ 4 5)
 +    (return-from prvni 10))
 +  (+ 8 9))
 +
 +(defun f () 
 +  (format t "​test"​)
 +  (return-from f 1)
 +  (+ 8 9))
 +
 +(prog ((x 5) (y 20))
 +   ​navesti
 +   ​(format t "~A ~A ~%" x y)
 +   (decf x)
 +   (if (zerop x)
 +       ​(return y)
 +       (go navesti)))
 +
 +
 +;iteracni cykly
 +(dolist (var seznam [vysledek]) telo)
 +
 +(dolist (x '(1 2 3) 'OK)
 +   ​(format t "​~A~%"​ (* x 2)))
 +
 +(dotimes (prom pocet [vysledek]) telo)
 +
 +(dotimes (x 5 'OK) (format t "​~a~%"​ (* x 2)))
 +
 +(do ((var init update) (var init update) ...) (podminka [vysledek]) telo)
 +
 +;do vyhodnocuje vsechny updaty ze starych hodnot z predchozi iterace
 +;do* vyhodnocuje sekvencne jednotlive updaty promennych
 +(do 
 +    ((x 1 (+ x 1))
 +     (y 1 x)
 +     (z 1 y))
 +     ​((>​ x 5) 'OK)
 +     ​(format t "~A ~A ~A ~%" x y z)
 +)
 +
 +
 +;vytvorte funkci se 2 parametry (cislo a seznam cisel
 +;Funkce vrati T pouze v pripade, ze jsou rozdily nasledujicich mensi nez x
 +;a/ rekurzi
 +;b/ iteraci
 +
 +(defun max-dif (eps x y)
 +  (<= (abs (- x y)) eps))
 +
 +(defun dif (cislo seznam) ​
 +  ;(format t "~A ~A~%" (car seznam) (car(cdr seznam)))
 +  (cond 
 +     ((cdr seznam) (and (max-dif cislo (car seznam) (car(cdr seznam))) (dif cislo (cdr seznam))))
 +     (t t)
 +  )
 +)
 +
 +(dif 3 '(1 3 5 6 5))
 +(dif-iter 3 '(1 3 5 6 5 8))
 +
 +
 +(defun dif-iter (cislo seznam)
 +   (do ((sez seznam (cdr sez))) ((null (cdr sez)) 'DONE)
 +       (if (not (max-dif 3 (car sez) (car(cdr sez)))) (return-from dif-iter nil))
 +   )
 +   t)
 +
 +
 +;vytvorte funkci se dvema parametry - cislo a seznam cisel
 +;funkce vrati seznam, ktery vznikne vlozenim x mezi kazde 2 prvky seznamu
 +(defun inter (cislo seznam)
 +   (do* (
 +         (sez seznam (cdr sez)) 
 +         (tmp (list(car seznam)) (append tmp (list cislo (car sez))))
 +       ​) ​
 +       ( (null (cdr sez)) tmp)
 +       t
 +   )
 +   )
 +
 +(inter 9 '( 1 2 3 4 5))
 +(inter 9 '(1 2))
 +</​code>​
jui/cviko6.txt · Last modified: 2011/08/16 22:33 (external edit)
Back to top
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0