Symbolické programovanie a LISP,
zima 2000/2001
(vychádza z prednášky
Funkcionálne programovanie, Ivan Kalaš)
Petrovič Pavol, Ústav Informatiky, č.d. 15
e-mail: ppetrovi@dent.ii.fmph.uniba.sk
www k prednáške: http://www.ii.fmph.uniba.sk/vyuka/lisp
Prémie:
- Prémie sa odovzdávajú osobne na diskete (meno súboru
je tvorené priezviskom - prípona súboru je názov
prémie uvedený v zadaní prémie), alebo sa posielajú
na horeuvedenú e-mailovú adresu - preferujte tento
spôsob! (Subject e-mailu je PREMIA: plus názov prémie
uvedený v zadaní prémie).
- V programoch je nutné dodržať mená funkcií a poradie
argumentov podľa zadania.
- Ak bude pri prémii uvedený termín, do kedy ju treba
odovzdať, po tomto termíne odovzdané prémie nebudú
hodnotené.
- Prémia môže byť kontrolovaná najviac dvakrát, ak
nebude v zadaní uvedené inak. Odporúčanie:
odovzdávať len definitívne odladené programy.
- Opisovanie, resp. modifikovanie pri riešení prémií sa
hodnotí zápornými bodmi.
- PRI (1b)
Prečo musia byť funkcie define, if,
cond, and a or
primitívy?
- SAM (2b)
Vytvorte (nie triviálny) S-výraz, ktorého hodnota je
(presne) ten istý S-výraz. Inými slovami: ak sa tento
S-výraz napíše do príkazového riadku, PCSCHEME ho
vráti ako výsledok.
- PER (2b)
Zadefinujte unárnu funkciu (perms zoz),
ktorá vráti zoznam všetkých permutácií
zoznamu zoz. Využite
funkciu map.
- AVG (2b)
Vytvorte funkciu (<priemer zoz),
ktorá na konci prvého (!) prechodu zoznamu zoz
vráti počet prvkov menších, ako je ich priemer.
Pomôcka: Priebežne vytvárajte vhodnú funkciu, ktorú
stačí na konci aplikovať.
- BAN (1b)
Vytvorte funkciu (create-account account
password), ktorá vznikne modifikáciou funkcie create-account3
zo 6.prednášky. Nová funkcia obsahuje naviac heslá
(pozri 6.cvičenie) a vytváranie podkont.
Podkonto je konto, ktoré zdieľa so svojim nadkontom
finančné prostriedky, ale len do určitej výšky.
Pri vytváraní podkonta sa z nadkonta presunie suma limit
(prípadne celá čiastka z nadkonta, ak je menšia ako limit).
Takéto podkonto sa potom správa ako bežné konto (s
vlastným heslom) s jedinou výnimkou. Pri pridaní sumy
nad limit sa prevyšujúca čiastka
presunie do nadkonta.
Príklad: (define moje-konto ((account 'sub-account
password) limit password2))
- MIR (1-2b)
Vytvorte funkciu (mirror! list0), ktorá
otočí (vlastný) zoznam list0 (rekurzívne,
do hĺbky) bez akéhokoľvek použitia funkcie
cons.
1b - verzia, ktorá využíva funkciu
set-cdr! (t.j. presmeruje ukazovatele na
ďalší prvok),
2b - verzia, ktorá využíva funkciu
set-car! a nevyužíva funkciu
set-cdr!.
-->
Koniec prémií!!!
Last Updated on 30-Nov-2000
By Petrovic Pavol
E-mail: ppetrovi@dent.ii.fmph.uniba.sk