Dzi kuj za uwag! Spotkania z Pythonem. Cz ± 3 - wyra»enia lambda, generatory, dekoratory, operacje na plikach. Michaª Alichniewicz.
|
|
- Jarosław Skiba
- 8 lat temu
- Przeglądów:
Transkrypt
1 Spotkania z Pythonem Cz ± 3 - wyra»enia lambda, generatory, dekoratory, operacje na plikach Michaª Alichniewicz Studenckie Koªo Automatyków SKALP Gda«sk 2014 Dzi kuj za uwag! Na licencji Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. M. Alichniewicz (SKALP) Python vol / 66
2 Wyra»enia lambda M. Alichniewicz (SKALP) Python vol / 66
3 Wyra»enia lambda - co to jest? Zacznijmy od tego, czym jest wyra»enie lambda. Z denicji, jest to anonimowa funkcja (czyli - nie ma nazwy; ale jest równie» obiektem, wi c mo»emy j sobie gdzie± przypisa ), która przyjmuje zadane argumenty, a nast pnie u»ywa ich w tzw. wyra»eniu. Wynik wyra»enia jest warto±ci która taka funkcja zwraca. Najprostsz analogi która mo»e uªatwi zrozumienie funkcji lambda jest zwyczajna funkcja matematyczna. Przyjmuje ona jakie± argumenty, które nast pnie s cz ±ci skªadow jakiego± matematycznego wyra»enia, dla przykªadu f(x) = 5x 2 + x x M. Alichniewicz (SKALP) Python vol / 66
4 Wyra»enia lambda - co to jest? Dlaczego akurat analogia do matematyki? Otó», w takiej prostej funkcji nie wyst puje logika, caªa funkcja jest tylko i wyª cznie pojedy«czym wyra»eniem. Druga cecha która powoduje»e funkcja matematyczna jest dobra do przedstawienia jako analogia funkcji lambda jest fakt,»e w matematyce wszystkie zmienne i nazwy funkcji s arbitralne. Czyli mo»emy mie funkcj f(x), ale równie dobrze mo»e to by g(a), czy inne litery alfabetu. To, co jest tu niezmienne, to wyra»enie. M. Alichniewicz (SKALP) Python vol / 66
5 Wyra»enia lambda - co to jest? Zaªó»my,»e chcieli by±my zdeniowa w Pythonie tak funkcj jak ta opisana wzorem z poprzednich slajdów. W klasyczny sposób, by to wygl daªo tak: def nasza_funkcja(x): # Oblicz i zwroc return 5*x**2 + x /x Jak widzicie, nie ma tutaj ciaªa funkcji - wszystko co funkcja robi to zwraca warto±. M. Alichniewicz (SKALP) Python vol / 66
6 Wyra»enia lambda - denicja Poniewa» ciaªa funkcji jako takiej nie ma, to mo»na to skróci do wspomnianego wyra»enia lambda. Wyra»enia lambda deniuje si nast puj co: lambda arg1, arg2,...: wyrazenie arg1, arg2, etc. to argumenty funkcji lambda, za± wyra»enie jest naszym... wyra»eniem, którego wynik jest warto±ci jakie nasza funkcja lambda zwraca. Oczywi±cie funkcje lambda tak jak tradycyjne funkcje w Pythonie, mog przyjmowa domy±lne warto±ci argumentów, mo»emy podawa argumenty przez nazw przy wywoªywaniu funkcji, tak samo jak mo»emy zdeniowa zmienn liczb argumentów. M. Alichniewicz (SKALP) Python vol / 66
7 Wyra»enia lambda - denicja Poniewa» sama funkcja lambda nie ma identykatora, trzeba j gdzie± przypisa : f = lambda arg1, arg2,...: wyrazenie Skoro i tak trzeba t funkcj gdzie± przypisa, to po co jej u»ywa? Czy ma to sens, skoro mo»emy sobie tak funkcj zdeniowa tradycyjnie? A no... nie ma. Zastosowanie funkcji lambda ma sens dopiero z innymi funkcjami, jak dla przykªadu reduce, lter oraz map. Wszystkie wymienione funkcje przetwarzaj w pewien sposób list podan przez u»ytkownika. A w jaki sposób? Równie» w pewien sposób zdeniowany przez u»ytkownika - jako pierwszy argument przyjmuj funkcje która operuje na elementach. Funkcje mo»emy albo zdeniowa normalnie - co poniek d za±mieca kod, bo mamy jak ± dziwn funkcj nie wiadomo po co, albo wªa±nie u»y wyra»enia lambda. M. Alichniewicz (SKALP) Python vol / 66
8 Wyra»enia lambda - funkcja reduce Funkcja reduce przyjmuje dwa argumenty - drugi to lista, z kolei pierwszy jest funkcj dwóch parametrów. Jej dziaªanie opiera si na zredukowaniu listy do pojedynczego wyniku w sposób zdeniowany przez u»ytkownika, na zasadzie: y = f (f (f (f (f (x 1, x 2 ), x 3 ), x 4 ), x 5 )...) Co mo»na z tym zrobi? Np. zsumowa argumenty listy (mo»na to zrobi normaln p tl for, ale po co?). W takim wypadku, nasza funkcja to po prostu: f(x, y) = x + y M. Alichniewicz (SKALP) Python vol / 66
9 Wyra»enia lambda - funkcja reduce A jak to wygl da w praktyce? Nasz funkcj redukuj c mo»emy zdeniowa jako wyra»enie lambda: lambda x,y: x + y Nie musimy jej nigdzie przypisywa - mo»emy je poda wprost jako argument funkcji. Mamy wtedy: reduce(lambda x, y: x+y, nasza_lista) Sprawd¹my wi c dziaªanie: # Zwroci 21 reduce(lambda x, y: x + y, [1,2,3,4,5,6]) M. Alichniewicz (SKALP) Python vol / 66
10 Wyra»enia lambda - funkcja reduce Korzystaj c z funkcji reduce, mo»emy bardzo ªatwo policzy silni - jak pami tamy z matematyki, to iloczyn kolejnych liczb od 1 do docelowej. W takim przypadku, funkcja lambda b dzie wygl da nast puj co: lambda x,y: x * y # Mnoymy ssiednie elementy W poª czeniu z funkcj range, która deniuje nam list, mo»emy zdeniowa ko«cow funkcj n!: reduce(lambda x, y: x * y, range(1,n)) Sprawd¹my wi c dziaªanie: # Zwroci 120 reduce(lambda x, y: x * y, range(1,6)) M. Alichniewicz (SKALP) Python vol / 66
11 Wyra»enia lambda - funkcja lter Drug funkcj z kolekcji jest lter. Ta funkcja dla odmiany zwraca list, która skªada si z elementów listy któr podajemy jako drugi argument, dla których wynik funkcji podanej w pierwszym argumencie jest prawd. Do czego to mo»na wykorzysta? A no na przykªad do stworzenia listy kolejnych liczb parzystych. Jak to zrobi? Zaªó»my,»e nasza funkcja to to prostu dzielenie modulo 2. Dla liczb parzystych - otrzymamy 1; dla liczb nieparzystych, otrzymamy 0, co jest interpretowane jako faªsz. Neguj c wynik otrzymamy prawd dla liczby parzystej i faªsz dla liczby nieparzystej. Oczywi±cie najlepiej to zobrazuje przykªad: # Zwroci [2,4,6,8] filter(lambda x: not x % 2, range(1,10)) M. Alichniewicz (SKALP) Python vol / 66
12 Wyra»enia lambda - funkcja map Ostatnia funkcja z kolekcji to map. Tak jak poprzednia zwraca list, tylko»e dla odmiany tutaj dostajemy wynik w postaci tych samych elementów, ale po przetworzeniu przez podan przez nas funkcj (ilo± jest ta sama, nic nam nie ubywa). Funkcja jest wywoªywana dla ka»dego elementu oddzielnie. Za pomoc tego mo»emy np. podnie± liczby z listy do kwadratu lub np. zamieni wszystkie teksty z listy na pisane wielkimi literami. Przykªad: # Zwroci ['A', 'B', 'C', 'D', 'SKALP'] map(lambda x: x.upper(), ['a', 'b', 'c', 'd', 'Skalp']) M. Alichniewicz (SKALP) Python vol / 66
13 Skrócone instrukcje warunkowe M. Alichniewicz (SKALP) Python vol / 66
14 Skrócone instrukcje warunkowe Rozwa»my dwa zdania: Je»eli warunek jest speªniony, zwró A, w przeciwnym razie zwró B oraz Zwró A je»eli warunek jest speªniony, w przeciwnym razie zwró B Oba zdania maj oczywi±cie logiczny sens. M. Alichniewicz (SKALP) Python vol / 66
15 Skrócone instrukcje warunkowe Oba zdania reprezentuj opisowo skrócon instrukcj warunkow, przy czym pierwsza jest dosªownym tªumaczeniem instrukcji znanej z C, a druga jest jej odpowiednikiem w Pythonie. Dla przypomnienia, w C to wygl da tak: warunek? wartosc_1 : wartosc_2 W Pythonie, to ma nieco inn posta : wartosc_1 if warunek else wartosc_2 Pierwsza ró»nica - zamiast nie do ko«ca czytelnych znaków? oraz :, mamy czytelne if i else. Druga to nieco inna konstrukcja warunku - najpierw podajemy warto± któr zwracamy je»eli warunek jest speªniony, pó¹niej instrukcj warunkow a dopiero na ko«cu warto± dla faªszu. M. Alichniewicz (SKALP) Python vol / 66
16 Generatory M. Alichniewicz (SKALP) Python vol / 66
17 Generatory W Pythonie istnieje mo»liwo± zdeniowania funkcji, b d¹ klasy, po której mo»emy iterowa - czyli wykorzysta je jako ¹ródªo danych dla p tli for. W Pythonie jest jedna taka funkcja: xrange. Je»eli sprawdzimy, co nam zwróci ta funkcja bezpo±rednio: print xrange(0,10) To co najwy»ej wy±wietli si nam xrange(10). Z kolei je»eli umie±cimy t instrukcj w p tli: for item in xrange(0,10): print item, To p tla wy±wietli nam Tak samo zadziaªa jakby±my podali zamiast xrange podali range. Z tym»e je»eli wy±wietlimy co zwraca druga funkcja, to dostaniemy list. Jaka jest ró»nica? M. Alichniewicz (SKALP) Python vol / 66
18 Generatory Stwórzmy odpowiednik funkcji range we wªasnym zakresie: def my_range(start, end, step = 1): return_ = [] while start < end: # Wpisz akutalna wartosc na liste # Metoda ``append'' na liscie pozwala # na dopisanie elementu na koniec listy return_.append(start) start += step return return_ Dziaªanie tej funkcji jest dokªadnie takie jak dziaªanie funkcji range. Tworzymy list z kolejnymi elementami z zakresu. M. Alichniewicz (SKALP) Python vol / 66
19 Generatory W celu uªatwienia zrozumienia tego jak dziaªa generator, zróbmy sobie odpowiednik p tli for: for item in set_of_data: # Zrob cos z ``item'' # TUTAJ KOD DO WYKONANIA W PETLI pass Za pomoc p tli while. M. Alichniewicz (SKALP) Python vol / 66
20 Generatory Jedna z mo»liwych wariacji tego kodu, która bardzo dobrze oddaje dziaªanie p tli for: # Pobierz obiekt iteratora z naszego # obiektu po jakim chcemy wykonywac petle iterator = set_of_data. iter () # (1) # Zacznijmy petle while True: try: # Wez kolejny element # z iteratora item = iterator.next() # (2) # Zrob cos z ``item'' # TUTAJ KOD DO WYKONANIA W PETLI except StopIteration: # (3) break M. Alichniewicz (SKALP) Python vol / 66
21 Generatory Jak ten kod dziaªa? Przede wszystkim trzeba zwróci uwag»e nie u»ywamy tutaj indeksowania elementów. Ka»dy obiekt który mo»emy poda do p tli for, musi mie zaimplementowan metod iter. Zwraca ona obiekt, po którym bezpo±rednio mo»na iterowa (1) - a wymogiem takiego iterowalnego obiektu jest posiadanie zaimplementowanej metody next, która zwraca kolejny element z zestawu danych (2), albo rzuca wyj tkim StopIteration w przeciwnym wypadku (3). Oczywi±cie obiekt który podajemy na wej±cie p tli i obiekt który jest zwrócony przez jego metod iter mo»e by tym samym obiektem - wymagane jest jednak posiadanie odpowiednich metod. M. Alichniewicz (SKALP) Python vol / 66
22 Generatory Stwórzmy sobie tak przykªadow klas : class my_range_class(object): def init (self, start, end, step = 1): self.start = start self.end = end self.step = step def iter (self): return self def next(self): if self.start < self.end: return_value = self.start self.start += self.step return return_value else: raise StopIteration() M. Alichniewicz (SKALP) Python vol / 66
23 Generatory Jak wida, w tym kodzie nigdzie nie tworzymy listy elementów! Zwracamy je na bie» co, je»eli p tla (albo my) - o to poprosi poprzez wywoªanie metody next. Ma to t zalet,»e przede wszystkim nie generujemy dªugiej listy w pami ci. Je»eli generujemy liczby, to problemu nie ma - no chyba»e s to bardzo dªugie liczby - ale dla innych obiektów mo»e si okaza»e nasz program zu»ycie pami ci ma niczym Firefox w czasach ±wietno±ci (z caªym szacunkiem dla przegl darki Mozilli). Powy»szy kod bezproblemowo zadziaªa w bloku for, i jego dziaªanie b dzie zgodne z oczekiwaniami. M. Alichniewicz (SKALP) Python vol / 66
24 Generatory Jak ju» si przekonali±my wielokrotnie, du»o dªugich instrukcji ma w Pythonie swoje krótsze odpowiedniki. Tak te» jest w przypadku generatorów - zamiast peªnej klasy mo»emy zdeniowa po prostu odpowiedni funkcj. Pisz c generator w postaci funkcji, informujemy Pythona»e wªa±nie zwracamy do p tli jak ± warto± (ale nie ko«czymy funkcji!) za pomoc sªowa kluczowego yield (jest to odpowiednik return: w tym momencie wychodzimy z funkcji, ale funkcja b dzie wznowiona od tego miejsca w przypadku pro±by o kolejny argument). M. Alichniewicz (SKALP) Python vol / 66
25 Generatory Najlepiej to zobrazuje fragment kodu (funkcje print sªu» do pokazania dziaªania kodu): def my_range_generator(start, end, step = 1): print 'Wejscie do funkcji' while start < end: print 'Zwrocenie wartosci %d' % start # "Wyrzuc" nowa wartosc yield start print 'Wznowienie funkcji' start += step print 'Wyjscie z funkcji' Przeanalizujmy dziaªanie tego w praktyce. M. Alichniewicz (SKALP) Python vol / 66
26 Generatory Zacznijmy od utworzenia obiektu i sprawdzenia co dostali±my: x = my_range_generator(0, 10, 2) print repr(x) # Dostaniemy na ekranie cos podobnego do # <generator object my_range_generator at...> Jak ju» wiemy, ka»dy obiekt po którym mo»emy chodzi p tl for musi mie zaimplementowan metod iter - sprawd¹my wi c czy nasza funkcja tak posiada, i co nam zwróci: x_iter = x. iter () print repr(x_iter) # Dostaniemy na ekranie cos podobnego do # <generator object my_range_generator at...> Mo»emy zauwa»y,»e oba polecenia repr zwróciªy nam to samo - czyli to jest taka sama sytuacja jak dla naszej klasy zdeniowanej wcze±niej. M. Alichniewicz (SKALP) Python vol / 66
27 Generatory Skoro ju» wiemy»e nasze x jest iteratorem, mo»emy go poprosi o pierwszy element: item = x.next() # W ``item'' bedzie wartosc 0 - a na ekranie # zobaczymy: # # Wejscie do funkcji # Zwrocenie wartosci 0 Wy±wietlanie tych danych pozwala na wyci gni cie dwóch wa»nych wniosków: 1 wej±cie do funkcji jest wykonywanie dopiero przy pierwszym wywoªaniu next, 2 funkcja zako«czyªa swoje dziaªanie w miejscu wyst pienia yield. M. Alichniewicz (SKALP) Python vol / 66
28 Generatory Wykonajmy wi c po raz kolejny ten sam kod: item = x.next() # W ``item'' bedzie wartosc 2 - a na ekranie # zobaczymy: # # Wznowienie funkcji # Zwrocenie wartosci 2 Jak wida, funkcja zostaªa wznowiona (a wi c nie mo»emy mówi o wyj±ciu z funkcji, a jedynie o wstrzymaniu - warto± wszystkich zmiennych jest zachowana!) od miejsca w którym wyszli±my z niej poprzez sªowo kluczowe yield, a nast pnie znów wstrzymana przy kolejnym wyst pieniu tego sªowa. M. Alichniewicz (SKALP) Python vol / 66
29 Generatory Mo»emy kontynuowa wywoªywanie next do uzyskania wszystkich elementów (uda sie to nam jeszcze 3 razy). Za czwartym razem wynik wywoªania b dzie nieco inny: item = x.next() # Wartosc zmiennej ``item'' sie nie zmieni, # a na ekranie zobaczymy: # # Wznowienie funkcji # Wyjscie z funkcji # Traceback (most recent call last): # File "<stdin>", line 1, in <module> # StopIteration Wznowili±my dziaªanie, ale te» wyszli±my z p tli, a wi c nie napotkali±my na yield. Funkcja w naszym przypadku si sko«czyªa, co potwierdza wypisanie na ekranie ci gu Wyjscie z funkcji. Wida równie»»e Python rzuciª znanym ju» wyj tkiem StopIteration. M. Alichniewicz (SKALP) Python vol / 66
30 Generatory - forma skrócona Podobnie jak dla instrukcji warunkowych, dla generatorów równie» istnieje denicja skrócona. Wygl da to tak: (przetworz_element for element in lista) przetworz_element to oczywi±cie wyra»enie które co± z naszym elementem (nazwanym przez nas element) robi. Jak wida, jest to konstrukcja b d ca odpowiednikiem zwini tej konstrukcji warunkowej dla p tli for. Przykªad takiego generatora: a = (item**2 for item in lista) print repr(a) # <generator object <genexpr> at 0x7f8e5df83c30> M. Alichniewicz (SKALP) Python vol / 66
31 Generatory - forma skrócona Tak stworzony obiekt oczywi±cie ma wszystkie potrzebne generatorom metody - iter i next. Problem z takim generatorem jest jeden - jest to objekt JEDNOKROTNEGO u»ytku. Czyli jak raz co± z nim zrobimy (np., u»yjemy w p tli for), to drugi raz ju» to nie zadziaªa. W praktyce takie generatory najcz ±ciej dziaªaj jako skrócona wersja p tli for, i ich celem jest stworzenie specycznej listy. Robi si to umieszczaj c generator w parze nawiasów kwadratowych albo przekazuj c do konstruktora klasy list: a = [item**2 for item in list] # albo, zamiennie a = list(item**2 for item in list) M. Alichniewicz (SKALP) Python vol / 66
32 Generatory - forma skrócona z instrukcj warunkow Póki co mo»liwo±ci generatorów s w zasadzie identyczne jak funkcji map, czyli przeprowad¹ operacj na ka»dym elemencie. Ciekawsze mo»liwo±ci daje poª czenie generatorów ze skrócon instrukcj warunkow. Skªadnia takiego generatora wygl da w ten sposób (mo»na to oczywi±cie zwin w jedn lini ): (przetworz_element for element in lista\ if warunek_elementu) Jak widzimy, na ko«cu pojawiªa si instrukcja if. Jest to warunek wykonywany dla ka»dego elementu z caªych danych wej±ciowych. M. Alichniewicz (SKALP) Python vol / 66
33 Generatory - forma skrócona z instrukcj warunkow Prostym przykªadem wykorzystania jest np. znalezienie elementów wspólnych dla dwóch list: a = [1, 2, 3, 4, 5] b = [3, 4, 5, 6, 7] wspolne = [item for item in a if item in b] # [3, 4, 5] Innym praktycznym przykªadem jest konwersja ci gu znaków (np. odczytanych z UART'a) na ich heksadecymentaln reprezentacj : wejscie = 'SKALP' wyjscie = ''.join('\\x%02x' % ord(char) \ for char in wejscie) print wyjscie # \x53\x4b\x41\x4c\x50 M. Alichniewicz (SKALP) Python vol / 66
34 Dekoratory M. Alichniewicz (SKALP) Python vol / 66
35 Dekoratory Cz sto, tworz c bardziej skomplikowany kod, tramy na przypadek gdzie np. dla du»ej cz ±ci metod w klasie pocz tkowy kod jest dokªadnie ten sam - czyli dla przykªadu, jaka± inicjalizacja, sprawdzenie uprawnie«, etc. Zgodnie z reguªami KISS oraz DRY, warto to gdzie± przenie± na zewn trz. Jednym ze sposobów jest zwyczajne zawarcie tego w jakiej± dodatkowej metodzie i wywoªywanie na pocz tku ka»dej funkcji. To samo mo»emy zrobi z kodem wywoªywanym na ko«cu. Tak by to wygl daªo w ka»dym j zyku programowania. W Pythonie jednak mo»emy to zrobi nieco inaczej - tworz c dekoratory funkcji. M. Alichniewicz (SKALP) Python vol / 66
36 Dekoratory Przez dekorowanie funkcji rozumiemy wykonanie jakiegos kodu przed i po wykonaniu zasadniczej tre±ci funkcji. Z kolei sam dekorator jest deniowany jako specyczna funkcja: przyjmuj ca jako parametr funkcj, i zwracaj ca now, udekorowan funkcj. Zaraz zaraz, jak to przyjmuj ca/zwracaj ca funkcj? Pami tajmy: w Pythonie wszystko jest obiektem. Tak wi c funkcja te», i mo»emy spokojnie j przypisa do jakiej± zmiennej - lub te» przekaza do funcji lub z funkcji. Druga sprawa - w Pythonie mo»emy deniowa funkcje lub klasy wewn trzne, czyli widoczne tylko wewn trz funkcji/klasy gdzie zostaªy zdeniowane. M. Alichniewicz (SKALP) Python vol / 66
37 Dekoratory Na pocz tek zdeniujmy sobie prost funkcj któr b dziemy chcieli udekorowa : def hello(): for i in range(0, ): # Male opoznienie nie zaszkodzi pass print "Hello world!" Funkcja nie jest specjalnie skomplikowana, ale te» dla celów pokazowych jest jak najbardziej wystarczaj ca. M. Alichniewicz (SKALP) Python vol / 66
38 Dekoratory Zaªó»my»e np chcieliby±my przed p tl opó¹niaj c wy±wietli tekst wejscie, a po wy±wietleniu Hello world! dorzuci jeszcze tekst wyj±cie, jednocze±nie nie modykuj c oryginalnej funkcji (celem zachowania czytelno±ci kodu - funkcja hello ma wy±wietla hello world, a nie dla przykªadu informowa»e do funkcji weszli±my). Mo»emy sobie stworzy now funkcj, która wywoªa t oryginaln : def hello_decorated(): print 'wejscie' hello() print 'wyjscie' Jest to jedno z mo»liwych rozwi za«, ale musimy pami ta o wywoªaniu hello_decorated zamiast hello. M. Alichniewicz (SKALP) Python vol / 66
39 Dekoratory Na etapie pisania kodu to nie problem. Ciekawiej natomiast zaczyna si je»eli jest to zmiana tymczasowa - np. jako element debuggowania programu, i docelowo jej nie b dzie w ko«cowym programie. Trzeba b dzie wtedy pami ta»eby zmieni X wywoªa«z powrotem na hello. Inny ciekawy przypadek to sytuacja gdy to nie dotyczy jednej funkcji, a kilkunastu - wtedy w ogóle mo»emy si pogubi. Teoretycznie - mo»emy zmieni nazw funkcji pierwotnej, np. na _hello, a jako hello zdeniowa nasz udekorowan funkcj. Ponownie schody si zaczn dla kilkunastu funkcji. Krokiem który to uªatwi, jest stworzenie nowej funkcji, która generuje now, udekorowan funkcj (czyli, jej argumentem b dzie stara funkcja), a zwróci wersj ze zmianami. M. Alichniewicz (SKALP) Python vol / 66
40 Dekoratory Stwórzmy wi c tak funkcj : def decorator(original_fcn): """ Dekoruje funkcje. Jako argument przyjmuje funkcje oryginalna. """ def decorated_fcn(*args, **kwargs): """ Funkcja udekorowana. Nie znamy argumentow, wiec *args i **kwargs. """ print 'wejscie' # Wywolanie oryginalu original_fcn(*args, **kwargs) print 'wyjscie' return decorated_fcn # Zwroc nowa funkcje M. Alichniewicz (SKALP) Python vol / 66
41 Dekoratory Je»eli wywoªamy tak funkcj dekoruj c jako argument podaj c wªa±nie nasze hello (ale bez nawiasów, czyli nie wywoªujemy jej!), w efekcie dostaniemy now funkcj : hello_decorated = decorator(hello) print repr(hello_decorated) # Dostaniemy cos podobnego do # <function decorated_fcn at 0x7fbcf45f0938> Wywoªanie otrzymanego hello_decorated da nam oczekiwany efekt. Dalej jednak mamy problem, bo trzeba to gdzie± przypisa, czyli na chwil obecn dalej potrzebujemy sztuczki ze zmian nazwy. M. Alichniewicz (SKALP) Python vol / 66
42 Dekoratory Python i na to ma rozwi zanie. Zdeniowana przez nas funkcja decorator jest faktycznie dekoratorem, i Python posiada mechanizm który umo»liwia automatyczne dekorowanie funkcji na etapie jej denicji. Maj c taki dekorator, mo»emy sobie przedeniowa nasz funkcj # Podaj dekorator def hello(): for i in range(0, ): # Male opoznienie nie zaszkodzi pass print "Hello world!" Dekorator podaje przed denicj funkcji lini zaczynaj c si od a nast pnie podajemy nazw dekoratora (nie jego wywoªanie) - po maªpie podajemy po prostu obiekt. M. Alichniewicz (SKALP) Python vol / 66
43 Dekoratory A co je»eli chcieliby±my mie dekorator, który przyjmuje jaki± dodatkowy parametr, w naszym przypadku np. tekst jaki chcemy wy±wietli przed wej±ciem do funkcji? Z racji tego,»e Python oczekuje na obiekt który jest funkcj (dekoratorem), mo»emy zastosowa sztuczk : stworzy funkcj, która przyjmuje jakis parametr, a nast pnie zwraca odpowiednio sparametryzowany dekorator (po maªpie musi by obiekt - ale nigdzie nie jest powiedziane,»e ma by podany bezpo±rednio.) M. Alichniewicz (SKALP) Python vol / 66
44 Dekoratory Stwórzmy wi c tak funkcj generuj c dekorator (docstring-i pomini te ze wzgl du na orgraniczone miejsce na slajdzie): def decorator_verbose(text): """ Zwraca dekorator, ktory wyswietla na wejsciu do funkcji podany tekst. """ def decorator(original_fcn): def decorated_fcn(*args, **kwargs): print text # Wywolanie oryginalu original_fcn(*args, **kwargs) print 'wyjscie' return decorated_fcn # Zwroc nowa funkcje return decorator M. Alichniewicz (SKALP) Python vol / 66
45 Dekoratory Oczywi±cie warto sprawdzi jej dziaªanie w execution') def hello(): for i in range(0, ): # Male opoznienie nie zaszkodzi pass print "Hello world!" hello() # Wyswietli: # # Begin execution # Hello world! # wyjscie M. Alichniewicz (SKALP) Python vol / 66
46 Dekoratory Dekoratory mo»na równie» ze sob ª czy - wtedy funkcja jest bezpo±rednio udekorowana przez dekorator podany jako ostatni (ten bezpo±rednio przed denicj funkcji), pó¹niej to co dostaniemy jest dekorowane przez kolejny dekorator etc. Dorzu my wi c kolejny dekorator: def tictoc(fcn): def decorated(*args, **kwargs): tic = time.time() fcn(*args, **kwargs) # Policz czas wykonywania toc = time.time() print "Time elapsed: %f" % (toc - tic) return decorated M. Alichniewicz (SKALP) Python vol / 66
47 Dekoratory Czas na przedeniowanie execution') def hello(): for i in range(0, ): # Male opoznienie nie zaszkodzi pass print "Hello world!" hello() # Wyswietli: (czas przykladowy) # # Begin execution # Hello world! # wyjscie # Time elapsed: M. Alichniewicz (SKALP) Python vol / 66
48 Manager kontekstu M. Alichniewicz (SKALP) Python vol / 66
49 Uruchamianie kodu z managerem kontekstu Manager kontekstu. Brzmi dosy nietypowo, a wi c co to jest? Cz ± kodu, nawet nie±wiadomie, uruchmiamy w pewnym kontek±cie. Mo»e to by np. operowanie na pliku - wszystkie operacje wykonujemy w kontek±cie tego pliku. To, co taki blok charakteryzuje to to,»e musimy jakie± operacje wykona wchodz c do tego kontekstu (np. otwarcie wspomnianego pliku), tak samo jak musimy wykona pewne operacje wychodz c z tego kontekstu (tutaj - zamkni cie pliku). M. Alichniewicz (SKALP) Python vol / 66
50 Manager kontekstu - denicja W ogólnym rozrachunku, to naszym managerem kontekstu jest - jak wszystko w Pythonie - nic innego jak specyczny obiekt, posiadaj cy odpowiednie metody. Dla managera kontekstu s to metody dosy intuicyjne - pierwsza to enter (nie przyjmuj ca zewn trznych argumentów) zwracaj ca obiekt kontekstu (mo»na samego siebie), druga z kolei to równie intuicyjne exit, które z kolei przyjmuje 3 argumenty - deniuj one dlaczego zostaªo zako«czone wykonanie bloku z naszym kontekstem (dla poprawnego wykonania, wszystkie trzy elementy b d miaªy warto± None, dla wyj tku b d tu dane wyj tku). Je»eli wszystko poszªo OK, ta metoda powinna zwróci True. M. Alichniewicz (SKALP) Python vol / 66
51 Manager kontekstu - denicja Zróbmy wi c przykªadowy kod. W naszym przykªadzie manager i kontekst to b d dwa ró»ne obiekty. class ManagerKontekstu(): """ Klasa managera kontekstu """ class Kontekst(): """ Klasa kontekstu """ def init (self): """ Konstruktor kontekstu """ print 'Utworzenie kontekstu' self.counter = 1 def init (self): """ Konstruktor managera kontekstu """ print 'Utworzenie managera' # pozostaly kod na nastepnym slajdzie M. Alichniewicz (SKALP) Python vol / 66
52 Manager kontekstu - denicja def enter (self): """ Wejscie / utworzenie kontekstu """ print 'Wejscie do kontekstu' self.ctx = ManagerKontekstu.Kontekst() self.ctx.counter += 1 return self.ctx def exit (self, *args): """ Wyjscie z kontekstu (sprzatanie) """ print 'Wyjscie z kontekstu' self.ctx.counter += 1 Zmienna counter jest zdeniowana»eby pokaza dziaªanie oraz rozdzielenie kontekstu i managera. M. Alichniewicz (SKALP) Python vol / 66
53 Manager kontekstu - wywoªanie W Pythonie blok kontekstu jest deniowany nast puj co: with ManagerKontekstu() as kontekst: # zrob cos z kontekstem # albo wpisz pass W naszym zdeniowanym poprzednio kontek±cie mamy wtedy: if name == " main ": with ManagerKontekstu() as kontekst: print '>>> Zwiekszam kontekst' kontekst.counter += 1 print 'Counter wynosi: %d' % kontekst.counter M. Alichniewicz (SKALP) Python vol / 66
54 Manager kontekstu - wywoªanie Je»eli wykonamy nasz kod - dostaniemy na ekranie Counter wynosi: 4. Zmienna counter nale»y do kontekstu, ale zwi kszamy j równie» przy wchodzeniu do tego kontekstu przez wywoªanie odpowiedniej metody managera. Przygotujmy sobie bardziej praktyczny przykªad managera kontekstu (docsting'i pomi te ze wzgl du na oszcz dno± miejsca): import time class TicToc(): def enter (self): self.tic = time.time() return self def exit (self, *args): self.toc = time.time() self.elapsed = self.toc - self.tic M. Alichniewicz (SKALP) Python vol / 66
55 Manager kontekstu - wywoªanie Sprawd¹my wi c jak to dziaªa: with TicToc() as timer: # jakies akcje time.sleep(5) # przerwa na 5 sekund # jakies dalsze akcje print 'Czas wykonywania: %f' % timer.elapsed W efekcie na ekranie powinni±my zobaczy ci g podobny do Czas wykonywania: (czas mo»e si ró»ni - ale powinien by wi kszy od 5 w naszym przypadku) M. Alichniewicz (SKALP) Python vol / 66
56 Operacje na plikach M. Alichniewicz (SKALP) Python vol / 66
57 Operacje na plikach Python, jak zdecydowana wi kszo± j zyków programowania, umo»liwia dziaªania na plikach. Do otwarcia pliku sªu»y - dosy logicznie nazwana - funkcja open: fp = open('nazwa_pliku', 'tryb') Generalnie, mamy 3 tryby otwarcia pliku: r - otwarcie do odczytu - ustawia wska¹nik na pocz tek pliku (domy±lny tryb) w - otwarcie do zapisu i skasowanie aktualnej zawarto±ci pliku - ustawia wska¹nik na pocz tek pliku (je»eli plik nie istnieje, to go tworzy) a - otwarcie do zapisu - ustawia wska¹nik na koniec pliku (je»eli plik nie istnieje, to go tworzy) M. Alichniewicz (SKALP) Python vol / 66
58 Operacje na plikach Tryby te mo»na dodatkowo rozbudowywa poprzez dodatkowe modykatory: b - otwiera plik w trybie binarnym (dla systemów gdzie jest rozró»nienie plik tekstowy / plik binarny) U - otwiera plik tekstowy w trybie universal newlines - czyli jako znak nowej linii na równi jest traktowany \n, \r oraz \r\n (tryb domy±lny) + - otwiera plik do zapisu (je»eli plik nie istnieje, to go tworzy) M. Alichniewicz (SKALP) Python vol / 66
59 Operacje na plikach Funkcja open, w przypadku Pythona zwraca obiekt typu le, zamiast uchwtu o pliku przekazywanego do funkcji odpowiedzialnych za odczyt i zapis jak w przypadku wi kszo±ci j zyków programowania. Obiekt typu le ma szereg przydatnych do tego metod, zaczynaj c od podstawowych: close() - zamyka plik write(str) - zapisuje ci g znaków do pliku. Nale»y pami ta»e wywoªanie tej metody nie zawsze powoduje natychmiastowy zapis zycznie do pliku, czasami jest to tylko zapis do bufora read(n) - odczytuje n bajtów z pliku. Je»eli rozmiar nie jest podany, odczytuje caªy plik (uwaga przy du»ych plikach!) readline(n) - je»eli nie podano n, odczytuje caª lini. Je»eli podane jest n, to jest to maksymalna liczba bajtów jaka mo»e by odczytana (w efekcie mo»emy odczyta niekompletn lini ). M. Alichniewicz (SKALP) Python vol / 66
60 Operacje na plikach Ko«cz c na tych rzadziej wykorzystywanych: ush() - wymusza od±wie»enie bufora, tj. zapis jego zawarto±ci zycznie na dysk readlines() - odczytuje wszystkie linie z pliku i tworzy z nich list (odczyt zaczyna od aktualnego wska¹nika) seek(pointer) - ustawia wska¹nik wewn trz pliku (miejsce z którego b dziemy czyta / do którego pisa ) tell() - zwraca aktualn warto± wska¹nika writelines(list) - zapisuje do pliku wszystkie elementy z listy, b d¹ innego iterowalnego argumentu podanego w argumencie (czyli mo»e to np. by generator). Metoda nie dodaje znaków ko«ca linii! M. Alichniewicz (SKALP) Python vol / 66
61 Operacje na plikach Jak plik otworzymy, to trzeba go pó¹niej zamkn (dajmy innym programom szans na dost p). Poniewa» obiekt typu le ma zaimplementowane metody enter oraz exit, jest wi c managerem kontekstu - a wi c mo»emy wykorzysta tutaj instrukcj with, która zamknie plik za nas: # Otworz plik i nie martw sie o zamkniecie with open('moj_plik', 'w') as fp: fp.write('ladna dzis pogoda!\n') fp.write('nieprawdaz?') print fp.closed # True - czyli plik zamkniety M. Alichniewicz (SKALP) Python vol / 66
62 Zadanie M. Alichniewicz (SKALP) Python vol / 66
63 Zadanie Napisa program, który odczyta od u»ytkownika wyra»enie matematyczne (zawieraj ce nawiasy, jednak ograniczone do operatorów matematycznych, bez funkcji - podane w tradycyjnej notacji) oraz obliczy jego warto±. Zadanie trzeba wykona bez wykorzystania funkcji eval! Podpowiedzi: Kluczem do rozwi zania jest Odwrotna Notacja Polska (w skrócie - ONP, albo RPN z angielskiego Rerverse Polish Notation) Wbudowane w Pythona listy mog sªu»y zarówno jako bufor FIFO, albo jako FILO - czyli stos Program zbuduj w taki sposób,»eby mo»na byªo go wykorzystywa bez modykacji w innych projektach (mile widziane obudowanie logiki w klas - uniwersalno± tej klasy, wliczaj c w to sposób podania danych - mile widziane). Mo»na poczyni dodatkowe zaªo»enia przy wprowadzaniu danych, jak np. biaªe znaki w tre±ci wyra»enia, jednak nale»y pami ta»e ko«cowy u»ytkownik nie ma obycia w Pythonie. M. Alichniewicz (SKALP) Python vol / 66
64 Materiaªy M. Alichniewicz (SKALP) Python vol / 66
65 Materiaªy Dokumentacja j zyka Python Forum StackOverow Improve Your Python: 'yield' and Generators Explained improve-your-python-yield-and-generators-explained/ Understanding Python Decorators in 12 Easy Steps! python-decorators-in-12-steps/ Understanding Python's with statement M. Alichniewicz (SKALP) Python vol / 66
66 Spotkania z Pythonem Cz ± 3 - wyra»enia lambda, generatory, dekoratory, operacje na plikach Michaª Alichniewicz Studenckie Koªo Automatyków SKALP Gda«sk 2014 Dzi kuj za uwag! Na licencji Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. M. Alichniewicz (SKALP) Python vol / 66
Dzi kuj za uwag! Spotkania z Pythonem. Cz ± 1 - podstawy - rozwi zania zada« Michaª Alichniewicz. Gda«sk 2014. Studenckie Koªo Automatyków SKALP
Spotkania z Pythonem Cz ± 1 - podstawy - rozwi zania zada«michaª Alichniewicz Studenckie Koªo Automatyków SKALP Gda«sk 2014 Dzi kuj za uwag! Na licencji Creative Commons Attribution-NonCommercial-ShareAlike
P tle. Rozdziaª Wst p. 4.2 P tle P tla for(...);
Rozdziaª 4 P tle 4.1 Wst p Niniejszy rozdziaª zawiera opis p tli w j zyku C, wraz z przykªadowymi programami oraz ich obja±nieniem. 4.2 P tle P tla to element j zyka programowania, pozwalaj cy na wielokrotne,
Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.
Wydziaª Matematyki, Fizyki i Informatyki 10 marca 2008 Spis tre±ci Listy 1 Listy 2 3 Co to jest lista? Listy List w Mathematice jest wyra»enie oddzielone przecinkami i zamkni te w { klamrach }. Elementy
Lekcja 12 - POMOCNICY
Lekcja 12 - POMOCNICY 1 Pomocnicy Pomocnicy, jak sama nazwa wskazuje, pomagaj Baltiemu w programach wykonuj c cz ± czynno±ci. S oni szczególnie pomocni, gdy chcemy ci g polece«wykona kilka razy w programie.
Programowanie i struktury danych
Programowanie i struktury danych Wykªad 3 1 / 37 tekstowe binarne Wyró»niamy dwa rodzaje plików: pliki binarne pliki tekstowe 2 / 37 binarne tekstowe binarne Plik binarny to ci g bajtów zapami tanych w
Lab. 02: Algorytm Schrage
Lab. 02: Algorytm Schrage Andrzej Gnatowski 5 kwietnia 2015 1 Opis zadania Celem zadania laboratoryjnego jest zapoznanie si z jednym z przybli»onych algorytmów sªu» cych do szukania rozwi za«znanego z
1. Wprowadzenie do C/C++
Podstawy Programowania :: Roman Grundkiewicz :: 014 Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub
1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy.
1 Klasy. Klasa to inaczej mówi c typ który podobnie jak struktura skªada si z ró»nych typów danych. Tworz c klas programista tworzy nowy typ danych, który mo»e by modelem rzeczywistego obiektu. 1.1 Denicja
1 Strumienie. 2 Pliki. 2.1 Zapis do pliku tekstowego. Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski
Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski 1 Strumienie W j zyku C++ pliki obsªugiwane s za pomoc strumieni. Strumie«pozwala na sekwencyjny dost p do pliku. Elementy, które jako pierwsze
Model obiektu w JavaScript
16 marca 2009 E4X Paradygmat klasowy Klasa Deniuje wszystkie wªa±ciwo±ci charakterystyczne dla wybranego zbioru obiektów. Klasa jest poj ciem abstrakcyjnym odnosz cym si do zbioru, a nie do pojedynczego
1. Wprowadzenie do C/C++
Podstawy Programowania - Roman Grundkiewicz - 013Z Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub
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ć
Lekcja 9 - LICZBY LOSOWE, ZMIENNE
Lekcja 9 - LICZBY LOSOWE, ZMIENNE I STAŠE 1 Liczby losowe Czasami spotkamy si z tak sytuacj,»e b dziemy potrzebowa by program za nas wylosowaª jak ± liczb. U»yjemy do tego polecenia: - liczba losowa Sprawd¹my
Programowanie i struktury danych 1 / 44
Programowanie i struktury danych 1 / 44 Lista dwukierunkowa Lista dwukierunkowa to liniowa struktura danych skªadaj ca si z ci gu elementów, z których ka»dy pami ta swojego nast pnika i poprzednika. Operacje
Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz
Lekcja 8 - ANIMACJA 1 Polecenia Za pomoc Baltiego mo»emy tworzy animacj, tzn. sprawia by obraz na ekranie wygl daª jakby si poruszaª. Do animowania przedmiotów i tworzenia animacji posªu» nam polecenia
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
Przetwarzanie sygnaªów
Przetwarzanie sygnaªów Laboratorium 1 - wst p do C# Dawid Poªap Przetwarzanie sygnaªów Pa¹dziernik, 2018 1 / 17 Czego mo»na oczekiwa wzgl dem programowania w C# na tych laboratoriach? Dawid Poªap Przetwarzanie
19. Obiektowo± 1 Kacze typowanie. 2 Klasy
1 Kacze typowanie 19. Obiektowo± Sk d interpreter wie, jakiego typu s np. przekazywane do metody argumenty? Tak naprawd wcale nie musi wiedzie. Do poprawnego dziaªania programu istotne jest,»e przekazywany
x y x y x y x + y x y
Algebra logiki 1 W zbiorze {0, 1} okre±lamy dziaªania dwuargumentowe,, +, oraz dziaªanie jednoargumentowe ( ). Dziaªanie x + y nazywamy dodawaniem modulo 2, a dziaªanie x y nazywamy kresk Sheera. x x 0
Lekcja 9 Liczby losowe, zmienne, staªe
Lekcja 9 Liczby losowe, zmienne, staªe Akademia im. Jana Dªugosza w Cz stochowie Liczby losowe Czasami potrzebujemy by program za nas wylosowaª liczb. U»yjemy do tego polecenia liczba losowa: Liczby losowe
Dzi kuj za uwag! Spotkania z Pythonem. Cz ± 2 - organizacja projektu i obiektowo± Michaª Alichniewicz. Gda«sk 2014. Studenckie Koªo Automatyków SKALP
Spotkania z Pythonem Cz ± 2 - organizacja projektu i obiektowo± Michaª Alichniewicz Studenckie Koªo Automatyków SKALP Gda«sk 2014 Dzi kuj za uwag! Na licencji Creative Commons Attribution-NonCommercial-ShareAlike
ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15
ANALIZA NUMERYCZNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Metoda Eulera 3 1.1 zagadnienia brzegowe....................... 3 1.2 Zastosowanie ró»niczki...................... 4 1.3 Output do pliku
Bash i algorytmy. Elwira Wachowicz. 20 lutego
Bash i algorytmy Elwira Wachowicz elwira@ifd.uni.wroc.pl 20 lutego 2012 Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Bash i algorytmy 20 lutego 2012 1 / 16 Inne przydatne polecenia Polecenie Dziaªanie Przykªad
Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java
J zyk programowania JAVA c 2011 Vincent Van GOGH: M»czyzna pij cy li»ank kawy Zadanie 6. Napisz program, który tworzy tablic 30 liczb wstawia do tej tablicy liczby od 0 do 29 sumuje te elementy tablicy,
A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.
Logika i teoria mnogo±ci, konspekt wykªad 12 Teoria mocy, cz ± II Def. 12.1 Ka»demu zbiorowi X przyporz dkowujemy oznaczany symbolem X obiekt zwany liczb kardynaln (lub moc zbioru X) w taki sposób,»e ta
Wska¹niki, tablice dynamiczne wielowymiarowe
Rozdziaª 11 Wska¹niki, tablice dynamiczne wielowymiarowe 11.1 Wst p Identycznie, jak w przypadku tablic statycznych, tablica dynamiczna mo»e by tablic jedno-, dwu-, trójitd. wymiarow. Tablica dynamiczna
Programowanie wspóªbie»ne
1 Zadanie 1: Bar Programowanie wspóªbie»ne wiczenia 6 monitory cz. 2 Napisz monitor Bar synchronizuj cy prac barmana obsªuguj cego klientów przy kolistym barze z N stoªkami. Ka»dy klient realizuje nast
Algorytmy zwiazane z gramatykami bezkontekstowymi
Algorytmy zwiazane z gramatykami bezkontekstowymi Rozpoznawanie j zyków bezkontekstowych Problem rozpoznawania j zyka L polega na sprawdzaniu przynale»no±ci sªowa wej±ciowego x do L. Zakªadamy,»e j zyk
Metody dowodzenia twierdze«
Metody dowodzenia twierdze«1 Metoda indukcji matematycznej Je±li T (n) jest form zdaniow okre±lon w zbiorze liczb naturalnych, to prawdziwe jest zdanie (T (0) n N (T (n) T (n + 1))) n N T (n). 2 W przypadku
Programowanie funkcyjne. Wykªad 13
Programowanie funkcyjne. Wykªad 13 Siªa wyrazu rachunku lambda Zdzisªaw Spªawski Zdzisªaw Spªawski: Programowanie funkcyjne. Wykªad 13, Siªa wyrazu rachunku lambda 1 Wst p Warto±ci logiczne Liczby naturalne
Programowanie obiektowe w C++ Wykªad 4
Programowanie obiektowe w C++ Wykªad 4 dr Lidia St pie«akademia im. Jana Dªugosza w Cz stochowie L. St pie«(ajd) Programowanie obiektowe w C++ 1 / 26 Dziedziczenie - podstawy Denicja klasy dziedzicz cej
JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1
J zyki formalne i operacje na j zykach J zyki formalne s abstrakcyjnie zbiorami sªów nad alfabetem sko«czonym Σ. J zyk formalny L to opis pewnego problemu decyzyjnego: sªowa to kody instancji (wej±cia)
Podstawy JavaScript. Dawid Poªap. Dawid Poªap Technologia informacyjna Grudzie«, / 13
Podstawy JavaScript Dawid Poªap Dawid Poªap Technologia informacyjna Grudzie«, 2017 1 / 13 Plan na reszt zaj z TI Dzisiaj podstawy podstaw programowania w konsoli. W nowym roku na stronie internetowej
Programowanie wspóªbie»ne
1 Programowanie wspóªbie»ne wiczenia 2 semafory cz. 1 Zadanie 1: Producent i konsument z buforem cyklicznym type porcja; void produkuj(porcja &p); void konsumuj(porcja p); porcja bufor[n]; / bufor cykliczny
Lekcja 5 Programowanie - Nowicjusz
Lekcja 5 Programowanie - Nowicjusz Akademia im. Jana Dªugosza w Cz stochowie Programowanie i program wedªug Baltiego Programowanie Programowanie jest najwy»szym trybem Baltiego. Z pomoc Baltiego mo»esz
ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15
ARYTMETYKA MODULARNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Denicja kongruencji i jej podstawowe wªasno±ci 3 2 Systemy pozycyjne 8 3 Elementy odwrotne 12 4 Pewne zastosowania elementów odwrotnych
Programowanie wspóªbie»ne
1 Programowanie wspóªbie»ne wiczenia 5 monitory cz. 1 Zadanie 1: Stolik dwuosobowy raz jeszcze W systemie dziaªa N par procesów. Procesy z pary s nierozró»nialne. Ka»dy proces cyklicznie wykonuje wªasnesprawy,
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
Logika dla matematyków i informatyków Wykªad 1
Logika dla matematyków i informatyków Wykªad 1 Stanisªaw Goldstein Wydziaª Matematyki i Informatyki UŠ 16 lutego 2016 Wszech±wiat matematyczny skªada si wyª cznie ze zbiorów. Liczby naturalne s zdeniowane
Lekcja 6 Programowanie - Zaawansowane
Lekcja 6 Programowanie - Zaawansowane Akademia im. Jana Dªugosza w Cz stochowie Wst p Wiemy ju»: co to jest program i programowanie, jak wygl da programowanie, jak tworzy programy za pomoc Baltiego. Na
Bazy danych, 4. wiczenia
Bazy danych, 4. wiczenia 2007-10-23 1 Plan zaj PL/SQL, cz ± II: tabele kursory sªu» ce do zmiany danych, procedury, funkcje, pakiety, wyzwalacze. 2 Tabele Deklaracja TYPE t_tab IS TABLE OF VARCHAR(20)
Wzorce projektowe strukturalne cz. 1
Wzorce projektowe strukturalne cz. 1 Krzysztof Ciebiera 19 pa¹dziernika 2005 1 1 Wst p 1.1 Podstawowe wzorce Podstawowe wzorce Podstawowe informacje Singleton gwarantuje,»e klasa ma jeden egzemplarz. Adapter
i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017
i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski Uniwersytet Šódzki, Wydziaª Matematyki i Informatyki UŠ piotr@fulmanski.pl http://fulmanski.pl/zajecia/prezentacje/festiwalnauki2017/festiwal_wmii_2017_
Rozwi zania klasycznych problemów w Rendezvous
Cz ± I Rozwi zania klasycznych problemów w Rendezvous 1 Producenci i konsumenci Na pocz tek rozwa»my wersj z jednym producentem i jednym konsumentem, dziaªaj cymi w niesko«czonych p tlach. Mechanizm komunikacji
Metodydowodzenia twierdzeń
1 Metodydowodzenia twierdzeń Przez zdanie rozumiemy dowolne stwierdzenie, które jest albo prawdziwe, albo faªszywe (nie mo»e by ono jednocze±nie prawdziwe i faªszywe). Tradycyjnie b dziemy u»ywali maªych
Rzut oka na zagadnienia zwi zane z projektowaniem list rozkazów
Rzut oka na zagadnienia zwi zane z projektowaniem list rozkazów 1 Wst p Przypomnijmy,»e komputer skªada si z procesora, pami ci, systemu wej±cia-wyj±cia oraz po- ª cze«mi dzy nimi. W procesorze mo»emy
ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15
ARYTMETYKA MODULARNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Denicja kongruencji i jej podstawowe wªasno±ci 3 2 Systemy pozycyjne 8 3 Elementy odwrotne 12 4 Pewne zastosowania elementów odwrotnych
Lekcja 2 - BUDUJEMY I CZARUJEMY
Lekcja 2 - BUDUJEMY I CZARUJEMY Na tej lekcji dowiemy si, jak korzysta z trybów Budowania oraz Czarowania w programie Baltie. Troch ju» wiemy o tych dwóch trybach z poprzedniej lekcji, jednak przypomnijmy
Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)
Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie
ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15
ARYTMETYKA MODULARNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Denicja kongruencji i jej podstawowe wªasno±ci 3 2 Systemy pozycyjne 8 3 Elementy odwrotne 12 4 Pewne zastosowania elementów odwrotnych
WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14
WST P DO TEORII INFORMACJI I KODOWANIA Grzegorz Szkibiel Wiosna 2013/14 Spis tre±ci 1 Kodowanie i dekodowanie 4 1.1 Kodowanie a szyfrowanie..................... 4 1.2 Podstawowe poj cia........................
Dzi kuj za uwag! Spotkania z Pythonem. Cz ± 1 - podstawy. Michaª Alichniewicz. Gda«sk 2014. Studenckie Koªo Automatyków SKALP
Spotkania z Pythonem Cz ± 1 - podstawy Michaª Alichniewicz Studenckie Koªo Automatyków SKALP Gda«sk 2014 Dzi kuj za uwag! Na licencji Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.
Listy i operacje pytania
Listy i operacje pytania Iwona Polak iwona.polak@us.edu.pl Uniwersytet l ski Instytut Informatyki pa¹dziernika 07 Który atrybut NIE wyst puje jako atrybut elementów listy? klucz elementu (key) wska¹nik
WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14
WST P DO TEORII INFORMACJI I KODOWANIA Grzegorz Szkibiel Wiosna 203/4 Spis tre±ci Kodowanie i dekodowanie 4. Kodowanie a szyfrowanie..................... 4.2 Podstawowe poj cia........................
Ć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
1 Bª dy i arytmetyka zmiennopozycyjna
1 Bª dy i arytmetyka zmiennopozycyjna Liczby w pami ci komputera przedstawiamy w ukªadzie dwójkowym w postaci zmiennopozycyjnej Oznacza to,»e s one postaci ±m c, 01 m < 1, c min c c max, (1) gdzie m nazywamy
Wst p do informatyki. Systemy liczbowe. Piotr Fulma«ski. 21 pa¹dziernika 2010. Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska
Wst p do informatyki Systemy liczbowe Piotr Fulma«ski Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska 21 pa¹dziernika 2010 Spis tre±ci 1 Liczby i ich systemy 2 Rodzaje systemów liczbowych
wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe
wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe 1 Wprowadzenie 1.1 rodowisko programistyczne NetBeans https://netbeans.org/ 1.2 Dokumentacja j zyka Java https://docs.oracle.com/javase/8/docs/api/
Przewodnik u»ytkownika
Opisywanie wygl du dokumentu 15 stycznia 2008 Akapity wystawione Skutkiem u»ycia otoczenia tworz cego akapit wystawiony jest zacz cie go od nowego wiersza, a tak»e zacz cie od nowego wiersza tekstu nast
Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek
Nazwa implementacji: Nauka języka Python pętla for Autor: Piotr Fiorek Opis implementacji: Poznanie innego rodzaju pętli, jaką jest pętla for w języku Python. Składnia pętli for jest następująca: for
2 Skªadnia polece«w pliku
Interpreter opisu dziaªa«platformy mobilnej wtyczki 1 Ogólny opis zadania Nale»y napisa program, który b dzie w stanie przeczyta z pliku tekstowego sekwencj polece«ruchu, a nast pnie zasymulowa dziaªanie
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)
Rekurencyjne struktury danych
Andrzej Jastrz bski Akademia ETI Dynamiczny przydziaª pami ci Pami, która jest przydzielana na pocz tku dziaªania procesu to: pami programu czyli instrukcje programu pami statyczna zwi zana ze zmiennymi
ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15
ARYTMETYKA MODULARNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Denicja kongruencji i jej podstawowe wªasno±ci 3 2 Systemy pozycyjne 8 3 Elementy odwrotne 12 4 Pewne zastosowania elementów odwrotnych
Ciaªa i wielomiany. 1 Denicja ciaªa. Ciaªa i wielomiany 1
Ciaªa i wielomiany 1 Ciaªa i wielomiany 1 Denicja ciaªa Niech F b dzie zbiorem, i niech + (dodawanie) oraz (mno»enie) b d dziaªaniami na zbiorze F. Denicja. Zbiór F wraz z dziaªaniami + i nazywamy ciaªem,
MiASI. Modelowanie systemów informatycznych. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska
MiASI Modelowanie systemów informatycznych Piotr Fulma«ski Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska 18 stycznia 2010 Spis tre±ci 1 Analiza systemu informatycznego Poziomy analizy 2
Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.
Relacje 1 Relacj n-argumentow nazywamy podzbiór ϱ X 1 X 2... X n. Je±li ϱ X Y jest relacj dwuargumentow (binarn ), to zamiast (x, y) ϱ piszemy xϱy. Relacj binarn okre±lon w zbiorze X nazywamy podzbiór
Programowanie wspóªbie»ne
1 Zadanie 1: Programowanie wspóªbie»ne wiczenia 12 Przestrzenie krotek cz. 2 Przychodnia lekarska W przychodni lekarskiej pracuje L > 0 lekarzy, z których ka»dy ma jedn z 0 < S L specjalno±ci, przy czym
7.3 Tablice jednowymiarowe dynamiczne
7.3 Tablice jednowymiarowe dynamiczne Tablice statyczne nie daj nam mo»liwo±ci decydowania o ich wymiarach podczas dziaªania programu. Oznacza to»e musimy zna wielko± tablicy na poziomie tworzenia aplikacji.
PRZYPOMNIENIE Ka»d przestrze«wektorow V, o wymiarze dim V = n < nad ciaªem F mo»na jednoznacznie odwzorowa na przestrze«f n n-ek uporz dkowanych:
Plan Spis tre±ci 1 Homomorzm 1 1.1 Macierz homomorzmu....................... 2 1.2 Dziaªania............................... 3 2 Ukªady równa«6 3 Zadania 8 1 Homomorzm PRZYPOMNIENIE Ka»d przestrze«wektorow
EPI: Interfejs Graczny 2009/2010 Podstawy Rubiego
EPI: Interfejs Graczny 2009/2010 Podstawy Rubiego 1 czerwca 2010 Plan prezentacji Wprowadzenie Hello World Sinatra Historia Rubiego 1993 Japonia Yukihiro Matsumoto San Historia Rubiego 1993 Japonia Yukihiro
O pewnym zadaniu olimpijskim
O pewnym zadaniu olimpijskim Michaª Seweryn, V LO w Krakowie opiekun pracy: dr Jacek Dymel Problem pocz tkowy Na drugim etapie LXII Olimpiady Matematycznej pojawiª si nast puj cy problem: Dla ka»dej liczby
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ć
Środowisko programisty
Środowisko programisty 1/35 Środowisko programisty Język Python cz. 3 dr inż. Grzegorz Michalski 7 kwietnia 2014 Środowisko programisty 2/35 Kod samotestujący Tworzenie def t e s t e r ( ) : p r i n t
Interfejsy, klasy wewn trzne jako szczególny rodzaj obiektów
Interfejsy, klasy wewn trzne jako szczególny rodzaj obiektów Robert A. Kªopotek r.klopotek@uksw.edu.pl Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW 16.03.2017 Interfejsy raz jeszcze "Interfejsy
Przykªadowe tematy z JiMP
Przykªadowe tematy z JiMP 1. Prosz napisa program, który dokona konwersji swojego argumentu wywoªania z punktw na centymetry, (77.27 pt = 1 cal = 2.54 cm) tzn. np. wywoªanie: c:\>pkt 144.54 = 5.08 cm spowoduje
Uczenie Wielowarstwowych Sieci Neuronów o
Plan uczenie neuronu o ci gªej funkcji aktywacji uczenie jednowarstwowej sieci neuronów o ci gªej funkcji aktywacji uczenie sieci wielowarstwowej - metoda propagacji wstecznej neuronu o ci gªej funkcji
Programowanie w Sieci Internet. Python: Operacje z plikami oraz obsługa wyjątków
Programowanie w Sieci Internet Python: Operacje z plikami oraz obsługa wyjątków Kraków, 5 grudnia 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Otwieranie plików Otwieranie plików jest realizowane
Optymalizacja R dlaczego warto przesi ± si na Linuxa?
Optymalizacja R dlaczego warto przesi ± si na Linuxa? 19 listopada 2014 Wi cej informacji, wraz z dodatkowymi materiaªami mo»na znale¹ w repozytorium na GitHubie pod adresem https://github.com/zzawadz/
WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH
WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH Klasa: 3TIR - Technik informatyk Program: 351203 Wymiar: 4 h tygodniowo Podręcznik: Kwalifikacja E.14 Programowanie
Lekcja 3 - BANKI I NOWE PRZEDMIOTY
Lekcja 3 - BANKI I NOWE PRZEDMIOTY Wiemy ju» co to s banki przedmiotów i potramy z nich korzysta. Dowiedzieli±my si te»,»e mo»emy tworzy nowe przedmioty, a nawet caªe banki przedmiotów. Na tej lekcji zajmiemy
Arytmetyka zmiennopozycyjna
Rozdziaª 4 Arytmetyka zmiennopozycyjna Wszystkie obliczenia w octavie s wykonywane w arytmetyce zmiennopozycyjnej (inaczej - arytmetyce ) podwójnej precyzji (double) - cho w najnowszych wersjach octave'a
ˆ tablice statyczne (o staªej ilo±ci elementów) ˆ tablice dynamiczne (o zmiennej ilo±ci elementów) 7.1 Tablice jednowymiarowe statyczne
Rozdziaª 7 Tablice W niniejszym rozdziale zostan omówione tablice. Zostan zaprezentowane kody ¹ródªowe programów w j zyku C, pokazuj ce ich wykorzystanie w praktyce. Istnieje kilka rodzajów tablic w C,
XVII Warmi«sko-Mazurskie Zawody Matematyczne
1 XVII Warmi«sko-Mazurskie Zawody Matematyczne Kategoria: klasa VIII szkoªy podstawowej i III gimnazjum Olsztyn, 16 maja 2019r. Zad. 1. Udowodnij,»e dla dowolnych liczb rzeczywistych x, y, z speªniaj cych
Wykresy i interfejsy użytkownika
Wrocław, 07.11.2017 Wstęp do informatyki i programowania: Wykresy i interfejsy użytkownika Wydział Matematyki Politechniki Wrocławskiej Andrzej Giniewicz Dzisiaj na zajęciach... Instrukcje sterujące Biblioteka
PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec
PROE wykład 7 kontenery tablicowe, listy dr inż. Jacek Naruniec Prosty kontener oparty na tablicach Funkcja dodawanie pojedynczego słonia do kontenera: 1 2 3 4 5 6 7 11 12 13 14 15 16 17 21 22 23 24 25
Indeksowane rodziny zbiorów
Logika i teoria mnogo±ci, konspekt wykªad 7 Indeksowane rodziny zbiorów Niech X b dzie przestrzeni zbiorem, którego podzbiorami b d wszystkie rozpatrywane zbiory, R rodzin wszystkich podzbiorów X za± T
Subversion - jak dziaªa
- jak dziaªa Krótka instrukcja obsªugi lstelmach@gmail.com Stelmisoft 12/07/2010 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 Spis tre±ci Czym jest Czym jest repozytorium 1 Czym jest Czym jest repozytorium
ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15
ARYTMETYKA MODULARNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Denicja kongruencji i jej podstawowe wªasno±ci 3 2 Systemy pozycyjne 8 3 Elementy odwrotne 12 4 Pewne zastosowania elementów odwrotnych
Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski
Podstawy Pythona Krzysztof Gdawiec Instytut Informatyki Uniwersytet Śląski Słownik jest typem mutowalnym. Każdy element to para: klucz wartość. W celu stworzenia słownika pary klucz wartość umieszczamy
Kompilowanie programów
Rozdziaª 2 Kompilowanie programów 2.1 Wst p 2.2 Kompilatory, IDE Zacznijmy od podania kilku podstawowych informacji: ˆ Program - to ci g polece«(instrukcji) do wykonania dla komputera ˆ Program to algorytm
Podstawy modelowania w j zyku UML
Podstawy modelowania w j zyku UML dr hab. Bo»ena Wo¹na-Szcze±niak Akademia im. Jan Dªugosza bwozna@gmail.com Wykªad 8 Diagram pakietów I Diagram pakietów (ang. package diagram) jest diagramem strukturalnym,
Biblioteka graczna XPCE
J zyki i Systemy Sztucznej Inteligencji, Informatyka Stosowana, IV rok PWSZ Tarnów Tarnów, 12.01.2009 XPCE XPCE - ogólnie XPCE jest zestawem narz dzi do tworzenia gracznego interfejsu u»ytkownika(gui)
Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.
Wykªad jest prowadzony w oparciu o podr cznik Analiza matematyczna 2. Denicje, twierdzenia, wzory M. Gewerta i Z. Skoczylasa. Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych. Denicja Mówimy,»e funkcja
Programowanie wspóªbie»ne
1 Zadanie 1: Programowanie wspóªbie»ne wiczenia 11 Przestrzenie krotek cz. 1 Obliczanie caªki oznaczonej Rozwa»my iteracyjne obliczanie caªki oznaczonej na przedziale [a, b] metod trapezów. Krok iteracji
Android. Podstawy tworzenia aplikacji. Piotr Fulma«ski. March 4, 2015
Android Podstawy tworzenia aplikacji Piotr Fulma«ski Instytut Nauk Ekonomicznych i Informatyki, Pa«stwowa Wy»sza Szkoªa Zawodowa w Pªocku, Polska March 4, 2015 Table of contents Framework Jednym z najwarto±ciowszych
KLASYCZNE ZDANIA KATEGORYCZNE. ogólne - orzekaj co± o wszystkich desygnatach podmiotu szczegóªowe - orzekaj co± o niektórych desygnatach podmiotu
➏ Filozoa z elementami logiki Na podstawie wykªadów dra Mariusza Urba«skiego Sylogistyka Przypomnij sobie: stosunki mi dzy zakresami nazw KLASYCZNE ZDANIA KATEGORYCZNE Trzy znaczenia sªowa jest trzy rodzaje
Lekcja 3 Banki i nowe przedmioty
Lekcja 3 Banki i nowe przedmioty Akademia im. Jana Dªugosza w Cz stochowie Banki przedmiotów Co ju» wiemy? co to s banki przedmiotów w Baltie potramy korzysta z banków przedmiotów mo»emy tworzy nowe przedmioty
Informacje pomocnicze
Funkcje wymierne. Równania i nierówno±ci wymierne Denicja. (uªamki proste) Wyra»enia postaci Informacje pomocnicze A gdzie A d e R n N (dx e) n nazywamy uªamkami prostymi pierwszego rodzaju. Wyra»enia