Paradigmata programování 2

Podobné dokumenty
1. Od Scheme k Lispu

Paradigmata programování 1

PARADIGMATA PROGRAMOVÁNÍ 2 PŘÍSLIBY A LÍNÉ VYHODNOCOVÁNÍ

Paradigmata programování 1

FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 3. CVIČENÍ

Přednáška 3. Rekurze 1

Programování II. Objektová dekompozice Třída jako objekt 2018/19

FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 5. CVIČENÍ

Programování II. Návrh programu I 2018/19

PARADIGMATA PROGRAMOVÁNÍ 2A INTERPRET S VEDLEJŠÍMI EFEKTY A MAKRY

PARADIGMATA OBJEKTOVÉHO PROGRAMOVÁNÍ I

LISP Definice funkcí

Paradigmata programování II Přednáška 2: Mutace

Programování II. Dědičnost změna chování 2018/19

Paradigmata programování II Přednáška 1: Vedlejší efekt

PARADIGMATA PROGRAMOVÁNÍ 2A VEDLEJŠÍ EFEKT

Upozornění: Dne:

Semestrální úloha č. 1 z předmětu Moderní programovací postupy Studenti:...

Paradigmata programování II Korutiny a nedeterminismus

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Stream API. Petr Krajča. Základy programovaní 4 (Java) Katedra informatiky Univerzita Palackého v Olomouci

Slepé prohledávání do šířky Algoritmus prohledávání do šířky Při tomto způsobu prohledávání máme jistotu, že vždy nalezneme koncový stav, musíme ale p

Paradigmata programování 1

PARADIGMATA PROGRAMOVÁNÍ 2A MUTACE

Paradigmata programování 1

Paradigmata programování II Přednáška 6: Líné vyhodnocování, proudy a kešované vyhodnocování

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 3.4.

PARADIGMATA PROGRAMOVÁNÍ 2 KORUTINY, NEDETERMINISMUS

Semestrální úloha č. 1 z předmětu Moderní programovací postupy Studenti:...

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ

ALGORITMIZACE PRAKTICKÉ

Projekt OPVK - CZ.1.07/1.1.00/ Matematika pro všechny. Univerzita Palackého v Olomouci

Funkcionální programování úvod

Evolventní interpolace (INVCW, INVCCW)

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Hanojská věž. T2: prohledávání stavového prostoru. zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3]

Databázové systémy. Přednáška 1

Univerzita Palackého v Olomouci

PŘIJÍMACÍ TEST z informatiky a matematiky pro navazující magisterské studium Fakulta informatiky a managementu Univerzity Hradec Králové

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.

Unity a Objekty (NMIN102) RNDr. Michal Žemlička, Ph.D.

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Jazyky pro umělou inteligenci

Funkcionální programování. Kristýna Kaslová

PARADIGMATA PROGRAMOVÁNÍ 2A MAKRA III

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++

Třetí skupina zadání projektů do předmětu Algoritmy II, letní semestr 2017/2018

Programování II. Návrh programu II

Paralelní programování

Konstruktory a destruktory

Zadání semestrálního projektu Algoritmy II. letní semestr 2017/2018

Databázové systémy. Ing. Radek Holý

10. cvičení z Matematické analýzy 2

Základy programování (IZP)

Základy programování (IZP)

KOMPLEXNÍ VZDĚLÁVÁNÍ KATEDRA STROJNÍ SPŠSE a VOŠ LIBEREC

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.

Cvičení 7: Delphi objekty CheckedBox, Radio- Button, EditBox

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Gymnázium Jiřího Ortena, Kutná Hora

GEOGRAFICKÉ INFORMAČNÍ SYSTÉMY CVIČENÍ 2

PROSTOROVÉ DOTAZOVACÍ JAZYKY. (Maroš Kasinec, Jakub Kúdela)

Definice uživatelského typu. Uživatelem definované typy. Součinové datové typy. Součtové datové typy. FLP - Uživatelem definované typy

Základní datové struktury

(pracovní verze textu určená pro studenty)

KTE / ZPE Informační technologie

PARADIGMATA PROGRAMOVÁNÍ 2A MAKRA I

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

Programování II. Polymorfismus

Programování II. Abstraktní třída Vícenásobná dědičnost 2018/19

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 19.2.

Hlavní užitečné funkce Visual LISPu jsou:

EMCO Sinumerik 810 M - frézování

LEKCE 6. Operátory. V této lekci najdete:

Algoritmizace prostorových úloh

Programování II. Modularita 2017/18

Algoritmizace prostorových úloh

Geometrické algoritmy pro počítačovou grafiku

8 Třídy, objekty, metody, předávání argumentů metod

Parsování v Haskellu, knihovna Parsec

Geometrické praktikum

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

Manuál. 2D čárový rastr

Jazyk Scheme: jeho syntax a sémantika

EXTRAKT z mezinárodní normy Extrakt nenahrazuje samotnou technickou normu, je pouze informativním materiálem o normě.

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.

PARADIGMATA PROGRAMOVÁNÍ 2 AKTUÁLNÍ POKRAƒOVÁNÍ

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Aleš Najman [ÚLOHA 22 KONTROLA A VLASTNOSTI TĚLES]

Paradigmata programování 1 poznámky k přednášce. 3. Rekurze 1

Programování v C++ 1, 16. cvičení

Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++

Dokumentace k semestrální práci z předmětu PT

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 15 VĚTRACÍ OTVOR]

Hra života (Game of Life)

První cestou, jak vynechat jakákoliv data v grafu, je jejich skrytí, ať už přímo či filtrem aplikovaným na řádcích.

Transkript:

Paradigmata programování 2 6. cvičení Radek Janoštík Univerzita Palackého v Olomouci 18.3.2019 Radek Janoštík (Univerzita Palackého v Olomouci) Paradigmata programování 2 18.3.2019 1 / 11

Vedlejší efekt Co se děje při: > (let ((x 2) (y 3)) (+ x y)) Co se děje při: > (setf (x 10)) Jaký je mezi tím rozdíl? Radek Janoštík (Univerzita Palackého v Olomouci) Paradigmata programování 2 18.3.2019 2 / 11

Lexikální uzávěry počet aplikací funkce (let ((count 0)) (defun fact (n) (setf count (+ count 1)) (if (= n 0) 1 (* n (fact (- n 1))))) (defun fact-cc () count) ) Jak přesně se vyhodnotí předchozí kód? Radek Janoštík (Univerzita Palackého v Olomouci) Paradigmata programování 2 18.3.2019 3 / 11

Lexikální uzávěry 1. úkol Napište funkce fact a last-fact funkce fact počítá faktoriál z daného čísla, jak jsme zvyklí funkce last-fact vrací v páru poslední argument a výsledek vypočítaný funkcí fact > (fact 3) 6 > (last-fact) (3. 6) > (fact 20) 2432902008176640000 > (last-fact) (20. 2432902008176640000) Radek Janoštík (Univerzita Palackého v Olomouci) Paradigmata programování 2 18.3.2019 4 / 11

Reprezentace datových struktur s mutátory Práce s abstraktními datovými strukturami potřebujeme konstruktor, selektory Pro mutovatelnost potřebujeme mutátory Můžeme struktury reprezentovat lexikálními uzávěry (defun my-cons (x y) (lambda (what &optional val) (case what (car x) (cdr y) (set-car (setf x val)) (set-cdr (setf y val))))) Popište, co se děje při vyhodnocení předchozího kódu Radek Janoštík (Univerzita Palackého v Olomouci) Paradigmata programování 2 18.3.2019 5 / 11

Reprezentace datových struktur s mutátory Selectory a mutátory: (defun my-car (c) (funcall c car)) (defun my-cdr (c) (funcall c cdr)) (defun my-set-car (c val) (funcall c set-car val)) (defun my-set-cdr (c val) (funcall c set-cdr val)) Jak tedy vytvoříte pár? Jak zjistíte jeho první prvek? Jak nastavíte jeho druhý prvek? Radek Janoštík (Univerzita Palackého v Olomouci) Paradigmata programování 2 18.3.2019 6 / 11

Reprezentace datových struktur s mutátory 2. úkol Implementujte pomocí uzávěrů datovou strukturu point reprezentující bod v rovině daný kartézskými souřadnicemi. Struktura bude mít konstruktor make-point, selektory x a y a mutátory set-x a set-y. Radek Janoštík (Univerzita Palackého v Olomouci) Paradigmata programování 2 18.3.2019 7 / 11

Reprezentace datových struktur s mutátory 3. úkol Napište funkci point-distance zjišt ující vzdálenost dvou bodů implementovaných jako struktury z předchozího příkladu. Čím se bude funkce lišit od analogických funkcí z minulého semestru? Radek Janoštík (Univerzita Palackého v Olomouci) Paradigmata programování 2 18.3.2019 8 / 11

Reprezentace datových struktur s mutátory 4. úkol Implementujte pomocí uzávěrů datovou strukturu circle reprezentující kruh v rovině daný středem a poloměrem. Poloměr kruhu je číslo, střed je bod reprezentovaný strukturou z minulých příkladů. Struktura bude mít konstruktor make-circle, selektory radius, center a mutátor set-radius (mutátor set-center neprogramujte). Radek Janoštík (Univerzita Palackého v Olomouci) Paradigmata programování 2 18.3.2019 9 / 11

Reprezentace datových struktur s mutátory 5. úkol Napište funkci circle-area, která zjistí plochu kruhu reprezentovaného datovou strukturou z předchozího příkladu. Radek Janoštík (Univerzita Palackého v Olomouci) Paradigmata programování 2 18.3.2019 10 / 11

Reprezentace datových struktur s mutátory 6. úkol Upravte definici struktur point a circle, aby bylo možné implementovat predikáty pointp, circlep Dané predikáty implementujte Radek Janoštík (Univerzita Palackého v Olomouci) Paradigmata programování 2 18.3.2019 11 / 11