JUI - 1. přednáška Funkcionální programování Úvod do jazyka Lisp RNDr. Jiří Dvořák, CSc.

Slides:



Advertisements
Podobné prezentace
DOTAZOVACÍ JAZYKY slajdy přednášce DBI006
Advertisements

Dualita úloh lineárního programování a analýza citlivosti
Programování funkcí v Excelu
Aplikační a programové vybavení
JUI - 3. přednáška Zpracování seznamů, predikátové a vyhodnocovací funkce RNDr. Jiří Dvořák, CSc.
Algoritmizace a programování Podprogramy v Delphi - 10
Síťová analýza RNDr. Jiří Dvořák, CSc.
Ústav technologie, mechanizace a řízení staveb
Programování PA - 2.
Materiály k přednášce Úvod do programování Ondřej Čepek.
ADT Strom.
2IT – PVY – objektové DBS Bc. Jiří Šilhán
Algoritmizace a programování
Informatika I 3. přednáška
Seminář – Základy programování
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
F U N K C E.
JUI - 9. přednáška Ř ez, negace, práce s databází RNDr. Jiří Dvořák, CSc.
Mocniny, odmocniny, úpravy algebraických výrazů
MATEMATIKA I.
Formulace a vlastnosti úloh lineárního programování
Sémantická analýza Jakub Yaghob
Gramatiky a jazyky Přednáška z předmětu Řízení v komplexních systémech
KOMBINAČNÍ LOGICKÉ FUNKCE
Informatika pro ekonomy II přednáška 10
JUI - 2. přednáška Základní funkce, definice funkcí RNDr. Jiří Dvořák, CSc.
Informatika I 4. přednáška
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
JUI - 6. přednáška Úvod do jazyka Prolog, struktura programu, datové objekty, unifikace RNDr. Jiří Dvořák, CSc.
XML Schema Irena Mlýnková. Obsah XML – úvod, příklad, základní pojmy DTD – přehled XML Schema – podrobně.
Informatika I 7. přednáška RNDr. Jiří Dvořák, CSc.
Informatika I 8. přednáška RNDr. Jiří Dvořák, CSc.
OSNOVA: a) Úvod do OOPb) Třídy bez metod c) Třídy s metodamid) Konstruktory a destruktory e) Metody constf) Knihovní třídy g) Třídy ve tříděh) Přetížení.
Programovací jazyk PASCAL
Systém CLIPS RNDr. Jiří Dvořák, CSc.
Jazyk XML Jazyk pro tvorbu strukturovaných dokumentů Syntaxí velmi podobný HTML Hlavní cíle návrhu: Snadná editace - jazyk je textový Snadné strojové zpracování.
Výroková logika.
Informatika I 1. přednáška
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
STROMY Datová struktura sestávající z uzlů
JUI - 5. přednáška Modifikace struktur, reprezentace atomů, vstup/výstup, ovládání paměti RNDr. Jiří Dvořák, CSc.
Databázové modelování
Algebraické výrazy a jejich úpravy
Zpracování neurčitosti Fuzzy přístupy RNDr. Jiří Dvořák, CSc.
Gymnázium, Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Hodonín Úvod do programování.
Databázové systémy Informatika pro ekonomy, př. 18.
Karel Vlček, Modelování a simulace Karel Vlček,
XQuery Dotazovací jazyk XML Daniel Privalenkov. O čem bude prezentace Nutnost dotazovacího jazyku v XML Rychlý přehled XQuery Několik příkladů.
Metrologie   Přednáška č. 5 Nejistoty měření.
Simplexová metoda pro známé počáteční řešení úlohy LP
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Jazyky pro umělou inteligenci RNDr. Jiří Dvořák, CSc.
Predikátová logika1 Predikátová logika 1. řádu Teď „logika naostro“ !
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
České vysoké učení technické Fakulta elektrotechnická Datové typy, výrazy vstup, výstup Jazyk JAVA A0B36PRI - PROGRAMOVÁN Í v1.02.
Ryze kvadratická rovnice
Odborný výcvik ve 3. tisíciletí Tato prezentace byla vytvořena v rámci projektu.
Název školy: Střední odborná škola stavební Karlovy Vary Sabinovo náměstí 16, Karlovy Vary Autor: Ing. Hana Šmídová Název materiálu: VY_32_INOVACE_10_NEUMANN_S1.
Software,hardware,data,biti a bajty.  Software je v informatice sada všech počítačových programů používaných v počítači, které provádějí nějakou činnost.
SOFTWAROVÁ PODPORA PRO VYTVÁŘENÍ FUZZY MODELŮ Knihovna fuzzy procedur Ing. Petr Želasko, VŠB-TU Ostrava.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
C# konzole – Podíl dvou čísel, podmínka IF
Funkce výstupu (2) Funkce printf: deklarována v: stdio.h
Informatika pro ekonomy přednáška 8
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
Predikátová logika.
Definiční obory. Množiny řešení. Intervaly.
Transkript prezentace:

JUI - 1. přednáška Funkcionální programování Úvod do jazyka Lisp RNDr. Jiří Dvořák, CSc.

2 Principy funkcionálního programování Funkcionální program se vytváří jako souhrn definic funkcí a jejich aplikací ve formě výrazů. Jedná se o to, jak vyjádřit daný algoritmus pomocí vzájemně provázaných (zpravidla rekurzivních) funkcí. Výpočet podle takového programu lze chápat jako provedení aplikace nějaké funkce na určitou sadu hodnot jejích argumentů, jehož smyslem je získat výslednou hodnotu. Počítač má ve funkcionálním programování roli vyhodnocovače výrazů. Základním krokem vyhodnocení je přitom zjednodušení (redukce) výrazu. Výsledek výpočtu je do značné míry nezávislý na pořadí, v němž se redukují jednotlivé dílčí výrazy. To umožňuje snížení rizika možných chyb programování, a vyúsťuje např. do úvah o paralelním provádění redukčních transformací na počítačích, jejichž technická realizace už nemusí vycházet z von Neumannova modelu.

3 Počítač jako vyhodnocovač výrazů Prostředí Vyhodnocení DefiniceVýrazy Výsledky

4 Rekurze V neimperativním programovacím stylu je rekurze důležitým nástrojem pro řešení složitých problémů. Taxonomie rekurzivních definic (pro funkcionální styl):  Vnořená rekurze - rekurzivní volání funkce obsahuje v argumentech volání téže funkce.  Kaskádní (stromová) rekurze - ve stejném výrazu se objevuje několik rekurzivních volání, ale bez vzájemného vnoření.  Lineární rekurze - v každé z alternativ v definici funkce se vyskytuje nejvýše jedno její rekurzivní volání.  Koncová rekurze - speciální případ lineární rekurze, kdy rekurzivní volání je poslední operací příslušné alternativy definice.

5 Historie jazyka Lisp Jazyk Lisp je jedním z nejstarších dosud používaných programovacích jazyků. Původně vznikl koncem 50. let (Mc Carthy, 1960) jako určitá notace pro zápis algoritmů pracujících se seznamy (LISP = LISt Processing). Další verze jazyka Lisp: Lisp 1.5 (Mc. Carthy, 1962), MacLisp (1974), InterLisp (1978), Franz Lisp, Zeta Lisp, Scheme, Common Lisp (1984), Xlisp (1986)

6 Typy dat Souhrnně se data v Lispu nazývají S-výrazy (symbolické výrazy). Jednoduché typy dat - atomy:  číselné: celočíselné, reálné  symbolické: speciální znaky, identifikátory (mohou obsahovat písmena, číslice, pomlčku a podtržítko; obvykle se nerozlišují velká a malá písmena). Strukturované typy dat:  tečka-dvojice  seznam (speciální případ tečky-dvojice ve zkrácené notaci)

7 Tečka-dvojice Tečka-dvojice: (S-výraz1.S-výraz2) Tečka-dvojice představuje binární strom, kde S-výraz1 odpovídá levému podstromu a S-výraz2 pravému podstromu. Tečka-dvojice je fyzicky reprezentována základní lispovskou buňkou (tzv. cons-buňkou), dělenou na 2 části, které obsahují ukazatele na příslušné podvýrazy. Názvy těchto částí jsou dány historicky (označují části strojového slova na počítači IBM 1040 kde byl Lisp poprvé implementován). address partdecrement part S-výraz1S-výraz2

8 Seznam Seznam: (S-výraz1 S-výraz2 … S-výrazN) Seznam je tvořen posloupností S-výrazů oddělených mezerami a uzavřených do kulatých závorek. Zápis seznamu v podobě tečky-dvojice: (S-výraz1.(S-výraz2.( ….(S-výrazN.nil)… ))) Atom nil je speciální atom, který reprezentuje konec seznamu. Fyzická implementace seznamu: … S-výraz1S-výraz2S-výrazN

9 Struktura programu Program v Lispu se skládá z tzv. forem. Forma (E-výraz) je S-výraz, který lze vyhodnotit lispovským interpretem. Program je tedy posloupností vyhodnotitelných S-výrazů, což znamená, že program má stejný charakter jako jím zpracovávaná data. Typy forem:  číselný atom  symbolický atom (identifikátor)  zápis funkce

10 Atomické formy Číselný atom: Vyhodnocením se získá číslo vyjádřené zápisem atomu. Symbolický atom (identifikátor): Je považován za proměnnou a jeho vyhodnocením se získá hodnota, která je v daném okamžiku vázána na daný atom. Pokud v okamžiku vyhodnocení není na daný atom žádná hodnota navázána, je signalizována chyba. Proměnné se standardně přiřazenou hodnotou: T… hodnota je T (true) NIL… hodnota je NIL F… hodnota je NIL Pozn.: platí konvence, že jakákoli hodnota různá od NIL vyjadřuje pravdivostní hodnotu true.

11 Zápis funkce Zápis funkce (přesněji zápis aplikace funkce) má tvar seznamu vytvořeného podle následujícího schématu: (f a 1 a 2 … a n ) kde f je jméno (atom) vyjadřující funkci a a 1, a 2, …, a n jsou formy vyjadřující argumenty, na něž se má funkce f aplikovat. Pro zápis funkce se v Lispu používá důsledně prefixová notace, přičemž se celý zápis uzavírá vždy do závorek. Při vyhodnocení zápisu funkce Lisp nejprve vyhodnotí všechny argumenty a teprve na získané hodnoty aplikuje funkci f. Pořadí vyhodnocování argumentů není v Lispu přesně specifikováno. Výjimkou z tohoto pravidla jsou speciální funkce, z nichž každá má specifická pravidla pro vyhodnocení (resp. nevyhodnocení) argumentů. Zápisy těchto funkcí se nazývají speciální formy.