JĘZYK PYTHON NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Dr Marcin Lewandowski [ mlew@ippt.pan.pl ] Strona kursu:
|
|
- Władysław Walczak
- 8 lat temu
- Przeglądów:
Transkrypt
1 JĘZYK PYTHON NARZĘDZIE DLA KAŻDEGO NAUKOWCA Dr Marcin Lewandowski [ mlew@ippt.pan.pl ] Strona kursu: 1
2 2 OPERACJE NA STRINGACH
3 3 Bit/Byte/Word Bit 0/1 Byte 8 bitów Word 2 bajty 16 bitów Long Word 4 bajty 32 bitów Long Long Word 8 bajty 64 bitów
4 4 ASCII American Standard Code for Information Interchange ustandaryzowany w 1963 Pierwsze zastosowanie: BELL teleprinter (TTY - TeleTYpe) Kodowanie znaków alfanumerycznych amerykańskich, kontrolnych i ew. znaków międzynarodowych (tzw. strona kodowa)
5 5 ASCII-I
6 6 ASCII-II
7 7 UNICODE Unicode jest nowoczesnym sposobem kodowania obejmującym znaki używane na całym świecie (np. polskie ogonki, alfabet chiński, hieroglify, cyrylicę i wiele innych), symbole muzyczne, techniczne, fonetyczne i inne często spotykane. Unicode przypisuje każdemu znakowi unikalny numer (kod numeryczny, ang. code point), niezależny od używanego systemu operacyjnego, programu czy języka. Ważną cechą Unicode jest fakt, że pierwsze 128 znaków odpowiada kodom ASCII (zakres 00..7F). więcej o Unicode na
8 8 UNICODE encoding UTF-8 kodowanie 8-bitowe zmiennej długości (zgodność z ASCII). UTF-16 kodowanie 16-bitowe zmiennej długości. UTF-32 kodowanie 32-bitowe stałej długości.
9 9 UNICODE escape >>> 'm' 'm' >>> '\155' 'm' >>> '\x6d' 'm >>> u'\n{latin SMALL LETTER A} 'a' >>> u'\n{latin SMALL LETTER A WITH ACUTE} 'á' >>> u"\u0041" A >>> u"\u " A
10 10 String escape sequence Raw string wyłączona interpretacja sekwencji escape!
11 11 Funkcje len(s) zwraca długość sekwencji (liczbę elementów), działa dla obiektów typu: string, tuple, list, dictionary char(n) zwraca znak odpowiadający kodowi n ASCII ord(ch) zwraca kod ASCII danego znaku ch str(s) reprezentacja obiektu dla człowieka repr(s) reprezentacja obiektu dla interpretera W Python 3.0+ znaki są stringi/kodowane w UNICODE!
12 12 str() vs repr() >>> s = 'Hello, world.' >>> str(s) 'Hello, world.' >>> repr(s) "'Hello, world. >>> str(0.1) '0.1' >>> repr(0.1) ' '
13 13 \ problem # Path on Windows >>> path = C:\\sample.txt >>> path = r C:\sample.txt >>> str(path) 'C:\\sample.txt' >>> repr(path) "'C:\\\\sample.txt >>> print path C:\sample.txt # Path on Unix/Linux >>> path = /tmp/sample.txt
14 14 Formatowanie stringów.format() format_spec ::= [fill][align][sign][#][0][width][.precision][type] fill ::= <a character other than '}'> align ::= "<" ">" "=" "^ sign ::= "+" "-" " " width ::= integer precision ::= integer type ::= "c" "d" "i" "o" "u" "e" "E" "f" "F" "g" "G" "x" "X" "r" "s" "%"
15 15 Formatowanie
16 16 Formatowanie: opcje dosuwania
17 17 Formatowanie: opcje znaku '#' dla całkowitoliczbowych jeśli występuję poprzedza liczbę '0b', '0o', or '0x w zależności od podstawy: binarnej, ósemkowej, hexadecymalnej
18 18 format() przykłady >>> '{0}, {1}, {2}'.format('a', 'b', 'c') 'a, b, c' >>> '{}, {}, {}'.format('a', 'b', 'c') # 2.7+ only 'a, b, c' >>> '{2}, {1}, {0}'.format('a', 'b', 'c') 'c, b, a' >>> '{2}, {1}, {0}'.format(*'abc') # unpacking argument sequence 'c, b, a'
19 19 format() przykłady >>> '{:<30}'.format('left aligned') 'left aligned ' >>> '{:>30}'.format('right aligned') ' right aligned' >>> '{:^30}'.format('centered') ' centered ' # use '*' as a fill char >>> '{:*^30}'.format('centered') '***********centered***********'
20 20 Formatowanie % ze słownika >>> print WITAMY %(imie)s %(nazwisko)s.' % \ { imie : Marcin", nazwisko": Lewandowski } WITAMY Marcin Lewandowski
21 21 Funkcje stringowe >>> dir( Hello Python! ) [' add ', ' class ', ' contains ', ' delattr ', ' doc ', ' eq ', ' format ', ' ge ', ' getattribute ', ' getitem ', ' getnewargs ', ' getslice ', ' gt ', ' hash ', ' init ', ' le ', ' len ', ' lt ', ' mod ', ' mul ', ' ne ', ' new ', ' reduce ', ' reduce_ex ', ' repr, ' rmod ', ' rmul ', ' setattr ', ' sizeof ', ' str ', ' subclasshook ', '_formatter_field_name_split', '_formatter_parser', 'capitalize, 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper, 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', strip', 'swapcase', 'title', 'translate', 'upper', 'zfill ] *** Przegląd funkcji stringowych w dokumentacji ***
22 22 Użycie help() >>> help( Hello.replace) Help on built-in function replace: replace(...) S.replace (old, new[, count]) -> str Return a copy of S with all occurrences of substring old replaced by new. If the optional argument count is given, only the first count occurrences are replaced.
23 23 Operacja na stringach I Operacja S = '' S = str() S = "spam's" S = 'spam\'s' S = '\thello\nworld \x21' S = """...ble, ble, ble""" S = r'\temp\spam' Interpretacja Pusty string Apostrof w stringu Sekwencje escape String wieloliniowy String raw S = u'spam' String Unicode tylko Python 2.6 S = b'spam' String bajtowy tylko Python 3.0+ S1 + S2 S * 3 S[i] S[i:j] Konkatenacja (łączenie) stringów Powielanie stringów Indeksowanie, przecinanie (slicing)
24 24 Operacja na stringach II Operacja len(s) "Type: %s has value %d" % (type, val) Interpretacja Długość stringu Formatowanie stringu "a {0} parrot".format(kind) Funkcja formatowania S.find( spam') S.rstrip() S.replace('spam', 'ham') S.split(',') '+'.join(strlist) S.lower(), S.upper() S.startswith('spam'), S.endswith('spam') S.isdigit() S.encode('latin-1') Funkcja szukania w stringu Funkcja usuwania spacji Funkcja zamiany Funkcja dzielenia stringu na separatorze Funkcja łączenia listy w string z separatorem Zamiana znaków na małe/wielkie litery Test na zawartość początku/końca stringu Test czy string zawiera tylko cyfry Kodowanie w danej stronie kodowej
25 25 Konwersja/kodowanie ASCII Wyświetlanie całej tablicy znaków ASCII w formacie: kod hex, kod decymalny, znak ASCII Kodowanie/Dekodowanie stringu ASCII reprezentacji heksadecymalnej i binarnej
26 26 Encoding "Marcin".encode('hex') " ". decode('hex') encodings/cp1252.py *** Codecs w dokumentacji ***
27 27 Encoding I >>> import sys >>> sys.version '2.6 (r26:66721, Oct , 11:35:03) [MSC v bit (Intel)]' >>> S = 'A\xC4B\xE8C' # String of 8-bit bytes >>> print S # Some are non-ascii AÄBčC >>> S.decode('latin-1') # Decode byte to latin-1 Unicode u'a\xc4b\xe8c' >>> S.decode('utf-8') # Not formatted as utf-8 UnicodeDecodeError: 'utf8' codec can't decode bytes in position 1-2: invalid data >>> S.decode('ascii') # Outside ASCII range UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 1: ordinal not in range(128)
28 28 WYRAŻENIA REGULARNE (REGEX)
29 29 Hmmm "Some people, when confronted with a problem, think: 'I know, I'll use regular expressions.' Now they have two problems. Jamie Zawinski
30 30 Regex >>> import re >>> s = His name is Marcin Lewandowski and her is Merlin Monroe.' >>> print re.findall( ([A-Z]\w+)\s+([A-Z]\w+)', s) [('Marcin', 'Lewandowski'), ('Merlin', 'Monroe')]
31 31 Regex funkcje I re.compile(pattern[, flags]) kompilacja wyrażenie regularnego do obiektu, który będzie następnie używany do wywołania metod: match() i search(); flags opcjonalne, specyfikowane razem przy pomocy operatora OR ( ). prog = re.compile(pattern) result = prog.match(string)
32 32 Regex funkcje II RegexObj.match(string[, pos[, endpos]]) dopasowywanie obiektu regex do stringu. Jeśli zero lub więcej znaków na początku stringu pasuje do wzorca zwraca obiekt MatchObj, lub None w przeciwnym wypadku RegexObj.search(string[, pos[, endpos]]) przeszukuje string w celu dopasowania wzorca. Zwraca obiekt MatchObj w przypadku znalezienia dopasowania lub None w przeciwnym wypadku *** moduł re w dokumentacji ***
33 33 Regex flagi/opcje re.i, re.ignorecase włącza opcję case-insensitive re.l, re.locale włącza interpretację znaków \w, \W, \b, \B, \s, \S z wykorzystaniem aktualnego locale. re.m, re.multiline kiedy włączone znak '^' dopasowuje na początku stringu oraz każdej nowej linii tekstu; podobnie znak '$' na końcu stringu oraz na końcu każdej linii tekstu re.s, re.dotall włącza dopasowanie znaku '.' jako każdego znaku włącznie ze znakiem nowej linii re.u, re.unicode włącza interpretację znaków \w, \W, \b, \B, \d, \D, \s, \S zgodnie z UNICODE re.x, re.verbose umożliwia pisanie wyrażeń regularnych w bardziej czytelnej postaci wieloliniowej oraz ze spacjami, które są ignorowane, znaki po # są traktowane jak komentarz
34 34 match vs search import re regex = re.compile( he..o') if regex.match( hello!!!'): print match!' if regex.search( Python hello!'): print found!'
35 35 Regex I Znak Znaczenie ^ Dopasowuje początek napisu $ Dopasowuje koniec napisu \b Dopasowuje początek lub koniec słowa \d Dopasowuje dowolna cyfrę \D Dopasowuje dowolny znak, który nie jest cyfra \s Dopasowuje pustą przestrzeń odpowiednik: [ \t\n\r\f\v] \S Negacja do \s odpowiednik: [^ \t\n\r\f\v] \w Dopasowuje znak alfanumeryczny odpowiednik: [a-za-z0-9_] \W Negacja do \w odpowiednik: [^a-za-z0-9_]
36 36 Regex II Znak Znaczenie x? Dopasowuje wystąpienie x zero lub jedno raz x* Dopasowuje x zero lub więcej razy x+ Dopasowuje x jeden lub więcej razy x{n,m} (a b c) (x) Dopasowuje znak x co najmniej n razy, lecz nie więcej niż m razy Dopasowuje a albo b albo c Definicja grupy dopasowana wartość dostępna za pomocą groups(), na obiekcie zwróconym przez re.search. Dopasowuje dowolny pojedynczy znak (z wyjątkiem nowej linii, o ile nie ustawiona flaga re.dotall) [ ] Dopasowuje zestaw lub zakres znaków (np. [abc], [a-za-z] [^ ] Negacja do [ ]
37 37 Obiekt match m = re.search("a(b*)c", "_abbbbc_") Wyrażeni e m.group(1 ) Wartoś ć bbbb Opis Dopasowany string pierwszej dopasowanej grupy m.start(1) 2 Indeks startu w stringu elementu pierwszej dopasowanej grupy m.end(1) 6 Indeks końca w stringu elementu pierwszej dopasowanej grupy
38 Dekodowanie numerów telefonów 38 EX7 Formaty numerów telefonów: (800) x ext work 1-(800) #1234
39 39 Regex narzędzia i linki dla Pythona i różnych innych języków webowy tester Regex narzędzie GUI do testowania Regex
40 40 Moduł struct Pakowanie i rozpakowywanie struktur binarnych na podstawie definicji formatu danych Potrzebne przy konwersji, zapisie/odczycie binarnych plików i struktur danych
41 41 Moduł struct funkcje exception struct.error wyjątek generowany dla niepoprawnych specyfikacji typów struct.pack(fmt, v1, v2,...) zwraca string zawierający spakowaną (binarną) strukturę w formacie fmt złożoną z wartości v1, v2,... (argumenty muszą pasować do formatu wzorca!) struct.pack_into(fmt, buffer, offset, v1, v2,...) j.w. ale pakuje wynik do zapisywalnego bufora buffer zaczynając w miejscu offset struct.unpack(fmt, string) rozpakowuje strukturę binarną (string) zgodnie z formatem fmt; zwraca listę niemodyfikowalną wartości; Uwaga: len(string) == struct.calcsize(fmt) struct.unpack_from(fmt, buffer[, offset=0]) j.w. ale rozpakowuje z bufora buffer zaczynając od miejsca offset struct.calcsize(fmt) zwraca długość struktury dla określonej specyfikacji formatu wzorca
42 42 Moduł struct typy I Format C Type Python x pad byte no value c char string of length 1 b signed char integer B unsigned char integer h short integer H unsigned short integer i int integer I unsigned int integer or long l long integer L unsigned long long q long long long
43 43 Moduł struct typy II Format C Type Python f float float d double float s char[] string p char[] string P void * long Wzorzec formatu Znaczenie 10s String o długości 10 4h <HLQ Liczba powtórzeń z wyjątkiem typu s (to samo co hhhh ) Pierwszy znak określa kolejność bajtów i wyrównanie w tym wypadku little-endian/standard
44 44 Moduł struct kolejność bajtów Znak Kolejność bajtów (domyślny) Natywny Natywny = Natywny Standard < little-endian Standard > big-endian Standard! network (= big-endian) Standard Natywny rozmiar i wyrównanie określa funkcje kompilatora C sizeof(). Standardowy rozmiar i wyrównanie = bez wyrównania, short = 2 bajty; int, long = 4 bajty; long long = 8 bajty; float = 4 bajty, double = 8 bajtów
45 Moduł struct przykład 45 EX6 BIN2TXT konwerter binarnych plików z danymi typu int do pliku tekstowego
46 46 OPERACJA NA PLIKACH
47 47 Co o plikach? Typy plików: Tekstowe (automatyczna obsługa znaków końca linii) Binarne Pliki wirtualne urządzeń (znakowe/blokowe) Tryby dostępu Buforowany/niebuforowany Blokujący/nieblokujący Funkcje/Operacje na plikach i katalogach Moduły obsługi plików: os, os.path, fileinput, tempfile, shutil CSV, XML, ZIP, rekordy, DB
48 48 Moduł io open(filename[, mode[, bufsize]]) otwiera plik filename w trybie mode (domyślnie r ); bufsize określa tryb i wielkość bufora close(file) zamyka plik file file.readline([limit]) czyta linię tekstu z pliku (max limit znaków) file.readlines([limit]) czyta linie z pliku i zwraca w formie listy (max limit znaków) file.seek(offset[, whence]) zmienia pozycję w pliku o offset względem (whence): 0 początku pliku (domyślnie); 1 pozycji aktualnej; 2 końca pliku; zwraca bezwzględną pozycję aktualną file.tell() Return the current stream position file.read([n]) czyta i zwraca zadaną liczbę n bajtów z pliku file.readall() czyta zawartość całego pliku file.write(buf) pisze bajty z bufora buf do pliku
49 49 open/read/close # open( C:\\path\\file, w+ ) # tekstowy, read/write # open( C:/path/file, rb ) # binarny, read >>> f = open(r C:\path\file ) >>> f.read(10) >>> print f.tell() >>> f.seek(10) >>> print f.tell() >>> f.close()
50 50 open() tryb otwarcia Wartość Początkowa pozycja w pliku Odczyt? r Początek (domyślnie) Tak Nie w Początek Nie Tak a Koniec Nie Tak r+ Początek Tak Nie w+ Początek Tak Tak a+ Koniec Tak Tak U Uniwersalna obsługa końców linii: \n, \r, \r\n Zapis?
51 51 Pliki zapis/odczyt # ZAPIS: fid = open( test.txt, w ) fid.write( Hello\nWorld ) fid.close() # ODCZYT: cały plik na raz! fid = open( test.txt, r ) s = fid.read() fid.close() # ODCZYT: linia po linii fid = open( test.txt, r ) for line in fid: print("line: " + line.strip()) fid.close()
52 52 CRLF/LF Linia tekstu zakończona znakiem nowej linii: LF (0x0A) Unix CR LF (0x0D 0x0A) Windows print ord( \r ) # 13 print ord( \n ) # 10 print \n, # \x0d\x0a '\n' w plikach tekstowych zamieniane automatycznie na koniec linii dla danej platformy
53 53 Przetwarzanie pliku tekstowego def process(line): print line # Process file line-by-line file = open( plik1.txt ) for line in file: process(line)
54 54 Wyjątki obsługi plików try: # file operations except IOError, message: print( An IO error, message) except : else: print( Succes )
55 Czytanie plików INI 55 EX8 [View] WindowSize=1024,768 BackgroundColor=green7 WindowSize=1280,1024 [Print] BackgroundColor=green5
56 56 Moduł os os.chdir(path) zmienia katalog bieżący na path os.getcwd() zwraca string z katalogiem bieżącym os.listdir(path) zwraca listę nazw w katalogu path os.mkdir(path[, mode]) tworzy katalog path z prawami dostępu mode (domyślnie 0777) os.makedirs(path[, mode]) rekursywne tworzenie katalogów os.rmdir(path) usuwa katalog path os.remove(path) usuwa plik path os.stat(path) zwraca strukturę (tuple) stat z informacjami o pliku (rozmiar, czasy, etc.) moduł os patrz dokumentacja Pythona
57 57 Moduł os.path Na danej platformie import os.path Implementacja dla różnych systemów: posixpath dla UNIXowych ntpath dla Windows macpath dla starych MacOS os2emxpath dla OS/2 EMX
58 58 Moduł os.path funkcje os.path.dirname(path) zwraca katalog dla podanej ścieżki os.path.getsize(path) zwraca rozmiar pliku w bajtach (os.error gdy plik jest niedostępny lub nieistnieje) os.path.isfile(path) True gdy path jest istniejącym i regularnym plikiem os.path.isdir(path) True gdy path jest katalogiem os.path.join(path1[, path2[,...]]) inteligentnie łączy elementy ścieżki w jedną ścieżkę wynikową moduł os.path patrz dokumentacja Pythona
59 59 Moduł glob Znajduje nazwy plików wg. zadanego wzorca zgodnie z regułami stosowanymi w systemach powłok systemu UNIX Wildcar d Dopasowuje * zero lub więcej znaków Przykład *.xls wszystkie pliki z rozszerzeniem xls? pojedynczy znak??? wszystkie pliki o nazwie składającej się dokładnie z 3 znaków [...] Pojedynczy znak z listy [!...] Pojedynczy znak nie z listy [ABC]* nazwy zaczynające się od liter A, B lub C *[!x] nazwy które nie kończą się na literę x >>> import glob >>> for path in glob.glob( C:\\source\\*.bak ):... os.remove(path)
60 60 Pliki CSV moduł CSV csv.reader(csvfile [, dialect='excel'] [, fmtparam]) zwraca obiekt typu reader dla pliku CSV. import csv cr = csv.reader(open('plik.csv'), delimiter=',', quotechar= ') for row in cr: print ':'.join(row)
61 61 CSV z obsługą błędów import csv, sys fn = "some.csv" reader = csv.reader(open(fn, "rb")) try: for row in reader: print row except csv.error, e: sys.exit('file %s, line %d: %s' % (filename, reader.line_num, e))
62 62 Inne moduły fileinput otwiera i czyta pliki podane w linii poleceń, czyli sys.argv[1:]; domyślnie sys.stdin import fileinput for line in fileinput.input(): process(line) tempfile do tworzenia tymczasowych plików i katalogów shutil wysokopoziomowe operacja na plikach (np. copytree, rmtree) urllib pobieranie stron WWW
63 63 PROGRAMOWANIE FUNKCYJNE
64 64 Źródła Programowanie funkcyjne (wykład MIMUW) nie_funkcyjne M.L. Scott, Programming Language Pragmatics, Morgan Kaufmann, 3 ed., 2009 Charming Python installments
65 65 Paradygmaty programowania Proceduralne/Imperatywne operacje wykonywane na danych (operacje zmieniają stan programu) Obiektowe opis interakcji pomiędzy obiektami Funkcyjne program jako funkcja
66 66 Imperatywne vs. Funkcyjne Cecha Imperatywne Funkcyjne Konstrukcja algorytmu Zmiana/Stan programu Kolejność wykonywania Jakie instrukcje wykonać (algorytm) i jak zmieniać stan programu Ważny Ważna Jakie transformacje danych są potrzebne Nie istnieje Mało ważna Przepływ sterowania Pętle, warunki i funkcje Funkcje, rekurencja Podstawowe elementy języka Struktury danych, instancje klas Funkcje jako obiekty firstclass, kolekcje danych (listy)
67 Konstrukcje programowania funkcyjnego w Pythonie Funkcje jako obiekty podstawowe (tzw. first-class) lambda, przekazywanie funkcji jako argument Domknięcia (ang. Closures) funkcje związane z damymi Funkcje operujące na funkcjach (ang. high-order functions) Dekoratory forma opakowań (wrapperów) dla funkcji Iteratory i Generatory Listy jako podstawowa struktura danych (List Comprehensions) 67
68 68 Lambda Lambda proste, jednolinijkowe, anonimowe funkcje Mogą być przekazywane tak jak zwykłąe funkcje nazwane Używane często jako funkcje w callback, list comprehesnsions, high-order functions return jest w nich domniemany (implicite) square = lambda x: x*x >>> square(9) 81 squares = map(lambda x: x*x, range(3)) >>> squares [0, 1, 4]
69 69 Domknięcie (Closure) Domknięcie to funkcja ze związanymi zmiennymi: składa się z funkcji, jej lokalnych zmiennych oraz referencji do zmiennych spoza zakresu (outer scope) Obiekty to metody związane z danymi na których działają; Domknięcia to dane dowiązane do funkcji # Zwraca funkcję opodatkowania daną stawką VAT def vat_taxer(rate): def taxer(amount): return amount * (float(rate) / 100) return taxer vat22 = vat_taxer(22) vat7 = vat_taxer(7)
70 70 Domknięcie przykład # zwraca funkcję mnożącą przez n def multiply_by(n): return lambda x: return x*n double = multiply_by(2) triple = multiply_by(3) >>> double(2) 4 >>> triple(4) 12
71 71 High-order functions 1 map zastosuj funkcję na każdym elemencie sekwencji: >> map(lambda x: x**2, range(1,5)) [1, 4, 9, 16] filter wybiera elementy spełniające warunek >> filter(lambda x: x%2==0, range(10)) [0, 2, 4, 6, 8] reduce redukuje elementy sekwencji do jednej wartości za pomocą funkcji: >> reduce(lambda x,y: x+y, [1, 2, 3, 4]) 10
72 72 High-order functions 2 zip zszywa kolejne elementy z sekwencji: >> zip(( a, b, c ), (1,2,3)) [( a,1), ( b,2), ( c,3)] all zwraca True, gdy wszystkie elementy są True: >> all((1, 2, alala )) True any zwraca True, gdy choś jeden element jest True: >> any((0, None, 1)) True
73 73 Dekoratory def my_decorator(fn): def wrapper(*args): print before invocation fn(*args) print after invocation return def hello_world(): print hello, world >>> hello_world() before invocation hello, world after invocation
74 74 Iteratory Iterator jest analogiem sekwencji ale z kilkoma różnicami: Często używamy funkcji, która tworzy kolejne elementy sekwencji (np. za pomocą Generatora) Elementy sekwencji są produkowane dopiero w momencie kiedy są potrzebne Iteratory mogą tworzyć sekwencje dowolnie długie (w odróżnieniu od sekwencji struktur danych ograniczonych pamięcią) Iterator to protokół (nie typ danych) na który składa się: Funkcji next() (w implementacji next ()) Raise StopIteration after last item
75 75 Generatory Generator funkcja działająca jako Iterator Każdy element jest zwracany za pomocą polecenia yield Zakończenie przez: zakończenie funkcji zwykłe return raise StopIteration
76 76 Generatory przykład def four(): x = 0 while x < 3: print("in generator, x =", x) yield x x += 1 >>> for i in four(): print(i) in generator, x = 0 0 in generator, x = 1 1 in generator, x = 2 2
77 77 Generatory wyrażenia Składniowo podobne do List Comprehensions Ewaluacja leniwa jeden element za jednym razem Mogą być używane wszędzie, gdzie jest spodziewany Iterator # Przykład 1 it = (line.strip() for line in open('input.txt')) # Przykład 2 można ominąć nawiasy w wywołaniu funkcji func(line.strip() for line in open('input.txt'))
78 3 implementacje is_prime() 78 EX9 # Implementacja imperatywna wersja 1 def is_prime(n): k = 2 while k < n: if n % k == 0: return False k += 1 return True # Implementacja funkcyjna wersja 2 def is_prime(n): return len(filter(lambda k: n%k==0, range(2,n))) == 0 # Implementacja funkcyjna wersja 3 def is_prime(n): return not any(n%k==0 for k in xrange(2,n))
79 79 PROGRAMOWANIE OBIEKTOWE
80 Programowanie obiektowe Object-oriented programming (OOP) Klasy i obiekty: Obiekty są tworzone na podstawie definicji klas Pojedynczy obiekt jest nazywany instancją klasy Dane i operacje na nich (funkcje) tworzą obiekt Operacje/funkcje zawarte w klasie są nazywane metodami Dane/zmienne w klasie są nazywane atrybutami klasy Atrybuty tworzą stan instancji klasy (obiektu) 80
81 81 Definicja klasy class circle: def init (self, radius): self.radius = radius init jest inicjalizatorem obiektu self jest referencją do obiektu # utworzenie obiektu klasy circle >> c = circle(10) c < main.circle instance at 0x004A48A0> >> dir(c) [' doc ', ' init ', ' module ', 'radius']
82 Przeszukiwanie: obiekt.atrybut Szuka pierwszego wystąpienia atrybutu w obiekcie lub we wszystkich klasach powyżej (z których dziedziczył) od dołu do góry i od lewej do prawej strony 82 class C2: x = z = 2 class C3: w = z = 3 class C1(C2, C3): x = y = 1 I1 = C1() I2 = C1()
83 83 Metody specjalne klas METODA IMPLEMENTUJE WOŁANA DLA init Konstruktor obiektu X = Class(args) del Destruktor obiektu Usuwanie obiektu X add Operator + X + Y, X += Y jeśli nie iadd or Operator (bitowy OR) X Y, X = Y jeśli nie _ior repr, str Drukowanie, konwersja print(x), repr(x), str(x) call Wywołanie funkcji X(*args, **kargs) setattr Przypisanie atrybutu X.any = value delattr Skasowanie atrybutu del X.any getattribute Pobranie atrybutu X.any getattr Pobranie atrybutu X.undefined
84 84 Metody specjalne klas c.d. METODA IMPLEMENTUJE WOŁANA DLA getitem setitem delitem Indeksowanie, przecinanie, iteracja Przypisanie indeksowane, przecinane Usuwanie indeksowane, przecinane X[key], X[i:j], także dla pętli jeśli nie iter X[key] = value, X[i:j] = sequence del X[key], del X[i:j] len Długość len(x), testowanie gdy nie bool bool Testy logiczne bool(x), ( nonzero w Py 2.6) lt, gt, le, ge, eq, ne Porównania X < Y, X > Y, X <= Y, X >= Y, X == Y, X!= Y ( cmp w Py 2.6)
85 85 Metody specjalne klas c.d. METODA IMPLEMENTUJE WOŁANA DLA iadd Operator dodawania w miejscu X += Y iter, next Iterator I=iter(X), next(i); dla pętli contains Tester przynależności item in X (dla iterowalnych) index enter, exit get, set, delete Wartość całkowitoliczbowa Menadżer kontekstu with Deskryptory atrybutów hex(x), bin(x), oct(x), O[X], O[X:] (zastpuje Py 2.x oct, hex ) with obj as var: X.attr, X.attr = value, del X.attr new Tworzenie obiektu przed init
86 86 Atrybuty specjalne klas Wszystkie klasy posiadają następujące atrybuty: doc string dokumentacji class referencji do obiektu klasy (z każdej instancji) bases lista klas bazowych name nazwa klasy obiektu module nazwa modułu, w którym klasę zdefiniowano dict słownik będący przestrzenią nazw klasy (ale nie superklas)
87 87 Przykład 1 zmienne klasowe class Circle: pi = # class variable def init (self, radius = 1): self.radius = radius def area(self): return self.radius**2 * pt print Circle.pi circle1 = Circle() print circle1.area() circle5 = Circle(5) print circle5.area()
88 88 Przykład 2 metody statyczne class Circle: all_circles = [] # class variable pi = # class variable def init (self, r=1): self.radius = r self. class.all_circles.append(self) def area(self): return self. class.pi * self.radius * def total_area(): total = 0 for c in Circle.all_circles: total = total + c.area() return total
89 89 Przykład 3 dziedziczenie class Shape: def init (self, x, y): self.x = x self.y = y class Square(Shape): def init (self, side=1, x=0, y=0): super(). init (x, y) self.side = side class Circle(Shape): def init (self, r=1, x=0, y=0): super(). init (x, y) self.radius = r
90 90 Przykład 4 getters/setters class Temperature: def init (self): self. t_fahr = 0 # private in def temp(self): # in ºC return (self. def temp(self, new_temp): # in ºC self. t_fahr = new_temp*9/5 + 32
91 Klasa operacji na ułamkach zwykłych 91 EX10 Implementacja klasy ułamek oraz operacji: dodawania, odejmowania, mnożenia i dzielenia ułamków wyświetlania ułamków
92 92 PYTHON 3
93 93 Int int jest obecnie odpowiednikiem dawnego long int nie ma wartości maksymalnej (sys.maxint) 2/4 == 0.5 dzielenie jest już zmiennopozycyjne! 2//4 == 0 zwraca rezultat stałopozycyjny Zapis ósemkowy: 0o720 zamiast 0720
94 94 Stringi UNICODE Typ str (string) jest UNICODE! Nie można używać u"..." dla stringów Unicode Stringi binarne (1znak = 1bajt) wymagają zapisu b"..." Typy str i bytes nie mogą być mieszane - trzeba wykonywać konwersję: str -> bytes: str.encode() bytes -> str: bytes.decode() Alternatywnie: bytes(s, encoding=...) i str(b, encoding=...)
95 95 bytes i bytearray str i bytes są niemodyfikowalne (immutable) Typ bytearray jest modyfikowalnym do buforowanie danych binarnych Pliki otwierane w trybie tekstowym używają funkcji encoding do konwersji pomiędzy strings w pamięci i bajtami na dysku Pliki w trybie binarnym używają bytes/ bytearray
96 96 bytes Definicja stringów binarnych a = b"acme " b = bytes([1,2,3,4,5]) # literał # z listy c = bytes(10) # tablica 10 zero-bajtów d = bytes( ąćęłń","utf-8") # encoding ze stringu Uwaga to są tablice bajtów! >>> s = b"acme " >>> s[0] 65 >>> s[1] 67
97 97 Encoding dla plików Funkcja open() ma opcjonalny parametr: encoding: f=open("a.txt","rt,encoding="latin-1") Jeśli niepodany (domyślny): >>> f = open("somefile.txt","rt") >>> f.encoding 'UTF-8'
98 98 Latin-1 Latin-1 (znany także jako "iso ") Ograniczony dla znaków 8-bit (0-255) Wartości bajtów 1-1 Emuluje zachowanie Python 2.x Najszybszy encoding dla czystych 8-bitowych plików tekstowych
99 99 Encoding everywhere >>> import sys >>> sys.stdin.encoding 'UTF-8' >>> sys.stdout.encoding 'UTF-8 Uwaga na encoding zależny od ustawionego locale w OS: >>> import sys >>> sys.stdout.encoding 'US-ASCII'
100 100 Builtins Usunięte builtins: apply() callable() coerce() execfile() the file type reduce() reload() dict.has_key() Zmienione: raw_input() -> input()
101 101 print jest funkcją!!!
102 102 Nowe formatowanie stringów Po staremu: s = "%10s %10d %10.2f" % (name, shares, price) Po nowemu (Python 3): s = "{0:10s} {1:10d} {2:10.2f}".format(name,shares,price) Patrz dokumentacja Python 3 format()
103 103 ITERATORY Te funkcje zwracają Iteratory zamiast list: dict.keys(), dict.items(), dict.values (nie wspierane: dict.iterkeys(), dict.iteritems(), dict.itervalues()) map() filter() zip() range() robi za dawne xrange()
104 104 Uwaga na ITERATORY # To już nie działa w PYTHON 3! k = d.keys(); k.sort() # Użyj k = sorted(d) # to jest obiekt typu iterator! >>> {1: 0}.keys() <dict_keys object at 0x7ffdf8d53d00>
105 105 Listy vs. Iteratory PYTHON 2.x PYTHON 3 a = map(lambda x: x[1], items) a = [x[1] for x in items] for name in map(str.lower, names):... a = filter(lambda n: n%2==0, nums) for key in filter(str.isdigit, keys):... dict(zip(sins, persons)) bez zmian a = [n for n in nums if n%2==0] bez zmian bez zmian
106 106 Dictionary comprehensions Było dla list, tera jest też dla słowników: a = {key.upper():value for key,value in d.items()}
107 107 Wyjątki # Stara składnia raise Exception, Ooop exception! # Nowa składania raise Exception( Ooop exception! ) try: a=int( hotdog ) except ValueError as oops: print( ValueError has occurred, oops)
108 108 Moduły usunięte cfmfile cl md5 and sha (replaced with hashlib) mimetools, MimeWriter, mimify, multifile, and rfc822 (replaced with the e- mail package) posixfile sv timing (use time.clock instead) Canvas commands and popen2 (replaced with subprocess) compiler dircache dl fpformat htmllib (replaced with HTMLParser) mhlib (replaced with mailbox) stat (changed to os.stat) urllib (replaced with urllib2)
109 109 Moduły zmienione _winreg -> winreg ConfigParser -> configparser copy_reg -> copyreg Queue -> queue SocketServer -> socketserver markupbase -> _markupbase repr -> reprlib test.test_support -> test.support Zintegrowane: dbm: anydbm, dbhash, dbm, dumbdbm, gdbm, whichdb html: HTMLParser, htmlentitydefs http: httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib tkinter zawiera całego Tkinter (poza turtle) urllib: urllib, urllib2, urlparse, robotparse xmlrpc: xmlrpclib, DocXMLRPCServer, SimpleXMLRPCServer
110 110 Narzędzie 2to3 Automatyczne narzędzie do konwersji kody Pythona 2.x do Pythona 3. Narzędzie 2to3 znajduje się w podkatalogu: Tools/scripts Wewnętrznie korzysta z modułu: lib2to3 Użycie z zapisem do oryginalnego pliku: $ 2to3 -w ex.py (tworzy także backup pliku oryginalnego ex.py.bak)
111 111 Py launcher w Python 3.3+ Dwa uruchamiacze do Pythona (instalowane w katalogu systemu Windows!) py.exe dla aplikacji konsolowych pyw.exe dla aplikacji okienkowych (bez konsoli) Są automatycznie skojarzone z plikami ".py" i ".pyw"
112 112 Py launcher przykłady Z LINII POLECEŃ: C:\temp>py -3 script.py # runs under latest 3.X C:\temp>py -2 script.py # runs under latest 2.X C:\temp>py -2.6 script.py # runs under 2.6 (only) ZE SKRYPTU: #!python3... # runs under latest 3.X installed #!python2... # runs under latest 2.X installed #!python # runs under 2.6 (only)
113 113 Py launcher Domyślnie skrypty są uruchamiane w najnowszej zainstalowanej wersji Python 2.x Zmiana zachowania za pomocą zmiennych środowiskowych: PY_PYTHON=3 zmiana domyślnej wersji na 3.x Alternatywnie za pomocą pliku konfiguracyjnego py.ini w katalogu skryptu
114 114 c.d.
JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ ]
JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA Marcin Lewandowski [ mlew@ippt.gov.pl ] PYTHON 3 2 Int int jest obecnie odpowiednikiem dawnego long int nie ma wartości maksymalnej (sys.maxint) 2/4 == 0.5
Bardziej szczegółowoJĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ ]
JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA Marcin Lewandowski [ mlew@ippt.gov.pl ] PROGRAMOWANIE FUNKCYJNE I OBIEKTOWE W PYTHONIE 2 PROGRAMOWANIE FUNKCYJNE 3 Źródła Programowanie funkcyjne (wykład MIMUW)
Bardziej szczegółowoJĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ]
JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA Marcin Lewandowski [ mlew@ippt.gov.pl ] OPERACJE NA STRINGACH 2 Bit/Byte/Word Bit 0/1 Byte 8 bitów Word 2 bajty 16 bitów Long Word 4 bajty 32 bitów Long Long
Bardziej szczegółowoKurs rozszerzony języka Python
Wykład 2. 13 października 2017 Plan wykładu Klasy i obiekty 1 Klasy i obiekty 2 3 4 Plan wykładu Klasy i obiekty 1 Klasy i obiekty 2 3 4 Deklaracja klasy Klasy i obiekty Przykłady class Figura: Pierwsza
Bardziej szczegółowoWstęp do informatyki. Python 1
Wstęp do informatyki Python 1 Python - wprowadzenie Wysokopoziomowy język programowania obiektowego stworzony na początku lat dziewięćdziesiątych XXw. Cechy Pythona: - wszechstronne zastosowania (GUI,
Bardziej szczegółowoZaawansowany 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ółowoPodstawy 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ółowoKurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie
Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie Operacje na plikach Otwarcie i zamknięcie pliku: fh = open('plik', 'r') Atrybuty: 'r' odczyt 'w' zapis 'a' dopisanie 'r+'
Bardziej szczegółowoPodstawy bioinformatyki 2017/18
JEZYK PROGRAMOWANIA PYTHON: WPROWADZANIE DANYCH I FORMATOWANIE WYNIKÓW, WEWNETRZNA DOKUMENTACJA, PROGRAMY I MODUŁY E. Dyguda-Kazimierowicz 1 Formatowanie danych wyjściowych Do formatowania wyświetlanych
Bardziej szczegółowoInformatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki
Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu
Bardziej szczegółowoWstęp do programowania
Wstęp do programowania Programowanie funkcyjne Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XIV Jesień 2013 1 / 25 Paradygmaty programowania Programowanie imperatywne Program
Bardziej szczegółowoBiblioteka standardowa - operacje wejścia/wyjścia
Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline
Bardziej szczegółowoMicrosoft IT Academy kurs programowania
Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego
Bardziej szczegółowoHackowanie zamrożonych binariów
Hackowanie zamrożonych binariów Piotr Tynecki @ptynecki PyCon PL 2015 Agenda 0x0. Wprowadzenie 0x1. Tradycyjny model wykonaczy kodu CPythona 0x2. Kod bajtowy, charakterystyka plików.pyc /.pyo 0x3. Zamrożone
Bardziej szczegółowoProgramowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44
Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia
Bardziej szczegółowoJęzyk Python (2) Język Python (2) 1/36
Język Python (2) Język Python (2) 1/36 Język Python (2) 2/36 Podstawy funkcji Pojęcia podstawowe Instrukcja def tworzy obiekt funkcji i przypisuje go do nazwy Instrukcja return przekazuje obiekt wynikowy
Bardziej szczegółowoJAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Bardziej szczegółowoSwift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności
Bardziej szczegółowoZaawansowany 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ółowoBłyskawiczny kurs języka Python od podstaw do prostej strony opartej o microframework Flask.
Błyskawiczny kurs języka Python od podstaw do prostej strony opartej o microframework Flask. Marius Rejdak mariuswol@gmail.com #inf.aei.polsl.pl @ QuakeNet 2 / 44 Agenda 1. Filozofia języka 2. REPL 3.
Bardziej szczegółowoBash - wprowadzenie. Bash - wprowadzenie 1/39
Bash - wprowadzenie Bash - wprowadzenie 1/39 Bash - wprowadzenie 2/39 Czym jest bash? Rysunek : Zadanie powłoki to ukrycie wywołań systemowych Bash - wprowadzenie 3/39 Czym jest bash? Przykład polecenia:
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Język programowania Ruby Marcin Młotkowski 12 kwietnia 2018 Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy
Bardziej szczegółowoProgramowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.
Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Wskaźnik do pliku Dostęp do pliku: zapis, odczyt,
Bardziej szczegółowoJę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ółowoTrochę o plikach wsadowych (Windows)
Trochę o plikach wsadowych (Windows) Zmienne środowiskowe Zmienną środowiskową można ustawić na stałe w systemie (Panel sterowania->system- >Zaawansowane ustawienia systemu->zmienne środowiskowe) lub też
Bardziej szczegółowoSwift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności
Bardziej szczegółowoPlatformy Programistyczne Podstawy języka Java
Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo
Bardziej szczegółowoPython. 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ółowoKurs rozszerzony języka Python
Wykład 1. 6 października 2017 Plan wykładu 1 2 3 4 Plan wykładu 1 2 3 4 Wykładowca: Termin wykładu: piątek, 10:15 12:00, sala 119 Strona wykładu http://www.ii.uni.wroc.pl/ marcinm/dyd/python Materiały
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Bardziej szczegółowoJęzyki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.
Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia Zmienna: [] [ '[' ']' ] ['=' ]; Zmienna to fragment pamięci o określonym
Bardziej szczegółowoMyś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ółowoProgramowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41
Programowanie w C++ Wykład 2 Katarzyna Grzelak 5 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Reprezentacje liczb w komputerze K.Grzelak (Wykład 1) Programowanie w C++ 2 / 41 Reprezentacje
Bardziej szczegółowoWstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 12 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Obsługa łańcuchów znakowych getchar(), putchar()
Bardziej szczegółowoŚ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
Bardziej szczegółowoPodstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Bardziej szczegółowoĆ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ółowoKurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Bardziej szczegółowoPython wstęp do programowania dla użytkowników WCSS
Python wstęp do programowania dla użytkowników WCSS Dr inż. Krzysztof Berezowski Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Wprowadzenie CHARAKTERYSTYKA JĘZYKA Filozofia języka
Bardziej szczegółowoSWIFT. Zaawansowane Programowanie Obiektowe
SWIFT Zaawansowane Programowanie Obiektowe Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje
Bardziej szczegółowoJęzyki i metody programowania
Języki i metody programowania Wykład 4 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 Podstawy języka Python
Bardziej szczegółowoMETODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Bardziej szczegółowoProgramowanie w języku Python. Grażyna Koba
Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i
Bardziej szczegółowoPython. 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ółowoJęzyk Python (3) Język Python (3) 1/35
Język Python (3) Język Python (3) 1/35 Język Python (3) 2/35 Kod samotestujący Tworzenie def t e s t e r ( ) : p r i n t ( "Wywołanie funkcji testujacych..." ) i f n ame == main : t e s t e r ( ) Język
Bardziej szczegółowoPodstawy programowania. Python wykład 6
Podstawy programowania Python wykład 6 Funkcja wbudowana chr() Wywołanie funkcji chr() z argumentem m zwraca łańcuch znaków reprezentujący znak, którego punktem kodowym w Unicode jest liczba całkowita
Bardziej szczegółowoPliki. Informacje ogólne. Obsługa plików w języku C
Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego
Bardziej szczegółowoOpis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].
ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości
Bardziej szczegółowoKurs 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ółowoJęzyk C++ wykład VIII
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
Bardziej szczegółowoProgramowanie i projektowanie obiektowe
Programowanie i projektowanie obiektowe Metaprogramowanie (w Pythonie) Paweł Daniluk Wydział Fizyki Jesień 2016 P. Daniluk(Wydział Fizyki) PO w. XI Jesień 2016 1 / 32 Wstęp ideologiczny Języki programowania
Bardziej szczegółowoProgramowanie RAD Delphi
Programowanie RAD Delphi Dr Sławomir Orłowski Zespół Fizyki Medycznej, Instytut Fizyki, Uniwersytet Mikołaja Kopernika w Toruniu Pokój: 202, tel. 611-32-46, e-mial: bigman@fizyka.umk.pl Delphi zasoby Aplikacje
Bardziej szczegółowoInstrukcje. Operatory. Operatory. Instrukcje sterujące. wyrażenie1 && wyrażenie2 ;
Instrukcje wyrażenie1 if wyrażenie2 ; wyrażenie1 until wyrażenie2 ; wyrażenie1 wyrażenie2 ; wyrażenie1 wyrażenie2 ; wyrażenie1? wyrażenie2 : wyrażenie3 ; if (wyrażenie) blok [ [ elsif (wyrażenie) blok...
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wyjątki, metody specjalne, generatory Paweł Daniluk Wydział Fizyki Jesień 2015 P. Daniluk (Wydział Fizyki) PO w. VII Jesień 2015 1 / 23 Wyjątki It s easier to ask forgiveness than
Bardziej szczegółowoTOPIT Załącznik nr 3 Programowanie aplikacji internetowych
Szkolenie przeznaczone jest dla osób chcących poszerzyć swoje umiejętności o tworzenie rozwiązań internetowych w PHP. Zajęcia zostały przygotowane w taki sposób, aby po ich ukończeniu można było rozpocząć
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
Bardziej szczegółowoPodstawy. Jan Koprowski <jan.koprowski@gmail.com> Politechnika Gdańska, FTiMS Informatyka Stosowana
Podstawy 1 Plan prezentacji Garść informacji Komentarze Stringi Wbudowane typy liczbowe Konstrukcja print Pobieranie danych Konstrukcja if Konstrukcja if else Konstrukcja if elif else Pętla while Pętla
Bardziej szczegółowoProgramowanie Komputerów
Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 17 1. Typy i zmienne Jak wiemy, komputer
Bardziej szczegółowoProgramowanie Obiektowe i C++
Programowanie Obiektowe i C++ Smalltalk Marcin Benke 15 stycznia 2007 Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 1 / 26 Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje
Bardziej szczegółowoPrzegląd języka Python. Łukasz Anwajler
Przegląd języka Python Łukasz Anwajler lukasz.anwajler@pjwstk.edu.pl Nie wierzcie mi na słowo Zaraz zobaczymy: czym jest Python dlaczego warto go używać jakie ma zastosowania gdzie z niego korzystają jakzacząć
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;
Bardziej szczegółowoPython! Lekcja 1 podstawy języka, typy danych
Python! Lekcja 1 podstawy języka, typy danych 1 Plan Python z czym jeść? Python jako język OO Python 2 czy 3 Typy danych: liczby int, float, bool (!) Typy danych: sekwencje stringi, krotki, listy Typy
Bardziej szczegółowoSpis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal
Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO Rozdział 1. Wybór i instalacja kompilatora języka Pascal 1.1. Współczesne wersje kompilatorów Pascala 1.2. Jak zainstalować
Bardziej szczegółowoSystemy kodowania. Jolanta Bachan
Systemy kodowania Jolanta Bachan 2016-10-13 Bajt Bajt najmniejsza adresowalna jednostka informacji pamięci komputerowej, składająca się z bitów. Zwykle przyjmuje się, że jeden bajt to 8 bitów, choć to
Bardziej szczegółowoWykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include
Bardziej szczegółowoLaboratorium 03: Podstawowe konstrukcje w języku Java [2h]
1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie
Bardziej szczegółowoZmienne, stałe i operatory
Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe
Bardziej szczegółowoMATERIAŁY DO ZAJĘĆ II
MATERIAŁY DO ZAJĘĆ II Zmienne w C# Spis treści I. Definicja zmiennej II. Hierarchia typów (CTS) III. Typy wbudowane IV. Deklaracja zmiennych V. Literały VI. Pobieranie i wypisywanie wartości zmiennych
Bardziej szczegółowoAlgorytmy i struktury danych
Algorytmy i struktury danych 3. Elementy programu i typy danych Łódź 2018 Ćwiczenie Body Mass Index - Edytuj kod programu - Zapisz go w pliku bmi.py - Uruchom skrypt >>> Enter your name: Jacek >>> Enter
Bardziej szczegółowoKlasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C
#import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:
Bardziej szczegółowoObszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
Bardziej szczegółowoTemat 1: Podstawowe pojęcia: program, kompilacja, kod
Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,
Bardziej szczegółowoJęzyk programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści
Język programowania DELPHI / Andrzej Marciniak. Poznań, 2012 Spis treści Przedmowa 11 Przyjęta notacja 13 Rozdział 1. Wprowadzenie 15 1.1. Ogólne zasady programowania zorientowanego obiektowo 15 1.2. Historia
Bardziej szczegółowoInformatyka 2015/16 wykład 9. Pliki Sterowanie przebiegiem programu cz. 2. Dr inż. Witold Nocoń (p. 230)
Informatyka 2015/16 wykład 9 Pliki Sterowanie przebiegiem programu cz. 2 Dr inż. Witold Nocoń (p. 230) Pliki Pliki dzielą się na dwa rodzaje: Pliki tekstowe (zawartość pliku jest typu string) Pliki binarne
Bardziej szczegółowoKOTLIN. Język programowania dla Androida
KOTLIN Język programowania dla Androida Historia Kotlin został opracowany przez firmę JetBrains Prace rozpoczęto w 2011 r., od 2012 r. dostępny na licencji Apache 2. Nazwa pochodzi od wyspy koło Petersburga
Bardziej szczegółowoWstęp do programowania
Wstęp do programowania Operacje na plikach i napisy Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. VI Jesień 2013 1 / 28 Wejście/wyjście Większość problemów polega na przetwarzaniu
Bardziej szczegółowoPascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:
Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym
Bardziej szczegółowoSzablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Bardziej szczegółowoAlgorytmika 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ółowoDr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI
Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Wyrażenia 2 Wyrażenia w języku C są bardziej elastyczne niż wyrażenia w jakimkolwiek innym języku
Bardziej szczegółowoWykład 2 Składnia języka C# (cz. 1)
Wizualne systemy programowania Wykład 2 Składnia języka C# (cz. 1) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Budowa projektu 2 Struktura programu
Bardziej szczegółowoPython 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ółowoSmarty PHP. Leksykon kieszonkowy
IDZ DO PRZYK ADOWY ROZDZIA SPIS TREœCI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG Smarty PHP. Leksykon kieszonkowy Autor: Daniel Bargie³ ISBN: 83-246-0676-9 Format: B6, stron: 112 TWÓJ KOSZYK
Bardziej szczegółowoStruktury, unie, formatowanie, wskaźniki
Struktury, unie, formatowanie, wskaźniki 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12, na rzecz swoich 143209 poddanych uchwalił dekret o 20 procentowej
Bardziej szczegółowoProgramowanie 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ółowoProgramowanie współbieżne i rozproszone
Programowanie współbieżne i rozproszone WYKŁAD 11 dr inż. CORBA CORBA (Common Object Request Broker Architecture) standard programowania rozproszonego zaproponowany przez OMG (Object Management Group)
Bardziej szczegółowo1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Bardziej szczegółowoSQL 4 Structured Query Lenguage
Wykład 5 SQL 4 Structured Query Lenguage Instrukcje sterowania danymi Bazy Danych - A. Dawid 2011 1 CREATE USER Tworzy nowego użytkownika Składnia CREATE USER specyfikacja użytkownika [, specyfikacja użytkownika]...
Bardziej szczegółowoWykład 4. Tablice. Pliki
Informatyka I Wykład 4. Tablice. Pliki Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Tablice Tablica uporządkowany zbiór elementów określonego typu Każdy element tablicy posiada
Bardziej szczegółowoPodstawy 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ółowoPodstawy otwartych języków programowania Przechowywanie danych
Podstawy otwartych języków programowania Przechowywanie danych Wiktor Wandachowicz Sposoby przechowywania danych Typy podstawowe Pojedyncze obiekty Tablice obiektów i tablice typów podstawowych jednowymiarowe
Bardziej szczegółowoPython wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA
Python wprowadzenie Warszawa, 24 marca 2017 Python to język: nowoczesny łatwy w użyciu silny można pisać aplikacje Obiektowy klejący może być zintegrowany z innymi językami np. C, C++, Java działający
Bardziej szczegółowoJęzyk skryptowy: Laboratorium 1. Wprowadzenie do języka Python
Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python Język PYTHON Podstawowe informacje Python to język skryptowy, interpretowany - co oznacza, że piszemy skrypt, a następnie wykonujemy go za
Bardziej szczegółowoWprowadzenie do języka Ruby
Aleksander Pohl apohllo.pl Krakow Ruby Users Group 19. maja 2007 Kilka słów o Ruby Yukihiro Matz Matsumoto: [...] Poszukiwałem języka potężniejszego od Perla i bardziej obiektowego od Pythona. Wówczas,
Bardziej szczegółowoPARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Bardziej szczegółowoTypy danych, cd. Łańcuchy znaków
Typy danych, cd. Łańcuchy znaków Typ danych string, jest rozumiany jako łańcuch znaków - liter, cyfr i symboli. Stringi definiuje się w podwójnych lub pojedyńczych cudzysłowach. typ_ kawy = " latte " typ_herbaty
Bardziej szczegółowoWykład 2 Wybrane konstrukcje obiektowych języków programowania (1)
MAS dr. Inż. Mariusz Trzaska Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) Zagadnienia o Podstawy o Kontrolowanie sterowania o Klasy o Interfejsy o Obsługa błędów o Pojemniki o System
Bardziej szczegółowoWstęp do programowania
Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje
Bardziej szczegółowoUwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)
Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie
Bardziej szczegółowo