F# programowanie funkcyjne w.net ((bo każdy lubi programowanie funkcyjne))

Save this PDF as:
 WORD  PNG  TXT  JPG

Wielkość: px
Rozpocząć pokaz od strony:

Download "F# programowanie funkcyjne w.net ((bo każdy lubi programowanie funkcyjne))"

Transkrypt

1 F# programowanie funkcyjne w.net ((bo każdy lubi programowanie funkcyjne)) Marek Sawerwain Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski tel. (praca): pok. 328a A-2, ul. prof. Z.Szafrana 2, Zielona Góra IT Academy Day 14 listopada 2013 WEIT, UZ, Zielona Góra V1.0 1/ 45

2 Spis treści 1 Wprowadzenie Historia języka F# Książki, książki,... 2 Pierwsze kroki z F# Wyrażenia let jak szwajcarski scyzoryk do wszystkiego if, for, while czasem się przydają Typowe konstrukcje F# Rekurencja Listy Szybko i zwięźle o sortowaniu Tablice 3 F# krok dalej Klasy i obiekty Definicja nowych operatorów Zapytania LINQ Analiza wyrażeń arytmetycznych Aplikacje GUI 4 Podsumowanie Dodatkowe informacje V1.0 2/ 45

3 Historia języka F# Programowanie funkcyjne i F# Krótki rys historyczny Język F# zyskał sporą popularność od momentu pojawienia się pierwszej wersji razem ze środowiskiem Visual Studio Prace na F# rozpoczęły się już w roku Rozpoczęto wtedy prace nad adaptacją rozwiązań funkcyjnych opartych o języki z rodziny ML dla platformy.net, również w kontekście typów uogólnionych. Grupa, która zajmowała się tymi zagadnieniami, wzorowała się też na języku Ocaml. Głównym architektem jezyka F# jest Don Syme. V1.0 3/ 45

4 Historia języka F# Główne fakty o F# Główne fakty dotyczące języka F#: pierwsze produkcyjne wydanie F# pojawiło się w Visual Studio 2010, najnowsza wersja to F# 3.1 dostępny w Visual Studio 2013, istnieje kompilator Open Source, na razie wspiera wersję 3.0, programy F# a także kompilator, współpracuje z platformą Mono, co zapewnia multiplaformowość, wspiera różne paradygmaty (style) programowania, a ostatnio, w dobrym tonie jest pisanie w programów F#. V1.0 4/ 45

5 Historia języka F# Paradygmaty w języku F# Język F# jest językiem programowania wspierającego kilka paradygmatów programowania w ramach platformy.net: Uwaga F# wspiera programowanie funkcyjne, w tym stylu metody programowania podkreślają co program na zrobić, bez ścisłego określenia jak program powinien pracować, wspierane jest także programowanie obiektowe, dostępne są min. klasy abstrakcyjne, a powstałe klasy naturalnie zgodne są z modelem obiektowym dostępnym w.net, wspierana są również techniki programowania imperatywnego, co pozwala na łatwą obsługę plików, czy obsługę sieci, język F# jest językiem statycznie silnie typowalnym, co oznacza iż typ jest znany na etapie kompilacji, F# jest językiem należącym do platformy.net, działa w ramach CLI, co pozwala na wykorzystywanie możliwości platformy jak min. garbage collection, możliwy jest dostęp do zbioru klas, oraz do takich pojęć jak delegaci, zdarzenia i etc. Podsumowując, F# obejmuje głównie paradygmat obiektowy oraz funkcyjny, gdzie funkcje są funkcjami tzw. pierwszej klasy. V1.0 5/ 45

6 Książki, książki,... Literatura o języku F# Pozycja (elektroniczna) w języku polskim: Marian Mysior, Język F# w praktyce, 2012 W języku angielskim: Don Syme, Adam Granicz, Antonio Cisternino, Expert F# 3.0, Apress, 2012 Chris Smith, Programming F# 3.0, 2nd Edition, O Reilly Media, 2012 Informacje o innych książkach: V1.0 6/ 45

7 Książki, książki,... F# środowisko pracy Główne środowisko pracy to naturalnie Visual Studio wersje 2010, 2012, 2013, dostępne jest też SharpDevelop oraz MonoDevelop: V1.0 7/ 45

8 Książki, książki,... F# środowisko pracy Główne środowisko pracy to naturalnie Visual Studio wersje 2010, 2012, 2013, dostępne jest też SharpDevelop oraz MonoDevelop: V1.0 8/ 45

9 Programy w języku F#, mogą być bardzo krótkie, a nawet składać się tylko z jednej linii: let x = 2 in printfn "%d+%d=%d" x x (x+x) Naturalnie można podać wyrażenie pełniące rolę funkcji głównej: [<EntryPoint>] let main argv = printfn "Hello World!" 0 Jednakże o tym iż określony symbol pełni rolę funkcji głównej decyduje atrybut [<EntryPoint>]: [<EntryPoint>] let ZielonaGóraStacjaGłówna argv = printfn "Witaj Świecie!" 0 Uwaga Pod spinaczem, znajdują się kody źródłowe prezentowanych przykładów. V1.0 9/ 45

10 Poprawny i pełny program w F#, podobny do C#: open System [<EntryPoint>] let main (args : string[]) = if args.length <> 2 then failwith "Błąd: nie podano dwóch parametrów" let greeting, thing = args.[0], args.[1] let timeofday = DateTime.Now.ToString("hh:mm tt") printfn "%s, %s o godzinie %s" greeting thing timeofday 0 V1.0 10/ 45

11 Programy w F# wykonują się od góry do dołu: open System let rec fib = function 0 -> 0 1 -> 1 n -> fib (n - 1) + fib (n - 2) let mainfun() = Console.WriteLine("fib 5: {0}", (fib 5)) mainfun() Uwaga Jednak warto pisać programy porządnie, tzn. jawnie wskazywać funkcję główną. V1.0 11/ 45

12 Wyrażenia let jak szwajcarski scyzoryk do wszystkiego Konstrukcja let Podstawowym wyrażeniem w F# jest wiązanie symbolu z wartością za pomocą słowa kluczowego let. Wyrażenie let let symbol = wyrażenie Wiązania, symbole, zmienne Wiązania nie należy utożsamiać z przypisaniem wartości do zmiennej, jak to zwykle bywa w językach takich jak C++ czy Java, bowiem symbol powiązany z wartością nie może zostać zmieniony w lokalnej przestrzeni nazw. Operacja przypisania jest reprezentowana przez operator <-. Jeśli chcemy zmienić wartość symbolu, czyli traktować go jako tradycyjną zmienną, musimy dodać słowo mutable: Wyrażenie let z mutable let mutable x = 10 V1.0 12/ 45

13 Wyrażenia let jak szwajcarski scyzoryk do wszystkiego Konstrukcja let Przykładem let: let n = 42 let str = "Hello world!" Wyrażenie let kreuje także funkcje: let sqr v = v * v ;; albo let add20 n = n + 20 ;; Wyrażenia let mogą się zagnieżdżać jak w poniższym przykładzie obliczającym pojemność kuli: let pojemnośćkuli promień = let pi = (4.0 / 3.0) * pi * promień * promień * promień printfn "%f" (pojemnośćkuli 5.0) V1.0 13/ 45

14 if, for, while czasem się przydają Instrukcja silnego sterowania F# oferuje instrukcję sterującą ze silną kontrolą sterowania, a jest to konstrukcja if... then... else... let result = if System.DateTime.Now.Second % 2 = 0 then "tik" else "tak" printfn "%A" result Jest to bezpośredni odpowiednik następującego przykładu z match: let result = match System.DateTime.Now.Second % 2 = 0 with true -> "tik" false -> "tak" Operatory logiczne to &&,, not. V1.0 14/ 45

15 if, for, while czasem się przydają Pętla for... do Ogólny zapis instrukcji for for identifier = start [ to downto ] finish do body-expression Przykład typowej pętli for: let funexam1() = for i = 1 to 100 do printf "%d " i printfn "" Określenie wartości początkowej i końcowej: let ex1 x y = x - 2*y let ex2 x y = x + 2*y let funexam2 x y = for i = (ex1 x y) to (ex2 x y) do printf "%d " i printfn "" funexam V1.0 15/ 45

16 if, for, while czasem się przydają Pętla for... in Ogólne zapis instrukcji for... in dla przeliczalnego wyrażenia for pattern in enumerable-expression do body-expression Przeglądnięcie listy: let list1 = [ 1; 2; 4; 8; 16 ] for i in list1 do printfn "%d" i Utworzenie i przeglądnięcie sekwencji uporządkowanych par: let seq1 = seq { for i in > (i, i*i) } for (i, isqr) in seq1 do printfn "%d podniesione do kwadratu to %d" is isqr V1.0 16/ 45

17 if, for, while czasem się przydają Pętla for... in Wyświetlenie, co drugiego elementu: let funexam3() = for i in do printf "%d " i printfn "" funexam3() Konwersja liczby całkowitej na postać binarną: let BitsNum = 32 ;; let binary_of_int n = [ for i in BitsNum > if (n >>> i) % 2 = 0 then "0" else "1" ] > String.concat "" ;; let x1 = binary_of_int 1431 ;; let x2 = binary_of_int ( ) ;; Operator > to tzw. pipe-forward operator stosujący lewy argument to prawego np.: 0.5 > Math.Sin. Operator _ pozwala na zignorowanie zmiennej/wzorca w konstrukcji for: let mutable count = 0 for _ in list1 do count <- count + 1 printfn "Długość listy: %d" count V1.0 17/ 45

18 if, for, while czasem się przydają Konstrukcja pętli while Konstrukcja pętli while ma następującą postać: while test-expression do body-expression Typowy iteracyjny przykład zastosowania pętli while: open System let szukajwartości val maxval = let mutable nextiter = true let randomnumbergenerator = new Random() while nextiter do let rand = randomnumbergenerator.next( maxval ) printfn "%d " rand if rand = val then printfn "\nodgadnięto wartość %d!" value nextiter <- false szukajwartości V1.0 18/ 45

19 Typowe konstrukcje F# printfn Wyrażenie let i różne typy danych: let message = "Hello World\r\n\t!" let main() = let dir printfn "%A" message let bytes = "bytesbytesbytes"b printfn "%A" dir let xa = 0xFFy printfn "%A" bytes let xb = 0o7777un printfn "%A" xa let xc = 0b10010UL printfn "%A" xa printfn "%A" xb printfn "%A" xc main() Po wykonaniu tego programu otrzymuje się następujące rezultaty: "Hello World!" "c:\projects" [ 98uy; 121uy; 116uy; 101uy; 115uy; 98uy; 121uy; 116uy; 101uy; 115uy; 98uy; 121uy; 116uy; 101uy; 115uy ] -1y 4095un 18UL V1.0 19/ 45

20 Typowe konstrukcje F# Wcięcia są ważne Ponieważ syntaktyka F# nie stosuje np. nawiasów klamrowych do tworzenie bloków instrukcji, to wcięcia wyznaczają nowe zasięgi zmiennych. let sign v = if v > 0 then 1 else if v = 0 then 0 else -1 Poniższe wyrażenie oblicza liczbę słów w podanym zdaniu: let wordcount (text : string) = let words = text.split > Array.toList in let wordset = Set.ofList words in let numwords = words.length in numwords printfn "Liczba słów: %A" (wordcount "Ile słów jest w tym zdaniu!") V1.0 20/ 45

21 Typowe konstrukcje F# Polecenie match dopasowanie wzorca Wyrażenie match pozwala na porównywanie wartości wyrażenia ze zbiorem wzorców i wybór rezultatu jeśli wyrażenie testowe jest zgodne z jednym ze wzorców: // schemat dla match match test-expression with pattern1 [ when condition ] -> result-expression1 pattern2 [ when condition ] -> result-expression2... // schemat dla funkcji function pattern1 [ when condition ] -> result-expression1 pattern2 [ when condition ] -> result-expression2... W przypadku połączenie match z tworzeniem lambda wyrażeń (słowo fun), schemat jest następujący: fun arg -> match arg with pattern1 [ when condition ] -> result-expression1 pattern2 [ when condition ] -> result-expression2... V1.0 21/ 45

22 Typowe konstrukcje F# Przykłady z match Raz jeszcze funkcja sign, let sign2 v = match v with _ when v > 0 -> 1 _ when v = 0 -> 0 _ when v < 0 -> -1 Typowy przykład dla match: let filter123 x = match x with > printfn "Znaleziono 1, 2 lub 3" a -> printfn "%d" a filter123 3 V1.0 22/ 45

23 Typowe konstrukcje F# Aktywne wzorce Siła polecenia match to tzw. aktywne wzorce, poniżej wzorzec, który w zależności od argumentu zwraca wartość oznaczającą parzystość lub nieparzystość liczby: let ( LParzysta LNieParzysta ) wartość = if wartość % 2 = 0 then LParzysta else LNieParzysta Funkcja testująca parzystość posiada bardo czytelną postać: let TestLiczbyCałkowitej wartość = match wartość with LParzysta -> printfn "liczba %d jest p." wartość LNieParzysta -> printfn "liczba %d jest niep." wartość V1.0 23/ 45

24 Rekurencja Funkcje rekurencyjne Liczby Fibonacciego: let rec fib n = match n with 0 1 -> n _ -> fib (n - 1) + fib (n - 2) Funkcja silnia (ang. factorial): let rec factorial n = match n with 0 -> 1 1 -> 1 n -> n * factorial ( n - 1 ) printfn "(fac 5) = %i" (factorial 5) V1.0 24/ 45

25 Rekurencja Silnia imperatywnie oraz funkcyjnie Definicja funkcji silnia w podejściu funkcyjnym: let rec ffactorial n = if (n = 0) then 1 else n * ffactorial(n - 1) albo let rec ffactorial n = if (n = 0) then 1 else n * ffactorial(n - 1) Wersja imperatywna z pętlą for: let ifactorial n = let mutable ret = 1 for i = 1 to n do ret <- ret * i ret V1.0 25/ 45

26 Listy Listy ważny typ danych Trzy główne pojęcia, lista pusta: let pustalista = [] Operator :: łączy wskazane elementy w listę let lista2 = "jeden" :: "dwa" :: "trzy" :: [] albo let lista3 = ["jeden" ; "dwa" ; "trzy" ] Operator :: ma też drugie zastosowanie, bowiem pozwala na wydzielenie z listy tzw. głowy, tj. pierwszego elementu oraz tzw. ogona lista. Połączenie dwóch list to zadanie dla let lista4 = ["e1"; ["e2"; "d3"; "e5"] V1.0 26/ 45

27 Listy Przykłady z listami Rekurencja do obliczania sumy elementów na liście: let rec sumaelementówlisty L = match L with h::t -> h + sumaelementówlisty t [] -> 0 F# oferuje wiele wbudowanych funkcji np.: operację reduce: let sumaelementówlistyprzezredukcję L = List.reduce (fun x y -> x + y) L Odczytanie ostatniego elementu z listy również można zrealizować poprzez wyznaczanie ogona z listy, aż otrzymamy jeden element: let rec ostatnielementlisty L = match L with [] -> failwith "lista pusta" [v] -> v _::L -> ostatnielementlisty L V1.0 27/ 45

28 Listy Przykłady z listami Ostatni element listy w jednej linii: let ostatnielementlisty2 L = L > List.rev > List.head Poniższa konstrukcja z podanej listy wybierze tylko elementy parzyste, a następnie z wybranych elementów zostanie zbudowana nowa lista: let tylkoparzyste L = List.filter (fun x -> x % 2 = 0) L Lista może też przechowywać tzw. krotki, np. pary elementów typu ciąg znaków i liczba całkowita. let data = [("Xyaz",3); ("Aghdrgs",4); ("Abcd",2); ("Pepsntlsc",1)] let res = data > List.filter (fun (słowo, id) -> słowo.length <= 4) printfn "Krótkie wyrazy : %A" res V1.0 28/ 45

29 Listy Przykłady z listami Odwrócenie kolejności elementów na liście: let revlista = List.rev lista Łącznie list w jedną listę: let listalist = [[2; 3; 5]; [7; 11; 13]; [17; 19; 23; 29]] let rec łączenielist l = match l with głowa :: ogon -> (łączenielist ogon) [] -> [] let liczbypierwsze = łączenielist listalist printfn "%A" liczbypierwsze Zastosowanie operacji do każdego elementu na liście: let rec listmap func list = match list with head :: rest -> func head :: listmap func rest [] -> [] let x = listmap ((+) 1) [1; 2; 3] printfn "%A" x V1.0 29/ 45

30 Szybko i zwięźle o sortowaniu Sortowanie szybkie Sortowanie szybkie, to modelowy przykład stosowany do prezentacji zwięzłości programowania funkcyjnego: let rec qsort1 L = match L with [] -> [] x::xs -> let smaller = [for i in xs do if i <= x then yield i] in let larger = [for i in xs do if i > x then yield i] in qsort1 qsort1 larger;; Można to zapisać krócej bez jawnego powoływania list smaller oraz larger: let rec qsort2 = function [] -> [] x::xs -> qsort2 [for a in xs do if a < x then yield x :: qsort2 [for a in xs do if a >= x then yield a] V1.0 30/ 45

31 Szybko i zwięźle o sortowaniu Sortowanie szybkie Wersja sortowania szybkiego z operacją filtrowania listy konstrukcją List.filter: let rec quicksort l = match l with [] -> [] h::t -> quicksort (List.filter (fun x -> x < h) h :: quicksort (List.filter (fun x -> x >= h) t) V1.0 31/ 45

32 Tablice Tablice Tablice powinny być stosowane w zadaniach gdzie niezbędna jest wysoka wydajność. Definicja tablicy: let arr = [ 1.0; 1.0; 1.0 ];; Tablice mogą być ogromne : let bigarray = Array.zeroCreate<int> ;; Tablice, współpracują operator >, który znakomicie sprawdza się w sekwencyjnym przetwarzaniu tablic: [ ] > Array.filter (fun elem -> elem % 2 <> 0) > Array.choose (fun elem -> if (elem <> 7 && elem <> 13) then Some(elem*elem) else None) > Array.rev > printfn "%A" V1.0 32/ 45

33 Klasy i obiekty Bez klas się nie da F# to język programowania funkcyjnego, ale dziś wiele aplikacji jest pisanych z użyciem klas oraz obiektów. Dlatego, F# oferuje także wsparcie dla klas dostępnych w ramach platformy.net. Zapewnia to możliwość łatwej współpracy z resztą platformy.net. type Base() = member x.getfirststate() = 10 type Sub() = inherit Base() member x.getsecondstate() = 20 let myobject = new Sub() printfn "myobject.state = %i,\nmyobject.otherstate = %i" (myobject.getfirststate()) (myobject.getsecondstate()) V1.0 33/ 45

34 Klasy i obiekty Bez klas się nie da F# to język programowania funkcyjnego, ale dziś wiele aplikacji jest pisanych z użyciem klas oraz obiektów. Dlatego, F# oferuje także wsparcie dla klas dostępnych w ramach platformy.net. Zapewnia to możliwość łatwej współpracy z resztą platformy.net. open System type Vector(x: float, y : float) = member this.x = x member this.y = y static member (~-) (v : Vector) = Vector(-1.0 * v.x, -1.0 * v.y) static member (*) (v : Vector, a) = Vector(a * v.x, a * v.y) static member (*) (a, v: Vector) = Vector(a * v.x, a * v.y) override this.tostring() = this.x.tostring() + " " + this.y.tostring() V1.0 34/ 45

35 Klasy i obiekty Bez klas się nie da Użycie klasy wektor oraz zdefiniowanych operatorów: let v1 = Vector(1.0, 2.0) let v2 = v1 * 2.0 let v3 = 2.0 * v1 let v4 = - v2 printfn "%s" (v1.tostring()) printfn "%s" (v2.tostring()) printfn "%s" (v3.tostring()) printfn "%s" (v4.tostring()) Console.ReadLine() > ignore V1.0 35/ 45

36 Definicja nowych operatorów Nowy operator globalny Można też przeciążać operatory globalne, a nawet tworzyć specjalne własne operatory: let inline (+?) (x: int) (y: int) = x + 2*y printfn "%d" (10 +? 1) Inny przykład bez specjalizacji typów: let inline x y = x + x * y printfn "%d" (1 1) printfn "%f" ( ) V1.0 36/ 45

37 Zapytania LINQ Zapytania LINQ od wersji F# 3.0 Prosty przykład zapytania LINQ dla listy o trzech słowach: let słowa = ["słowo"; "marzec"; "abecadło"] Zadaniem tego zapytania jest posortowanie alfabetycznie słów w liście: let r = query { for s in słowa do sortby s select s } Rezultat możemy odczytać w następujący sposób: r > Seq.iter( fun n -> printf "%s " n ) V1.0 37/ 45

38 Zapytania LINQ Zapytania LINQ od wersji F# 3.0 Przykład, dla listy z liczbami: let liczby = [ 5; 4; 1; 3; 9; 8; 6; 7; 2; 0 ] Wyświetlamy tylko te liczby, które są większe od np. pięciu: let Liczba = 5 in query { for l in liczby do where (l < Liczba) select l; } > Seq.iter(fun n -> printf "%d " n) V1.0 38/ 45

39 Analiza wyrażeń arytmetycznych Analiza rożnego rodzaju wyrażeń, a jest to zagadnienie bardzo ważne np. w budowie interpreterów czy kompilatorów, to także domena języka F#, czy ogólnie języków funkcyjnych. open System open FParsec let chars s = pstring s >>. spaces let number = pfloat.>> spaces let numorpunctation = nextcharsatisfiesnot isletter >>. spaces let operators = new OperatorPrecedenceParser<float, unit,unit>() let expr = operators.expressionparser operators.termparser <- number < > between (chars "(") (chars ")") expr V1.0 39/ 45

40 Analiza wyrażeń arytmetycznych Głowna cześć analizatora: operators.addoperator(infixoperator("+", spaces, 1, Associativity.Left, (+))) // usunięte operatory operators.addoperator(infixoperator("^", spaces, 3, Associativity.Right, fun x y -> System.Math.Pow(x, y))) operators.addoperator(prefixoperator("-", spaces, 4, true, fun x -> -x)) operators.addoperator(prefixoperator("sin", numorpunctation, 4, true, System.Math.Sin)) // usunięte funkcje let arithexpr = spaces >>. expr.>> eof let aritheval s = run arithexpr s V1.0 40/ 45

41 Analiza wyrażeń arytmetycznych Część sterująca analizatora: let rec calctest() = printf "> " let strexpr = Console.ReadLine() match strexpr with "quit" -> () _ -> match aritheval strexpr with Success(value, _, _) -> printfn "%A" value ; calctest() Failure(msg, _, _) -> printfn "error: %A" msg do calctest() V1.0 41/ 45

42 Aplikacje GUI Aplikacje GUI Język F# pozwala także na budowanie aplikacje GUI. Niestety, jak dotąd nie ma środowiska graficznego do budowy aplikacji GUI bezpośrednio w F#, przy użyciu graficznych narzędzi jak w np.: C#. Dlatego, trzeba samodzielnie tworzyć obiekty odpowiedzialne za okno i poszczególne kontrolki. let windowsform = new Form() windowsform.text <- "Okno aplikacji okienkowej" albo let windowsform = new Form(Width= 640, Height = 480, Visible = true, Text = "tytuł") Przykład budowy menu: let mainmenu = windowsform.menu <- new MainMenu() let filemenu = windowsform.menu.menuitems.add("&plik") let quititem = new MenuItem("&Wyjście") filemenu.menuitems.add( quititem ) > ignore albo let _ = mfile.menuitems.add(menuitemquit) V1.0 42/ 45

43 Aplikacje GUI Aplikacje GUI obsługa zdarzeń Zamknięcie okna: quititem.click.add(fun _ -> windowsform.close()) Utworzenie okna dialogowego: let SaveFile file text = let dlg = new SaveFileDialog() dlg.filter <- "Pliki tekstowe *.txt *.txt Wszyst...*" dlg.filterindex <- 2 Zapis danych do pliku: if dlg.showdialog() = DialogResult.OK then let sw = new StreamWriter( dlg.filename ) sw.write( richtextbox.text:string ) sw.close( ) else None V1.0 43/ 45

44 Aplikacje GUI Aplikacje GUI obsługa zdarzeń Obsługa zapisu danych, podłączanie zdarzeń i uruchamianie programu: let clbsaveastext _ = match SaveFile filename textrichbox.text with Some file -> SetFilename file None -> () menuitemopen.click.add( clbloadtext ) > ignore menuitemsaveas.click.add( clbsaveastext ) > ignore menuitemquit.click.add( fun _ -> winform.close () ) > ignore menuitemabout.click.add( fun _ -> MessageBox.Show("Super-hyper notatnik w F#!", "O Notatniku") > ignore) > ignore [<STAThread()>] do Application.Run( winform ) V1.0 44/ 45

45 Dodatkowe informacje Zamiast uwag na koniec, spis dodatkowych materiałów w Internecie: 1 Podstawowa strona dotycząca języka F#: 2 Kod źródłowy kompilatora F# oraz najważniejszych pakietów: 3 Obszerny zbiór przykładów dla F#, które można wypróbować on-line: 4 F# PowerPack: 5 Obszerny zbiór przykładów dla F# w tym również przykładów zapytań LINQ: 6 Zbiór 99 problemów wraz z rozwiązaniami w F#: https://github.com/paks/99-fsharp-problems 7 Czasopismo o języku F#: 8 Web-blog głównego architekta F#, Don Symea: Dziękuje za uwagę!!! V1.0 45/ 45

Platforma.NET Wykład 6 Programowanie w F# Spis treści. Marek Sawerwain. 8 maja 2012. Notatki. Notatki

Platforma.NET Wykład 6 Programowanie w F# Spis treści. Marek Sawerwain. 8 maja 2012. Notatki. Notatki Platforma.NET Wykład 6 Platforma.NET Wykład 6 Marek Sawerwain Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 8 maja 2012 V1.1 1/ 52 Platforma.NET Wykład 6 Spis treści Wprowadzenie

Bardziej szczegółowo

Platforma.NET Wykład 6 Programowanie w F# Spis treści. Plan wykładu spotkania tydzień po tygodniu. Plan wykładu tydzień po tygodniu. Notatki.

Platforma.NET Wykład 6 Programowanie w F# Spis treści. Plan wykładu spotkania tydzień po tygodniu. Plan wykładu tydzień po tygodniu. Notatki. Platforma.NET Wykład 6 Marek Sawerwain Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski 8 maja 2012 V1.1 1/ 52 Spis treści Wprowadzenie Plan wykładu Języki funkcyjne i paradygmaty

Bardziej szczegółowo

Programowanie Funkcyjne. Marcin Kubica Świder,

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,

Bardziej szczegółowo

Paradygmaty programowania

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

Bardziej szczegółowo

Podstawy programowania funkcjonalnego

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

Bardziej szczegółowo

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

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

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

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

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Bash - wprowadzenie. Bash - wprowadzenie 1/39

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:

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH KATEDRASYSTEMÓWOBLICZENIOWYCH ALGORYTMY I STRUKTURY DANYCH 1.Rekurencja Rekurencja inaczej rekursja (ang. recursion) to wywołanie z poziomu metody jej samej. Programowanie z wykorzytaniem rekurencji pozwala

Bardziej szczegółowo

Technologie informacyjne - wykład 12 -

Technologie informacyjne - wykład 12 - Zakład Fizyki Budowli i Komputerowych Metod Projektowania Instytut Budownictwa Wydział Budownictwa Lądowego i Wodnego Politechnika Wrocławska Technologie informacyjne - wykład 12 - Prowadzący: Dmochowski

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

Programowanie obiektowe

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ąć

Bardziej szczegółowo

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop. 2010 Spis treści Wstęp 11 Część I PASCAL - wprowadzenie do programowania strukturalnego

Bardziej szczegółowo

ECDL Podstawy programowania Sylabus - wersja 1.0

ECDL Podstawy programowania Sylabus - wersja 1.0 ECDL Podstawy programowania Sylabus - wersja 1.0 Przeznaczenie Sylabusa Dokument ten zawiera szczegółowy Sylabus dla modułu Podstawy programowania. Sylabus opisuje, poprzez efekty uczenia się, zakres wiedzy

Bardziej szczegółowo

Wprowadzenie do programowania

Wprowadzenie do programowania do programowania ITA-104 Wersja 1 Warszawa, Wrzesień 2009 ITA-104 do programowania Informacje o kursie Zakres tematyczny kursu Opis kursu Kurs przeznaczony jest do prowadzenia przedmiotu do programowania

Bardziej szczegółowo

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

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

Bardziej szczegółowo

Składnia funkcji i Rekurencja w języku Haskell

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

Bardziej szczegółowo

Microsoft IT Academy kurs programowania

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

Bardziej szczegółowo

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

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ć

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

Programowanie obiektowe i C++ dla matematyków

Programowanie obiektowe i C++ dla matematyków Programowanie obiektowe i C++ dla matematyków Bartosz Szreder szreder (at) mimuw... 04 X 2011 Wszelkie uwagi, poprawki, braki czy sugestie najlepiej wysyłać na maila. 1. wprowadzenie do Linuksa: kompilacja

Bardziej szczegółowo

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW http://metodycy.torun.pl/ m.informatyka@metodycy.torun.pl 1. Wprowadzenie do Pythona podstawowe informacje Python to język programowania wysokiego poziomu,

Bardziej szczegółowo

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. 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,

Bardziej szczegółowo

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

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

Bardziej szczegółowo

XQuery. sobota, 17 grudnia 11

XQuery. sobota, 17 grudnia 11 XQuery XQuery XQuery pozwala na wydobywanie danych z dokumentów XML w sposób podobny do tego w jaki używany jest SQL do tabel w bazach danych. XQuery to język do wykonywania zapytań na dokumentach XML.

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009 Informatyka 1 zajęcia nr 1 Elektrotechnika, semestr II rok akademicki 2008/2009 mgr inż.. Paweł Myszkowski Plan dzisiejszych zajęć 1. Organizacja laboratorium przedmiotu 2. Algorytmy i sposoby ich opisu

Bardziej szczegółowo

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga! Programowanie I O czym będziemy mówili Podstawy programowania w językach proceduralnym ANSI C obiektowym Java Uwaga! podobieństwa w podstawowej strukturze składniowej (zmienne, operatory, instrukcje sterujące...)

Bardziej szczegółowo

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 1. Wprowadzenie do aplikacji internetowych

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 1 - wprowadzenie do przedmiotu mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 16 października 2017 1 / 25 mgr inż. Krzysztof Szwarc Podstawy i

Bardziej szczegółowo

Języki programowania deklaratywnego

Języki programowania deklaratywnego Katedra Inżynierii Wiedzy laborki 14 Języki deklaratywne Główne różnice między paradygmatem deklaratywnym a imperatywnym Omów główne cechy paradygmatu programowania w logice na przykładzie Prologa Główne

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

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

Bardziej szczegółowo

Języki skryptowe w programie Plans

Języki skryptowe w programie Plans Języki skryptowe w programie Plans Warsztaty uŝytkowników programu PLANS Kościelisko 2010 Zalety skryptów Automatyzacja powtarzających się czynności Rozszerzenie moŝliwości programu Budowa własnych algorytmów

Bardziej szczegółowo

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard

Bardziej szczegółowo

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop. 2017 Spis treści O autorach 11 Podziękowania 12 Wprowadzenie 13 CZĘŚĆ I ZACZNIJ PROGRAMOWAĆ JUŻ DZIŚ Godzina 1. Praktyczne

Bardziej szczegółowo

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. PYTHON Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. Aby program napisany w danym języku mógł być wykonany, niezbędne

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

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,

Bardziej szczegółowo

Wprowadzenie do języka Java

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.

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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

Bardziej szczegółowo

Wstęp do Programowania potok funkcyjny

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

Bardziej szczegółowo

λ 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

λ 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:

Bardziej szczegółowo

- nawiasy kwadratowe oznaczają, że to lista

- 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

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

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

Bardziej szczegółowo

Programowanie funkcyjne (Haskell Wprowadzenie) Kowalik Adrian

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

Bardziej szczegółowo

Typy, klasy typów, składnie w funkcji

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

Bardziej szczegółowo

Java EE produkcja oprogramowania

Java EE produkcja oprogramowania Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 1 Warszawa, 2016Z 2 Ogólna charakterystyka języka Java 3 Java 1/2 Język programowania Java został opracowany przez

Bardziej szczegółowo

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.

Bardziej szczegółowo

I. WSTĘP. Przykład 1. Przykład 2. Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych)

I. WSTĘP. Przykład 1. Przykład 2. Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych) I. WSTĘP Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych) Algorytm - sposób na osiągnięcie celu w pewnych ograniczonych krokach. Program komputerowy realizuje zawsze algorytm.

Bardziej szczegółowo

Programowanie MorphX Ax

Programowanie MorphX Ax Administrowanie Czym jest system ERP? do systemu Dynamics Ax Obsługa systemu Dynamics Ax Wyszukiwanie informacji, filtrowanie, sortowanie rekordów IntelliMorph : ukrywanie i pokazywanie ukrytych kolumn

Bardziej szczegółowo

1 Wprowadzenie do algorytmiki

1 Wprowadzenie do algorytmiki Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności

Bardziej szczegółowo

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

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++)

Bardziej szczegółowo

Cw.12 JAVAScript w dokumentach HTML

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

Bardziej szczegółowo

Rok akademicki: 2012/2013 Kod: ZIE-1-306-s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Rok akademicki: 2012/2013 Kod: ZIE-1-306-s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: - Nazwa modułu: Programowanie obiektowe Rok akademicki: 2012/2013 Kod: ZIE-1-306-s Punkty ECTS: 3 Wydział: Zarządzania Kierunek: Informatyka i Ekonometria Specjalność: - Poziom studiów: Studia I stopnia

Bardziej szczegółowo

Kostki OLAP i język MDX

Kostki OLAP i język MDX Kostki OLAP i język MDX 24 kwietnia 2015 r. Opis pliku z zadaniami Wszystkie zadania na zajęciach będą przekazywane w postaci plików PDF sformatowanych jak ten. Będą się na nie składały różne rodzaje zadań,

Bardziej szczegółowo

SZYBKO ZROZUMIEĆ VISUAL BASIC 2012 Artur Niewiarowski -

SZYBKO ZROZUMIEĆ VISUAL BASIC 2012 Artur Niewiarowski - S t r o n a 2 SZYBKO ZROZUMIEĆ VISUAL BASIC 2012 Artur Niewiarowski - Copyright by Artur Niewiarowski 2013 ISBN: 978-83-937802-0-4 - Artur Niewiarowski Self-Publishing - All rights reserved. Wszelkie prawa

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Programowanie Komputerów

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

Bardziej szczegółowo

Python wstęp do programowania dla użytkowników WCSS

Python wstęp do programowania dla użytkowników WCSS Python wstęp do programowania dla użytkowników WCSS Dr inż. Krzysztof Berezowski Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Wprowadzenie CHARAKTERYSTYKA JĘZYKA Filozofia języka

Bardziej szczegółowo

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

Wykład 0 Informacje Podstawowe

Wykład 0 Informacje Podstawowe Paradygmaty Programowania Wykład 0 Informacje Podstawowe Nieliniowej, WMiI UŁ 1 Informacje Ogólne (22 luty 2013) Wykłady: piątek, 10.00-12.00, D103 Wykłady: 1 wprowadzający +10 wykładów głównych Zaliczenie

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Zaawansowane aplikacje WWW - laboratorium

Zaawansowane aplikacje WWW - laboratorium Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w

Bardziej szczegółowo

Narzędzie pomocnicze do przedmiotu Podstawy Informatyki - złożoność obliczeniowa

Narzędzie pomocnicze do przedmiotu Podstawy Informatyki - złożoność obliczeniowa Narzędzie pomocnicze przedmiotu Podstawy Informatyki - złożoność obliczeniowa Piotr Jeruszka 1 25 listopada 2013 1 Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska pjeruszka@icis.pcz.pl

Bardziej szczegółowo

PHP: bloki kodu, tablice, obiekty i formularze

PHP: bloki kodu, tablice, obiekty i formularze 1 PHP: bloki kodu, tablice, obiekty i formularze SYSTEMY SIECIOWE Michał Simiński 2 Bloki kodu Blok if-else Switch Pętle Funkcje Blok if-else 3 W PHP blok if i blok if-else wyglądają tak samo i funkcjonują

Bardziej szczegółowo

Język ludzki kod maszynowy

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

Bardziej szczegółowo

WPROWADZENIE DO JĘZYKA JAVA

WPROWADZENIE DO JĘZYKA JAVA WPROWADZENIE DO JĘZYKA JAVA programowanie obiektowe KRÓTKA HISTORIA JĘZYKA JAVA KRÓTKA HISTORIA JĘZYKA JAVA 1991 - narodziny języka java. Pierwsza nazwa Oak (dąb). KRÓTKA HISTORIA JĘZYKA JAVA 1991 - narodziny

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma

Bardziej szczegółowo

Programowanie, algorytmy i struktury danych

Programowanie, algorytmy i struktury danych 1/44 Programowanie, algorytmy i struktury danych materiały do wykładu: http://cez.wipb.pl/moodle/ email: m.tabedzki@pb.edu.pl strona: http://aragorn.pb.bialystok.pl/~tabedzki/ Marek Tabędzki Wymagania

Bardziej szczegółowo

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki Studia Podyplomowe INFORMATYKA Podstawy Informatyki Wykład V Rzut okiem na języki programowania 1 Kompilacja vs. interpretacja KOMPILACJA Proces, który przetwarza program zapisany w języku programowania,

Bardziej szczegółowo

Projektowanie aplikacji internetowych laboratorium

Projektowanie aplikacji internetowych laboratorium Projektowanie aplikacji internetowych laboratorium Programowanie w języku Java Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne NetBeans 7 (zrzuty ekranów pochodzą z wersji

Bardziej szczegółowo

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop. 2016 Spis treści Wprowadzenie 11 Adresaci książki 12 Co wyróżnia tę książkę na

Bardziej szczegółowo

Część 4 życie programu

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ęść

Bardziej szczegółowo

Wstęp do Programowania potok funkcyjny

Wstęp do Programowania potok funkcyjny Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline Procedury wyższych rzędów 1 Procedury wyższych rzędów jako abstrakcje konstrukcji programistycznych Intuicje Procedury wyższych rzędów

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

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,

Bardziej szczegółowo

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

Bardziej szczegółowo

Niniejszy ebook jest własnością prywatną. Został zakupiony legalnie w serwisie Netpress.pl, będącym oficjalnym Partnerem Wydawcy.

Niniejszy ebook jest własnością prywatną. Został zakupiony legalnie w serwisie Netpress.pl, będącym oficjalnym Partnerem Wydawcy. Niniejszy ebook jest własnością prywatną. Został zakupiony legalnie w serwisie Netpress.pl, będącym oficjalnym Partnerem Wydawcy. Niniejsza publikacja, ani żadna jej część, nie może być kopiowana, ani

Bardziej szczegółowo

Bloki anonimowe w PL/SQL

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

Bardziej szczegółowo

JAVAScript w dokumentach HTML (2)

JAVAScript w dokumentach HTML (2) Informatyka ćw.6 JAVAScript w dokumentach HTML (2) Interakcyjne wprowadzanie danych Jednym ze sposobów jest stosowanie metody prompt dla wbudowanego obiektu window: zmienna= prompt("tekst zachęty, np.

Bardziej szczegółowo

Podstawy programowania w Pythonie

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

Bardziej szczegółowo

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem. Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD programowania w C++ Typy c.d. 2 Typy zmiennych Instrukcja typedef -

Bardziej szczegółowo

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6 PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6 TEMAT: Programowanie w języku C/C++: instrukcje iteracyjne for, while, do while Ogólna postać instrukcji for for (wyr1; wyr2; wyr3) Instrukcja for twory pętlę działającą

Bardziej szczegółowo

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

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

Bardziej szczegółowo

Laboratorium Programowania Kart Elektronicznych

Laboratorium Programowania Kart Elektronicznych Laboratorium Programowania Kart Elektronicznych Programowanie BasicCard Marek Gosławski Przygotowanie do zajęć dokumentacja ZeitControl BasicCard środowisko programistyczne karta BasicCard Potrzebne wiadomości

Bardziej szczegółowo

Funkcje i instrukcje języka JavaScript

Funkcje i instrukcje języka JavaScript Funkcje i instrukcje języka JavaScript 1. Cele lekcji a) Wiadomości Uczeń : zna operatory i typy danych języka JavaScript, zna konstrukcję definicji funkcji, zna pętlę If i For, Do i While oraz podaje

Bardziej szczegółowo

Programowanie w języku C++ Grażyna Koba

Programowanie w języku C++ Grażyna Koba Programowanie w języku C++ 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 zasad

Bardziej szczegółowo

Języki programowania zasady ich tworzenia

Języki programowania zasady ich tworzenia Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie

Bardziej szczegółowo

Metodyka i Technika Programowania 1

Metodyka i Technika Programowania 1 Metodyka i Technika Programowania 1 Pytania zaliczeniowe z wykładu mgr inż. Leszek Ciopiński Wykład I 1. Wprowadzenie 1.1. Programowanie imperatywne polega na: 1.2. Czy w programowaniu imperatywnym programista

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

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

Bardziej szczegółowo

Przetwarzanie i analiza danych w języku Python / Marek Gągolewski, Maciej Bartoszuk, Anna Cena. Warszawa, Spis treści

Przetwarzanie i analiza danych w języku Python / Marek Gągolewski, Maciej Bartoszuk, Anna Cena. Warszawa, Spis treści Przetwarzanie i analiza danych w języku Python / Marek Gągolewski, Maciej Bartoszuk, Anna Cena. Warszawa, 2016 Spis treści Przedmowa XI I Podstawy języka Python 1. Wprowadzenie 3 1.1. Język i środowisko

Bardziej szczegółowo

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek Wprowadzenie Organizacja pracy i środowisko programistyczne Mirosław Ochodek Miroslaw.Ochodek@pwsz.pila.pl Miroslaw.Ochodek@cs.put.poznan.pl Dane kontaktowe Mirosław Ochodek E-mail: Miroslaw.Ochodek@pwsz.pila.pl

Bardziej szczegółowo

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe Wydział Zarządzania AGH Katedra Informatyki Stosowanej Podstawy VBA cz. 1 Programowanie 1 Program wykładu Struktura programu Instrukcja przypisania Wprowadzanie danych Wyprowadzanie wyników Instrukcja

Bardziej szczegółowo

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 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

Bardziej szczegółowo

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy

Bardziej szczegółowo

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

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

Bardziej szczegółowo