PARADYGMATY I JĘZYKI PROGRAMOWANIA. Programowanie funkcyjne (w- 8)

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

Download "PARADYGMATY I JĘZYKI PROGRAMOWANIA. Programowanie funkcyjne (w- 8)"

Transkrypt

1 PARADYGMATY I JĘZYKI PROGRAMOWANIA Programowanie funkcyjne ()

2 Treść 2 Python wprowadzenie klasy podprogramy generatory iteratory funkcja lambda funkcje apply, map, filter, reduce, eval etc. Programowanie funkcjonalne wstęp WFPM pierwiastek kwadratowy z liczby obliczanie pochodnej całkowanie

3 3 Python w skrócie (Patrz D.M. Beazley: Python. EssenZal reference, Sams 2006)

4 Python funkcyjny 4 Python funkcje i struktury, które można wykorzystać w programowaniu funkcyjnym; możliwość rekurencji n list lista n tuple krotka (n- tka) n lambda lambda args : expression n apply apply(funcname, [, args [, kwargs]]) n eval a = eval( 3*math.sin(3.5+x) ) n map b = map(lambda x: 3*x, a) n zip zszywanie wyrażeń iterowalnych (list, krotek) n reduce b = reduce(sum, a) n filter c = filter(lambda x: x < 4, a) n reverse, extend, insert, pop, remove, count, sort,... n iteratory n generatory (yield) n wyrażenia generatorowe

5 Python w skrócie 5 funkcje, argumenty, zwracane wartości wiele def factor(a): d = 2 while (d <= (a/2)): if ((a/d)*d == a): return ((a/d),d) d = d + 1 return (a,1) Wywołanie x, y = factor(1234) (x, y) = factor(1234)

6 Python klasy 6 Definicja class Circle(object): def init (self,radius): self.radius = radius def getarea(self): return math.pi*self.radius**2 def setarea(self,area): self.radius = math.sqrt(area/math.pi) area = property(getarea, setarea, doc= area of circle ) Tworzenie obiektów, dostęp a=circle(rad); print a.getarea() dziedziczenie

7 Python klasy 7 Dziedziczenie class A(object): def method1(self): print Class A : method1 class B(A): # Inherits from A def method1(self): print Class B : method1 def method2(self): print Class B : method2 class C(B): # Inherits from B def method3(self): print Class C: method 3 class D(A): def method1(self): print Class D: method 1 c = C() # Tworzenie egz. C c.method3() # Wywołanie C.method3(c) c.method1() # Wywołanie B.method1(c) e = E() # Tworzenie egz. E e.method1() # Wywołanie B.method1(e) class E(B,D): # Dziedziczy od B i D #(dziedziczenie wielokrotne) pass

8 Python generatory 8 Generatory i yield. Generator jest funkcją, która produkuje ciąg wyników zamiast jednej wartości def countdown(n): while n > 0: yield n n -= 1 >>> for i in countdown(5):... print i, >>> Generowanie ciągu wartości zapewnia instrukcja yield

9 Python w skrócie 9 inne zachowanie niż w przypadku zwykłej funkcji wywołanie generatora tworzy obiekt generatora, ale go nie uruchamia def countdown(n): print Odliczanie w dół od", n while n > 0: yield n n -= 1 >>> x = countdown(10) >>> >>> x <generator object at 0x58490> >>> Definicja generatora Tworzenie generatora... nic się nie dzieje Informacje o obiekcie

10 Python w skrócie 10 Generator uruchamia metoda next() >>> x.next() Odliczanie w dół od >>> yield oblicza wartość i zawiesza wykonanie Funkcja wznawia wykonanie po następnym wywołaniu metody next() >>> x.next() 9 >>> x.next() 8... >>> x.next() 1 >>> x.next() Traceback (most recent call last): File "<stdin>", line 1, in? StopIteraZon >>>

11 Python w skrócie 11 Generatory przetwarzanie potokowe wejście generator generator... generator for x in s Idea: ciąg generatorów przetwarza sekwencję s z pomocą pętli for Tworzenie współprogramów (zaawansowane!, patrz Internet) z użyciem metody send() Filtry

12 12 Programowanie funkcyjne (PF) Wstęp

13 Problemy 13 Funkcje Modularyzacja Rekurencja Sklejanie Leniwe obliczanie Literatura: Why funczonal programming malers. J. Hughes. StackOvelflow (wfpm; programy w Haskell, Scheme)

14 Co to jest PF? 14 Nazwa PF pochodzi stąd, że podstawową operacją jest aplikowanie funkcji do argumentów. Główny program jest funkcją, która otrzymuje na wejściu swoje argumenty, przetwarza je i podaje wynik obliczeń, który też może być funkcją. Program zbudowany jest z innych funkcji, te jeszcze z innych itd. aż do momentu gdy funkcje stają się podstawowymi elementami języka. Dwie główne cechy PF Funkcje wyższego rzędu Leniwe obliczanie

15 Co to jest PF? 15 Charakterystyki PF potoczne Brak instrukcji przypisania zmienne raz określone nie zmieniają sią Brak efektów ubocznych funkcje obliczają tylko siebie à eliminacja błędów à nie jest ważna kolejność obliczeń (ponieważ efekty uboczne nie zmieniają wartości wyrażeń można je obliczać w dowolnym czasie) à zmienne można więc zastępować ich wartościami i odwrotnie programy są referencyjnie transparentne Programy są wielokrotnie krótsze niż te w językach imperatywnych à programiści są więc bardziej efektywni niż programiści, stosujący języki imperatywne

16 Co to jest PF? 16 Analogia z definicją programów strukturalnych, podobna charakterystyka przez wskazanie cech, których brak np. brak goto, bloki mają pojedyncze wejście i wyjście, bardziej matematyczna struktura. Główna różnica między programowaniem strukturalnym i niestrukturalnym to MODULARNOŚĆ, która zapewnia dużą wydajność w procesie programowania; moduły mogą być wielokrotnie używane; testowanie programów jest prostsze; łatwiej zlokalizować błędy; prostsza kompilacja częściowa. Zapomniana cecha języków strukturalnych: najpierw dzielimy problem na podproblemy, a następnie je ze sobą sklejamy w całość! PF Odpowiednia modularyzacja i odpowiednie składanie prostych części (funkcji) w całość sklejanie funkcji; moduły można wykorzystać powtórnie

17 Modularyzacja i sklejanie przykład 17 Definicja listy (cons jest tutaj funkcją składania) list X := nil cons X (list X) lista [] oznacza nil, lista pusta; [1] oznacza cons 1 nil; [1,2,3] oznacza cons 1 (cons 2 (cons 3 nil)) Sumowanie sum nil = 0 sum (cons numb list) = numb + sum list sum sum można zmodularyzować, wprowadzając operację reduce: sum = reduce add 0 gdzie add jest funkcją dwuargumentową: add x y = x + y add Wstawiając definicję funkcji sum otrzymamy rekurencyjną definicję reduce: (reduce add x) nil = x (reduce add x) (cons a l) = add a ((reduce add x) l) reduce (wyrażenie w nawiasach zastąpiło sum; nawiasy można opuścić)

18 Pewne funkcje 18 Można uogólnić ostatnią formułę zamieniając add na f: reduce f x nil = x reduce f x (cons a l) = f a (reduce f x l) Funkcja trójargumentowa (tutaj reduce), zastosowana do dwu argumentów jest traktowana, jak funkcja tylko trzeciego argumentu; w ogólności funkcja n argumentowa działając na m<n argumentów staje się funkcją m-n argumentową. Możemy teraz (bez dadatkowego programowania) użyć reduce do obliczenia iloczynu (lub zbadać czy lista zawiera element true, czy też wszystkie elementy true): product = reduce multiply 1 anytrue = reduce or false alltrue = reduce and true

19 Pewne funkcje 19 reduce można też rozumieć jako operację, która w liście zastępuje cons przez f, a nil przez a: Lista [1,2,3] oznacza: cons (1 cons (2 cons 3 nil))) Operacja reduce add 0 powoduje zamianę listy na: add (1 add (2 (add 3 0))) = 6 (zamiana cons -> add, nil -> 0) Podobnie reduce multiply 1 daje: multiply (1 multiply (2 (multiply 3 1))) = 6 Widać również, że reduce cons nil kopiuje listę. Ponieważ do listy można dodać inną listę przez operację cons, to widać też, że następująca funkcja append dodaje elementy do listy: append a b = reduce cons b a

20 Pewne funkcje 20 Sprawdzimy na przykładzie: append [1,2] [3,4] = reduce cons [3,4] [1,2] = (reduce cons [3,4]) (cons 1 (cons 2 nil)) = cons 1 (cons 2 [3,4])) (zastąpiono cons przez cons, a nil przez [3,4]) = [1,2,3,4] Funkcja, która podwaja elementy listy może być zapisana jako doubleall = reduce doubleandcons nil gdzie doubleandcons num list = cons (2*num) list Funkcję doubleandcons można jeszcze bardziej zmodularyzować: po pierwsze jako doubleandcons = fandcons double double n = 2*n fandcons f el list = cons (f el) list i następnie fandcons f = cons. f gdzie. oznacza złożenie funkcji f.g h = f(g h)

21 Pewne funkcje 21 Sprawdźmy poprawność fandcons: fandcons f el = (cons. f) el = cons (f el) czyli fandcons f el list = cons (f el) list Końcowa postać doubleall: doubleall = reduce (cons. double) nil Kolejna modularyzacja prowadzi do doubleall = map double map f = reduce (cons. f) nil gdzie map stosuje dowolną funkcję f do wszystkich elementów listy.

22 Ogólny program obliczeń w PF 22 f program; f(dane) Jeśli program f dostarcza danych do programu g, to cały program obliczeń ma postać: g(f(dane)) Mogłoby się zdarzyć, że f produkuje tak dużo danych, że nie ma miejsca na ich przechowywanie. Jest jednak tak, że program f dostarcza dane na żądanie, a więc oblicza ich tyle ile potrzebuje g to właśnie nazywamy leniwym obliczaniem.

23 Przykład 23 Algorytm Newtona (Herona) dla pierwiastka kwadratowego z liczby N Pierwsze przybliżenie: x = a (jakieś) następne: x = ½ (x+n/x) Algorytm Herona- Newtona- Raphsona sqrt(n): Dane jest pole N kwadratu. Obliczyć bok a. a i kolejne: x n+1 = ½ (x n +N/x n dowód (lepszy; szereg Taylora) x n+1 = (x n + N/x n )/2 Pole N N/a Jeśli w granicy mamy zbieżność, tzn. x n -> a: a =(a+n/a)/2 czyli 2a = a+n/a, a = N/a a*a = N stąd a = squareroot(n) Ponieważ oba boki o długościach a, N/a są przybliżeniem, więc ich średnia wartość (średnia arytmetyczna) jest bliższa prawdy...

24 Przykład cd. 24 Program (Python) def squareroot(n,a,eps=1e-6): x = a y = a+2*eps while abs(x-y)>eps: y = x x=1/2*(x+n/x) return x Program ten, zapisany w imperatywnym języku, nie da sie podzielić na mniejsze jednostki (?)

25 Przykład cd. 25 To samo w języku funkcyjnym będziemy generować kolejne przybliżenia funkcją next N x = (x + N/x) / 2 Jeśli oznaczymy tę funkcję przez f, to ciąg kolejnych przybliżeń jest postaci (list): [a, f a, f(f a), f(f(f a)),...] zdefiniujemy funkcję, która generuje ten ciąg: repeat f a = cons a (repeat f (f a)) listę kolejnych przybliżonych wartości pierwiastka obliczymy następująco repeat (next N) a

26 Przykład cd. 26 repeat jest przykładem funkcji o nieskończonej liczbie wyników ale ponieważ będziemy potrzebować tylko tyle wyników ile wymaga dokładność obliczeń, węc chcemy by repeat generowało kolejne przybliżenia na żądanie, a więc leniwie (nie wszystko od razu) Aby ten efekt uzyskać zdefiniujemy funkcję within, która będzie kontrolować dokładność obliczeń (parametr eps) within eps (cons a (cons b rest)) = = b, if abs(a-b) <= eps = within eps (cons b rest), if not Sklejając wszystko, mamy następujący program: sqrt a eps N = within eps (repeat (next N) a)

27 Python squareroot 27 def next(n,a): while True: a = (a + N/a) / 2.0 yield a Program obliczający my_sqrt(4, 1, 1e-6) print x, x*x # => 2 def within(eps,generator,*args): g = generator(*args) a,b = g.next(), g.next() while abs(a-b) > eps: return b a,b = b, g.next() def my_sqrt(n,guess,eps): return within(eps,next,n,guess) Nie jest to czysto funkcyjny program (!) ale posiada cechy programowania funkcyjnego (leniwa ewaluacja, listy, generatory)

28 Scheme squareroot 28 (require (lib "stream.ss" "srfi" "40")) (define (next_c N) (lambda (a) (/ (+ a (/ N a)) 2.0))) (define (repeat f init) (stream-cons init (repeat f (f init)))) (define (within eps stream) (let ((a (stream-car stream)) (b (stream-car (stream-cdr stream)))) (if (<= (abs (- a b)) eps) b (within eps (stream-cdr stream))))) (define (my-sqrt guess eps N) (within eps (repeat (next_c N) guess)))

29 Haskell squareroot Newton-Raphson square roots next n x = (x + n/x)/ this is "iterate::(a->a)->a->[a]" -- repeat f a = a : iterate f (f a) within eps (a:b:rest) = if abs(a-b) <= eps then b else within eps (b:rest) sqroot a eps n = within eps (iterate (next n) a) relative eps (a:b:rest) = if abs(a-b) <= eps*abs(b) then b else relative eps (b:rest) relativesqrt a eps n = relative eps (iterate (next n) a)

30 Przykład. Python. Pochodna f(x) 30 Dysponując wcześniej zbudowanymi funkcjami możemy obliczać np. pochodne, całki itp. z funkcji, z zadaną dokładnością (eps) W pierwszym przybliżeniu, pochodna numeryczna funkcji f(x) jest dana jako iloraz różnicowy df/dx (f(x+h) f(x))/h Dla rozsądnych h (krok) można to poprawić, licząc df/dx dla kroku mniejszego, h/2. Proces powtarzamy aż do uzyskania zadanej dokładności obliczeń eps

31 Program (schemat funkcyjny) 31 easydiff f x h = (f(x+h)-f x) / h differentiate h0 f x = map (easydiff f x) (repeat halve h0) halve x = x/2 obliczenia z dokładnością eps: within eps (differentiate h0 f x)

32 Program lepsza wersja 32 Kolejne przybliżenia a n, a n+1 zawierają błędy postaci B*h**n, B stała (Wynika to z analizy szeregu Taylora) Mamy więc równania (dla kolejnych wartości 2h i h): a n = A + B 2 n h n a n+1 = A + B h n Stąd, poprawiona wartość wyniku A jest równa: A = 2n a n+1 2 n 1 Nie znamy n. Jak obliczyć n? a n

33 cd 33 Wartość n (nie będziemy tego dowodzić; z trzech kolejnych wyników dla kolejnych n; patrz algorytmy): n(a, b, c) = int log 2 a b c c 1 order (cons a (cons b (cons c rest))) = round(log2( (a-c)/(b-c) - 1 ))

34 cd 34 Tutaj round x oznacza zaokrąglenie x do najbliższej liczby całkowitej log2 x jest logarytmem o podstawie 2 z x Błędy częściowo eliminuje więc funkcja: elimerror n (cons a (cons b rest)) = = cons ((b*(2**n)-a)/(2**n-1)) (elimerror n (cons b rest)) Ciąg poprawionych przybliżeń dostaniemy z: improve s = elimerror (order s) s I pochodna jest dana przez: within eps (improve (differentiate h0 f x))

35 cd 35 Lepsze przybliżenie dostaniemy, powtarzając improve within eps (improve (improve (improve (differentiate h0 f x)))) Zdefiniujmy funkcję: super s = map second (repeat improve s) second (cons a (cons b rest)) = b Ostatecznie możemy zapisać: within eps (super (differentiate h0 f x)) mamy coraz lepsze i lepsze przyblżenia... Opisany algorytm jest bardzo złożony i w Pythonie jest o wiele bardziej skomplikowany itd.

36 Python algorytm Newtona 36 def next(n,a): while True: a = (a + N/a) / 2.0 yield a def within(eps,generator,*args): g = generator(*args) a,b = g.next(), g.next() while abs(a-b) > eps: a,b = b, g.next() return b def my_sqrt(n,guess,eps): return within(eps,next,n,guess) x=my_sqrt(4, 1, 1e-10) print x, x*x

37 Python (dokładniej) 37 from math import log, floor, sin, cos def halve(x): return x/2 def round(x): return floor(x+0.5) def order(a,b,c): return round(log((a-c)/(b-c)-1, 2)) # generator def easydiff(function,x,h): while True: diff=(function(x+h)-function(x))/h h=halve(h) yield diff def within(eps,generator,*args): g = generator(*args) a,b = g.next(),g.next() while abs(a-b) > eps: return b a,b = b,g.next() def differentiate(function,x,eps): h=100*eps return within(eps,easydiff,function,x,h) if name ==' main ': eps=0.0001; x=2. print x,differentiate(cos,x,eps), -sin(x)

38 Zadania: pochodne i całkowanie 38 Proszę napisać program poprawionego obliczania pochodnej w Pythonie Proszę napisać program całkowania funkcji f(x) na przedziale [a,b] metodą trapezów lub metodą Simpsona z wykorzystaniem funkcji, które zdefiniowaliśmy na wykładzie (w języku quasi- funkcjonalnym) Ulepszyć ten program całkowania, wykorzystując funkcję ellimerroer Napisać funkcję flatten, która dowolną listę (krotkę) przekształca w listę bez elementów iterowalnych (w skalary)

39 za tydzień...!? 39 w :04

40 Haskell algorytm Newtona Newton-Raphson square roots next n x = (x + n/x)/ this is "iterate::(a->a)->a->[a] -- repeat f a = a : iterate f (f a) within eps (a:b:rest) = if abs(a-b) <= eps then b else within eps (b:rest) sqroot a0 eps n = within eps (iterate (next n) a0) relative eps (a:b:rest) = if abs(a-b) <= eps*abs(b) then b else relative eps (b:rest) relativesqrt a0 eps n = relative eps (iterate (next n) a0)

41 Haskell pochodna 1 41 easydiff f x h = (f (x+h) - f x) / h differentiate h0 f x = map (easydiff f x) (iterate (/2) h0) -- diff1a h0 eps f x = within eps (differentiate h0 f x) diff1 h0 eps f = within eps. differentiate h0 f elimerror n (a:b:rest) = (b*(2**n)-a)/(2**n-1) : elimerror n (b:rest) -- need fromintegral to make a non-integer out of the Int which comes out of round order (a:b:c:rest) = fromintegral (round (logbase 2 ((a-c)/(b-c)-1)))

42 Haskell pochodna 2 42 improve s = elimerror (order s) s --diff2a h0 eps f x = within eps (improve (differentiate h0 f x)) diff2 h0 eps f = within eps. improve. differentiate h0 f -- super s = map second (iterate improve s) -- how can we make this point-free? super :: (RealFrac t, Floating t) => [t] -> [t] -- w/o this it wants to be [double]->[double] super = map second. iterate improve -- second (a:b:rest) = b second = head. tail diff3 h0 eps f = within eps. super. differentiate h0 f

43 Haskell całka integration easyintegrate f a b = (f a + f b)*(b-a)/2 -- addpair becomes (uncurry (+)) integrate f a b = integ f a b (f a) (f b) integ f a b fa fb = (fa+fb)*(b-a)/2 : map (uncurry (+)) (zip (integ f a m fa fm) (integ f m b fm fb)) where m = (a+b)/2 fm = f m -- test: following should be about pi approxpi eps = within eps (improve (integrate (\x -> 4/(1+x*x)) 0 1)) superpi eps = within eps (super (integrate (\x -> 4/(1+x*x)) 0 1))

44 Scheme 44 (require (lib "stream.ss" "srfi" "40")) (define (next_c N) (lambda (a) (/ (+ a (/ N a)) 2.0))) (define (repeat f init) (stream-cons init (repeat f (f init)))) (define (within eps stream) (let ((a (stream-car stream)) (b (stream-car (stream-cdr stream)))) (if (<= (abs (- a b)) eps) b (within eps (stream-cdr stream))))) (define (my-sqrt guess eps N) (within eps (repeat (next_c N) guess)))

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

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

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur. Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur. 1. Identyfikator funkcji,

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

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

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

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python Wykład 4. 23 października 2015 Plan wykładu 1 2 Pliki tekstowe Trwałość obiektów CSV Strumienie Plan wykładu 1 2 Pliki tekstowe Trwałość obiektów CSV Strumienie Protokół iteracyjny Producent Umiem dostarczać

Bardziej szczegółowo

Spis treści. Funkcje. 1 Funkcje 1.1 Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie 7

Spis treści. Funkcje. 1 Funkcje 1.1 Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie 7 Spis treści 1 Funkcje 1.1 Zadanie 1 1.2 Zadanie 2 1.3 Zadanie 3 1.4 Zadanie 4 1.5 Zadanie 5 1.6 Zadanie 6 1.7 Zadanie 7 Funkcje Przy programowaniu często zdarza się, że pewne czynności chcemy wykonywać

Bardziej szczegółowo

Programowanie funkcyjne w Pythonie

Programowanie funkcyjne w Pythonie Programowanie funkcyjne w Pythonie Koªo DSG 2013 Konrad Siek konrad.siek@cs.put.edu.pl dsg.cs.put.poznan.pl Paradygmat funkcyjny Paradygmat = sposób my±lenia o problemach Paradygmat funkcyjny Paradygmat

Bardziej szczegółowo

Spis treści. Dekoratory. 1 Dekoratory 1.1 Zadanie Zadanie Zadanie Zadanie 4

Spis treści. Dekoratory. 1 Dekoratory 1.1 Zadanie Zadanie Zadanie Zadanie 4 Spis treści 1 Dekoratory 1.1 Zadanie 1 1.2 Zadanie 2 1.3 Zadanie 3 1.4 Zadanie 4 Dekoratory Dekoratory w Pythonie służą do zastępowania zdefiniowanych przez nas funkcji przez funkcje (lub inne obiekty)

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Język programowania Ruby Marcin Młotkowski 12 kwietnia 2018 Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy

Bardziej szczegółowo

Python i programowanie funkcyjne. Python i programowanie funkcyjne czyli nie tylko obiektowość rządzi. OSEC Funkcyjnie w języku Python 1 z 40

Python i programowanie funkcyjne. Python i programowanie funkcyjne czyli nie tylko obiektowość rządzi. OSEC Funkcyjnie w języku Python 1 z 40 czyli nie tylko obiektowość rządzi 1 z 40 O czym będę mówił... Jak najmniej teorii bo nie czas i miejsce... Próba odpowiedzi na pythanie: Czy warto programować nie tylko obiektowo? Jak język Python wspiera

Bardziej szczegółowo

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle. Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle. Sub Hasla1() Dim wzor_hasla As String Dim haslo As String Dim adres

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

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

λ 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

Języki programowania Haskell

Języki programowania Haskell Języki programowania Haskell zadanie projektowe nr. 4 2014/15 K. Turowski, T. Goluch 1. Kompilacja, uruchamianie i Hello world Kompilacja i uruchamianie: ghc --make hello.hs./hello Interaktywny interpreter:

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

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

Definicje wyższego poziomu

Definicje wyższego poziomu Definicje wyższego poziomu Interpreter Scheme-a nie będzie narzekad w przypadku wystąpienia niezdefionowanej zmiennej w ciele wyrażenia lambda dopóki nie będzie zastosowana Przykład braku informacji o

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Metody rozwiązywania równań nieliniowych

Metody rozwiązywania równań nieliniowych Metody rozwiązywania równań nieliniowych Rozwiązywanie równań nieliniowych Ogólnie równanie o jednej niewiadomej x można przedstawić w postaci f ( x)=0, x R, (1) gdzie f jest wystarczająco regularną funkcją.

Bardziej szczegółowo

Elementy języka Scheme

Elementy języka Scheme Elementy języka Scheme Historia języka Lisp Historia języka Lisp Wyrażenia i ewaluacja wyrażeń Identyfikatory i wyrażenie let Wyrażenia lambda Definicje globalne Wyrażenia warunkowe Przypisanie Kontynuacje

Bardziej szczegółowo

Dekoratora używa się wstawiając linijkę zaczynającą się przed definicją dekorowanego obiektu (klasy czy funkcji).

Dekoratora używa się wstawiając linijkę zaczynającą się przed definicją dekorowanego obiektu (klasy czy funkcji). Dekoratory są w miarę ezoteryczną cechą Pythona w przeciwieństwie do funkcji, klas czy iteratorów nie są powszechną cechą języków programowania. Niemniej, warto je omówić mimo wszystko, gdyż są niezwykle

Bardziej szczegółowo

Całkowanie numeryczne przy użyciu kwadratur

Całkowanie numeryczne przy użyciu kwadratur Całkowanie numeryczne przy użyciu kwadratur Plan wykładu: 1. Kwadratury Newtona-Cotesa a) wzory: trapezów, parabol etc. b) kwadratury złożone 2. Ekstrapolacja a) ekstrapolacja Richardsona b) metoda Romberga

Bardziej szczegółowo

METODY NUMERYCZNE. Wykład 4. Numeryczne rozwiązywanie równań nieliniowych z jedną niewiadomą. prof. dr hab.inż. Katarzyna Zakrzewska

METODY NUMERYCZNE. Wykład 4. Numeryczne rozwiązywanie równań nieliniowych z jedną niewiadomą. prof. dr hab.inż. Katarzyna Zakrzewska METODY NUMERYCZNE Wykład 4. Numeryczne rozwiązywanie równań nieliniowych z jedną niewiadomą prof. dr hab.inż. Katarzyna Zakrzewska Met.Numer. Wykład 4 1 Rozwiązywanie równań nieliniowych z jedną niewiadomą

Bardziej szczegółowo

Czym jest całka? Całkowanie numeryczne

Czym jest całka? Całkowanie numeryczne Całkowanie numeryczne jest to zagadnienie z metod elementów skończonych (MES). Korzystając z całkowania numerycznego możemy obliczyć wartość dowolnej całki jednowymiarowej oznaczonej. Wynik jest zawsze

Bardziej szczegółowo

Technologie cyfrowe semestr letni 2018/2019

Technologie cyfrowe semestr letni 2018/2019 Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 7 (08.04.2019) Wikipedia Programowanie komputerów proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów

Bardziej szczegółowo

WHILE (wyrażenie) instrukcja;

WHILE (wyrażenie) instrukcja; INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while

Bardziej szczegółowo

Kurs języka Python. Wykład 11. Marcin Młotkowski. 4 stycznia Kontrola poprawności podczas biegu programu. 2 Testowanie oprogramowania

Kurs języka Python. Wykład 11. Marcin Młotkowski. 4 stycznia Kontrola poprawności podczas biegu programu. 2 Testowanie oprogramowania Wykład 11. 4 stycznia 2010 1 Kontrola poprawności podczas biegu programu 2 3 4 Asercje Asercja to formuła logiczna; Asercji używa się do kontrolowania czy np. wartość zmiennej ma odpowiedni typ lub mieści

Bardziej szczegółowo

Elementy języka Scheme

Elementy języka Scheme Elementy języka Scheme Historia języka Lisp Wyrażenia i ewaluacja wyrażeń Identyfikatory i wyrażenie let Wyrażenia lambda Definicje globalne Wyrażenia warunkowe Przypisanie Kontynuacje Historia języka

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Funkcje Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. V Jesień 2013 1 / 32 Funkcje Funkcje w matematyce f : D W D dziedzina W zbiór wartości Funkcja może

Bardziej szczegółowo

WHILE (wyrażenie) instrukcja;

WHILE (wyrażenie) instrukcja; INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while

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

Podstawy bioinformatyki 2017/18

Podstawy bioinformatyki 2017/18 JEZYK PROGRAMOWANIA PYTHON: SEKWENCJE (ŁAŃCUCHY, LISTY, KROTKI), METODY LIST E. Dyguda-Kazimierowicz 1 Sekwencje: indeksowanie i wycinanie Poznane dotąd obiekty łańcuchowe należą do typu danych złożonych

Bardziej szczegółowo

Metody numeryczne. materiały do wykładu dla studentów. 7. Całkowanie numeryczne

Metody numeryczne. materiały do wykładu dla studentów. 7. Całkowanie numeryczne Metody numeryczne materiały do wykładu dla studentów 7. Całkowanie numeryczne 7.1. Całkowanie numeryczne 7.2. Metoda trapezów 7.3. Metoda Simpsona 7.4. Metoda 3/8 Newtona 7.5. Ogólna postać wzorów kwadratur

Bardziej szczegółowo

Podprogramy. Procedury

Podprogramy. Procedury Podprogramy Turbo Pascal oferuje metody ułatwiające tworzenie struktury programu, szczególnie dotyczy to większych programów. Przy tworzeniu większego programu stosuje się jego podział na kilka mniejszych

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

Technologie cyfrowe semestr letni 2018/2019

Technologie cyfrowe semestr letni 2018/2019 Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 8 (15.04.2019) Kompilacja Kompilacja programu (kodu): proces tłumaczenia kodu napisanego w wybranym języku na kod maszynowy, zrozumiały

Bardziej szczegółowo

JAVAScript w dokumentach HTML - przypomnienie

JAVAScript w dokumentach HTML - przypomnienie Programowanie obiektowe ćw.1 JAVAScript w dokumentach HTML - przypomnienie JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript są zagnieżdżane w

Bardziej szczegółowo

4. Funkcje. Przykłady

4. Funkcje. Przykłady 4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni

Bardziej szczegółowo

Programowanie - wykład 4

Programowanie - wykład 4 Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include

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

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

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop. 2017 Spis treści Przedmowa 11 1. Jak w programie 21 Czym jest program? 21 Uruchamianie interpretera języka Python 22 Pierwszy

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Wykład 4 Piotr Błaszyński Wydział Inmatyki Zachodniopomorskiego Uniwersytetu Technologicznego 16 lutego 2018 i zawieranie się, gromadzenie elementów nowa klasa powstaje przez użycie obiektów klas już istniejących,

Bardziej szczegółowo

Zajęcia: VBA TEMAT: VBA PROCEDURY NUMERYCZNE Metoda bisekcji i metoda trapezów

Zajęcia: VBA TEMAT: VBA PROCEDURY NUMERYCZNE Metoda bisekcji i metoda trapezów Zajęcia: VBA TEMAT: VBA PROCEDURY NUMERYCZNE Metoda bisekcji i metoda trapezów W ramach zajęć oprogramujemy jedną, wybraną metodę numeryczną: metodę bisekcji numerycznego rozwiązywania równania nieliniowego

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

Listy, krotki, słowniki, funkcje

Listy, krotki, słowniki, funkcje Listy, krotki, słowniki, funkcje Listy Lista jest najbardziej elastycznym typem obiektu uporządkowanej kolekcji. Może zawierać różne typy danych - liczby, łańcuchy znaków, a nawet inne listy. Tworzy się

Bardziej szczegółowo

Kurs rozszerzony języka Python

Kurs 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ółowo

Języki i metody programowania

Języki i metody programowania Języki i metody programowania Wykład 3 dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie hab. Andrzeja Zbrzezngo Wartości boolowskie

Bardziej szczegółowo

Liczby losowe i pętla while w języku Python

Liczby losowe i pętla while w języku Python Liczby losowe i pętla while w języku Python Mateusz Miotk 17 stycznia 2017 Instytut Informatyki UG 1 Generowanie liczb losowych Na ogół programy są spójne i prowadzą do przewidywanych wyników. Czasem jednak

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

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Wykład 5 Podstawowe techniki programownia w przykładach Janusz Szwabiński Plan wykładu: Metoda babilońska wyliczania pierwiastka Liczby pierwsze i sito Eratostenesa Metoda bisekcji

Bardziej szczegółowo

Python. Wprowadzenie. Jolanta Bachan

Python. Wprowadzenie. Jolanta Bachan Python Wprowadzenie Jolanta Bachan Zainstaluj i przetestuj Pythona https://www.python.org/downloads/ print 'Hello world!' operatory numeryczne: + - * / // % ** operatory porównania: ==!= > < >=

Bardziej szczegółowo

Algorytmika i Programowanie VBA 1 - podstawy

Algorytmika i Programowanie VBA 1 - podstawy Algorytmika i Programowanie VBA 1 - podstawy Tomasz Sokół ZZI, IL, PW Czas START uruchamianie środowiska VBA w Excelu Alt-F11 lub Narzędzia / Makra / Edytor Visual Basic konfiguracja środowiska VBA przy

Bardziej szczegółowo

Programowanie i projektowanie obiektowe

Programowanie i projektowanie obiektowe Programowanie i projektowanie obiektowe Metody i dziedziczenie Paweł Daniluk Wydział Fizyki Jesień 2015 P. Daniluk (Wydział Fizyki) PO w. V Jesień 2015 1 / 31 Metody Przypomnienie Obiekty odpowiadają za

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych 4. Łódź 2018 Suma szeregu harmonicznego - Wpisz kod programu w oknie edycyjnym - Zapisz kod w pliku harmonic.py - Uruchom skrypt (In[1]: run harmonic.py) - Ten program wykorzystuje

Bardziej szczegółowo

Programowanie strukturalne i obiektowe. Funkcje

Programowanie strukturalne i obiektowe. Funkcje Funkcje Często w programach spotykamy się z sytuacją, kiedy chcemy wykonać określoną czynność kilka razy np. dodać dwie liczby w trzech miejscach w programie. Oczywiście moglibyśmy to zrobić pisząc trzy

Bardziej szczegółowo

Programowanie Delphi obliczenia, schematy blokowe

Programowanie Delphi obliczenia, schematy blokowe Informatyka II MPZI2 ćw.2 Programowanie Delphi obliczenia, schematy blokowe Zastosowania obliczeń numerycznych Wyrażenia arytmetyczne służą do zapisu wykonywania operacji obliczeniowych w trakcie przebiegu

Bardziej szczegółowo

RÓWNANIA NIELINIOWE Maciej Patan

RÓWNANIA NIELINIOWE Maciej Patan RÓWNANIA NIELINIOWE Maciej Patan Uniwersytet Zielonogórski Przykład 1 Prędkość v spadającego spadochroniarza wyraża się zależnością v = mg ( 1 e c t) m c gdzie g = 9.81 m/s 2. Dla współczynnika oporu c

Bardziej szczegółowo

JAVAScript w dokumentach HTML (1)

JAVAScript w dokumentach HTML (1) JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript mogą być zagnieżdżane w dokumentach HTML. Instrukcje JavaScript

Bardziej szczegółowo

Wykorzystanie programów komputerowych do obliczeń matematycznych

Wykorzystanie programów komputerowych do obliczeń matematycznych Temat wykładu: Wykorzystanie programów komputerowych do obliczeń matematycznych Kody kolorów: żółty nowe pojęcie pomarańczowy uwaga kursywa komentarz * materiał nadobowiązkowy Przykłady: Programy wykorzystywane

Bardziej szczegółowo

Podstawy programowania w Pythonie

Podstawy programowania w Pythonie Podstawy programowania w Pythonie Wykład 5 dr Andrzej Zbrzezny Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 7 listopada 2012 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania

Bardziej szczegółowo

II. RÓŻNICZKOWANIE I CAŁKOWANIE NUMERYCZNE Janusz Adamowski

II. RÓŻNICZKOWANIE I CAŁKOWANIE NUMERYCZNE Janusz Adamowski II. RÓŻNICZKOWANIE I CAŁKOWANIE NUMERYCZNE Janusz Adamowski 1 1 Różniczkowanie numeryczne Rozważmy funkcję f(x) określoną na sieci równoodległyc węzłów. Funkcja f(x) może być dana za pomocą wzoru analitycznego

Bardziej szczegółowo

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Przykład 1. Napisz program, który dla podanej liczby n wypisze jej rozkład na czynniki pierwsze. Oblicz asymptotyczną złożoność

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Metody statyczne i klasowe Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) PO w. VI Jesień 2013 1 / 23 W poprzednich odcinkach... Klasy kategorie obiektów Przynależność

Bardziej szczegółowo

METODY ROZWIĄZYWANIA RÓWNAŃ NIELINIOWYCH

METODY ROZWIĄZYWANIA RÓWNAŃ NIELINIOWYCH METODY ROZWIĄZYWANIA RÓWNAŃ NIELINIOWYCH Jednym z zastosowań metod numerycznych jest wyznaczenie pierwiastka lub pierwiastków równania nieliniowego. W tym celu stosuje się szereg metod obliczeniowych np:

Bardziej szczegółowo

Obliczenia iteracyjne

Obliczenia iteracyjne Lekcja Strona z Obliczenia iteracyjne Zmienne iteracyjne (wyliczeniowe) Obliczenia iteracyjne wymagają zdefiniowania specjalnej zmiennej nazywanej iteracyjną lub wyliczeniową. Zmienną iteracyjną od zwykłej

Bardziej szczegółowo

Metody getter https://www.python-course.eu/python3_object_oriented_programming.php 0_class http://interactivepython.org/runestone/static/pythonds/index.html https://www.cs.auckland.ac.nz/compsci105s1c/lectures/

Bardziej szczegółowo

Ćwiczenie 5. Python 3: Programowanie obiektowe i dziedziczenie

Ćwiczenie 5. Python 3: Programowanie obiektowe i dziedziczenie Wizualizacja danych Ćwiczenie 5 Python 3: Programowanie obiektowe i dziedziczenie Dziedziczenie Mając klasę bazową możemy utworzyć klasę pochodną, która będzie dziedziczyć po klasie bazowej czyli będzie

Bardziej szczegółowo

Technologie Informacyjne Mechatronika 2012/2013 Błędy obliczeń. Python.

Technologie Informacyjne Mechatronika 2012/2013 Błędy obliczeń. Python. Technologie Informacyjne Mechatronika 2012/2013 Błędy obliczeń. Python. 1. Cel laboratorium Celem laboratorium jest znalezienie przez studentów przykładów błędów popełnianych przez komputery podczas prostych

Bardziej szczegółowo

Wstęp do Pythona. Janusz Szwabiński. Python w obliczeniach numerycznych (C) 2005 Janusz Szwabiński p.1/36

Wstęp do Pythona. Janusz Szwabiński. Python w obliczeniach numerycznych (C) 2005 Janusz Szwabiński p.1/36 Wstęp do Pythona Janusz Szwabiński szwabin@ift.uni.wroc.pl Python w obliczeniach numerycznych (C) 2005 Janusz Szwabiński p.1/36 Wstęp do Pythona Zasoby w sieci Python jako zaawansowany kalkulator Pierwszy

Bardziej szczegółowo

METODY NUMERYCZNE. Wykład 4. Numeryczne rozwiązywanie równań nieliniowych z jedną niewiadomą. Rozwiązywanie równań nieliniowych z jedną niewiadomą

METODY NUMERYCZNE. Wykład 4. Numeryczne rozwiązywanie równań nieliniowych z jedną niewiadomą. Rozwiązywanie równań nieliniowych z jedną niewiadomą METODY NUMERYCZNE Wykład 4. Numeryczne rozwiązywanie równań nieliniowych z jedną niewiadomą dr hab.inż. Katarzyna Zakrzewska, prof.agh Met.Numer. Wykład 4 1 Rozwiązywanie równań nieliniowych z jedną niewiadomą

Bardziej szczegółowo

Analiza numeryczna kolokwium2a-15grudnia2005

Analiza numeryczna kolokwium2a-15grudnia2005 kolokwium2a-15grudnia2005 1.Niechf(x)=a n x n +a n 1 x n 1 +...+a 0.Jakąwartośćprzyjmujeilorazróżnicowy f[x 0,...,x n ]dladowolnychn+1paramiróżnychwęzłówx j?odpowiedźuzasadnić. 2. Pokazać, że zamiana zmiennych

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

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

Metody numeryczne I Równania nieliniowe

Metody numeryczne I Równania nieliniowe Metody numeryczne I Równania nieliniowe Janusz Szwabiński szwabin@ift.uni.wroc.pl Metody numeryczne I (C) 2004 Janusz Szwabiński p.1/66 Równania nieliniowe 1. Równania nieliniowe z pojedynczym pierwiastkiem

Bardziej szczegółowo

Python. Skąd taka nazwa? Kurs systemu UNIX 1

Python. Skąd taka nazwa? Kurs systemu UNIX 1 Python Skąd taka nazwa? Kurs systemu UNIX 1 Cechy języka marketing Obiektowy (dużo prostszy od C++) Darmowy Nie tylko Unix (choć tam najpopularniejszy) Wiele bibliotek (np. Tkinter, czyli interfejs do

Bardziej szczegółowo

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał REKURENCJA W JĘZYKU HASKELL Autor: Walczak Michał CZYM JEST REKURENCJA? Rekurencja zwana rekursją, polega na wywołaniu przez funkcję samej siebie. Algorytmy rekurencyjne zastępują w pewnym sensie iteracje.

Bardziej szczegółowo

INFORMATYKA ELEMENTY METOD NUMERYCZNYCH.

INFORMATYKA ELEMENTY METOD NUMERYCZNYCH. INFORMATYKA ELEMENTY METOD NUMERYCZNYCH http://www.infoceram.agh.edu.pl METODY NUMERYCZNE Metody numeryczne zbiór metod rozwiązywania problemów matematycznych za pomocą operacji na liczbach. Otrzymywane

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Programowanie - instrukcje sterujące

Programowanie - instrukcje sterujące Instytut Informatyki Uniwersytetu Śląskiego Laborki środowisko NetBeans, tworzenie nowego projektu; okno projekty; główne okno programu; package - budowanie paczek z klas; public class JavaApplication

Bardziej szczegółowo

Rzut oka na współczesną matematykę spotkanie 3: jak liczy kalkulator i o źródłach chaosu

Rzut oka na współczesną matematykę spotkanie 3: jak liczy kalkulator i o źródłach chaosu Rzut oka na współczesną matematykę spotkanie 3: jak liczy kalkulator i o źródłach chaosu P. Strzelecki pawelst@mimuw.edu.pl Instytut Matematyki, Uniwersytet Warszawski MISH UW, semestr zimowy 2011-12 P.

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Rekurencja, metoda dziel i zwyciężaj Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk(Wydział Fizyki) WP w. VIII Jesień 2014 1 / 27 Rekurencja Recursion See Recursion. P. Daniluk(Wydział

Bardziej szczegółowo

Laboratorium 1b Operacje na macierzach oraz obliczenia symboliczne

Laboratorium 1b Operacje na macierzach oraz obliczenia symboliczne Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Laboratorium Metod Numerycznych Laboratorium 1b Operacje na macierzach oraz obliczenia symboliczne 1 Zadania 1. Obliczyć numerycznie

Bardziej szczegółowo

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH Michał Bujacz bujaczm@p.lodz.pl B9 Lodex 207 godziny przyjęć: środy i czwartki 10:00-11:00 http://www.eletel.p.lodz.pl/bujacz/ 1 Pytania weryfikacyjne:

Bardziej szczegółowo

Jerzy Nawrocki, Wprowadzenie do informatyki

Jerzy Nawrocki, Wprowadzenie do informatyki Jerzy Nawrocki, Jerzy Nawrocki Wydział Informatyki Politechnika Poznańska jerzy.nawrocki@put.poznan.pl Cel wykładu Programowanie imperatywne i język C Zaprezentować paradygmat programowania imperatywnego

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 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ółowo

Wykłady 11 i 12: Całka oznaczona

Wykłady 11 i 12: Całka oznaczona Wykłady 11 i 12: Całka oznaczona dr Mariusz Grzadziel Katedra Matematyki, Uniwersytet Przyrodniczy we Wrocławiu semestr zimowy; rok akademicki 2016/2017 Pole trójkata parabolicznego Problem. Chcemy obliczyć

Bardziej szczegółowo

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst. Schematy blokowe I Jeżeli po schematach blokowych będzie używany język C, to należy używać operatorów: '&&', ' ', '!=', '%' natomiast jeśli Ruby to 'and', 'or', '%', '!='. 1. Dostępne bloki: a) początek:

Bardziej szczegółowo

Kurs rozszerzony języka Python

Kurs rozszerzony języka Python Wykład 3. 20 października 2017 Plan wykładu 1 2 Rodzaje kolekcji Przetwarzanie kolekcji 3 4 5 i funkcje Efektywność list Koniec Plan wykładu 1 2 Rodzaje kolekcji Przetwarzanie kolekcji 3 4 5 i funkcje

Bardziej szczegółowo

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python Wykład 1. 4 października 2013 Plan wykładu 1 2 3 4 Typy proste Kolekcje Instrukcje w języku (przypomnienie) Wykładowca: Termin wykładu: piątek, 10:15 12:00, sala 119 Strona wykładu http://www.ii.uni.wroc.pl/

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

Metody Metody, parametry, zwracanie wartości Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca

Bardziej szczegółowo

KADD Minimalizacja funkcji

KADD Minimalizacja funkcji Minimalizacja funkcji Poszukiwanie minimum funkcji Foma kwadratowa Metody przybliżania minimum minimalizacja Minimalizacja w n wymiarach Metody poszukiwania minimum Otaczanie minimum Podział obszaru zawierającego

Bardziej szczegółowo

x y

x y Przykłady pytań na egzamin końcowy: (Uwaga! Skreślone pytania nie obowiązują w tym roku.). Oblicz wartość interpolacji funkcjami sklejanymi (przypadek (case) a), dla danych i =[- 4 5], y i =[0 4 -]. Jaka

Bardziej szczegółowo

Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl

Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl System dziesiętny 7 * 10 4 + 3 * 10 3 + 0 * 10 2 + 5 *10 1 + 1 * 10 0 = 73051 Liczba 10 w tym zapisie nazywa się podstawą systemu liczenia. Jeśli liczba 73051 byłaby zapisana w systemie ósemkowym, co powinniśmy

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

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

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Dziedziczenie Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasy Student oraz Pracownik: class Student class Pracownik

Bardziej szczegółowo