JUI - 3. přednáška Zpracování seznamů, predikátové a vyhodnocovací funkce RNDr. Jiří Dvořák, CSc.

Slides:



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

Algebraické výrazy: lomené výrazy
Vypracovala: Monika Čáslavská
Deduktivní soustava výrokové logiky
MS ACCESS - DOTAZY DATABÁZOVÉ SYSTÉMY.
VISUAL BASIC Práce s řetězci Použitá literatura: Kvoch: Visual Basic 4.
ŘÍDÍCÍ STRUKTURY - PODMÍNKY
Dualita úloh lineárního programování a analýza citlivosti
Počítače a programování 1 Přednáška 13 Jiří Šebesta.
Tabulky v MS ACCESS Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Jiří Novák.
Programování funkcí v Excelu
PRIPO Principy počítačů
JUI přednáška Příklad využití Prologu pro tvorbu expertních systémů RNDr. Jiří Dvořák, CSc.
Fakulta elektrotechniky a informatiky
Aplikace teorie grafů Základní pojmy teorie grafů
Téma 3 Metody řešení stěn, metoda sítí.
Škola: SŠ Oselce, Oselce 1, Nepomuk, Projekt: Registrační číslo: CZ.1.07/1.5.00/ Název: Modernizace výuky všeobecných.
JUI - 1. přednáška Funkcionální programování Úvod do jazyka Lisp RNDr. Jiří Dvořák, CSc.
Algebraické výrazy: lomené výrazy
Objekty v CLIPSu RNDr. Jiří Dvořák, CSc.
Booleova logika(algebra)
TENTO PROJEKT JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM
Úpravy algebraických výrazů
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Informatika I 3. přednáška
Počítáme s celými čísly
Informatika I 2. přednáška
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
LOGICKÉ ŘÍZENÍ GEORGE BOOLE
JUI - 9. přednáška Ř ez, negace, práce s databází RNDr. Jiří Dvořák, CSc.
Mocniny, odmocniny, úpravy algebraických výrazů
Číselné obory Podmínky používání prezentace © RNDr. Jiří Kocourek 2013
Abeceda a formální jazyk
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
KOMBINAČNÍ LOGICKÉ FUNKCE
JUI - 2. přednáška Základní funkce, definice funkcí RNDr. Jiří Dvořák, CSc.
Výpočetní technika Akademický rok 2009/2010 Letní semestr Mgr. Petr Novák Katedra informatiky a geoinformatiky FŽP UJEP
Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49 Výukový materiál zpracovaný v rámci projektu „Učíme moderně“ Registrační číslo projektu:
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Informatika I 7. přednáška RNDr. Jiří Dvořák, CSc.
Informatika I 8. přednáška RNDr. Jiří Dvořák, CSc.
1. Derivace Derivace je míra rychlosti změny funkce.
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
Zpracování neurčitosti Fuzzy přístupy RNDr. Jiří Dvořák, CSc.
PROGRAMOVÁNÍ V PHP PERSONAL HOME PAGES CYKLY V PHP.
Automaty a gramatiky.
Databázové systémy SQL Výběr dat.
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.
Tento Digitální učební materiál vznikl díky finanční podpoře EU- Operačního programu Vzdělávání pro konkurenceschopnost Není –li uvedeno jinak, je tento.
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.
Datové typy a operátory. Co jsou datové typy  Charakterizují proměnnou nebo konstantu – jaká data obsahuje  Data jsou v počítači ukládána jako skupiny.
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é.
ACCESS DOTAZY Ing. Jana Horáková IKT MS Office
KOMPLEXNÍ ČÍSLA Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým.
ČÍSLO PROJEKTU CZ.1.07/1.5.00/ ČÍSLO MATERIÁLU 18 – Výrazy a operace s mnohočleny – teorie NÁZEV ŠKOLY Střední škola a Vyšší odborná škola cestovního.
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é.
Definiční obor a obor hodnot
Výukový materiál zpracován v rámci projektu
I. Podmínky existence výrazu
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.
Logický výraz VY_32_INOVACE_08_153
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
Definiční obory. Množiny řešení. Intervaly.
Algebraické výrazy: lomené výrazy
Transkript prezentace:

JUI - 3. přednáška Zpracování seznamů, predikátové a vyhodnocovací funkce RNDr. Jiří Dvořák, CSc.

2 Funkce pro zpracování seznamů append spojování seznamů list konstrukce seznamů last zjištění posledního prvku seznamu length délka seznamu reverse otočení seznamu

3 Funkce append a list append Funkce append může mít proměnný počet argumentů. Hodnotami argumentů musejí být seznamy a výsledkem je seznam vzniklý spojením těchto seznamů. Při provedení funkce append se tolikrát provede primitivní konstruktor cons, kolik činí součet délek seznamů ve všech argumentech kromě posledního. list Funkce list může mít rovněž proměnný počet argumentů, ale jejich hodnotami mohou být libovolné S-výrazy. Výsledkem je seznam vzniklý spojením těchto S-výrazů. Za jedním provedením funkce list je schováno tolik aplikací primitivního konstruktoru cons, kolik má list argumentů.

4 Funkce last, length a reverse last Funkce last má jeden argument, jehož hodnotou musí být seznam. Výsledkem je seznam obsahující pouze poslední prvek seznamu v argumentu. length Funkce length má jeden argument, jehož hodnotou musí být seznam. Výsledkem je počet prvků na nejvyšší úrovni seznamu v argumentu. reverse Funkce reverse má jeden argument, jehož hodnotou musí být seznam. Výsledkem je obrácený seznam, přičemž obracení se týká pouze nejvyšší úrovně seznamu a nižší vrstvy zůstávají nedotčeny.

5 Predikátové funkce equal test na shodu S-výrazů null test na prázdný seznam member test na členství v seznamu listp numberp typové predikáty symbolp boundp test na vazbu proměnné zerop test na nulu plusp test na kladnou hodnotu minusp test na zápornou hodnotu and, or, not logické operace

6 Predikáty equal, null a member equal Funkce equal má dva argumenty, jejichž hodnotami mohou být libovolné S-výrazy. Pokud jsou shodné, výsledkem je T, v opačném případě je výsledkem nil. null Funkce null má jeden argument, jehož hodnotou by měl být seznam. Pokud je tento seznam prázdný, výsledkem je T, v opačném případě je výsledkem nil. member Funkce member má dva argumenty. Hodnotou prvého je libovolný S- výraz a a hodnotou druhého musí být seznam. Funkce testuje existenci S-výrazu na nejvyšší úrovni seznamu. V případě úspěchu vrací ne hodnotu T, ale přímo tu část seznamu, kde tento S-výraz nalezla. Při neúspěchu vrací samozřejmě nil.

7 Typové predikáty a boundp listp Funkce listp má jeden argument. Tato funkce testuje, zda hodnotou argumentu je seznam. numberp Funkce numberp má jeden argument a testuje, zda hodnotou tohoto argumentu je číslo. symbolp Funkce symbolp má jeden argument a testuje, zda jeho hodnotou je symbol. boundp Funkce boundp má jeden argument, jehož hodnotou by měl být symbolický atom. Pokud je na tento atom navázána hodnota, funkce vrací T, jinak vrací nil.

8 Predikáty pro porovnávání s nulou zerop Funkce zerop má jeden argument, jehož hodnotou by mělo být číslo. Tato funkce testuje, zda hodnota argumentu je rovna nule. plusp Funkce plusp má jeden argument, jehož hodnotou by mělo být číslo. Tato funkce testuje, zda hodnota argumentu je kladná. minusp Funkce minusp má jeden argument, jehož hodnotou by mělo být číslo. Tato funkce testuje, zda hodnota argumentu je záporná.

9 Predikát not Tato funkce je pouze synonymem pro predikát null. Je však doporučeno ji používat jako zdůraznění, že se nejedná o testování konce seznamu, ale o logickou negaci (v lispovském pojetí). Platí (not nil)=> T (not x)=> nil pro x  nil

10 Predikáty and a or Predikáty and a or jsou speciální funkce zajišťující výpočet logického součinu a logického součtu svých argumentů v lispovské interpretaci. and Vyhodnocuje své argumenty tak dlouho, až narazí na prvý s hodnotou ni1 a pak vrátí nil. Jinak vyhodnotí všechny argumenty a vrací hodnotu posledního. or Vyhodnocuje své argumenty tak dlouho, až narazí na prvý s hodnotou různou od ni1 a jeho hodnotu pak vrátí jako výsledek. Jinak vyhodnotí všechny argumenty a vrátí nil. Z popisu je vidět, že tyto speciální funkce vyhodnotí vždy jen tolik argumentů, kolik je zapotřebí k určení výsledku.

11 Vyhodnocovací funkce eval základ vyhodnocovacího systému apply aplikace funkcí funcall aplikace funkcí

12 Funkce eval Funkce eval je základem vyhodnocovacího systému. Je to funkce jediného argumentu a pokud ji použijeme v explicitním volání, dojde vlastně ke dvojímu vyhodnocení tohoto argumentu: poprvé se vyhodnotí jako argument kterékoliv jiné funkce, získaná hodnota se pak předá funkci eval a ta jej vyhodnotí znovu! Hodnota argumentu funkce eval musí mít jeden z těchto tvarů:  číselný atom – eval vrátí totéž číslo  symbolický atom – eval vrátí hodnotu vázanou na toto jméno  seznam tvaru (f a l a 2... a n ), kde f je jméno funkce a každé a j lze opět vyhodnotit Prostřednictvím funkce eval dostáváme velmi mocný prostředek: můžeme dynamicky vytvořit určitou část programu a takto vytvořenou část bezprostředně jako program vyhodnotit.

13 Funkce apply Při vyhodnocení zápisu funkce v Lispu se standardně vyhodnotí její argumenty, z jejích hodnot se udělá seznam a ten se předá k aplikaci. Ta část vyhodnocovacího systému, která aplikaci funkce provádí, je v Lispu k dispozici prostřednictvím funkce apply. Funkce apply má dva argumenty. Hodnotou prvého argumentu musí být jméno funkce a hodnotou druhého musí být seznam hodnot jejích argumentů. Platí vztah (apply ’fce ’(val 1 val 2 … val n )) = (fce arg 1 arg 2 … arg n ) kde val i je hodnota argumentu arg i.

14 Funkce funcall (funcall farg arg1 … argN) Tímto zápisem se zajistí aplikace funkce, která je hodnotou výrazu farg, na hodnoty argumentů vypočtené jako hodnoty výrazů arg1, …, argN.