Osnova témat

  • Úvod

    Logo OP VK

    Tato inovace předmětu Funkcionální programování (Lisp) je spolufinancována Evropským sociálním fondem a Státním rozpočtem ČR, projekt č. CZ.1.07/2.3.00/09.0197, "Posílení konkurenceschopnosti výzkumu a vývoje informačních technologií v Moravskoslezském kraji".

    Funkcionální programování (Lisp)

    Lektor: David Rekl


    LISP je jazyk určený zejména pro programování umělé inteligence - mezi jeho vestavěné datové typy totiž patří symboly a seznamy. Dá se však použít i pro jiné úkoly než tvorbu UI.

    Základní charakteristiky:
    • praktické aplikace v oblasti umělé inteligence
    • nový pohled na řešení problémů
    • založeno na rekurzi
    • typická je práce se seznamy
    • i funkce je seznam, který se vyhodnocuje
    • automatická správa paměti
    Cíle kurzu:
    • obeznámení se s jazykem LISP
    • konstrukce maker
    • konstrukce vlastních funkcí
    • lambda kalkul
    Literatura:
    1. Touretzky, David S. COMMON LISP: A Gentle Introduction to Symbolic Computation. California: The Benjamin/Cummings Publishing Company, Inc., 1990.
    2. Kolář, Josef. Languages for AI (Lisp & Prolog)
    3. Seibel, Peter. Practical Common Lisp. Apress, 2005
    Programy k výuce:
    • Clisp (jedná se o open source program ze stránek http://clisp.cons.org/, které jsou momentálně nedostupné)
    • Allegro CL Free Express Edition
    Užitečné odkazy:
    • http://bitfauna.com/projects/cusp/
    • http://masuv.blog.cz/rubrika/lisp
    • http://woq.nipax.cz/h_lisp.php
    • http://www.n-a-n-o.com/lisp/cmucl-tutorials/LISP-tutorial.html
    • http://www.cliki.net/index
    • http://www.lisp.cz/
    • http://en.wikipedia.org/wiki/Common_Lisp
    • http://en.wikipedia.org/wiki/Lisp_(programming_language)

  • Téma 1

    Úvod do programovacího jazyka Lisp

    • Úvod do funkcionálního programování
    • Obeznámení se s jazykem LISP
  • Téma 2

    Seznamy

    • Vnitřní reprezentace seznamů v Lispu
    • Délka seznamu
  • Téma 3

    Makra a funkce v Lispu

    • Konstrukce maker
    • Vlastní funkce
  • Téma 4

    Jednoduché funkce v Lispu

    • přičítání k určitému prvku
    • záměna, seznam v opačném pořadí
    • test na čísla
    • převod vnořeného seznamu na jednoduchý
  • Téma 5

    Funkce pro práci se seznamem

    • výběr jen číselných atomů ze seznamu
    • seznam v opačném pořadí na všech pozicích
    • výpis prvku na určité pozici
    • maximální prvek v seznamu
  • Téma 6

    Funkce pro práci se seznamem

    • seznamy se stejnou strukturou
    • odstranění atomu ze seznamu
    • kostra seznamu
    • hloubka seznamu
  • Téma 7

    Funkce pro manipulaci s množinami

    • tvorba množin
    • test prvku množiny
    • sjednocení, průnik množin
    • podmnožina
  • Téma 8

    Třídění

    • uspořádaný seznam
    • vkládání do setříděného seznamu
    • třídění pomocí metody insertsort a quicksort
  • Téma 9

    Třídění, pole čísel

    • podseznamy
    • spojování setříděných seznamů
    • metoda merge-sort
    • pole čísel