Funkcionálne programovanie 2
|
|
- Kamila Woźniak
- 6 lat temu
- Przeglądów:
Transkrypt
1 Funkcionálne programovanie 2 lineárne patterny a pattern-matching množinová notácia (list comprehension) funkcionály (funkcie vyšších rádov) map, filter, foldl, foldr,... Cvičenie: Peter Borovanský, KAI, I-18, borovan(a)ii.fmph.uniba.sk funkcionálny štýl (množinová notácia a map, )
2 Porovnávanie so vzorom (pattern matching) V hlavičke klauzule, či vo where/let výraze sa môže vystytnúť vzor typu: premenné sa nesmú opakovať (lineárny pattern/term) konštruktorový vzor, n-tica reverse [] = [] reverse (a:x) = reverse x ++ [a] n+k - vzor ack 0 n = n+1 ack (m+1) 0 = ack m 1 ack (m+1) (n+1) = ack m (ack (m+1) n) wildcards (anonymné premenné) head (x:_) = x tail (_:xs) = (aliasing) zopakuj_prvy_prvok s@(x:xs) = x:s
3 @-aliasing (záležitosť efektívnosti) definujte test, či zoznam [Int] je usporiadaným zoznamom: -- prvé riešenie (ďalšie alternatívy, viď cvičenie): usporiadany :: [Int] -> Bool usporiadany [] = True usporiadany [_] = True usporiadany (x:y:ys) x < y = usporiadany (y:ys) otherwise= alias použijeme vtedy, ak chceme mať prístup (hodnotu v premennej) k celému výrazu (xs), aj k jeho častiam (y:ys), bez toho, aby sme ho najprv deštruovali a následne hneď konštruovali (čo je neefektívne): -- v tomto príklade xs = (y:ys) usporiadany''' :: [Int] -> Bool usporiadany''' [] = True usporiadany''' [_] = True usporiadany''' (x:xs@(y:ys)) = x < y && usporiadany''' xs
4 List comprehension (množinová notácia) pri písaní programov používame efektívnu konštrukciu, ktorá pripomína matematický množinový zápis. z programátorského hľadiska táto konštrukcia v sebe skrýva cyklus/rekurziu na jednej či viacerých úrovniach. Príklad: zoznam druhých mocnín čísel z intervalu : [ n*n n <- [1..100] ] { n*n n Î { 1,, 100 }} zoznam druhých mocnín párnych čísel z intervalu : [ n*n n <- [1..100], even n ] { n*n n Î { 1,, 100} & 2 n} zoznam párnych čísel zoznamu: selecteven xs = [ x x<-xs, even x ] { x x Î xs & even x } Main> selecteven [1..10] [2,4,6,8,10]
5 List comprehension (množinová notácia) Syntax [ výraz (generátor alebo test)* ] <generátor> <test> ::= <pattern> <- <výraz typu zoznam (množina)> ::= <booleovský výraz> zoznam vlastných deliteľov čísla factors n = [ i i <- [1..n-1], n `mod` i == 0 ] pythagorejské trojuholníky s obvodom <= n pyth n = [ ( a, b, c ) a <- [1..n], b <- [1..n], -- určite aj efektívnejšie... c <- [1..n], a + b + c <= n, a^2 + b^2 == c^2 ] Main> pyth 25 [(3,4,5),(4,3,5),(6,8,10),(8,6,10)] Main> factors 24 [1,2,3,4,6,8,12,24] Main> :type pyth pyth :: (Num a, Enum a, Ord a) => a -> [(a,a,a)]
6 List comprehension (matice) malá násobilka: nasobilka = [ (i, j, i*j) i <- [1..10], j <- [1..10] ] nasobilka = [ [ (i,j,i*j) j <- [1..10] ] i <- [1..10] ] type Riadok = [Int] type Matica = [Riadok] [[(1,1,1),(1,2,2),(1,3,3), ], [(2,1,2),(2,2,4),. ], [(3,1,3), ], ] :: [[(Int,Int,Int)]] type definuje typové synonymum i-ty riadok jednotkovej matice riadok i n = [ if i==j then 1 else 0 j <- [1..n]] jednotková matica jednotka n = [ riadok i n i <- [1..n] ] [(1,1,1),(1,2,2),(1,3,3), ] :: [(Int,Int,Int)] [1,0,0,0] [[1,0,0,0] [0,1,0,0] [0,0,1,0] [0,0,0,1]]
7 List comprehension (matice) sčítanie dvoch matíc vivat Pascal J scitajmatice scitajmatice m n = :: Matica -> Matica -> Matica [ [(m!!i)!!j + (n!!i)!!j j <- [0..length(m!!0)-1] ] i <- [0..length m-1] ] transponuj maticu pozdĺž hlavnej diagonály transpose transpose [] = [] transpose ([] : xss) :: Matica -> Matica = transpose xss transpose ((x:xs) : xss) = (x : [h (h:t) <- xss]) : transpose (xs : [t (h:t) <- xss]) m1 = [[1,2,3],[4,5,6],[7,8,9]] m2 = [[1,0,0],[0,1,0],[0,0,1]] m3 = [[1,1,1],[1,1,1],[1,1,1]] scitajmatice m2 m3 = [[2,1,1],[1,2,1],[1,1,2]] transpose m1 = [[1,4,7],[2,5,8],[3,6,9]] x xs xss
8 transpose v Pythone def head(xs): return xs[0] def tail(xs): return xs[1:] def transpose(xss): if xss == []: return [] else: if head(xss) == []: return transpose(tail(xss)) else: return [([head(head(xss))] + [ head(row) for row in tail(xss)])] + transpose([tail(head(xss))]+[ tail(row) for row in tail(xss)]) print(transpose([[1,2,3],[4,5,6],[7,8,9]]))
9 List comprehension (permutácie-kombinácie) vytvorte zoznam všetkých 2 n n-prvkových kombinácií {0,1} pre n=2, kombinácie 0 a 1 sú: [[0,0],[1,0],[1,1],[0,1]] kombinacie 0 = [[]] kombinacie n = [ 0:k k <- kombinacie (n-1)] ++ [ 1:k k <- kombinacie (n-1)] vytvorte permutácie prvkov zoznamu perms [] = [[]] perms x = [ a:y a <- x, y <- perms (diff x [a]) ] -- rozdieľ zoznamov x y (tie, čo patria do x a nepatria do y) diff x y = [ z z <- x, notelem z y] Main> :type perms perms :: Eq a => [a] -> [[a]] Main> :type diff diff :: Eq a => [a] -> [a] -> [a] Main> perms [1,2,3] [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
10 List comprehension (quicksort) quicksort qs :: [Int] -> [Int] qs [] = [] qs (a:as) = qs [x x <- as, x <= a] ++ [a] ++ qs [x x <- as, x > a] Main> qs [4,2,3,4,6,4,5,3,2,1,2,8] [1,2,2,2,3,3,4,4,4,5,6,8]
11 Polymorfizmus čítajte Prelude.hs obsahuje veľa použiteľných definícií tak programujú majstri... Parametrický polymorfizmus znamená, že jedným predpisom definujeme typ (funkcie, dát) pre nekonečne veľa inštancií typového parametra. zreťazenie dvoch zoznamov (++) :: [a] -> [a] -> [a] [] ++ ys = ys (x:xs) ++ ys = x : (xs++ys) vyber prvých n prvkov zo zoznamu take :: Int -> [a] -> [a] take n _ n <= 0 = [] take _ [] = [] take n (x:xs) = x : take (n-1) xs
12 QuickSort Niekedy však potrebujeme vymedziť vlastnosti typového parametra tak, aby spĺňal isté predpoklady, napr. aby dosadený typ a bolo možné: porovnávať na rovnosť (==), nerovnosť (<, >), či mal definované isté funkcie (napr. show)... Príklad: quicksort :: (Ord a) => [a] -> [a] quicksort [] = [] quicksort (b:bs) = quicksort [x x <- bs, x <= b] ++ [b] ++ quicksort [x x <- bs, x > b] predpoklady kladené na typ a spĺňal isté predpoklady sa chápe tak, aby patril do istej triedy implementujúcej požadované funkcie (napr. ==, /=, )
13 Enumerovany dátový typ (jednoduchá verzia union-type/record-case) Enum typ zodpovedá lineárnemu usporiadaniu, Int(eger), Bool, Char, Float data Color = Red Green Blue data Bool = True False data Znamka = A B C D E Fx deriving (Eq, Show, Ord) deriving( ) zamená, že požadované funkcie vymenovaných tried sú definované implicitne, syntakticky Pozná funkcie succ, pred, succ E == Fx, a pred Fx == E Triedy: Eq - umožní porovnávať na == (/=) hodnoty tohoto typu Show - umožní vypísať hodnotu tohoto typu Ord - umožní porovnávať <, > hodnoty tohoto typu
14 Typová trieda Eq class Eq a where -- trieda (Eq a) definuje (==) :: a->a->bool -- rovnosť pre a, (/=) :: a->a->bool -- nerovnosť pre a -- interface instance Eq Znamka where -- štandardná implementácia A == A = True -- ak použijem B == B = True -- data Znamka = deriving (Eq) C == C = True Fx == Fx = True _ == _ = False -- implementation
15 Typová trieda Ord Ord (je podtrieda Eq): -- triedy majú svoju hierarchiu -- ak chceme niečo porovnávať na -- <, <=, musíme vedieť == class Eq a => Ord a where -- Ord a pozná == a /= (<) :: a->a->bool -- a okrem toho aj <, >, (>) :: a->a->bool (<=) :: a->a->bool (>=) :: a->a->bool min :: a->a->a max :: a->a->a instance Ord Znamka where -- defaultná implementácia A < B = True -- data Znamka = deriving (Ord) B < C = True
16 Binárny strom - (trieda Show) Konštruktory vždy s veľkým začiatočným písmenom data TreeInt konštanta = Vrchol TreeInt TreeInt List Int -- strom s hodnotami typu Int v listoch Vrchol (List 5) (Vrchol (List 6) (List 9)) :: TreeInt class Show a where show :: a->string -- analógia str z pythonu -- analógia tostring() z javy instance Show TreeInt where -- vlastná implementácia show pre TreeInt show (List i) = show i show (Vrchol left right) = "(" ++ show left ++ "," ++ show right ++ ")" Main> Vrchol (List 5) (Vrchol (List 6) (List 9)) (5,(6,9)) Príklad: maximálna hodnota v listoch binárneho stromu typu TreeInt maxtree :: TreeInt -> Int maxtree (List x) = x maxtree (Vrchol l r) = max (maxtree l) (maxtree r)
17 Polymorfický binárny strom konštruktory data BTree a = Branch (BTree a) (BTree a) Leaf a deriving (Show) konštanta -- strom s hodnotami typu a v listoch stromu Main> Branch (Leaf 5) (Branch (Leaf 6) (Leaf 9)) -- defaultný show Branch (Leaf 5) (Branch (Leaf 6) (Leaf 9)) :: BTree Int ak nepoužijeme deriving(show) ani neinštancujeme Show pre BTree, dostaneme: Main> Branch (Leaf 5) (Branch (Leaf 6) (Leaf 9)) ERROR - Cannot find "show" function for: Príklad rekurzívnej funkcie prechádzajúcej BTree a: spoštenie stromu do zoznamu hodnôt v listoch(rekurzia na strome): flat :: BTree a -> [a] flat (Leaf x) = [x] flat (Branch left right) = (flat left) ++ (flat right)
18 Binárny vyhľadávací strom -- binárny strom s hodnotami typu t vo vnútorných vrcholoch data BVS t = Nod (BVS t) t (BVS t) Nil -- konštruktory Nod, Nil deriving (Show) konštanta: Nod (Nod Nil 1 Nil) 3 (Nod Nil 5 Nil) :: BVS Int --spĺňa x::bvs t podmienku na binárny vyhľadávací strom? jebvs :: BVS Int -> Bool jebvs Nil = True -- neefektívne ale priamočiare... jebvs (Nod left value right)=(maxbvs left)<=value && value<=(minbvs right)&& jebvs left && jebvs right --zisti maximálnu/minimálnu hodnotu v nejakom strome maxbvs :: BVS Int -> Int maxbvs Nil = minbound::int -- - = maxbvs (Nod left value right) = max (maxbvs left) (max value (maxbvs right))
19 BVS find a insert --vyhľadávanie v binárnom vyhľadávacom strome: findbvs :: (Ord t) => t -> BVS t -> Bool findbvs _ Nil = False findbvs x (Nod left value right) x == value = True x < value = findbvs x left otherwise = findbvs x right --vsunutie prvku do binárneho vyhľadávacieho stromu: insertbvs :: (Ord t) => t -> BVS t -> BVS t insertbvs x Nil = Nod Nil x Nil insertbvs x bvs@(nod left value right) x == value = bvs x < value = Nod (insertbvs x left) value right otherwise = Nod left value (insertbvs x right) --odstránenie bude na domácu úlohu...
20 Funkcia (predikát) argumentom učíme sa z Prelude.hs: zober zo zoznamu tie prvky, ktoré spĺňajú bool-podmienku (test) Booleovská podmienka príde ako argument funkcie a má typ (a -> Bool): filter :: (a -> Bool) -> [a] -> [a] filter p xs = [ x x <- xs, p x ] > filter even [1..10] [2,4,6,8,10] ako by to napísal lenivý haskellista: tripivot (x:xs) = ( filter (<x) xs, filter (==x) xs, filter (>x) xs )
21 Funkcia (predikát) argumentom učíme sa z Prelude.hs: ber zo zoznamu prvky, kým platí podmienka (test): takewhile :: (a -> Bool) -> [a] -> [a] takewhile p [] = [] takewhile p (x:xs) p x = x : takewhile p xs otherwise = [] > takewhile (>0) [1,2,-1,3,4] [1,2] vyhoď tie počiatočné prvky zoznamu, pre ktoré platí podmienka: dropwhile :: (a -> Bool) -> [a] -> [a] dropwhile p [] = [] dropwhile p xs@(x:xs') p x = dropwhile p xs' otherwise = xs > dropwhile (>0) [1,2,-1,3,4] [-1,3,4]
22 Príklad (porozdeľuj) porozdeluj :: (a -> Bool) -> [a] -> [[a]] rozdelí zoznam na podzoznamy, v ktorých súvisle platí podmienka daná 1. argumentom porozdeluj (>0) [1,2,0,3,4,5,-1,6,7] = [[1,2],[3,4,5],[6,7]] porozdeluj (\x -> x `mod` 3 > 0) [1..10] = [[1,2],[4,5],[7,8],[10]]. porozdeluj p [] = [] porozdeluj p xs = Main> porozdeluj (>0) [1,2,0,0,3,4,-1,5] takewhile p xs : [[1,2],[3,4],[5]] porozdeluj p (dropwhile (\x -> (not (p x))) (dropwhile p xs))
23 map funktor, ktorý aplikuje funkciu (1.argument) na všetky prvy zoznamu map :: (a->b) -> [a] -> [b] map f [] = [] -- klasická rekurzívna definícia map f (x:xs) = f x : map f xs map f xs = [f x x <- xs] -- pomocou list-comprehension Príklady použitia: map (+1) [1,2,3,4,5] = [2,3,4,5,6] map odd [1,2,3,4,5] = [True,False,True,False,True] and (map odd [1,2,3,4,5]) = False map head [ [1,0,0], [2,1,0], [3,0,1] ] = [1, 2, 3] map tail [ [1,0,0], [2,1,0], [3,0,1] ] = [ [0,0], [1,0], [0,1] ] map (0:) [[1],[2],[3]] = [[0,1],[0,2],[0,3]]
24 Transponuj maticu (ešte raz) transponuj :: Matica -> Matica transponuj [] = [] transponuj ([]:xss) = transponuj xss transponuj ((x:xs):xss) = (x:(map head xss)): (transponuj (xs:(map tail xss))) transpose transpose [] = [] transpose ([] : xss) :: [[a]] -> [[a]] = transpose xss transpose ((x:xs) : xss) = (x : [h (h:t) <- xss]) : transpose (xs : [t (h:t) <- xss])
25 foldr Pseudokód: def foldr(f, z, list): if list == []: return 0 else: return f((list[0]),foldr(f,z,list[1:])) print(foldr(lambda a,b: a+b, 0, [1,2,3,4,5])) foldr :: (a -> b -> b) -> b -> [a] -> b foldr f z [] = z foldr f z (x:xs) = f x (foldr f z xs) foldr f z (x:xs) = [??? ] a : b : c : [] -> f a (f b (f c z)) : f / \ / \ a : foldr f z a f / \ > / \ b : b f / \ / \ c [] c z -- g je vnorená lokálna funkcia Main> foldr (+) 0 [1..100] 5050 Main> foldr (\x y->10*y+x) 0 [1,2,3,4] 4321 foldr :: (a -> b -> b) -> b -> [a] -> b foldr f z = g where g [] = z g (x:xs) = f x (g xs) Pseudokód: from functools import reduce print(reduce(lambda a,b: a+b, [1,2,3,4,5]))
26 foldl Pseudokód: def foldl(f, z, list): if list == []: return z else: return foldl(f, f(z,list[0]),list[1:]) print(foldl(lambda a,b: a+b, 0, [1,2,3,4,5])) foldl :: (a -> b -> a) -> a -> [b] -> a foldl f z [] = z foldl f z (x:xs) = foldl f (f z x) xs foldl f z (x:xs) = [??? ] a : b : c : [] -> f (f (f z a) b) c Main> foldl (+) 0 [1..100] 5050 Main> foldl (\x y->10*x+y) 0 [1,2,3,4] 1234 Pseudokód: from functools import reduce print(reduce(lambda a,b: a+b, [1,2,3,4,5])) Pseudokód: : f / \ / \ a : foldl f z f c / \ > / \ b : f b / \ / \ c [] z a def foldlcyklus(f, z, list): acc = z while (list!=[]): acc = f(acc,list[0]) list = list[1:] return acc print(foldlcyklus(lambda a,b: a+b, 0, [1,2,3,4,5]))
27 foldr a foldl ešte raz foldl (+) 0 [1,2,3,4] foldr (+) 0 [1,2,3,4] 10 foldr max (-999) [1,2,3,4] foldl max (-999) [1,2,3,4] 4 foldr (\_ -> \y ->(y+1)) 0 [3,2,1,2,7] foldl (\x -> \_ ->(x+1)) 0 [3,2,1,2,7] foldr (\x -> \_ ->(x+1)) 0 [3,2,1,2,7] foldl (\_ -> \y ->(y+1)) 0 [3,2,1,2,7] Pseudokód: print(reduce(lambda a,b: max(a,b), [-1,2,3,4])) print(reduce(lambda a,b: max(a,b), [-1,2,3,4])) print(reduce(lambda a,b: b+1, [3,2,1,2,7])) print(reduce(lambda a,b: a+1, [3,2,1,2,7]))
28 Vypočítajte rozpoj :: [(a,b)] -> ([a],[b]) rozpoj = foldr (\(x,y) -> \(xs,ys) -> (x:xs, y:ys)) ([], []) rozpoj [(1,11),(2,22),(3,33)] ([1,2,3],[11,22,33]) foldr (-) 0 [1..100] = lebo: (1-(2-(3-(4-...-(100-0))))) = (99-100) = -50 foldl (-) 0 [1..100] = lebo: (...(((0-1)-2)-3) ) = -5050
29 Funkcia je hodnotou [a->a] je zoznam funkcií typu a->a napríklad: [(+1),(+2),(*3)] je [\x->x+1,\x->x+2,\x->x*3] čo je foldr (.) id [(+1),(+2),(*3)]?? akého je typu foldr (.) id [(+1),(+2),(*3)] 100 foldl (.) id [(+1),(+2),(*3)] 100 [a->a] 303??? lebo skladanie fcií je asociatívne: ((f. g). h) x = (f. g) (h x) = f (g (h x)) = f ((g. h) x) = (f. (g. h)) x mapf :: [a->b] -> [a] -> [b] -- rovnako dlhé zoznamy mapf [] _ = [] mapf _ [] = [] mapf (f:fs) (x:xs) = (f x):mapf fs xs [11,22,33] mapf [(+1),(+2),(+3)] [10,20,30]
30 Kvíz foldr (:) [] xs = foldr (:) ys xs = xs xs++ys foldr?? xs = reverse xs
31 Priemerný prvok Ak chceme vypočítať aritmetický priemer (a-priemer) prvkov zoznamu, matice,... potrebujeme poznať ich súčet a počet. Ako to urobíme na jeden prechod štruktúrou pomocou foldr/foldl? počítame dvojicu hodnôt, súčet a počet: priemerný prvok zoznamu priemer xs = sum/count where (sum, count) = sumcount xs sumcount xs = foldr (\x -> \(sum, count) -> (sum+x, count+1)) (0, 0) xs priemerný prvok matice je a-priemer a-priemerov riadkov matice a-priemerom hodnôt matice? sumcount' :: [[Float]] -> (Float,Float) sumcount' xs = foldr (\x -> \(sum, count)->scitaj (sumcount x) (sum, count)) (0, 0) xs where scitaj (a,b) (c,d) = (a+c, b+d) uncurry :: (a->b->c) -> (a,b) -> c uncurry f (a,b) = f a b priemer' :: [[Float]] -> Float curry :: ((a,b) -> c) -> (a->b->c) priemer' = uncurry (/). sumcount' curry g a b = g (a,b)
Elementy języka Haskell
Elementy języka Haskell Cechy języka Historia języka Proste przykłady Środowisko interakcyjne Typy i klasy Definiowanie funkcji Wyrażenia listowe Deklarowanie typów, danych i klas Monady Cechy języka zwięzłe
PARADYGMATY I JĘZYKI PROGRAMOWANIA. Haskell. (w11)
PARADYGMATY I JĘZYKI PROGRAMOWANIA Haskell. (w11) !!! 2 Brian Beckman o Monadach 3 Brian Beckman: Don't fear the Monad - YouTube Plan wykładu 4 Typy Funkcje Preludium take, cycle zip, unzip, zipwith filter,
Programowanie w języku Haskell
Programowanie w języku Haskell Strona domowa http://www.haskell.org Popularne implementacje Hugs/WinHugs GHC (The Glasgow Haskell Compiler) Źródła wykładu 1 Hal Daume: Yet Another Haskell Tutorial (http://www.cs.utah.edu/
Języki programowania Haskell
Języki programowania Haskell zadanie projektowe nr. 4 2014/15 K. Turowski, T. Goluch 1. Kompilacja, uruchamianie i Hello world Kompilacja i uruchamianie: ghc --make hello.hs./hello Interaktywny interpreter:
Języki i Paradygmaty Programowania
Języki i Paradygmaty Programowania Odkrywamy Haskell Marcin Benke 24 lutego 2014 Odkrywamy Haskell Haskell zasadniczo kompilowany, ale też interpreter: ghci $ ghci GHCi, version 7.6.2: http://www.haskell.org/ghc/
Programowanie w języku Haskell
Programowanie w języku Haskell Strona domowa www.haskell.org GHC The Glasgow Haskell Compiler www.haskell.org/platform Źródła wykładu 1 Graham Hutton: Programming in Haskell, Cambridge University Press
Haskell. Rozdział Ogólne informacje o języku
Rozdział 1 Haskell 1.1. Ogólne informacje o języku Haskell 1 jest językiem funkcyjnym, charakteryzującym się silnym typowaniem, leniwym wartościowaniem oraz możliwością stosowania paradygmatu programowania
Programowanie funkcyjne (Haskell Wprowadzenie) Kowalik Adrian
Programowanie funkcyjne (Haskell Wprowadzenie) Kowalik Adrian Programowanie funkcyjne Krótka geneza języka Haskell Polecenia i składnia języka Funkcje i wyrażenia Typy i typy klasowe Listy i krotki Programowanie
Programowanie w języku Haskell
Programowanie w języku Haskell Strona domowa http://www.haskell.org Popularne implementacje Hugs, GHC (The Glasgow Haskell Compiler) Źródła wykładu 1 Graham Hutton: Programming in Haskell, Cambridge University
Paradygmaty programowania
Paradygmaty programowania Haskell Piotr Matyasik AGH-UST 2014 Piotr Matyasik (AGH-UST) Paradygmaty programowania 2014 1 / 47 Historia A History of Haskell: Being Lazy With Class Paul Hudak (Yale), John
Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe
Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)
Obiektowy Caml. Paweł Boguszewski
Obiektowy Caml Paweł Boguszewski Plan prezentacji Charakterystyka języka Składnia Obiektowość w OCamlu Wyjątki Standardowe Moduły Narzędzia wspomagające Bibliografia OCaml OCaml jest obiektowym, funkcyjnym
Wykład 3 Funkcje wyższych rzędów
Wykład 3 Funkcje wyższych rzędów Funkcje jako dane Rozwijanie i zwijanie funkcji Składanie funkcji Funkcjonały dla list Funkcje wyższego rzędu jako struktury sterowania Semantyka denotacyjna prostego języka
Leży u podstaw programowania funkcyjnego. Napisy. 1 Zastapienie dowolnego wyrażenia innym wyrażeniem o tej samej. wartości daje równoważny program.
Haskell Nazwa Haskell Brooks Curry (1900 1982) Czysty język funkcyjny Bez efektów ubocznych Ułatwia wnioskowanie o programach Leniwy Wyrażenia nie sa obliczane wcześniej niz potrzeba Umożliwia programowanie
Wykład 3 Funkcje wyższych rzędów
Wykład 3 Funkcje wyższych rzędów Funkcje jako dane Rozwijanie i zwijanie funkcji Składanie funkcji Funkcjonały dla list Funkcje wyższego rzędu jako struktury sterowania Semantyka denotacyjna prostego języka
- nawiasy kwadratowe oznaczają, że to lista
Haskell jest statycznym typem języka: - wszystkie typy i wyrażenia są znane w czasie kompilacji ( zwiększa to bezpieczeństwo kodu). Podawanie typów zmiennych i argumentów funkcji jest zbędne, gdyż Haskel
20. Pascal i łączenie podprogramów Pascala z programem napisanym w C
Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20. i łączenie podprogramów a z programem napisanym w Ze względu na duże rozpowszechnienie języka, szczególnie
Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Programowanie funkcyjne w Pythonie
Programowanie funkcyjne w Pythonie Koªo DSG 2013 Konrad Siek konrad.siek@cs.put.edu.pl dsg.cs.put.poznan.pl Paradygmat funkcyjny Paradygmat = sposób my±lenia o problemach Paradygmat funkcyjny Paradygmat
Wstęp do programowania
Wstęp do programowania Programowanie funkcyjne Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XIV Jesień 2013 1 / 25 Paradygmaty programowania Programowanie imperatywne Program
Programowanie Funkcyjne WPPT Lista zadań
Programowanie Funkcyjne WPPT Lista zadań Jacek Cichoń, WPPT, PWr, 2018/19 Zadania oznaczone * są nieco trudniejsze od zadań bez gwiazdki. Zadania oznaczone ** są jeszcze trudniejsze. 1 Wstęp 1.1 Wprowadzenie
Informatyka A. Algorytmy
Informatyka A Algorytmy Spis algorytmów 1 Algorytm Euklidesa....................................... 2 2 Rozszerzony algorytm Euklidesa................................ 2 3 Wyszukiwanie min w tablicy..................................
TWORZENIE SWOICH TYPÓW I TYPÓW KLAS HASKELL (RODZIAŁ 8) ZAJĘCIA 4
TWORZENIE SWOICH TYPÓW I TYPÓW KLAS HASKELL (RODZIAŁ 8) ZAJĘCIA 4 Wprowadzenie do typów algebraicznych WPROWADZENIE DO TYPÓW ALGEBRAICZNYCH Słowo data oznacza zdefiniowanie nowego typu danych Typ Bool
MiniZinc. Technologie programistyczne,
MiniZinc Technologie programistyczne, 2018-2019 http://www.minizinc.org Co to jest MiniZinc? Język do opisów problemów decyzyjnych i optymalizacyjnych z ograniczeniami Zmienne decyzyjne liczbowe (int,
Podstawy programowania w Pythonie
Podstawy programowania w Pythonie Wykład 6 dr Andrzej Zbrzezny Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 21 listopada 2012 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania
Wprowadzenie do szablonów klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2008-2010 Bogdan Kreczmer Niniejszy
Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016
Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa
Programowanie RAD Delphi
Programowanie RAD Delphi Dr Sławomir Orłowski Zespół Fizyki Medycznej, Instytut Fizyki, Uniwersytet Mikołaja Kopernika w Toruniu Pokój: 202, tel. 611-32-46, e-mial: bigman@fizyka.umk.pl Delphi zasoby Aplikacje
Programowanie Funkcyjne. Marcin Kubica Świder,
Programowanie Funkcyjne Marcin Kubica Świder, 28-04-2015 Czym jest programowanie funkcyjne? Obliczalne pojęcia matematyczne. Definicje stałych i funkcji i relacji. Wszystkie definicje są konstruktywne,
Składnia funkcji i Rekurencja w języku Haskell
Składnia funkcji i w języku Haskell Tomasz Ostrowski, Adrian Niechciał, Michał Workiewicz, Marcin Wilk 26 marca 2015 Składnia funkcji i w języku Haskell Spis treści Składnia funkcji Tomasz Ostrowski Adrian
Programowanie. Lista zadań nr 15. Na ćwiczenia 11, 19 i 23 czerwca 2008
Programowanie Lista zadań nr 15 Na ćwiczenia 11, 19 i 23 czerwca 2008 Zadanie 1. Pokaż, że w systemie z polimorfizmem parametrycznym można napisać program P n rozmiaru O(n), którego typ ma rozmiar 2 2Ω(n).
Programowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
Przegląd paradygmatów na przykładzie języka Oz
Przegląd paradygmatów na przykładzie języka Oz programowanie deklaratywne współbieżność deklaratywna współbieżność z przesyłaniem komunikatów Obszar jednokrotnego przypisania (single-assignment store)
Przegląd paradygmatów na przykładzie języka Oz
Przegląd paradygmatów na przykładzie języka Oz Obszar jednokrotnego przypisania (single-assignment store) programowanie deklaratywne współbieżność deklaratywna x 1 niezwiązana x 1 314 współbieżność z przesyłaniem
Kurs programowania. Wykład 9. Wojciech Macyna
Wykład 9 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista czy
Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa
Informatyka 1 Wykład III Wyrażenia i instrukcje, złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: składnia wyrażeń, drzewa rozbioru gramatycznego i wyliczenia wartości wyrażeń, operatory
Technologie cyfrowe semestr letni 2018/2019
Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 8 (15.04.2019) Kompilacja Kompilacja programu (kodu): proces tłumaczenia kodu napisanego w wybranym języku na kod maszynowy, zrozumiały
Technologie cyfrowe semestr letni 2018/2019
Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 7 (08.04.2019) Wikipedia Programowanie komputerów proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów
Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu
Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji
Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne
Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne dr inż. Marcin Szlenk Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych m.szlenk@elka.pw.edu.pl Paradygmaty
Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego
Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego 1 /24 Pisanie pojedynczych znaków z klawiatury do pliku #include void main(void) { FILE *fptr; // wkaznik do pliku, tzw. uchwyt
Język ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Programowanie Funkcyjne WPPT Lista zadań
Programowanie Funkcyjne WPPT Lista zadań Jacek Cichoń, WPPT, PWr, 2018/19 Zadania oznaczone * są nieco trudniejsze od zadań bez gwiazdki. Zadania oznaczone ** są jeszcze trudniejsze. 1 Wstęp 1.1 Wprowadzenie
Wprowadzenie do języka Ruby
Aleksander Pohl apohllo.pl Krakow Ruby Users Group 19. maja 2007 Kilka słów o Ruby Yukihiro Matz Matsumoto: [...] Poszukiwałem języka potężniejszego od Perla i bardziej obiektowego od Pythona. Wówczas,
Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u
Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u będziemy używać w taki sam sposób, jak wbudowanych funkcji
PODSTAWY BAZ DANYCH 13. PL/SQL
PODSTAWY BAZ DANYCH 13. PL/SQL 1 Wprowadzenie do języka PL/SQL Język PL/SQL - rozszerzenie SQL o elementy programowania proceduralnego. Możliwość wykorzystywania: zmiennych i stałych, instrukcji sterujących
ROZDZIAŁ 8: KLASY TYPÓW
ROZDZIAŁ 8: KLASY TYPÓW Definicja typu Bool: data Bool = False True Słowo kluczowe data oznacza, że definiujemy nowy typ danych. Część przed = określa typ jakim jest bool. Cześć po.. = są to konstruktory
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności
Helena Boguta, klasa 8W, rok szkolny 2018/2019
Poniższy zbiór zadań został wykonany w ramach projektu Mazowiecki program stypendialny dla uczniów szczególnie uzdolnionych - najlepsza inwestycja w człowieka w roku szkolnym 2018/2019. Składają się na
Sosnowiec, dn... Imię i nazwisko...
Sosnowiec, dn.... Imię i nazwisko... Test znajomości zaawansowanch technik programowania składa się z 10 ptań. Dla każdego ptania zaproponowano czter odpowiedzi, z którch tlko jedna jest prawidłowa. Na
Przygotował: Jacek Sroka. PO* - Scala (iteratory, leniwość, view bounds i konwersje)
1 PO* - Scala (iteratory, leniwość, view bounds i konwersje) 2 Iteratory Iteratory to imperatywne wersje strumieni Po danych poruszamy się metodami hasnext() i next() (może nie być struktury danych) trait
Zaawansowany kurs języka Python
Wykład 4. 23 października 2015 Plan wykładu 1 2 Pliki tekstowe Trwałość obiektów CSV Strumienie Plan wykładu 1 2 Pliki tekstowe Trwałość obiektów CSV Strumienie Protokół iteracyjny Producent Umiem dostarczać
Python. Wprowadzenie. Jolanta Bachan
Python Wprowadzenie Jolanta Bachan Zainstaluj i przetestuj Pythona https://www.python.org/downloads/ print 'Hello world!' operatory numeryczne: + - * / // % ** operatory porównania: ==!= > < >=
Python i programowanie funkcyjne. Python i programowanie funkcyjne czyli nie tylko obiektowość rządzi. OSEC Funkcyjnie w języku Python 1 z 40
czyli nie tylko obiektowość rządzi 1 z 40 O czym będę mówił... Jak najmniej teorii bo nie czas i miejsce... Próba odpowiedzi na pythanie: Czy warto programować nie tylko obiektowo? Jak język Python wspiera
Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1
Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy
Semantyka i Weryfikacja Programów - Laboratorium 3
Semantyka i Weryfikacja Programów - Laboratorium 3 Cz. I. Rachunek w sklepie Problem. Kasa sklepu zawiera rejestr danych łączących kody artykułów (np. paskowe) z ich nazwami i cenami. Konkretny zakup kasa
Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]
1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie
W PostgreSQL mamy do dyspozycji nie tylko funkcje wbudowane, ale również możemy tworzyć własne. Są one zapisywane w tabeli systemowej pg_proc.
PROCEDURY W PostgreSQL mamy do dyspozycji nie tylko funkcje wbudowane, ale również możemy tworzyć własne. Są one zapisywane w tabeli systemowej pg_proc. \df Aby wyświetlić wszystkie funkcje z argumentami
Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,
Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1
PODSTAWOWE ELEMENTY JĘZYKA JAVA WYRAŻENIA, OPERATORY, INSTRUKCJE 1. Operatory arytmetyczne +, -, /,*, % Przykład 1 programu z interfejsem konsolowym public class Lab2_1 // Tworzy generator liczb losowych,
Specyfikacje formalne
Specyfikacje formalne część II Piotr Szczepański Na podstawie: Formal Specification, Andreas Roth, Peter H. Schmitt Krótkie przypomnienie JML Co to jest formalna specyfikacja? Co to jest OCL? Składnia
Moduły. Źródło: a) Wczytywanie modułów. interparse rozdziela każdy element listy wcześniej podanym znakiem
Autor: Roman Gęsiarz Moduły Źródło: http://learnyouahaskell.com/modules a) Wczytywanie modułów b) Data.List c) Data.Char d) Data.Map e) Data.Set f) Tworzenie własnych modułów Łódź, dnia 25.03.2017 r. Ad.
Wstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline Programowanie imperatywne 1 Programowanie imperatywne Intuicje Programowanie imperatywne Paradygmat programowania imperatywnego: program
Platformy Programistyczne Podstawy języka Java
Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo
Formálne jazyky Automaty. Formálne jazyky. 1 Automaty. IB110 Podzim
Formálne jazyky 1 Automaty 2 Generatívne výpočtové modely IB110 Podzim 2010 1 Jednosmerné TS alebo konečné automaty TS sú robustné voči modifikáciam existuje modifikácia, ktorá zmení (zmenší) výpočtovú
Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)
MAS dr. Inż. Mariusz Trzaska Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) Zagadnienia o Podstawy o Kontrolowanie sterowania o Klasy o Interfejsy o Obsługa błędów o Pojemniki o System
Wstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline 1 Pojęcie typu Definition (Typ danych) Typ danych to zbiór wartości wraz z zestawem podstawowych operacji na tych wartościach. Typy
Wstęp do programowania. Różne różności
Wstęp do programowania Różne różności Typy danych Typ danych określa dwie rzeczy: Jak wartości danego typu są określane w pamięci Jakie operacje są dozwolone na obiektach danego typu 2 Rodzaje typów Proste
Funkce zadané implicitně. 4. března 2019
Funkce zadané implicitně 4. března 2019 Parciální derivace druhého řádu Parciální derivace druhého řádu funkce z = f (x, y) jsou definovány: Parciální derivace 2 f 2 = ( ) f 2 f 2 = ( ) f 2 f a 2 f 2 f
Podstawowe części projektu w Javie
Podstawowe części projektu w Javie Pakiet w Javie to grupa podobnych typów klas, interfejsów i podpakietów. Pakiet w Javie może być wbudowany lub zdefiniowany przez użytkownika. Istnieje wiele wbudowanych
Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz
Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania Zofia Kruczkiewicz Zakres Funkcje przetwarzające teksty (biblioteka ) - tworzenie własnych
Języki Programowania II Wykład 3. Java podstawy. Przypomnienie
Języki Programowania II Wykład 3 Java podstawy Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo Przypadki użycia = opowiastki o używaniu systemu = wymagania
Informatyka 1. Przetwarzanie tekstów
Informatyka 1 Wykład IX Przetwarzanie tekstów Robert Muszyński ZPCiR ICT PWr Zagadnienia: reprezentacja napisów znakowych, zmienne napisowe w Sun Pascalu, zgodność typów, operowanie na napisach: testowanie
Języki i metody programowania
Języki i metody programowania Wykład 3 dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie hab. Andrzeja Zbrzezngo Wartości boolowskie
PARADYGMATY I JĘZYKI PROGRAMOWANIA. Programowanie funkcyjne (w- 9)
PARADYGMATY I JĘZYKI PROGRAMOWANIA Programowanie funkcyjne () Zagadnienia 2 Wstęp Rachunek lambda i programowanie funkcjonalne (Podstawa: An introduc/on to func/onal programming through lambda calculus.
Programowanie obiektowe
Przygotował: Jacek Sroka 1 Programowanie obiektowe Wykład 3 Java podstawy Przygotował: Jacek Sroka 2 Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo
Wstęp do programowania
wykład 8 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Podprogramy Czasami wygodnie jest wyodrębnić jakiś fragment programu jako pewną odrębną całość umożliwiają to podprogramy.
5. a 12. prosince 2018
Integrální počet Neurčitý integrál Seminář 9, 0 5. a. prosince 08 Neurčitý integrál Definice. Necht funkce f (x) je definovaná na intervalu I. Funkce F (x) se nazývá primitivní k funkci f (x) na I, jestliže
Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH
Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH Michał Bujacz bujaczm@p.lodz.pl B9 Lodex 207 godziny przyjęć: środy i czwartki 10:00-11:00 http://www.eletel.p.lodz.pl/bujacz/ 1 Pytania weryfikacyjne:
Pytania dla języka Python
XIV OIJ, zawody I stopnia, tura testowa 16 września 2019 1 stycznia 2020 Poniżej znajdują się pytania testowe z zawodów I stopnia XIV Olimpiady Informatycznej Juniorów () na teście wiedzy (do rozwiązania
Cheatsheet PL/SQL Andrzej Klusiewicz 1/9
Declare y integer; z varchar2(50); d date; null; Declare x integer:=10; null; x integer; x:=10; dbms_output.put_line('hello world'); for x in 1..10 loop Deklaracja 4 zmiennych. Jednej typu rzeczywistego,
Wstęp do Programowania 2
Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:
DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0
Uwaga: DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 1. Zostały pominięte diagramy: CYFRA, CYFRA SZESNASTKOWA, ZNAK i LITERA. Nie została uwzględniona możliwość posługiwania się komentarzami. 2. Brakuje
Programowanie w Scilab
5 styczeń, 2006 Programowanie w Scilab Slajd 1 Programowanie w Scilab 5 styczeń, 2006 Programowanie w Scilab Slajd 2 Plan zajęć Wprowadzenie -operatory porównawcze: Pętle Przerywanie pętli Warunki Definiowanie
Jerzy Nawrocki, Wprowadzenie do informatyki
Jerzy Nawrocki, Jerzy Nawrocki Wydział Informatyki Politechnika Poznańska jerzy.nawrocki@put.poznan.pl Kryzys oprogramowania Struktury danych i inżynieria oprogramowania Przekraczanie terminów Przekraczanie
PARADYGMATY PROGRAMOWANIA Wykład 3
PARADYGMATY PROGRAMOWANIA Wykład 3 Definiowanie operatorów i ich przeciążanie Przykłady zastosowania operatorów: a) operator podstawienia ( = ) obiektów o złożonej strukturze, b) operatory działania na
λ parametry. wartość funkcji suma = λ x y. x + y kwadrat = λ x. x * x K.M. Ocetkiewicz, 2008 WETI, PG 2 K.M. Ocetkiewicz, 2008 WETI, PG 3
Organizacja przedmiotu Języki programowania (Programming language concepts) Krzysztof M. Ocetkiewicz pok. 205 email: Krzysztof.Ocetkiewicz@eti.pg.gda.pl konsultacje: czwartek 10:15-11.00, 13:15-14:00 projekt:
wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i
Wstęp do programowania
Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 1 / 38 Przypomnienie Programowanie imperatywne Program
Typy, klasy typów, składnie w funkcji
Typy, klasy typów, składnie w funkcji Typy w Haskell Każde wyrażenie w Haskell posiada zdefiniowany typ. Dzięki temu już na etapie kompilacji kodu następuje sprawdzenie poprawności kodu i zabezpiecza nas
Przydatne sztuczki - sql. Na przykładzie postgres a.
Przydatne sztuczki - sql. Na przykładzie postgres a. M. Wiewiórko 05/2014 Plan Uwagi wstępne Przykład Rozwiązanie Tabela testowa Plan prezentacji: Kilka uwag wstępnych. Operacje na typach tekstowych. Korzystanie
MATEMATIKA 3. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci
MATEMATIKA 3 Dana Černá http://www.fp.tul.cz/kmd/ Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci Osnova: Komplexní funkce - definice, posloupnosti, řady Vybrané komplexní funkce
Weronika Mysliwiec, klasa 8W, rok szkolny 2018/2019
Poniższy zbiór zadań został wykonany w ramach projektu Mazowiecki program stypendialny dla uczniów szczególnie uzdolnionych - najlepsza inwestycja w człowieka w roku szkolnym 2018/2019. Tresci zadań rozwiązanych
Wstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline Wyszukiwanie wzorców w tekście 1 Wyszukiwanie wzorców w tekście Problem wyszukiwania wzorca w tekście Na tym wykładzie zajmiemy się
Programowanie Komputerów
Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 28 1. Tablice w C# Indeksowane od zera
Scala. Wprowadzenie do języka.
Scala Wprowadzenie do języka. 1 1 whoami Michał Januszewski twitter.com/mjanuszewski michal@mjanuszewski.pl 2 2 Other activities * www.kropkapodi.pl 3 3 Krótka historia......czyli co, po co i dlaczego...
Kapitola 4: Soustavy diferenciálních rovnic 1. řádu
Sbírka příkladů Matematika II pro strukturované studium Kapitola 4: Soustavy diferenciálních rovnic 1 řádu Chcete-li ukončit prohlížení stiskněte klávesu Esc Chcete-li pokračovat stiskněte klávesu Enter
a) ile wynosiła populacja najbardziej i najmniej ludnego z województw (oraz jakie były ich nazwy)
Spis treści 1 TI:WTBD/Ćwiczenia 14 1.1 Sprawdzian 2 - SQL. 1.1.1 Grupa 1 1.1.2 przykład rozwiązania dla zadania gr. 1 1.1.3 Grupa 2 1.1.4 przykład rozwiązania dla gr. 2 TI:WTBD/Ćwiczenia 14 Sprawdzian
Wstęp do programowania
Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 1 / 34 Przypomnienie Programowanie imperatywne Program
1 Soustava lineárních rovnic
Soustavy lineárních rovnic Aplikovaná matematika I Dana Říhová Mendelu Brno Obsah 1 Soustava lineárních rovnic 2 Řešitelnost soustavy lineárních rovnic 3 Gaussova eliminační metoda 4 Jordanova eliminační