Functional and Logic Programming Functional languages
|
|
- Roman Urban
- před 6 lety
- Počet zobrazení:
Transkript
1 Functional and Logic Programming Functional languages Ing. Marek Běhálek FEI VŠB-TUO A-1018 / marek.behalek@vsb.cz This presentation is based on original course materials coming from doc. Ing Miroslav Beneš Ph.D.
2 Introduction - Language classification Imperativní - programy jsou posloupnosti základních příkazů (nejčastěji přiřazení) s odpovídajícími řídicími strukturami (např. cykly), jež určují, které příkazy se budou provádět a v jakém pořadí. C, Pascal, Fortran, JSI Deklarativní jazyky - popisujeme, co se má vypočítat, ne jak. Logické - programy jsou kolekcemi tvrzení v konkrétní logice (nejčastěji predikátové) Prolog, Goedel Funkcionální - programy se popisují jako soustavy rovností s aplikacemi funkcí na hodnoty. FP, LISP, Scheme, ML, Haskell Programming languages 2
3 History Teoretické začátky Alonzo Church 30. léta - lambda-kalkul jako základ teorie vyčíslitelnosti Alan Turing ukázal, že stroj může řešit problémy "programování ve strojovém kódu omezuje rychlost a snadnost programování počítačů John von Neumann pojem paměti základní model většiny současných počítačů návrh zkratek pro Mark I Programming languages 3
4 History Language and computer s architecture Omezení jazyku na to, co lze efektivně implementovat na současných procesorech. Von Neumannova architektura Model klasických procesorů Základ klasických jazyků Funkcionální jazyky Backus (1978, Turing Adward) kritika přístupu od architektury k jazyku Funkcionální jazyky jsou efektivnější než imperativní Lze dokazovat vlastnosti programů Jednoduše je lze paralelizovat Založeno na algebraických pravidlech Malá efektivita implementace možné optimalizace Programming languages 4
5 Funkcionální programování Rozdíly mezí imperativními a deklarativními jazyky Imperativní jazyky Program má implicitní stav, který se modifikuje konstrukcemi programovacího jazyka. Explicitní pojem pořadí příkazů Vyjadřuje, jak se má program vyhodnocovat Vychází z aktuální (Von Neummanovy) architektury počítačů Jednoduchá a efektivní realizace Deklarativní jazyky Program nemá implicitní stav. Program je tvořen výrazy, ne příkazy. Popisujeme co se má spočítat, ne jak. Není dáno pořadí příkazu. Efektivní implementace vyžaduje komplexní optimalizace. Funkcionální jazyky x Relační (logické) jazyky Programming languages 5
6 Funkcionální programování Funkcionální programovací jazyky (1) Vycházejí z λ-kalkulu základním modelem výpočtu je matematický pojem Funkce aplikované na argument a vypočítávající deterministicky její výsledek. Program je složen s funkcí bez vedlejších efektů. Funkce jsou brány jako běžné hodnoty ( first-class values ). Funkcionální jazyky mají lepší mechanismus abstrakce Možnost abstrahovat chování pomocí funkcí vyššího řádu. Program je budován z funkcí jejich kompozicí. Většinou mnohem stručnější programy Funkcionální programovací jazyky neobsahují přiřazení, příkazy, cykly atd. Opakování je řešeno pomocí rekurze. Přiřazení má matematický význam. Proměnná má v daném kontextu vždy tutéž hodnotu referenční transparence. Programming languages 6
7 Funkcionální programování Funkcionální programovací jazyky (2) Umožňují nové algebraické přístupy Lazy evaluation ( x eager evaluation) Možnost používat potencionálně nekonečné struktury. Možnost oddělení dat od řízení nemusíme se starat o to, jak proběhne vyhodnocení. Umožňuje nové přístupy k vývoji programů Možnost dokazovat programy Možnost transformovat program na základě algebraických vlastností Umožňuje lepší využití paralelního provádění programů Jednoduchá dekompozice programů na části, které lze vyhodnocovat paralelně. Potencionálně příliš mnoho paralelismů. Možnost kompozice dvou paralelních úloh jednoduchou kompozicí funkcí. Programming languages 7
8 Funkcionální programování - λ-kalkul 1930 Alonzo Church netypovaný λ-kalkul matematická teorie funkcí Základ všech funkcionálních jazyků Některé konstrukce i v imperativních jazycích (např. Python) Programming languages 8
9 Funkcionální programování - Syntaxe λ-kalkulu Proměnné x, y, z, f, g, λ-abstrakce (λx. e) Aplikace (e 1 e 2 ) Konvence pro závorky λx. λy. e 1 e 2 = (λx. (λy. e 1 e 2 )) e 1 e 2 e 3 = ((e 1 e 2 ) e 3 ) Programming languages 9
10 Funkcionální programování - Proměnná označuje libovolnou hodnotu v daném kontextu označuje vždy tutéž hodnotu (neexistuje možnost přiřazení) vázaná a volná proměnná λ x. f x vázaná volná Programming languages 10
11 Funkcionální programování - λ-abstrakce λ x. e Funkce s parametrem x a tělem e λ x y. e Funkce s parametry x, y a tělem e ekvivalentní zápisu λ x. (λ y. e) λ e. e (λ f x (f x x)) (λ f x (f x x)) Programming languages 11
12 Funkcionální programování - Aplikace (e 1 e 2 ) aplikace Function e 1 na argument e 2 (f x y) aplikace Function (f x) na argument y aplikace Function f na argumenty x a y Programming languages 12
13 Funkcionální programování - Normalizační teorémy redex --- reducible expression výraz, který lze dále redukovat; α-redex, β-redex normální forma výrazu výraz neobsahuje žádný β-redex Church-Rosserovy teorémy Pokud e1 e2, pak existuje výraz e takový, že e1 e a e2 e Pokud e1 e2 a e2 je v normální formě, pak existuje redukční posloupnost z e1 do e2 (normální redukční posloupnost) Pokud existuje normální forma, lze k ní dojít normální redukční posloupností (leftmost outermost redex) Programming languages 13
14 Haskell - Haskell září 1991 Gofer Experimental language Mark P. Jones únor 1995 Hugs Hugs98 Nearly full implementation of programming language Haskell 98 Some extension implemented Základní zdroje Language specification and other resources Installation packages (Win / Unix) User s manual (is a part of installation) Programming languages 14
15 Haskell Hugs Interpret Basic evaluation: calculator $ hugs Prelude> 2*(3+5) 16 Script: containing user s definitions $ hugs example.hs Editing of source code :edit [file.hs] :e Loading of source code :load [file.hs] :reload Exiting work :quit Help :? Programming languages 15
16 Haskell Scritp example.hs module Example where -- Function computing sum of two numbers sum x y = x + y Example.lhs > module Example where Function computing factorial > f n = if n == 0 then 1 else n * f (n-1) Programming languages 16
17 Haskell Data types(1) Basic data types 1::Int a ::Char True,False::Bool 3.14::Float Lists [a] Empty list [] Non-empty list (x:xs) 1:2:3:[] :: [Int] [1,2,3] :: [Int] Ordered tuples (a,b,c,...) (1,2) :: (Int,Int) (1,['a','b'])::(Int, [Char]) () :: () Programming languages 17
18 Haskell Data types(2) Function a->b factorial :: Int -> Int sum:: Int -> Int -> Int plus :: (Int, Int) -> Int User defined data types data Color = Black White data Tree a = Leaf a Node a (Tree a) (Tree a) type String = [Char] type Table a = [(String, a)] Programming languages 18
19 Haskell Type classes Type class set of types with specific operations Num: +, -, *, abs, negate, signum, Eq: ==, /= Ord: >, >=, <, <=, min, max Constrains, type class specification elem :: Eq a => a -> [a] -> Bool minimum :: Ord a => [a] -> a sum :: Num a => [a] -> a Programming languages 19
20 Haskell Function definition Equation and pattern unification (pattern matching): f pat11 pat12... = rhs1 f pat21 pat22... = rhs2... First corresponding equation is chosen. If there is none error Programming languages 20
21 Haskell Patterns variable inc x = x + 1 constant not True = False not False = True List length [] = 0 length (x:xs) = 1 + length xs tupels plus (x,y) = x+y User s type constructor nl (Leaf _) = 1 nl (Node _ l r) = (nl l) + (nl r) Named pattern s parts duphd p@(x:xs) = x:p Another patterns - n+k fact 0 = 1 fact (n+1) = (n+1)*fact n Programming languages 21
22 Haskell Example Factorial fakt1 n = if n == 0 then 1 else n * fakt1 (n-1) fakt2 0 = 1 fakt2 n = n * fakt2 (n-1) fakt3 0 = 1 fakt3 (n+1) = (n+1) * fakt3 n fakt4 n n == 0 = 1 otherwise = n * fakt4 (n-1) Fibonacci numbers fib :: Int -> Int fib 0 = 0 fib 1 = 1 fib (n+2) = fib n + fib (n+1) Programming languages 22
23 Haskell Example List length length [] = 0 length (x:xs) = 1 + length xs Comment: be aware of name conflict with previously defined functions! module Example where import Prelude hiding(length) length [] = 0 length (_:xs) = 1 + length xs Programming languages 23
24 Haskell Local definition Construction let... in f x y = let p = x + y q = x y in p * q Construction where f x y = p * q where p = x + y q = x - y Programming languages 24
25 Haskell Partial function application inc x = 1 + x inc x = add 1 x inc = add 1 inc = (+1) = (1+) add = (+) Eta reduction Point free programming lcasestring s = map tolower s lcasestring = map tolower Programming languages 25
26 Haskell Lambda abstraction Using function like a parameter nonzero xs = filter p xs where p x = x /= 0 nonzero xs = filter (/= 0) xs nonzero xs = filter (\x -> x/=0) xs \ x -> e λx. e inc = \x -> x+1 plus = \(x,y) -> x + y dividers n = filter (\m -> n `mod` m == 0) [1..n] Programming languages 26
27 Haskell Example Example creating a list of squared numers dm [] = [] dm (x:xs) = sq x : dm xs where sq x = x * x List s ordering (quicksort) qs [] = [] qs (x:xs) = let ls = filter (< x) xs rs = filter (>=x) xs in qs ls ++ [x] ++ qs rs Programming languages 27
Programovací jazyk Haskell
Programovací jazyk Haskell Ing. Lumír Návrat katedra informatiky, D 403 59 732 3252 Historie září 1991 Gofer experimentální jazyk Mark P. Jones únor 1995 Hugs Hugs98 téměř úplná implementace jazyka Haskell
Programovací í jazyk Haskell
Historie Programovací í jazyk Haskell doc. Dr. Ing. Miroslav Beneš katedra informatiky, A-1007 59 732 4213 září 1991 Gofer experimentální jazyk Mark P. Jones únor 1995 Hugs Hugs98 téměř úplná implementace
Funkcionální programování. Kristýna Kaslová
Funkcionální programování Kristýna Kaslová Historie Alonzo Church (30. léta) Netypovaný lambda kalkul Základ prvních funkcionálních jazyků Jeho konstrukce i v mnoha současných programovacích jazycích (Python)
Funkcionální programování
Funkcionální programování Typované - Haskell Netypované - Lisp, Scheme λ-kalkul Teoretický základ funkcionálniho programování Lambda kalkul analyzuje funkce nikoli z hlediska původního matematického smyslu
IB111 Úvod do programování skrze Python Přednáška 13
IB111 Úvod do programování skrze Python Přednáška 13 Programovací jazyky Nikola Beneš 14. prosinec 2016 IB111 přednáška 13: programovací jazyky 14. prosinec 2016 1 / 21 Osnova dnešní přednášky Programovací
Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program
Denotační sémantika programovacího jazyka doc. Dr. Ing. Miroslav Beneš katedra informatiky, A-1007 59 732 4213 Obsah přednášky Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup
Definice uživatelského typu. Uživatelem definované typy. Součinové datové typy. Součtové datové typy. FLP - Uživatelem definované typy
Uživatelem definované typy Ing. Lumír Návrat katedra informatiky, A 1018 59 732 3252 Definice uživatelského typu data Color = Red Green Blue Color typový konstruktor Red / Green / Blue datové konstruktory
IB015 Neimperativní programování. Časová složitost, Typové třídy, Moduly. Jiří Barnat Libor Škarvada
IB015 Neimperativní programování Časová složitost, Typové třídy, Moduly Jiří Barnat Libor Škarvada Sekce IB015 Neimperativní programování 07 str. 2/37 Časová složitost Časová složitost algoritmu IB015
IB015 Neimperativní programování. Seznamy, Typy a Rekurze. Jiří Barnat Libor Škarvada
IB015 Neimperativní programování Seznamy, Typy a Rekurze Jiří Barnat Libor Škarvada Sekce IB015 Neimperativní programování 02 str. 2/36 Uspořádané n-tice a seznamy Programování a data IB015 Neimperativní
IB111 Úvod do programování skrze Python Přednáška 13
IB111 Úvod do programování skrze Python Přednáška 13 Programovací jazyky Nikola Beneš 18 prosinec 2015 IB111 přednáška 13: programovací jazyky 18 prosinec 2015 1 / 21 Osnova dnešní přednášky Programovací
Martin Hejtmánek hejtmmar@fjfi.cvut.cz http://kmlinux.fjfi.cvut.cz/ hejtmmar
Základy programování Martin Hejtmánek hejtmmar@fjfi.cvut.cz http://kmlinux.fjfi.cvut.cz/ hejtmmar Počítačový kurs Univerzity třetího věku na FJFI ČVUT Pokročilý 21. května 2009 Dnešní přednáška 1 Počátky
Úvod. Programovací paradigmata
.. Úvod. Programovací paradigmata Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Cíl: programování efektivně a bezpečně Programovací techniky
Programovací jazyky. Ing. Marek Běhálek Katedra informatiky FEI VŠB-TUO A-1018 /
Programovací jazyky Ing. Marek Běhálek Katedra informatiky FEI VŠB-TUO A-1018 / 597 324 251 http://www.cs.vsb.cz/behalek marek.behalek@vsb.cz Obsah Co je to programovací jazyk Vývoj programovacích jazyků
Funkcionální programování úvod
Funkcionální programování úvod Imperativní jazyky založeny na von Neumann architektuře primárním kriteriem je efektivita Modelem je Turingův stroj Základní konstrukcí je příkaz Příkazy mění stavový prostor
Paradigmata programování II Přednáška 1: Vedlejší efekt
Paradigmata programování II Přednáška 1: Vedlejší efekt Vilém Vychodil Katedra informatiky, Univerzita Palackého v Olomouci 15. února 2007 Vilém Vychodil (UP Olomouc) PP II, Př. 1: Vedlejší efekt 15. února
IB111 Programování a algoritmizace. Programovací jazyky
IB111 Programování a algoritmizace Programovací jazyky Programovací jazyky Programovací jazyk Prostředek pro zápis algoritmů, jež mohou být provedeny na počítači Program Zápis algoritmu v programovacím
IB015 Neimperativní programování. Organizace a motivace kurzu, programovací jazyk Haskell. Jiří Barnat
IB015 Neimperativní programování Organizace a motivace kurzu, programovací jazyk Haskell Jiří Barnat Sekce IB015 Neimperativní programování 01 str. 2/36 Organizace kurzu Cíle kurzu IB015 Neimperativní
Programovací jazyk C# Verze jazyka 3.0
Programovací jazyk C# Verze jazyka 3.0 Ing. Marek Běhálek Katedra informatiky FEI VŠB-TUO A-1018 / 597 324 251 http://www.cs.vsb.cz/behalek marek.behalek@vsb.cz V přednášce jsou použity části prezentace
Programovací jazyk. Ing. Marek Běhálek Katedra informatiky FEI VŠB-TUO A-1018 /
Programovací jazyk C# Verze jazyka 3.0 Ing. Marek Běhálek Katedra informatiky FEI VŠB-TUO A-1018 / 597 324 251 http://www.cs.vsb.cz/behalek marek.behalek@vsb.cz V přednášce jsou použity části prezentace
Programovací jazyk C# Verze jazyka 3.0
Programovací jazyk C# Verze jazyka 3.0 Ing. Marek Běhálek Katedra informatiky FEI VŠB-TUO A-1018 / 597 324 251 http://www.cs.vsb.cz/behalek marek.behalek@vsb.cz V přednášce jsou použity části prezentace
Denotační sémantika. Marek Běhálek
Denotační sémantika Marek Běhálek Katedra informatiky, FEI, Vysoká škola báňská Technická universita Ostrava 17. listopadu 15, Ostrava-Poruba 708 33 Česká republika 29. listopadu 2015 M. Běhálek (VŠB-TUO)
Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář
Vazba (binding) Tabulka symbolů Miroslav Beneš Dušan Kolář vazba = spojení mezi entitou a vlastností okamžik vazby (binding time) při návrhu jazyka při implementaci jazyka během překladu/spojování/zavádění
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
Hanojská věž Stavový prostor 1. množina stavů S = {s} 2. množina přechodů mezi stavy (operátorů) Φ = {φ} s k = φ ki (s i ) zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3] který tah
IB015 Neimperativní programování. Redukční strategie, Seznamy program QuickCheck. Jiří Barnat Libor Škarvada
IB015 Neimperativní programování Redukční strategie, Seznamy program QuickCheck Jiří Barnat Libor Škarvada Sekce IB015 Neimperativní programování 05 str. 2/34 Redukční strategie Redukce, redukční strategie
Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)
Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog
Programming languages and compilers Programming languages
Programming languages and compilers Programming languages Ing. Marek Běhálek FEI VŠB-TUO A-1018 / 597 324 251 http://www.cs.vsb.cz/behalek marek.behalek@vsb.cz This presentation is based on original course
Programming languages and compilers Programming languages
Programming languages and compilers Programming languages Ing. Marek Běhálek FEI VŠB-TUO A-1018 / 597 324 251 http://www.cs.vsb.cz/behalek marek.behalek@vsb.cz This presentation is based on original course
PARADIGMATA PROGRAMOVÁNÍ 2A VEDLEJŠÍ EFEKT
KATEDRA INFORMATIKY, P RÍRODOV EDECKÁ FAKULTA UNIVERZITA PALACKÉHO, OLOMOUC PARADIGMATA PROGRAMOVÁNÍ 2A VEDLEJŠÍ EFEKT Slajdy vytvoril Vilém Vychodil Jan Konecný (KI, UP Olomouc) PP 2A, Lekce 1 Vedlejší
Jaký programovací jazyk učit jako první a jak ho učit?
Vojtěch Merunka Katedra informačního inženýrství PEF ČZU Praha Jaký programovací jazyk učit jako první a jak ho učit? strana 1 Motivace dříve strana 2 Motivace... pokračování dnes strana 3 Obsah presentace
Motivace. Vstup a výstup. Minimální komunikace. Motivace. ÚDPJ - Vstup a výstup. Ing. Lumír Návrat katedra informatiky, A
Motivace Vstup a výstup Ing. Lumír Návrat katedra informatiky, A-1018 59 732 3252 Načtení čísla val :: Int val = 42 function :: Int -> Int function = val + n inputint :: Int inputdiff = inputint - inputint
11. Přehled prog. jazyků
Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 1 Základy algoritmizace 11. Přehled prog. jazyků doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze
Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy
Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou
Algoritmizace a programování
Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu
1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata
1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata Studijní cíl Tento první blok celého kurzu zaměřen na zvládnutí základních pojmů z oblasti programování a
VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
Program a životní cyklus programu
Program a životní cyklus programu Program algoritmus zapsaný formálně, srozumitelně pro počítač program se skládá z elementárních kroků Elementární kroky mohou být: instrukce operačního kódu počítače příkazy
Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní
Základy jazyka C# doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Architektura.NET Historie Vlastnosti
Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)
Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog
SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů
SPJA, cvičení 1 ipython, python, skripty základy syntaxe: základní datové typy, řetězce podmínky: if-elif-else, vyhodnocení logických výrazů cykly: for, while kolekce: seznam, n-tice, slovník funkce, list
JAVA. Další jazyky kompilovatelné do Java byte-code
JAVA Další jazyky kompilovatelné do Java byte-code Přehled Scala objektový a funkcionální jazyk Closure funkcionální jazyk dialekt Lispu Groovy skritpovací jazyk Kotlin nová Java Jython Java implementace
Martin Milata, <256615@mail.muni.cz> 27.11.2007. Pokud je alespoň jeden rozměr čokolády sudý (s výjimkou tabulky velikosti 1x2, která už je od
IB000 Lámání čokolády Martin Milata, 27.11.2007 1 Čokoláda s alespoň jedním sudým rozměrem Pokud je alespoň jeden rozměr čokolády sudý (s výjimkou tabulky velikosti 1x2, která už
PG 9.5 novinky ve vývoji aplikací
PG 9.5 novinky ve vývoji aplikací P2D2 2016 Antonín Houska 18. února 2016 Část I GROUPING SETS, ROLLUP, CUBE Agregace Seskupení řádků tabulky (joinu) do podmnožin podle určitého kĺıče. Za každou podmnožinu
Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace
Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace Číslo projektu Číslo materiálu Autor Průřezové téma Předmět CZ.1.07/1.5.00/34.0565 VY_32_INOVACE_284_Programovací_jazyky
Programovací jazyky. Ing. Marek Běhálek Katedra informatiky FEI VŠB-TUO A-1018 /
Programovací jazyky Ing. Marek Běhálek Katedra informatiky FEI VŠB-TUO A-1018 / 597 324 251 http://www.cs.vsb.cz/behalek marek.behalek@vsb.cz Obsah Co je to programovací jazyk Překlad a zpracování programu
George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu
A Tutorial Advances in query languages for similarity-based databases George J. Klir Petr Krajča State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu Palacky University,
Abstraktní datové typy: zásobník
Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní
Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44
Algoritmizace a programování Ak. rok 2012/2013 vbp 1. ze 44 Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251
9 - Map/filter/reduce OMO. Ing. David Kadleček, PhD
9 - Map/filter/reduce OMO Ing. David Kadleček, PhD kadlecd@fel.cvut.cz, david.kadlecek@cz.ibm.com 1 Map/filter/reduce v Java Map/filter/reduce v Java = Java 1.8 streams API Funkcionální přístup (řetězíme
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model
Databázové systémy Tomáš Skopal - relační model * relační kalkuly Osnova přednášky relační kalkuly doménový n-ticový Relační kalkuly využití aparátu predikátové logiky 1. řádu pro dotazování rozšíření
14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Algoritmizace a programování
Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech
MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Stručný úvod do programování v jazyce C 2.díl. České vysoké učení technické Fakulta elektrotechnická
MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Stručný úvod do programování v jazyce C 2.díl České vysoké učení technické Fakulta elektrotechnická A1B14MIS Mikroprocesory pro výkonové systémy 07 Ver.1.10 J. Zděnek,
Principy XQuery. funkcionální jazyk vše je výraz, jehož vyhodnocením vznikne určitá hodnota základní typy stejné jako v XML Schema:
Realizováno za finanční podpory ESF a státního rozpočtu ČR v rámci v projektu Zkvalitnění a rozšíření možností studia na TUL pro studenty se SVP reg. č. CZ.1.07/2.2.00/29.0011 XQuery XQuery dotazovací
Řídicí struktury. alg3 1
Řídicí struktury Řídicí struktura je programová konstrukce, která se skládá z dílčích příkazů a předepisuje pro ně způsob provedení Tři druhy řídicích struktur: posloupnost, předepisující postupné provedení
Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.
Algoritmus Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. nebo Algoritmus lze definovat jako jednoznačně určenou
Tvorba aplikace typu klient/server pomocí Windows Communication Foundation
Tvorba aplikace typu klient/server pomocí Windows Communication Foundation Petr Kafka Ing. Václav Novák, CSc. Školní rok: 2008-09 Abstrakt Tato bakalářská práce se bude zabývat využitím programovacího
Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí
02 Jazyk C - je imperativní říkáme, co se má udělat, voláme příkazy - další imperativní jazyky: Pascal, Java, C/C++ apod. - na rozdíl od jazyků deklarativních např. Prolog, Haskell, Scheme, Lisp (funkcionální
Programovací jazyk Pascal
Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce
SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:
SII - Informatika Způsob vyhodnocení: Při vyhodnocení budou za nesprávné odpovědi strhnuty body. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá: a) sekundární klíč b)
Komponenty v.net. Obsah přednášky
doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Rozdíl mezi COM a.net Distribuce komponent Programování
2011 Jan Janoušek BI-PJP. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE TRANSFORMACE GRAMATIK NA LL(1) GRAMATIKU. TABULKA SYMBOLŮ. VNITŘNÍ REPREZENTACE: AST. JAZYK ZÁSOBNÍKOVÉHO POČÍTAČE. RUNTIME PROSTŘEDÍ. 2011 Jan Janoušek BI-PJP Evropský
Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek
5 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Jazyk SQL, Spojení tabulek, agregační dotazy, jednoduché a složené
Programovací jazyky. Obsah. Proč používáme programovací jazyky? Programovací jazyk
Obsah Programovací jazyky doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Co je to programovací jazyk Překlad a zpracování
Jakub Čermák jakub@jcermak.cz, http://www.jcermak.cz Microsoft Student Partner
Jakub Čermák jakub@jcermak.cz, http://www.jcermak.cz Microsoft Student Partner Co paralelizace přinese? Jak paralelizovat? Jak si ušetřit práci? Jak nedělat běžné paralelizační chyby? Race condition, deadlocky
8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy
Základní pojmy Stromy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Graf uzly hrany orientované / neorientované Souvislý
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE
Algoritmizace prostorových úloh
INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová
PB161 Základy OOP. Tomáš Brukner
PB161 Základy OOP Tomáš Brukner Sylabus - Co je to OOP? Jaké jsou základní principy OOP? Jak se projevují v C++? https://cs.wikipedia.org/wiki/strahovská_knihovna SELECT * FROM books WHERE pages < 250
Compression of a Dictionary
Compression of a Dictionary Jan Lánský, Michal Žemlička zizelevak@matfyz.cz michal.zemlicka@mff.cuni.cz Dept. of Software Engineering Faculty of Mathematics and Physics Charles University Synopsis Introduction
6 Příkazy řízení toku
6 Příkazy řízení toku Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům pro řízení toku programu. Pro všechny tyto základní
Teoretické minimum z PJV
Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov
Paralelní programování
Paralelní programování přednášky Jan Outrata únor duben 2011 Jan Outrata (KI UP) Paralelní programování únor duben 2011 1 / 14 Atomické akce dále nedělitelná = neproložitelná jiným procesem izolovaná =
Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT
Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT david@wug.cz @gesvindr Logické zpracování dotazu Jazyk T-SQL je deklarativní Popisujeme,
PARADIGMATA PROGRAMOVÁNÍ 2 PŘÍSLIBY A LÍNÉ VYHODNOCOVÁNÍ
KATEDRA INFORMATIKY, PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO, OLOMOUC PARADIGMATA PROGRAMOVÁNÍ 2 PŘÍSLIBY A LÍNÉ VYHODNOCOVÁNÍ Slajdy vytvořili Vilém Vychodil a Jan Konečný (KI, UP Olomouc) PP 2, Lekce
Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu
1 Podklady předmětu pro akademický rok 2006/2007 Radim Farana Obsah 2 Obsah předmětu, Požadavky kreditového systému, Datové typy jednoduché, složené, Programové struktury, Předávání dat. Obsah předmětu
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Úvod z historie. Kompilátory. Kompilace / Kompilátor Compile / Compiler. Pojem kompilátoru. Úvod z historie
Úvod z historie RNDr. Miroslav Benedikovič John Louis von Neumann r. 1946 nová koncepce počítače (společná paměť pro kód programu a zpracovávaná data) vytvořila podmínky pro vznik softvéru na přípravu
Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Logika pro každodenní přežití Stefan Ratschan Katedra číslicového návrhu Fakulta informačních technologíı České vysoké učení technické v Praze Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií
1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední
Základy C++ doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.
Základy C++ doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Základy C++ 66 / 429 Osnova přednášky
5 Přehled operátorů, příkazy, přetypování
5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování
PODOBÁ SE JAZYKU C S NĚKTERÝMI OMEZENÍMI GLOBÁLNÍ PROMĚNNÉ. NSWI162: Sémantika programů 2
PI JE JEDNODUCHÝ IMPERATIVNÍ PROGRAMOVACÍ JAZYK OBSAHUJE PODPORU ANOTACÍ NEOBSAHUJE NĚKTERÉ TYPICKÉ KONSTRUKTY PROGRAMOVACÍCH JAZYKŮ JAKO JSOU REFERENCE, UKAZATELE, GLOBÁLNÍ PROMĚNNÉ PODOBÁ SE JAZYKU C
WORKSHEET 1: LINEAR EQUATION 1
WORKSHEET 1: LINEAR EQUATION 1 1. Write down the arithmetical problem according the dictation: 2. Translate the English words, you can use a dictionary: equations to solve solve inverse operation variable
Správa paměti. doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 /
Správa paměti doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Motivace Úrovně správy paměti. Manuální
Paradigmata programování 1
Paradigmata programování 1 Program, jeho syntax a sémantika Vilém Vychodil Katedra informatiky, PřF, UP Olomouc Přednáška 1 V. Vychodil (KI, UP Olomouc) Program, jeho syntax a sémantika Přednáška 1 1 /
2. lekce Algoritmus, cyklus Miroslav Jílek
2. lekce Algoritmus, cyklus Miroslav Jílek 1/36 Algoritmus 2/36 Algoritmus je konečná posloupnost operací, která dává řešení skupiny problémů 3/36 Algoritmus je konečná posloupnost operací, která dává
1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5
Obsah Obsah 1 Programovací jazyk Pascal 1 1.1 Struktura programu v Pascalu.................... 1 2 Proměnné 2 2.1 Vstup a výstup............................ 3 3 Operátory a některé matematické funkce 5
C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++
C++ Akademie SH 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory Za áte níci C++ 20. b ezna 2011 Obsah 1 Prom nné - primitivní typy Celá ísla ƒísla s pohyblivou desetinnou árkou, typ bool 2 Podmínka
Konstruktory překladačů
Konstruktory překladačů Miroslav Beneš Dušan Kolář Konstruktor Lex generátor lexikálních analyzátorů M. E. Lesk, 1975 - pro OS Unix flex - Vern Paxson, 1990 - GNU verze určeno pro generování výstupu v
Matematika v programovacích
Matematika v programovacích jazycích Pavla Kabelíková am.vsb.cz/kabelikova pavla.kabelikova@vsb.cz Úvodní diskuze Otázky: Jaké programovací jazyky znáte? S jakými programovacími jazyky jste již pracovali?
O makrech, která umí aritmetiku s velkými čísly. Macros Which Handle Arithmetics with Big Numbers. Jan Šustek KMa PřF OU. Brejlov
O makrech, která umí aritmetiku s velkými čísly Macros Which Handle Arithmetics with Big Numbers KMa PřF OU Brejlov.. 0 O makrech, která umí aritmetiku s velkými čísly Reprezentace čísel Representation
Algoritmizace. Cíle předmětu
Cíle předmětu Algoritmizace naučit se sestavovat algoritmy řešení jednoduchých problémů a zapisovat je v jazyku Java Organizace předmětu přednášky (učast nepovinná, ale doporučená) cvičení střídavě u tabule
Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7
Pascal Katedra aplikované kybernetiky Ing. Miroslav Vavroušek Verze 7 Proměnné Proměnná uchovává nějakou informaci potřebnou pro práci programu. Má ve svém oboru platnosti unikátní jméno. (Připadne, musí
Hrátky s funkcemi. PV173 Programování v C++11. Vladimír Štill, Jiří Weiser. Fakulta Informatiky, Masarykova Univerzita. 29.
Hrátky s funkcemi PV173 Programování v C++11 Vladimír Štill, Jiří Weiser Fakulta Informatiky, Masarykova Univerzita 29. září 2014 Hrátky s funkcemi PV173 29. září 2014 1 / 23 Úvod Na co se podíváme? předávání
Paměť počítače. alg2 1
Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových
Objektově orientované programování
10. října 2011 Pragmatické informace Volitelný předmět, zápočet: zápočtový program(s dokumentací), aktivní účast na cvičení(body v CodExu), praktický test, zkouška: zkoušková písemka na objektový návrh
DTP Základy programování Úvod do předmětu
DTP Základy programování 01 - Úvod do předmětu Úvod Co již umíte? Plán předmětu Studijní materiály Způsob ukončení předmětu Základní pojmy I. Řešený problém: Řešeným nebo zpracovávaným problémem je konkrétní