TWORZENIE SWOICH TYPÓW I TYPÓW KLAS HASKELL (RODZIAŁ 8) ZAJĘCIA 4
|
|
- Krystyna Michalik
- 6 lat temu
- Przeglądów:
Transkrypt
1 TWORZENIE SWOICH TYPÓW I TYPÓW KLAS HASKELL (RODZIAŁ 8) ZAJĘCIA 4
2 Wprowadzenie do typów algebraicznych
3 WPROWADZENIE DO TYPÓW ALGEBRAICZNYCH Słowo data oznacza zdefiniowanie nowego typu danych Typ Bool ze standardowej biblioteki wygląda następująco data Bool = False True (przyjmuje wartości False lub True) Typ Int ze standardowej biblioteki wygląda następująco data Int = (przyjmuje wszystkie liczby całkowite od do
4 NOWE WŁASNE TYPY DANYCH Chcemy stworzyć typ kształt, który może być kołem lub prostokątem data Shape = Circle Float Float Float Rectangle Float Float Float Float Typ Circle przyjmuje współrzędną X oraz Y środka koła oraz promień, a typ Rectangle współrzędne X oraz Y lewego górnego rogu prostokąta oraz współrzędne X i Y prawego dolnego rogu prostokąta. Jeśli chcemy wyświetlić parametry typu to musimy wypisać :t naz_typ ghci > :t Circle Circle :: Float -> Float -> Float -> Shape ghci > :t Rectangle Rectangle :: Float -> Float -> Float -> Float -> Shape
5 FUNKCJA: POWIERZCHNIA KSZTAŁTU (1) Teraz wykorzystamy nowo utworzony typ Shape do stworzenia funkcji, która obliczy polę powierzchni kształtu (koła lub prostokątu) data Shape = Circle Float Float Float Rectangle Float Float Float Float surface :: Shape -> Float surface ( Circle r) = pi * r ^ 2 surface ( Rectangle x1 y1 x2 y2) = (abs $ x2 - x1) * ( abs $ y2 - y1) Wywołanie i rezultat funkcji w programie ghci > surface $ Circle ghci > surface $ Rectangle
6 WYŚWIETLENIE TYPU Z PODANYMI PARAMETRAMI Co wpisać, żeby program wyświetlił typ oraz parametry jakie do niego dodaliśmy. data Shape = Circle Float Float Float Rectangle Float Float Float Float deriving ( Show ) Słowo derivering ( Show ), który jest na końcu deklaracji typu danych oznacza, że program wyświetli na ekran typ i podane parametry np. ghci > Circle Circle ghci > Rectangle Rectangle
7 MAPOWANIE TYPÓW Chcemy wyświetlić parametry dla koła o współrzędnych X = 10 oraz Y = 20 dla różnych promieni, które są w liście. ghci > map ( Circle 10 20) [4,5,6,6] [ Circle , Circle , Circle , Circle ]
8 FUNKCJA: POWIERZCHNIA KSZTAŁTU (2) Powracamy do funkcji, która liczy pole powierzchni kształtu tym razem zamiast dwukrotnie przyjmować Float może przyjąć Point, który składa się z dwóch Float ów. data Point = Point Float Float deriving ( Show ) data Shape = Circle Point Float Rectangle Point Point deriving ( Show ) ghci > surface ( Rectangle ( Point 0 0) ( Point )) ghci > surface ( Circle ( Point 0 0) 24) Wywołanie: ghci > surface ( Rectangle ( Point 0 0) ( Point )) ghci > surface ( Circle ( Point 0 0) 24)
9 FUNKCJA, KTÓRA PRZESUWA KSZTAŁT nudge :: Shape -> Float -> Float -> Shape nudge ( Circle ( Point x y) r) a b = Circle ( Point (x+a) (y+b)) r nudge ( Rectangle ( Point x1 y1) ( Point x2 y2 )) a b = Rectangle ( Point (x1+a) (y1+b)) ( Point (x2+a) (y2+b)) ghci > nudge ( Circle ( Point 34 34) 10) 5 10 Circle ( Point ) 10.0 basecircle :: Float -> Shape basecircle r = Circle ( Point 0 0) r baserect :: Float -> Float -> Shape baserect width height = Rectangle ( Point 0 0) ( Point width height ) ghci > nudge ( baserect ) Rectangle ( Point ) ( Point )
10 EKSPORTOWANIE TYPÓW W MODUŁACH module Shapes ( Point (..), Shape (..), surface, nudge, basecircle, baserect ) where By doing Shape(..), we exported all the value constructors for Shape, so that means that whoever imports our module can make shapes by using the Rectangle and Circle value constructors. It s the same as writing Shape (Rectangle, Circle).
11 Składnia rekordu
12 REKORD PERSON Chcemy stworzyć rekord Person, który zawiera takie pola jak: first name (imię), last name (nazwisko), age (wiek), height (wrost), phone numer (numer telefonów), and favorite ice-cream flavor (ulubiony smak). data Person = Person String String Int Float String String deriving ( Show ) ghci >let osoba = Person " Stefan " " Kasztaniak " " " " Strawberry ghci > osoba Person " Stefan " " Kasztaniak " " " " Strawberry
13 REKORD PERSON Składanie rekordu z poszczególnych składowych data Person = Person { firstname :: String, lastname :: String, age :: Int, height :: Float, phonenumber :: String, flavor :: String } deriving ( Show ) Zwrócenie imienia zmiennej osoba ghci > firstname osoba Stefan Po skompilowaniu rekordu Haskell tworzy automatycznie typ danych dla poszczególnych składowych rekordu ghci > :t firstname firstname :: Person -> String
14 RODZAJE PARAMETRÓW Rodzaje parametrów
15 TYP MAYBE (SZABLONY) data Maybe a = Nothing Just a ghci > Just " Haha Just " Haha " ghci > Just 84 Just 84 ghci > :t Just " Haha Just " Haha " :: Maybe [ Char ] ghci > :t Just 84 Just 84 :: ( Num t) => Maybe t ghci > :t Nothing Nothing :: Maybe a ghci > Just 10 :: Maybe Double Just 10.0 Słowo Maybe oznacza, że prawdopodobnie zostanie zwrócony typ, o który prosimy (jeśli jest) albo może być zwrócona wartośćpusta (Nothing)
16 REKORD CAR data Car a b c = Car { company :: a, model :: b, year :: c } deriving ( Show ) Zamiast String, String, Int podajemy a, b, c, ponieważ przy wywołaniu rekordu za pomocą słowa Maybe można nadać inny typ dla któreś ze składowych.
17 FUNKCJA WYŚWIETLAJĄCA INFORMACJE O REKORDZIE CAR tellcar :: Car -> String tellcar ( C ghci > let stang = Car { company =" Ford ", model =" Mustang ", year =1967} ghci > tellcar stang " This Ford Mustang was made in 1967 tellcar :: ( Show a) => Car String String a -> String tellcar ( Car { company = c, model = m, year = y}) = " This " ++ c ++ " " ++ m ++ " was made in " ++ show y ghci > tellcar ( Car " Ford " " Mustang " 1967) " This Ford Mustang was made in 1967 " ghci > tellcar ( Car " Ford " " Mustang " " nineteen sixty seven ") " This Ford Mustang was made in \" nineteen sixty seven \"" ghci > :t Car " Ford " " Mustang " 1967 Car " Ford " " Mustang " 1967 :: ( Num t) => Car [ Char ] [ Char ] t ghci > :t Car " Ford " " Mustang " " nineteen sixty seven Car " Ford " " Mustang " " nineteen sixty seven " :: Car [ Char ] [ Char ] [ Char ]
18 OPERACJE NA WEKTORACH data Vector a = Vector a a a deriving ( Show ) vplus :: ( Num t) => Vector t -> Vector t -> Vector t ( Vector i j k) `vplus ` ( Vector l m n) = Vector (i+l) (j+m) (k+n) vectmult :: ( Num t) => Vector t -> t -> Vector t ( Vector i j k) `vectmult ` m = Vector (i*m) (j*m) (k*m) scalarmult :: ( Num t) => Vector t -> Vector t -> t ( Vector i j k) `scalarmult ` ( Vector l m n) = i*l + j*m + k*n Wywołanie operacji opartych na wektorach ghci > Vector `vplus ` Vector Vector ghci > Vector `vplus ` Vector `vplus ` Vector Vector ghci > Vector `vectmult ` 10 Vector ghci > Vector `scalarmult ` Vector ghci > Vector `vectmult ` ( Vector `scalarmult ` Vector 9 2 4) Vector
19 Derived instances
20 PRZYRÓWNANIE KLAS data Person = Person { firstname :: String, lastname :: String, age :: Int } deriving (Eq) ghci > let miked = Person { firstname = " Michael ", lastname = " Diamond ", age = 43} ghci > let adrock = Person { firstname = " Adam ", lastname = " Horovitz ", age = 41} ghci > let mca = Person { firstname = " Adam ", lastname = " Yauch ", age = 44} ghci > mca == adrock False ghci > miked == adrock False ghci > miked == miked True ghci > miked == Person { firstname = " Michael ", lastname = " Diamond ", age = 43} True ghci > let beastieboys = [mca, adrock, miked ] ghci > miked `elem ` beastieboys True
21 PRZYRÓWNANIE, WYSWIETLENIE, CZYTANIE REKORDU data Person = Person { firstname :: String, lastname :: String, age :: Int } deriving (Eq, Show, Read ) ghci > let miked = Person { firstname = " Michael ", lastname = " Diamond ", age = 43} ghci > miked Person { firstname = " Michael ", lastname = " Diamond ", age = 43} ghci > " miked is: " ++ show miked " miked is: Person { firstname = \" Michael \", lastname = \" Diamond \", age = 43} read " Person { firstname =\" Michael \", lastname =\" Diamond \", age = 43} :: Person Person { firstname = " Michael ", lastname = " Diamond ", age = 43} ghci > read " Person { firstname =\" Michael \", lastname =\" Diamond \", age = 43}"== miked True
22 MODYFIKACJA TYPU BOOL data Bool = False True deriving (Ord) ghci > Nothing < Just 100 True ghci > Nothing > Just ( ) False ghci > Just 3 `compare ` Just 2 GT ghci > Just 100 > Just 50 True
23 DNI TYGODNIA data Day = Monday Tuesday Wednesday Thursday Friday Saturday Sunday deriving (Eq, Ord, Show, Read, Bounded, Enum ) ghci > Wednesday Wednesday ghci > show Wednesday " Wednesday " ghci > read " Saturday " :: Day Saturday ghci > Saturday > Friday True ghci > Monday `compare ` Wednesday LT
24 DNI TYGODNIA PRZYKŁADOWE OPERACJE ghci > succ Monday Tuesday ghci > pred Saturday Friday ghci > [ Thursday.. Sunday ] [ Thursday, Friday, Saturday, Sunday ] ghci > [ minbound.. maxbound ] :: [Day] [ Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday ]
25 Rodzaje synonimów
26 TYPY SYNONINÓW type String = [ Char ] type IntMap v = Map Int v
27 EITHER data Either a b = Left a Right b deriving (Eq, Ord, Read, Show ) ghci > Right 20 Right 20 ghci > Left " w00t Left " w00t ghci > :t Right 'a Right 'a' :: Either a Char ghci > :t Left True Left True :: Either Bool b
28 FUNKCJE WYKORZYSTUJĄCE EITHER import qualified Data. Map as Map data LockerState = Taken Free deriving (Show, Eq) type Code = String type LockerMap = Map. Map Int ( LockerState, Code ) lockerlookup :: Int -> LockerMap -> Either String Code oraz lockers :: LockerMap znajdują się w pliku Synonims.hs ghci > lockerlookup 101 lockers Right " JAH3I ghci > lockerlookup 100 lockers Left " Locker 100 is already taken! ghci > lockerlookup 102 lockers Left " Locker number 102 doesn 't exist! ghci > lockerlookup 110 lockers Left " Locker 110 is already taken! ghci > lockerlookup 105 lockers Right " QOTSA "
29 Rekurencyjne struktury danych
30 NASZA LISTA Podział listy na head oraz tail data List a = Empty Cons { listhead :: a, listtail :: List a} deriving (Show, Read, Eq, Ord ) ghci > 3 `Cons ` (4 `Cons ` (5 `Cons ` Empty )) Cons 3 ( Cons 4 ( Cons 5 Empty )) ghci > Empty Empty Inny zapis listy z podziałem na head oraz tail to: infixr 5 :-: data List a = Empty a :-: ( List a) deriving (Show, Read, Eq, Ord ) ghci > let a = 3 :-: 4 :-: 5 :-: Empty ghci > 100 :-: a (: -:) 100 ((: -:) 3 ((: -:) 4 ((: -:) 5 Empty )))
31 ŁĄCZENIE NASZYCH LIST infixr 5.++ (.++) :: List a -> List a -> List a Empty.++ ys = ys (x :-: xs).++ ys = x :-: (xs.++ ys) ghci > let a = 3 :-: 4 :-: 5 :-: Empty ghci > let b = 6 :-: 7 :-: Empty ghci > a.++ b (: -:) 3 ((: -:) 4 ((: -:) 5 ((: -:) 6 ((: -:) 7 Empty ))))
32 DRZEWA data Tree a = EmptyTree Node a ( Tree a) ( Tree a) deriving (Show, Read, Eq) treeelem :: ( Ord a) => a -> Tree a -> Bool treeelem x EmptyTree = False treeelem x ( Node a left right ) x == a = True x < a = treeelem x left x > a = treeelem x right Więcej informacji w pliku drzewa.hs ghci > let nums = [8,6,4,1,7,3,5] ghci > let numstree = foldr treeinsert EmptyTree nums ghci > 1 `treeelem ` numstree True ghci > 10 `treeelem ` numstree False foldr, treeinsert są to funkcje, które pobierają listę i tworzą z tego drzewo
33 Typeclasses 102
34 KLASA I INSTANCJA Klasa Eq ze standardowej biblioteki class Eq a where (==) :: a -> a -> Bool (/=) :: a -> a -> Bool x == y = not (x /= y) x /= y = not (x == y) Nowa klasa TrafficLight data TrafficLight = Red Yellow Green instance Eq TrafficLight where Red == Red = True Green == Green = True Yellow == Yellow = True _ == _ = False ghci > Red == Red True ghci > Red == Yellow False ghci > Red `elem ` [Red, Yellow, Green ] True ghci > [Red, Yellow, Green ] [ Red light, Yellow light, Green light ]
35 KLASA I INSTANCJA + MAYBE instance (Eq m) => Eq ( Maybe m) where Just x == Just y = x == y Nothing == Nothing = True _ == _ = False Użycie niektórych różnych od siebie typów może spowodować wyjątki
36 A yes-no typeclass
37 KLASA YES-NO Ta klasa sprawdza czy istnieje wartość i zwraca tylko Prawdę lub Fałsz Instancja klasy YesNo może być zadeklarowana dla różnych typów (listy, Bool, Int itd.) class YesNo a where yesno :: a -> Bool instance YesNo [a] where yesno [] = False yesno _ = True yesnoif :: ( YesNo y) => y -> a -> a -> a yesnoif yesnoval yesresult noresult = if yesno yesnoval then yesresult else noresult Rezultat: ghci > yesnoif [] " TAK! "NIE! NIE! ghci > yesnoif [2,3,4] " TAK!" "NIE! " TAK!"
38 Funktor typów klas
39 FUNKTOR MNOŻENIE ELEMENTÓW Z LISTY class Functor f where fmap :: (a -> b) -> f a -> f b instance Functor [] where fmap = map ghci > fmap (*5) [1..11] [5,10,15,20,25,30,35,40,45,50,55]
40 FUNKTOR + MAYBE instance Functor Maybe where fmap f ( Just x) = Just (f x) fmap f Nothing = Nothing ghci > fmap (*7) ( Just 100) Just 700 Funktor można zastosować również na swoich instancjach np. na Tree
41 FUNKTOR (EITHER) Deklaracja: data Either a b = Left a Right b Zwraca lewy lub prawy element instance Functor ( Either a) where fmap f ( Right x) = Right (f x) fmap f ( Left x) = Left x
42 Rodzaje i niektóre type-foo
43 RODZAJE I NIEKTÓRE TYPE-FOO * oznacza konkretny typ ghci > :k Int Int :: * ghci > :k Maybe Maybe :: * -> * ghci > :k Maybe Int Maybe Int :: * ghci > :k Either String Either String :: * -> * ghci > :k Either String Int Either String Int :: *
44 WŁASNY TYP DANYCH class Tofu t where tofu :: j a -> t a j data Frank a b = Frank { frankfield :: b a} deriving ( Show ) ghci > :t Frank { frankfield = " TAK "} Frank { frankfield = " TAK "} :: Frank Char [] instance Tofu Frank where tofu x = Frank x ghci > tofu [" HELLO "] :: Frank [ Char ] [] Frank { frankfield = [" HELLO "]}
45 FUNKTOR :k Frank Frank :: * -> (* -> *) -> * data Barry t k p = Barry { val1 :: p, val2 :: t k } instance Functor ( Barry a b) where fmap f ( Barry { val1 = x, val2 = y}) = Barry { val1 = f x, val2 = y}
46 HASKELL Input / Output 1
47 Akcje I/O a funkcje Funkcja dla określonych danych wejściowych zawsze zwraca taki sam wynik. Akcja I/O może dawać różne rezultaty. Po wykonaniu akcji nie uzyskujemy bezpośrednio oczekiwanego wyniku. 2
48 > :t putstrln putstrln :: String -> IO () > :t getline getline :: IO String 3
49 tmp = "Witaj, " ++ getline WYGENERUJE BŁĄD 4
50 main = do putstrln "Podaj swoje imię:" name <- getline putstrln ("Witaj, " ++ name ++ "!") 5
51 main = do tmp <- putstrln "Podaj swoje imię:" name <- getline putstrln ("Witaj, " ++ name ++ "!") > tmp <- putstrln "Podaj swoje imię:" Podaj swoje imię: > tmp () 6
52 Ostatniej akcji w bloku do nie można przypisywać do zmiennej. main = do putstrln "Tekst" n <- putstrln "Tekst" wygeneruje błąd kompilacji The last statement in a 'do' block must be an expression n <- putstrln "Tekst" 7
53 Wywołanie akcji I/O Akcje I/O zostaną wykonane, gdy: otrzymają nazwę main (zostaną poprzedzone: main = ) będą zagnieżdżone wewnątrz innej akcji (poprzez zastosowanie bloku do) zostaną umieszczone w konsoli GHCi, a następnie zatwierdzone klawiszem enter 8
54 import Data.Char main = do first <- getline let fup = map toupper first let flow = map tolower first putstrln ("Result: " ++ fup ++ " and " ++ flow) 9
55 main = do line <- getline if null line then return () else do putstrln $ reversewords line main reversewords :: String -> String reversewords = unwords. map reverse. words 10
56 main = do putstrln "Raz" return () putstrln "Trzy" Po uruchomieniu uzyskamy: Raz Trzy 11
57 when import Control.Monad if null line then return () else do putstrln $ revw line main możemy zastąpić: when (not $ null line) $ do putstrln (revw line) main 12
58 Wypisywanie na ekran putstr putstrln putchar print Pobieranie danych getline getchar 13
59 sequence > s <- sequence [getline, getline, getline] Ala ma kota > s ["Ala","ma","kota"] 14
60 sequence > sequence (map print [1,2,3]) [(),(),()] mapm oraz mapm_ sequence (map print [1,2,3,4,5]) da taki sam rezultat, jak: mapm print [1,2,3,4,5] 15
61 getcontents >:t getcontents IO String interact >:t interact (String String) IO () 16
62 palindrom = unlines. map (\xs -> if ispalindrome xs then "TAK" else "NIE"). lines where ispalindrome xs = xs == reverse xs main = interact palindrom 17
63 Operacje na plikach openfile hgetcontents hclose Tryby pracy z plikiem (IOMode): ReadMode WriteMode AppendMode ReadWriteMode 18
64 import System.IO main = do handle <- openfile "test.txt" ReadMode contents <- hgetcontents handle putstr contents hclose handle 19
65 Operacje na plikach Alternatywnym sposobem na wykonanie operacji na pliku może być użycie akcji withfile. Uwaga: Po wykonaniu wskazanej funkcji, withfile automatycznie zamknie plik. 20
66 import System.IO main = do withfile "test.txt" ReadMode (\h -> do contents <- hgetcontents h putstr contents ) 21
67 Operacje na plikach Standardowe I/O Plik getline hgetline putstr hputstr putstrln hputstrln getchar hgetchar getcontents hgetcontents 22
68 readfile import System.IO main = do contents <- readfile "test. txt" putstr contents 23
69 writefile import System.IO main = do writefile "test.txt" "Tekst" appendfile import System.IO main = do appendfile "test.txt" "Tekst" 24
70 Buforowanie Zmiana sposobu bufrowania: hsetbuffering Tryby buforowania: NoBuffering LineBuffering BlockBuffering BlockBuffering (Just [rozmiar w bajtach]) Opróżnienie bufora: hflush 25
71 Pliki tymczasowe gettemporarydirectory opentempfile removefile renamefile 26
72 Przykładowy program z11.hs 27
73 Argumenty linii poleceń import System.Environment getprogname getargs 28
74 import System.Environment main = do p <- getprogname args <- getargs putstrln $ "Uruchomiono program " ++ p putstrln "z argumentami:" mapm_ print args > przyklad aaa bbb ccc Uruchomiono program przyklad z argumentami: "aaa" "bbb" "ccc" 29
75 Wartości pseudolosowe import System.Random Losowanie wartości: random randomr randomr ('a', 'z') (mkstdgen 10) randoms randomrs take 8 $ randomrs (1, 9) (mkstdgen 3) Własny generator: mkstdgen [liczba całkowita] 30
76 getstdgen import System.Random main = do g <- getstdgen putstr $ take 6 (randomrs ('a','z') g) 31
77 newstdgen import System.Random main = do g <- getstdgen print $ take 5 (randomrs ('a', 'z') g) g2 <- getstdgen print $ take 5 (randomrs ('a', 'z') g2) gn <- newstdgen print $ take 5 (randomrs ('a', 'z') gn) g3 <- getstdgen print $ take 5 (randomrs ('a', 'z') g3) 32
78 newstdgen > przyklad_newstdgen "rpyae" "rpyae" "mwyew" "farih" 33
79 ByteString Strict import Data.ByteString zaleta: złożoność czasowa wady: złożoność pamięciowa niedopuszczalne nieskończone listy Lazy import Data.ByteString.Lazy porcje 64KB złoty środek między odmianą strict a zwykłą listą Zwykła lista zaleta: złożoność pamięciowa wada: złożoność czasowa 34
80 Operacje na plikach Standardowa lista Plik : ++ cons head head tail tail last last init init null null length length map map append 35
81 Przykładowy program z17.hs 36
82 cons oraz cons' Funkcja cons spowoduje, że nowy element będzie umieszczony w nowej porcji, nawet jeśli istniejąca nie jest jeszcze zapełniona. Jeżeli planujemy wielokrotnie zastosować cons, lepiej użyć cons', która zadba o to, by nowa porcja była tworzona tylko wtedy, gdy jest to konieczne. foldr B.cons B.empty [65..68] A B C D foldr B.cons' B.empty [65..68] ABCD 37
83 pack > import qualified Data.ByteString.Lazy as B > B.pack [65..70] ABCDEF unpack > B.unpack $ B.pack [65..70] [65,66,67,68,69,70] > B.unpack $ B.pack [255,256,257,-6] [255,0,1,250] 38
84 fromchunks tochunks import qualified Data.ByteString as S import qualified Data.ByteString.Lazy as B main = do let x = B.fromChunks [S.pack [65..67], S.pack [68..70], S.pack [71..73]] print x print $ B.toChunks x > program_chunks "ABCDEFGHI" ["ABC","DEF","GHI"] 39
85 ByteString: operacje na plikach przykładowy program z19.hs 40
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
WEJŚCIE/WYJŚCIE HASKELL ŁUKASZ PAWLAK DARIUSZ KRYSIAK
WEJŚCIE/WYJŚCIE HASKELL ŁUKASZ PAWLAK DARIUSZ KRYSIAK W Haskellu funkcje nie mogą zmieniać stanów (w tym np. zmieniać wartości zmiennej). Funkcja wywołana z pewnymi ustalonymi argumentami musi zwracać
Tworzenie własnych typów. danych oraz klas typów
Justyna Łowicka Tworzenie własnych typów danych oraz klas typów Algebraiczne typy danych konstruktorów umieszczonych w deklaracji data. Zobaczmy, jak typ Bool jest zdefiniowany w bibliotece standardowej.
Zatem w jaki sposób nasze programy mają komunikować się ze światem zewnętrznym?
Wprowadzenie Haskell jest językiem czysto funkcyjnym. W uproszczeniu oznacza to, że w przeciwieństwie do języków imperatywnych (w których podajemy komputerowi ciąg kroków do wykonania) definiujemy co,
Haskell Moduły Ładowanie
Haskell Moduły Moduł zestaw powiązanych funkcji, typów, typeclass. Program w Haskellu często jest modułem, który ładuje inne moduły a następnie wykorzystuje zdefiniowane w nich funkcje w celu realizacji
Haskell Input and Output Źródło:
Haskell Input and Output Źródło: http://learnyouahaskell.com/input-and-output Brak stanu i czystość funkcji Wstęp - Wejście i Wyjście Wspomnieliśmy że Haskell jest czysto funkcyjnym językiem. W językach
- 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
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
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:
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 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
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
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
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/
Prezentacja o Haskell u(rozdział 3 i 4)
9 marca 2017 Spis treści 1 2 Wprowadzenie Każda wartość jak i funkcja ma w haskellu ściśle określony typ. Jawne definiowanie typów nie jest konieczne, ponieważ Haskell sam rozpoznaje typ wartości. Warto
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
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 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
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
W powyższym kodzie utworzono wyliczenie dni tygodnia.
Typ wyliczeniowy (zwane również enumeration lub enum) jest to typ danych składający się z zestawu nazwanych wartości. Do zmiennej, która została zadeklarowana jako typ wyliczeniowy może być przypisane
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
Programowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Laboratorium 1 - Programowanie proceduralne i obiektowe
Laboratorium 1 - Programowanie proceduralne i obiektowe mgr inż. Kajetan Kurus 4 marca 2014 1 Podstawy teoretyczne 1. Programowanie proceduralne (powtórzenie z poprzedniego semestru) (a) Czym się charakteryzuje?
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.
Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1
Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
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
Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej
Zajęcia nr 2 Programowanie strukturalne dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Pętla while #include using namespace std; int main ()
Definicje wyższego poziomu
Definicje wyższego poziomu Interpreter Scheme-a nie będzie narzekad w przypadku wystąpienia niezdefionowanej zmiennej w ciele wyrażenia lambda dopóki nie będzie zastosowana Przykład braku informacji o
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
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 12 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Obsługa łańcuchów znakowych getchar(), putchar()
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 Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje
Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";
1 2 Operacje na zmiennych Kolejność operacji: deklaracja, inicjacja bool decyzja; int licznik, lp; double stvat, wartpi; char Znak; string S1, S2 = "Kowalski"; przypisanie wartości podstawienie decyzja
Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.
Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using
C++ wprowadzanie zmiennych
C++ wprowadzanie zmiennych Każda zmienna musi być zadeklarowana, należy określić jej nazwę (identyfikator) oraz typ. Opis_typu lista zmiennych Dla każdej zmiennej rezerwowany jest fragment pamięci o określonym
Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.
M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza
Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie
Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie 1. Cel ćwiczenia i zakres Poznanie środowiska IntelliJ IDEA Maven narzędzie do budowanie projektów typy podstawowe i tablice, instrukcje warunkowe,
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
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
WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy
WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy Pojęcie klasy Program napisany w języku Java składa się ze zbioru klas. Każda klasa zawiera
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
Bash - wprowadzenie. Bash - wprowadzenie 1/39
Bash - wprowadzenie Bash - wprowadzenie 1/39 Bash - wprowadzenie 2/39 Czym jest bash? Rysunek : Zadanie powłoki to ukrycie wywołań systemowych Bash - wprowadzenie 3/39 Czym jest bash? Przykład polecenia:
Wstęp do programowania 2
Wstęp do programowania 2 wykład 1 rekordy z wyróżnikami Agata Półrola Wydział Matematyki UŁ 2005/2006 Egzamin z I roku - problemy Problemy z wczytywaniem danych: skip_line Problemy z obliczeniami: zerowanie
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki int getmax (int a, int b) { return (a > b? a : b); float getmax (float a, float b) { return (a > b? a : b); long getmax (long a, long b)
Programowanie w języku Python. Grażyna Koba
Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i
MATERIAŁY DO ZAJĘĆ II
MATERIAŁY DO ZAJĘĆ II Zmienne w C# Spis treści I. Definicja zmiennej II. Hierarchia typów (CTS) III. Typy wbudowane IV. Deklaracja zmiennych V. Literały VI. Pobieranie i wypisywanie wartości zmiennych
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
Podstawy Programowania Podstawowa składnia języka C++
Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33
Programowanie w C++ Wykład 8 Katarzyna Grzelak 15 kwietnia 2019 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe
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
Microsoft IT Academy kurs programowania
Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego
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
Wstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2016/2017 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
Podstawy i języki programowania
Podstawy i języki programowania Laboratorium 8 - wprowadzenie do obsługi plików tekstowych i wyjątków mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 11 grudnia 2017 1 / 34 mgr inż. Krzysztof
JAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,
Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.
Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia Zmienna: [] [ '[' ']' ] ['=' ]; Zmienna to fragment pamięci o określonym
Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16
M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16
Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include
Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)
Języki i Paradygmaty Programowania Laboratorium 1 Obiekty i klasy C++ Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać) UWAGA! Umiejętność tworzenia
PARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Język C++ wykład VIII
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
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
Wprowadzenie do języka Java
WSNHiD, Programowanie 2 Lab. 1 [ część 1 ] Wprowadzenie do języka Java Wprowadzenie Język programowania Java jest obiektowym językiem programowania. Powstał w 1995 i od tej pory był intensywnie rozwijany.
Wstęp do Programowania, laboratorium 02
Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite
Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka
Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka 1. Kompilacja aplikacji konsolowych w środowisku programistycznym Microsoft Visual Basic. Odszukaj w menu startowym systemu
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
Podstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Programowanie obiektowe
Programowanie obiektowe Język programowania Ruby Marcin Młotkowski 12 kwietnia 2018 Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy
- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy
Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy - Narzędzie Windows Forms - Przykładowe aplikacje 1 Narzędzia Windows Form Windows Form jest narzędziem do tworzenia aplikacji dla
Dokumentacja do API Javy.
Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu
Kurs rozszerzony języka Python
Wykład 2. 13 października 2017 Plan wykładu Klasy i obiekty 1 Klasy i obiekty 2 3 4 Plan wykładu Klasy i obiekty 1 Klasy i obiekty 2 3 4 Deklaracja klasy Klasy i obiekty Przykłady class Figura: Pierwsza
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
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: ==!= > < >=
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
Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30
Programowanie w C++ Wykład 9 Katarzyna Grzelak 14 maja 2018 K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe plus
Szablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Obliczenia, zmienne. Proste działania, zmienne, rodzaje zmiennych, proste operacje i działania na zmiennych.
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Obliczenia, zmienne Proste działania, zmienne, rodzaje zmiennych, proste operacje i działania na zmiennych. Proste
Wykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
4. Funkcje. Przykłady
4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni
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
Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.
Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Wskaźnik do pliku Dostęp do pliku: zapis, odczyt,
Struktury, unie, formatowanie, wskaźniki
Struktury, unie, formatowanie, wskaźniki 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12, na rzecz swoich 143209 poddanych uchwalił dekret o 20 procentowej
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
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Programowanie - instrukcje sterujące
Instytut Informatyki Uniwersytetu Śląskiego Laborki środowisko NetBeans, tworzenie nowego projektu; okno projekty; główne okno programu; package - budowanie paczek z klas; public class JavaApplication
Programowanie I C / C++ laboratorium 03 arytmetyka, operatory
Programowanie I C / C++ laboratorium 03 arytmetyka, operatory Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-02-19 Typ znakowy Typ znakowy Typ wyliczeniowy # include
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
Test przykładowy 2 PAI WSB Wrocław /06/2018
Imię i Nazwisko: Student ID: Part 1: (Prawda lub Fałsz (T lub F)) 15. Która z poniższych deklaracji funkcji jest nieprawidłowa: A. function Sum(a, b, c){; B. function Sum(var a, var b); C. function Sum(a){;
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 17 1. Typy i zmienne Jak wiemy, komputer
5 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 5 1/6 Język C Instrukcja laboratoryjna Temat: Funkcje, parametry linii poleceń, typ wyliczeniowy. 5 Przygotował: mgr inż. Maciej Lasota 1) Parametry linii poleceń. Język C oprócz wprowadzania
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
Podstawy programowania
Podstawy programowania I rok Automatyka i Robotyka Eka PWr Ćwiczenia Zestaw 4 Zakres materiału Analiza poprawności konstrukcji, wyliczanie wyrażeń z wskaźnikami i tablicami, ręczna symulacja, opracowywanie
Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)
Wstęp do informatyki stęp do informatyki Polecenia (cz.2) Lista procesów top Pokaż listę procesów polecenie interaktywne Procesy Uruchamianie w tle. shell nie czeka na zakończenie procesu, można wydawać
Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki
Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu
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,
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
utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,
Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz