Prezentacja o Haskell u(rozdział 3 i 4)
|
|
- Izabela Kaczor
- 5 lat temu
- Przeglądów:
Transkrypt
1 9 marca 2017
2 Spis treści 1 2
3 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 jednak jawnie określać typ wyrażenia, ponieważ bardzo ułatwia to analizę i dokumentację kodu oraz usuwanie błędów. Najprostszym sposobem na poznanie typów jest użycie polecenia interpretera, dzięki któremu możemy sprawdzić typ dowolnego wyrażenia. Poleceniem tym jest :type, lub krócej :t. ( :: jest odczytywany jako, jest typu ) 1. Prelude>:t "witaj" "witaj"::[char] 2. Prelude>:t e e ::Char 3. Prelude>let i=5 Prelude>:t i i::integer 4. Prelude>lez z=5.6 Prelude>:t z z::double
4 Wprowadzenie Podstawowe typy w haskell: Int - Liczby całkowite z zakresu [-2^29.. 2^29-1] Integer - Wartością Integer może być dowolna liczba całkowita (zarówno ujemna jak i dodatnia) Float - Liczba zmiennoprzecinkowa pojedynczej precyzji Double - Liczba zmiennoprzecinkowa podwójnej precyzji Bool - Podobnie jak w innych językach, do reprezentowania zmiennych logicznych Char Typ znakowy Dodatkowo mamy również typ wyliczeniowy posiadający trzy wartości: Np. LT - mniejszy niż EQ równy GT większy niż Prelude> compare 1 2 LT
5 Wprowadzenie Nie tylko zmienne, ale również funkcje mają w Haskellu swój typ. Na typ funkcji składają się typy przyjmowanych przez nią parametrów oraz typ wartości zwracanej przez funkcję. Typy te podajemy w następujący sposób: Nazwa_funkcji :: TypParametru1 -> TypParamentru2 ->... -> TypParametru_n -> TypWartosciZwracanej Np. Dodawanie :: Double -> Double -> Double
6 Klasy typów Dla typów polimorficznych często zachodzi potrzeba ograniczenia klasy typów w zależności od kontekstu zastosowań. Predefiniowane klasy typów: Num - klasa której członkowie mogą zachowywać się jak liczby. ghci> :t :: (Num t) => t ghci> 20 :: Int 20 ghci> 20 :: Integer 20 ghci> 20 :: Float 20.0 ghci> 20 :: Double 20.0
7 Klasy typów Eq - klasa typów, dla których zdefiniowane jest porównywanie (operatory == i /=) ghci> :t (==) (==) :: (Eq a) => a -> a -> Bool Tak zdeklarowany typ funkcji == oznacza, że funkcja porównania pobiera na wejściu dwie wartości tego samego typu i zwraca wartość typu Bool, gdzie obie wartości wejściowe muszą należeć do klasy typów Eq. => Symbol ten oznacza, że wszystko przed nim nazywamy ograniczeniem klasy ghci> 5 /= 5 False ghci> a == a True ghci> "Ho Ho" == "Ho Ho" True ghci> == True
8 Klasy typów Show - klasa typów, których wartości można wypisać na ekranie ghci> show 3 "3" ghci> show "5.334" ghci> show True "True" Enum - klasa obiektów do którego należą typy, które mogą być wyliczane. W typie tym dostęp do poprzednika udostępnia funkcja pred, a do następnika funkcja succ. Typy które należą do tej klasy to: (), Bool, Char, Ordering, Int, Integer, Float i Double. ghci> [ a.. e ] "abcde" ghci> [LT.. GT] [LT,EQ,GT] ghci> [3.. 5] [3,4,5] ghci> succ B C
9 Klasy typów Ord jest dla typów które mają "kolejność". Funkcje porównujące >, =, <= pobierają dwa argumenty tego samego typu należące do klasy Ord i zwracają obiekt klasy Ordering tzn. GT, LT lub EQ. Aby typ należał do klasy Ord, musi należeć do klasy Eq. ghci> :t (>) (>) :: (Ord a) => a -> a -> Bool ghci> "Abrakadabra" < "Zebra" True ghci> "Abrakadabra" compare "Zebra" LT ghci> 5 >= 2 True ghci> 5 compate 3 GT
10 Klasy typów Read - jest pewnego rodzaju przeciwieństwem typu klasy Show. Funkcja Read pobiera string i zwraca typ który jest częścią funkcji Read. ghci> read "True" False True ghci> read "8.2" ghci> read "5" ghci> read "[1,2,3,4]" ++ [3] [1,2,3,4,3] Wykorzystanie Read do rzutowania wyniku na dany typ: ghci> read "5" :: Int 5 ghci> read "5" :: Float 5.0 ghci> (read "5" :: Float) * ghci> read "[1,2,3,4]" :: [Int] [1,2,3,4] ghci> read "(3, a )" :: (Int, Char) (3, a )
11 Dopasowywanie wzorców (pattern matching) W języku Haskell możliwe jest zdefiniowanie kilku różnych ciał funkcji, których wywołanie będzie zależne od konkretnych parametrów odpowiadających zadanym wzorcom. lucky :: ( Integral a) => a -> String lucky 7 = " LUCKY NUMBER SEVEN! " lucky x = " Sorry, you re out of luck, pal!" W takim wypadku wszystkie możliwości są sprawdzane od góry do dołu, i kiedy podany na wejściu parametr odpowiada jednemu z wzorców, wtedy zostaje wywołane odpowiadające mu ciało funkcji. Widzimy w przykładzie, że w przypadku wywołania funkcji lucky z parametrem 7, funkcja zwróci nam stringa LUCKY NUMBER SEVEN!. Ważna jest możliwość obsługiwania wszystkich możliwości, dlatego więc dla dowolnej innej niż 7 liczby wprowadzonej na wejściu zostanie wypisane " Sorry, you re out of luck, pal!" Ponieważ Haskell sprawdza możliwości zaczynając od góry, w przypadku użycia takiego wzorca musimy umieścić go na końcu kodu. W innym wypadku wzorce znajdujące się po nim nie zostaną w ogóle sprawdzone
12 Dopasowywanie wzorców (pattern matching) tarcza : : ( Integral a ) => a - > String tarcza x = Nie trafiles. tarcza 1 = Trafiles 1 punkt. tarcza 2 = Trafiles 2 punkt. tarcza 3 = Trafiles 3 punkt. tarcza 4 = Trafiles 4 punkt. tarcza 5 = Trafiles 5 punkt. W tym przypadku bez znaczenia jaki wzorzec wywołamy, z każdym razem otrzymamy komunikat Nie trafiles ponieważ wzorzec z parametrem x jest na samym początku. Przy dopasowaniu wzorców możemy oczywiście używać rekursji. Oto przykład: silnia :: ( Integral a ) => a -> a silnia 0 = 1 silnia n = n * silnia ( n - 1) Na początku ustalamy, że dla parametru 0 silnia wynosi 1. Następnie dodajemy wzorzec dla dowolnej innej liczby zgodnie z definicją silni.
13 Dopasowywanie wzorców (pattern matching) Jeżeli nie przewidzimy możliwości występowania dowolnego parametru. W przypadku wywołania innego wzorca niż podane program zwróci błąd. Rozważmy następujący przykład: charname :: Char -> String charname a = " Albert " charname b = " Broseph charname c = " Cecil " Teraz gdy wywołamy nieznany parametr (h), zostanie zwrócony błąd. ghci > charname a " Albert " ghci > charname b " Broseph " ghci > charname h " *** Exception : tut. hs :(53,0) -(55,21): Non - exhaustive patterns in function charname
14 Dopasowywanie wzorców (pattern matching) Wzorce można także stosować na krotkach. Poniższy przykład ilustruje funkcję, która dodaje do siebie wektory. addvectors :: ( Num a) = > (a, a) -> (a, a) -> (a, a) addvectors (x1, y1 ) (x2, y2 ) = ( x1 + x2, y1 + y2 ) Tak skonstruowana funkcja przyjmuje na wejście dowolne zmienne i zwraca wynik w postaci dwóch par liczb (wektorów). Jest również możliwe stosowanie wzorców na listach. W tym przykładzie wyszukiwane i sumowane są elementy listy odpowiadające zadanemu wzorcowi (a, b). ghci > let xs = [(1,3), (4,3), (2,4), (5,3), (5,6), (3,1)] ghci > [a+ b (a, b) <- xs ] [4,7,6,8,11,4] W przypadku kiedy dopasowanie wzorca jest niemożliwe, funkcja przechodzi do następnego elementu listy.
15 Dopasowywanie wzorców (pattern matching) Dopuszczalne jest także użycie listy pustej w określaniu wzorca. Tu na przykładzie zmodyfikowanej funkcji head: head :: [a] -> a head [] = error " Can t call head on an empty list, dummy!" head (x: _) = x I działa to następująco ghci > head [4,5,6] 4 ghci > head " Hello " H Możemy też zastosować rekurencje, w zmodyfikowanej wersji funkcji sum, która dodaje do siebie wszystkie elementy listy: sum :: ( Num a) => [a] -> a sum [] = 0 sum (x: xs ) = x + sum xs
16 Dopasowywanie wzorców (pattern matching) Można również za pomocą wzorca odwołać się do całości dowolnej listy, bez potrzeby przepisywania w każdym miejscu jej nazwy lub definicji. W tym celu stosuje się znak "@" wstawiany bezpośrednio przed wzorcem capital :: String -> String capital "" = " Empty string, whoops!" capital all@ (x : xs ) = " The first letter of " ++ all ++ " is " ++ [ x]
17 Osłony (guards) Osłony spełniają taką samą funkcję jak wyrażenie if służą do stwierdzenia czy postawiony warunek został spełniony. W odróżnieniu jednak od składni if, osłony są bardziej czytelne przy dużej liczbie warunków dla jednego wyrażenia oraz dobrze współgrają z haskellowymi wzorcami. bmitell :: ( RealFloat a) => a -> String bmitell bmi bmi <= 18.5 = " You re underweight, you emo, you!" bmi <= 25.0 = " You re supposedly normal. Pffft, I bet you re ugly!" bmi <= 30.0 = " You re fat! Lose some weight, fatty!" otherwise = " You re a whale, congratulations!" Osłony oznacza się znakiem " ", każda osłona jest wyrażeniem typu boolean przyjmującym wartość True lub False. Znajdujące się na końcu wyrażenie otherwise jest odpowiednikiem else znanego z konstrukcji if-else. Podany powyżej przykład w zależności od podanego przez nas BMI wyświetla odpowiedni tekst. Oczywiście do poprawnego działania, konieczne jest aby wzorce były ustawione w kolejności rosnącej.
18 Osłony (guards) Możemy też łatwo zmodyfikować naszą funkcję i stworzyć kalkulator BMI. Wystarczy, że zamiast wartości BMI na wejściu będziemy podawać nasz wzrost i wagę a reszta obliczy się sama. Wygląda to następująco: bmitell :: ( RealFloat a) => a -> a -> String bmitell weight height weight / height ^ 2 <= 18.5 = " You re underweight, you emo, you!" weight / height ^ 2 <= 25.0 = " You re supposedly normal. Pffft, I bet you re ugly!" weight / height ^ 2 <= 30.0 = " You re fat! Lose some weight, fatty!" otherwise = " You re a whale, congratulations!" Inny przykład zastosowania: max :: ( Ord a) => a -> a -> a max a b a > b = a otherwise = b W tym przypadku osłony wykorzystujemy do znajdowania większej liczby. Jak widzimy jest to tą metodą bardzo proste.
19 Klauzula where Klauzula where jest to miejsce, w którym wyrażeniom lub wartościom przypisuje się nazwę, tworząc stałe. Umieszcza się ją po osłonach. Jest przydatna, gdy funkcja zawiera obliczenia, które muszą być kilkakrotnie powtarzane. Aby zrozumieć kiedy ją używać weźmy nasz kalkulator BMI pokazany wcześniej. bmitell :: ( RealFloat a) => a -> a -> String bmitell weight height weight / height ^ 2 <= 18.5 = " You re underweight, you emo, you!" weight / height ^ 2 <= 25.0 = " You re supposedly normal. Pffft, I bet you re ugly!" weight / height ^ 2 <= 30.0 = " You re fat! Lose some weight, fatty!" otherwise = " You re a whale, congratulations!" Widzimy tutaj, że przy każdej osłonie musimy na nowo liczyć BMI i pisać weight / height ^ 2. I tutaj właśnie z pomocą przychodzi nam klauzula where, która znacząco uprości nam cały zapis. Po zmianie nasza funkcja wygląda tak: bmitell :: ( RealFloat a) => a -> a -> String bmitell weight height bmi <= 18.5 = " You re underweight, you emo, you!" bmi <= 25.0 = " You re supposedly normal. Pffft, I bet you re ugly!" bmi <= 30.0 = " You re fat! Lose some weight, fatty!" otherwise = " You re a whale, congratulations!" where bmi = weight / height ^ 2 Wszystko co musieliśmy zrobić to tylko na końcu dodać linijkę where bmi = weight / height ^ 2.
20 Klauzula where Możemy pójść o krok dalej i przekształcić naszą funkcję w następujący sposób: bmitell :: ( RealFloat a) => a -> a -> String bmitell weight height bmi <= skinny = " You re underweight, you emo, you!" bmi <= normal = " You re supposedly normal. Pffft, I bet you re ugly! " bmi <= fat = " You re fat! Lose some weight, fatty! " otherwise = " You re a whale, congratulations!" where bmi = weight / height ^ 2 skinny = 18.5 normal = 25.0 fat = 30.0 Wszystkie wartości zdefiniowane w where są widoczne tylko w obrębie danej funkcji. Sekcja where pozwala również na dopasowywanie wzorców. Musimy wtedy przepisać sekcję where naszej poprzedniej funkcji w następujący sposób:... where bmi = weight / height ^ 2 ( skinny, normal, fat ) = (18.5, 25.0, 30.0) Lepiej jednak robić to, definiując ciała funkcji, ale ten przykład pokazuje, że takie coś jest możliwe.
21 Klauzula where Tak jak wcześniej definiowaliśmy za pomocą where stałe, istnieje również możliwość definiowania funkcji. Stwórzmy funkcję, która przyjmuje listę par (waga, wzrost) i dla każdej takiej pary zwraca BMI. calcbmis :: ( RealFloat a ) = > [(a, a )] -> [a] calcbmis xs = [ bmi w h (w, h) <- xs ] where bmi weight height = weight / height ^ 2
22 Klauzula let Jest podobna do klauzuli where. Jest jednak między nimi istotna różnica. Otóż where jest tylko częścią składni i nie może istnieć samodzielnie, natomiast klauzula let jest wyrażeniem, więc możemy używać jej gdziekolwiek zechcemy. Poniżej przykład: cylinder :: ( RealFloat a) =& gt ; a -& gt ; a -& gt ; a cylinder r h = let sidearea = 2 * pi * r * h toparea = pi * r ^2 in sidearea + 2 * toparea Podana funkcja policzy nam pole powierzchni walca. Let możemy także użyć aby wstawić funkcję do listy: ghci > [ let square x = x * x in ( square 5, square 3, square 2)] lub rozbić krotkę na komponenty i przypisanie im nazw: ghci > ( let (a,b,c ) = (1,2,3) in a+b +c) * 100 Dzięki let unikniemy tworzenia funkcji pomocniczych: calcbmis :: ( RealFloat a) = > [(a, a )] -> [a] calcbmis xs = [ bmi (w, h) <- xs, let bmi = w / h ^ 2] Jak widać let zostało użyte od razu przy tworzeniu listy.
23 Klauzula let Kolejne zastosowanie to tworzenie w konsoli zmiennych i funkcji, do których mamy dostęp do momentu zamknięcia konsoli: ghci > let zoot x y z = x * y + z ghci > zoot 3 9 2
24 Wyrażenie warunkowe case Jest oparte na dopasowywaniu do wzorca i rozszerza je, bo dopasowywanie do wzorca mogło być użyte tylko w definicji funkcji, a wyrażeń warunkowych możemy użyć tam, gdzie to potrzebne. head :: [a] -> a head xs = case xs of [] -> error " No head for empty lists!" (x: _) -> x Case nie jest skomplikowany, używamy go następująco: case expression of pattern -> result pattern -> result pattern -> result...
25 Wyrażenie warunkowe case Tutaj kolejny prosty przykład wykorzystania case describelist :: [a ] -> String describelist xs = " The list is " ++ case xs of [] -> " empty."
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
- 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
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
HASKELL 2 R O Z D Z I A Ł 4 SKŁADNIA W FUNKCJACH R O Z D Z I A Ł 5 REKURENCJA. Learn You a Haskell for Great Good! Miran Lipovac
HASKELL 2 R O Z D Z I A Ł 4 SKŁADNIA W FUNKCJACH R O Z D Z I A Ł 5 REKURENCJA Learn You a Haskell for Great Good! Miran Lipovac ROZDZIAŁ 4 ODNAJDYWANIE WZORCA (P ATTERN MATCHING) CZYM JEST PATTERN MATCHING?
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
LibreOffice Calc VBA
LibreOffice Calc VBA LibreOffice Calc umożliwia tworzenie własnych funkcji i procedur przy użyciu składni języka VBA. Dostęp do edytora makr: Narzędzia->Makra->Zarządaj makrami->libreoffice Calc Aby rozpocząć
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/
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Podstawy programowania funkcjonalnego
Podstawy programowania funkcjonalnego haskell.mariuszrozycki.pl Mariusz Różycki Churchill College, University of Cambridge rev. 2014.03.27.1 Wprowadzenie Materiały haskell.mariuszrozycki.pl Slajdy (w tym
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał
REKURENCJA W JĘZYKU HASKELL Autor: Walczak Michał CZYM JEST REKURENCJA? Rekurencja zwana rekursją, polega na wywołaniu przez funkcję samej siebie. Algorytmy rekurencyjne zastępują w pewnym sensie iteracje.
Podstawą w systemie dwójkowym jest liczba 2 a w systemie dziesiętnym liczba 10.
ZAMIANA LICZB MIĘDZY SYSTEMAMI DWÓJKOWYM I DZIESIĘTNYM Aby zamienić liczbę z systemu dwójkowego (binarnego) na dziesiętny (decymalny) należy najpierw przypomnieć sobie jak są tworzone liczby w ww systemach
Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python
Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python Język PYTHON Podstawowe informacje Python to język skryptowy, interpretowany - co oznacza, że piszemy skrypt, a następnie wykonujemy go za
Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie
Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których
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
Bloki anonimowe w PL/SQL
Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia
Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych
1. Wstawianie skryptu na stroną: Laboratorium 1 Do umieszczenia skryptów na stronie służy znacznik: //dla HTML5 ...instrukcje skryptu //dla HTML4 ...instrukcje
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:
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
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
Jak napisać program obliczający pola powierzchni różnych figur płaskich?
Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy
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:
Część 4 życie programu
1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część
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
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
Odczyt danych z klawiatury Operatory w Javie
Odczyt danych z klawiatury Operatory w Javie Operatory W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje
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
Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].
ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości
Podstawy i języki programowania
Podstawy i języki programowania Laboratorium 3 - operatory oraz instrukcje warunkowe i wyboru mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 19 października 2018 1 / 35 mgr inż. Krzysztof
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
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
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
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
Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem
Moduł 1 1. Wprowadzenie do języka Python Python jest dynamicznym językiem interpretowanym. Interpretowany tzn. że kod, który napiszemy możemy natychmiast wykonać bez potrzeby tłumaczenia kodu programistycznego
3. Instrukcje warunkowe
. Instrukcje warunkowe Przykłady.1. Napisz program, który pobierze od użytkownika liczbę i wypisze na ekran słowo ujemna lub nieujemna, w zależności od tego czy dana liczba jest ujemna czy nie. 1 #include
Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.
Operatory w Javie W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje wykonywane są na operandach (argumentach
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
Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.
Instrukcje warunkowe i skoku. Spotkanie 2 Dr inż. Dariusz JĘDRZEJCZYK Wyrażenia i operatory logiczne Instrukcje warunkowe: if else, switch Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania
Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego
C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów
Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów
Rekurencja (rekursja)
Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)
Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA
Python wprowadzenie Warszawa, 24 marca 2017 Python to język: nowoczesny łatwy w użyciu silny można pisać aplikacje Obiektowy klejący może być zintegrowany z innymi językami np. C, C++, Java działający
C++ Przeładowanie operatorów i wzorce w klasach
C++ i wzorce w klasach Andrzej Przybyszewski numer albumu: 89810 14 listopada 2009 Ogólnie Przeładowanie (przeciążanie) operatorów polega na nadaniu im nowych funkcji. Przeładowanie operatora dokonuje
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
Warunek wielokrotnego wyboru switch... case
Warunek wielokrotnego wyboru switch... case Działanie instrukcji switch jest zupełnie inne niż w przypadku instrukcji if o czym będziesz mógł się przekonać w niniejszym rozdziale. Różnice pomiędzy instrukcjami
Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;
Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze
ZMIENNE. Podstawy PHP
ZMIENNE Podstawy PHP zmienna - to obiekt w programowaniu, który przechowuje różnego rodzaju dane niezbędne do działania programu. Zmienna podczas działania programu może zmieniad swoje wartości (jak wskazuje
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
Przykład 1: Funkcja jest obiektem, przypisanie funkcji o nazwie function() do zmiennej o nazwie funkcja1
Rachunek Prawdopodobieństwa i Statystyka lab 3. Kaja Gutowska (Kaja.Gutowska@cs.put.poznan.pl) 1. Funkcje: - Funkcje nie powinny korzystać ze zmiennych globalnych. - Funkcje powinny być możliwie krótkie.
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Języki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
Programowanie - wykład 4
Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include
Struktura pliku projektu Console Application
Struktura pliku projektu Console Application #include #include using namespace std; int main(int argc, char *argv[]) // to jest komentarz system("pause"); return EXIT_SUCCESS; Na początku
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
Proste programy w C++ zadania
Proste programy w C++ zadania Zbiór zadao do samodzielnego rozwiązania stanowiący powtórzenie materiału. Podstawy C++ Budowa programu w C++ Dyrektywy preprocesora Usunięcie dublujących się nazw Częśd główna
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem
Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.
Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice. Język PHP Język interpretowalny, a nie kompilowany Powstał w celu programowania
Kiedy i czy konieczne?
Bazy Danych Kiedy i czy konieczne? Zastanów się: czy często wykonujesz te same czynności? czy wielokrotnie musisz tworzyć i wypełniać dokumenty do siebie podobne (faktury, oferty, raporty itp.) czy ciągle
Podstawy i języki programowania
Podstawy i języki programowania Laboratorium 2 - wprowadzenie do zmiennych mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 23 października 2017 1 / 26 mgr inż. Krzysztof Szwarc Podstawy i
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
Programowanie strukturalne i obiektowe. Funkcje
Funkcje Często w programach spotykamy się z sytuacją, kiedy chcemy wykonać określoną czynność kilka razy np. dodać dwie liczby w trzech miejscach w programie. Oczywiście moglibyśmy to zrobić pisząc trzy
Celem tego projektu jest stworzenie
Prosty kalkulator Celem tego projektu jest stworzenie prostego kalkulatora, w którym użytkownik będzie podawał dwie liczby oraz działanie, które chce wykonać. Aplikacja będzie zwracała wynik tej operacji.
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Metody numeryczne Laboratorium 2
Metody numeryczne Laboratorium 2 1. Tworzenie i uruchamianie skryptów Środowisko MATLAB/GNU Octave daje nam możliwość tworzenia skryptów czyli zapisywania grup poleceń czy funkcji w osobnym pliku i uruchamiania
Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane
Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można
W dowolnym momencie można zmienić typ wskaźnika.
c++ Wskaźniki mają jeszcze jedną przydatną cechę. W dowolnym momencie można zmienić typ wskaźnika. Robi się to za pomocą operatora rzutowania. Najpierw zdefiniujemy sobie wsk_uniwersalny mogący pokazywać
Algorytmy i struktury danych
Algorytmy i struktury danych 4. Łódź 2018 Suma szeregu harmonicznego - Wpisz kod programu w oknie edycyjnym - Zapisz kod w pliku harmonic.py - Uruchom skrypt (In[1]: run harmonic.py) - Ten program wykorzystuje
znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.
Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na
W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby
Część XI C++ W folderze nazwisko36 program za każdym razem sprawdza oba warunki co niepotrzebnie obciąża procesor. Ten problem można rozwiązać stosując instrukcje if...else Instrukcja if wykonuje polecenie
Paradygmaty programowania
Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów
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:
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 komputerowe. Zajęcia 1
Programowanie komputerowe Zajęcia 1 Code::Blocks - tworzenie projektu Create New Project Console Application -> C++ Wybierz nazwę projektu Stworzy się nowy projekt z wpisaną funkcją main Wpisz swój program
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
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
Szablony funkcji i szablony 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 2011 Bogdan Kreczmer Niniejszy dokument
Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:
Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie
2 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania
Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe
Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie
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)
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.
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
ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje
Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych
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.
Podstawy Programowania http://www.saltbox.com/img/under_the_hood.png O mnie... dr inż. Łukasz Graczykowski Zakład Fizyki Jądrowej Wydział Fizyki Politechniki Warszawskiej lgraczyk@if.pw.edu.pl www.if.pw.edu.pl/~lgraczyk/wiki
Java Podstawy. Michał Bereta
Prezentacja współfinansowana przez Unię Europejską ze środków Europejskiego Funduszu Społecznego w ramach projektu Wzmocnienie znaczenia Politechniki Krakowskiej w kształceniu przedmiotów ścisłych i propagowaniu
Cw.12 JAVAScript w dokumentach HTML
Cw.12 JAVAScript w dokumentach HTML Wstawienie skryptu do dokumentu HTML JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.skrypty Java- Script mogą być zagnieżdżane
Algorytmy i struktury danych. wykład 1
Plan całego wykładu:. Pojęcie algorytmu, projektowanie wstępujące i zstępujące, rekurencja. Klasy algorytmów. Poprawność algorytmu, złożoność obliczeniowa. Wskaźniki, dynamiczne struktury danych: listy,
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
JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.
IŚ ćw.8 JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript są zagnieżdżane w dokumentach HTML. Skrypt JavaScript
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
1 Obsługiwane funkcje wyzwalaczy
2016/10/11 12:29 1/10 1 Obsługiwane funkcje wyzwalaczy 1 Obsługiwane funkcje wyzwalaczy Wszystkie funkcje obsługiwane w: wyrażeniach wyzwalaczy są wyszczególnione poniżej: wartości: float, int, str, text,
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Analiza algorytmów zadania podstawowe
Analiza algorytmów zadania podstawowe Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r 0 Jaka wartość zostanie zwrócona przez powyższą
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
Pytania sprawdzające wiedzę z programowania C++
Pytania sprawdzające wiedzę z programowania C++ Wstęp 1. Zaprezentuj mechanikę tworzenia programu napisanego w języku C++. 2. Co to jest kompilacja? 3. Co to jest konsolidacja? 4. Co to jest kod wykonywalny?
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,