Table of Contents

JUI - 6. cviceni

;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))
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