F# programowanie funkcyjne w.net ((bo każdy lubi programowanie funkcyjne))
|
|
- Aneta Wójcik
- 8 lat temu
- Przeglądów:
Transkrypt
1 F# programowanie funkcyjne w.net ((bo każdy lubi programowanie funkcyjne)) Marek Sawerwain Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski M.Sawerwain@issi.uz.zgora.pl 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" (1.0 +@ 0.5) 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#: 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 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ółowoPlatforma.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ółowoProgramowanie 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ółowoParadygmaty 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ółowoProgramowanie obiektowe
Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje
Bardziej szczegółowoPodstawy 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ółowoProgramowanie 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ółowoKOTLIN. Język programowania dla Androida
KOTLIN Język programowania dla Androida Historia Kotlin został opracowany przez firmę JetBrains Prace rozpoczęto w 2011 r., od 2012 r. dostępny na licencji Apache 2. Nazwa pochodzi od wyspy koło Petersburga
Bardziej szczegółowoPodstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
programowania Wykład: 4 Instrukcje sterujące, operatory 1 programowania w C++ Instrukcje sterujące 2 Pętla for for ( instrukcja_ini ; wyrazenie_warunkowe ; instrukcja_krok ) tresc_petli ; instrukcja_ini
Bardziej szczegółowoTechnologie 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ółowoBash - 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ółowoWprowadzenie 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ółowoUwagi 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ółowoProgramowanie 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ółowoSpis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal
Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO Rozdział 1. Wybór i instalacja kompilatora języka Pascal 1.1. Współczesne wersje kompilatorów Pascala 1.2. Jak zainstalować
Bardziej szczegółowoProgramowanie 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ółowoREKURENCJA 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.
Bardziej szczegółowoALGORYTMY 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ółowoWstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline 1 Pojęcie typu Definition (Typ danych) Typ danych to zbiór wartości wraz z zestawem podstawowych operacji na tych wartościach. Typy
Bardziej szczegółowoECDL 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ółowoLaboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą
Bardziej szczegółowoProgramowanie 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ółowoLaboratorium 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ółowoObiektowy Caml. Paweł Boguszewski
Obiektowy Caml Paweł Boguszewski Plan prezentacji Charakterystyka języka Składnia Obiektowość w OCamlu Wyjątki Standardowe Moduły Narzędzia wspomagające Bibliografia OCaml OCaml jest obiektowym, funkcyjnym
Bardziej szczegółowoWstę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ółowoWprowadzenie 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ółowoRedis, skrypty w języku Lua
edis, skrypty w języku Lua 1/15 Redis, skrypty w języku Lua Technologie Zarządzania Treścią dr inż. Robert Perliński rperlinski@icis.pcz.pl Politechnika Częstochowska Instytut Informatyki Teoretycznej
Bardziej szczegółowoMicrosoft 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ółowoSkł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ółowoWstę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ółowoDefinicje 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
Bardziej szczegółowoInformatyka 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ółowoZofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1
PODSTAWOWE ELEMENTY JĘZYKA JAVA WYRAŻENIA, OPERATORY, INSTRUKCJE 1. Operatory arytmetyczne +, -, /,*, % Przykład 1 programu z interfejsem konsolowym public class Lab2_1 // Tworzy generator liczb losowych,
Bardziej szczegółowoProgramowanie 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ółowoProgramowanie 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ółowoJę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ółowoJę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ółowoProgramowanie obiektowe
Programowanie obiektowe Język programowania Ruby Marcin Młotkowski 12 kwietnia 2018 Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy
Bardziej szczegółowoXQuery. 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ółowoI - 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ółowoInformatyka 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
Bardziej szczegółowoWstę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ółowoPROGRAMOWANIE 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ółowoPython 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ółowoJę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/
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
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ółowoWstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2016/2017 Outline 1 Pojęcie typu Definition (Typ danych) Typ danych to zbiór wartości wraz z zestawem podstawowych operacji na tych wartościach. Typy
Bardziej szczegółowoPodstawy 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ółowoPLAN 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ółowoPodstawy programowania. Wprowadzenie
Podstawy programowania Wprowadzenie Proces tworzenia programu Sformułowanie problemu funkcje programu zakres i postać danych postać i dokładność wyników Wybór / opracowanie metody rozwiązania znaleźć matematyczne
Bardziej szczegółowoWstę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ółowoKurs rozszerzony języka Python
Wykład 1. 6 października 2017 Plan wykładu 1 2 3 4 Plan wykładu 1 2 3 4 Wykładowca: Termin wykładu: piątek, 10:15 12:00, sala 119 Strona wykładu http://www.ii.uni.wroc.pl/ marcinm/dyd/python Materiały
Bardziej szczegółowoSZYBKO 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ółowoProgramowanie 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ółowoJę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ółowoWykład 3 Składnia języka C# (cz. 2)
Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest
Bardziej szczegółowoAnaliza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki
Analiza leksykalna 1 Teoria kompilacji Dr inż. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Kod źródłowy (ciąg znaków) Analizator leksykalny SKANER Ciąg symboli leksykalnych (tokenów)
Bardziej szczegółowoPo 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
Bardziej szczegółowoOpis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja
Opis zagadnieo 1-3 Iteracja, rekurencja i ich realizacja Iteracja Iteracja to czynnośd powtarzania (najczęściej wielokrotnego) tej samej instrukcji (albo wielu instrukcji) w pętli. Mianem iteracji określa
Bardziej szczegółowoLibreOffice 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ąć
Bardziej szczegółowoJava 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ółowoProgramowanie 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ółowoProgramowanie 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ółowo1 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ółowoProgramowanie 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ółowoWprowadzenie 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ółowoPython 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ółowoWstę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ółowoTypy, 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ółowoAnaliza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki
Analiza leksykalna 1 Języki formalne i automaty Dr inż. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Kod źródłowy (ciąg znaków) Analizator leksykalny SKANER Ciąg symboli leksykalnych
Bardziej szczegółowo- 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ółowoJę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ółowoAlgorytmy 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
Bardziej szczegółowoPodstawy 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ółowoZaawansowane 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ółowoProgram szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY.
Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY SZKOLENIE JEST DLA OSÓB, KTÓRE: nigdy wcześniej nie programowały lub nie miały styczności z programowaniem od dłuższego czasu,
Bardziej szczegółowoTechnologie cyfrowe semestr letni 2018/2019
Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 7 (08.04.2019) Wikipedia Programowanie komputerów proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów
Bardziej szczegółowoJAVA. 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ółowoProgramowanie 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ółowoPodstawy Programowania
Podstawy Programowania Monika Wrzosek Instytut Matematyki Uniwersytet Gdański Matematyka 2017/18 Monika Wrzosek (IM UG) Podstawy Programowania 1 / 119 Sprawy organizacyjne E-mail: mwrzosek@mat.ug.edu.pl
Bardziej szczegółowoRok 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ółowoDariusz 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ółowoJę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ółowoProgramowanie 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ółowoWPROWADZENIE 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ółowoI. 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ółowoWykł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ółowoKatedra 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ółowoCw.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ółowoKostki 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ółowoVisual C# dla zupełnie początkujących / Tony Gaddis. Wydanie IV. Gliwice, copyright Spis treści. Wstęp 11. Uwaga, czytelnicy 19
Visual C# dla zupełnie początkujących / Tony Gaddis. Wydanie IV. Gliwice, copyright 2019 Spis treści Wstęp 11 Uwaga, czytelnicy 19 Rozdział 1. Wstępne informacje na temat komputerów i programowania 21
Bardziej szczegółowo1 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ółowoJava. 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ółowoJęzyki i metody programowania Java Lab1 https://docs.oracle.com/javase/tutorial/ Zofia Kruczkiewicz
Języki i metody programowania Java Lab1 https://docs.oracle.com/javase/tutorial/ Zofia Kruczkiewicz Zadanie 1. Wykonanie projektu Java SE w środowisku Netbeans- File/New Project W formularzu New Project
Bardziej szczegółowoMETODY 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ółowoWykł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ółowoNarzę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ółowoJAVA. 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ółowoMetody Kompilacji Wykład 3
Metody Kompilacji Wykład 3 odbywa się poprzez dołączenie zasad(reguł) lub fragmentów kodu do produkcji w gramatyce. Włodzimierz Bielecki WI ZUT 2 Na przykład, dla produkcji expr -> expr 1 + term możemy
Bardziej szczegółowoProgramowanie w języku Python. Grażyna Koba
Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i
Bardziej szczegółowo