Programové struktury


Lisp - základy


Stáhnutí: CLisp


Spuštění aplikace

lisp.exe -M lispinit.mem nebo lisp.bat

pouze lisp.exe nestačí!!

řádková utilita, bez menu a GUI


Základní příkazy

(exit), (quit), (bye) ... ukončení CLispu

(load soubor) ... natažení programu v souboru soubor

(compile-file soubor) ... přeložení programu na disk

(ed soubor) ... editace programu v souboru soubor

(cd cesta) ... změna adresáře

(dir) ... výpis adresáře

Cesta k souboru


prompt, break

prompt: [č. řádky]>

chybný příkaz => break: č. breaku.Break[č. řádky]

opuštění breaku (o úroveň výše): abort (CTRL+Z)


První pokusy

> (+ 1 2) ; sečti 1 a 2

> pi ; vypiš PI

> (setq a 10) ; přiřaď a hodnotu 10

> (+ 4 (sqrt (* (- 5 3) 2))) ; 4 + odm((5-3)*2)


Příklad 1 - formátovaný vstup a výstup

Sečtení dvou čísel

(write-char #\Newline)
(write-line "Program te vyzve k zadani dvou cisel.")
(write-string "Zadej prvni cislo: ") (setq a (read))
(write-string "Zadej druhe cislo: ") (setq b (read))
(write-string "Vysledek po secteni je: ") (write (+ a b)) 
  

stáhnout


Příklad 2 - komentáře, funkce - max2

Funkce maximum

; Priklad na komentare (tenhle je jednoradkovy)

#|--------------------------------------
	viceradkovy komentar
	viceradkovy komentar
	viceradkovy komentar
--------------------------------------|#

(defun max2 (x y)
	(if (< x y) y x)	
)
  

stáhnout


Příklad 3 - podmínka - Ano/Ne

Dotaz na Ano/Ne

(defun anone()
	(write-string "Stiskni 1-ano nebo 2-ne ")
	(setq x (read))
	(cond
		( (EQUAL x 1) (write-line "Stisknuto 1"))
		( (EQUAL x 2) (write-line "Stisknuto 2"))
		( T       (write-line "Stisknuto neco jineho"))
	)
)
  

stáhnout


Příklad 4 - cyklus - násobilka

Výpis násobků čísla

(defun nas (n)
	(do ((i 0 (+ i 1))) ((> i 10))
		(write (* n i))
		(write-char #\Newline)
	)
	(write-line "Hotovo ...")
)
  

stáhnout


Příklad 5 - cyklus - clrscr

Clear screen

(defun clrscr ()
	(do ((i 0 (+ i 1))) ((> i 20))
		(write-char #\Newline)
	)
	(write-line "Smazano...")
)
  

stáhnout


Příklad 6 - kvadratická rovnice

Výpočet kvadratické rovnice

(defun zadej ()
	(write-line "Vypocet korenu kvadraticke rovnice tvaru:")
	(write-line "         Ax^2 + Bx + C = 0")
	(write-line "=========================================")
	(write-string "Zadej koeficient A: ") (setq a (read))
	(write-string "Zadej koeficient B: ") (setq b (read))
	(write-string "Zadej koeficient C: ") (setq c (read))
)

(defun diskriminant (x y z)
	(- (* y y) (* 4 x z))
)

(defun vypocet ()
	(setq d (diskriminant a b c))
	(cond (	(< d 0)
		(write-line "Rovnice nema reseni !!!")
	      )
	      (	(= d 0) 
		(write-line "Rovnice ma jedno reseni.")
		(write-string "X = ") 
		(write (/ (- b) (* 2 a)))
	      )
              (	(> d 0) 
		(write-line "Rovnice ma dve reseni.")
		(write-string "X1 = ") 
		(write (/ (+ (- b) (sqrt d)) (* 2 a)))
		(write-char #\Newline)
		(write-string "X2 = ")
		(write (/ (- (- b) (sqrt d)) (* 2 a)))
	      )
	)
)

(defun main ()
	(zadej)
	(vypocet)
)
  

stáhnout






  Zpět  

Poslední změna: 15. 3. 2004
Josef Steinberger