JĘZYK PYTHON NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Dr Marcin Lewandowski [ mlew@ippt.pan.pl ] Strona kursu:

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

Download "JĘZYK PYTHON NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Dr Marcin Lewandowski [ mlew@ippt.pan.pl ] Strona kursu: http://us4us.eu/wydarzenia/kursy/"

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 [ ] 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ółowo

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ ]

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 ] PROGRAMOWANIE FUNKCYJNE I OBIEKTOWE W PYTHONIE 2 PROGRAMOWANIE FUNKCYJNE 3 Źródła Programowanie funkcyjne (wykład MIMUW)

Bardziej szczegółowo

JĘ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 ] 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ółowo

Kurs rozszerzony języka Python

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

Wstęp do informatyki. Python 1

Wstę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ółowo

Zaawansowany kurs języka Python

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

Bardziej szczegółowo

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

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

Bardziej szczegółowo

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

Podstawy bioinformatyki 2017/18

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

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

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Programowanie funkcyjne Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XIV Jesień 2013 1 / 25 Paradygmaty programowania Programowanie imperatywne Program

Bardziej szczegółowo

Biblioteka standardowa - operacje wejścia/wyjścia

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

Microsoft IT Academy kurs programowania

Microsoft IT Academy kurs programowania Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego

Bardziej szczegółowo

Hackowanie zamrożonych binariów

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

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

Język Python (2) Język Python (2) 1/36

Ję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ółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

Swift (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.) 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ółowo

Zaawansowany kurs języka Python

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

Bardziej szczegółowo

Bł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. 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ółowo

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Bash - wprowadzenie. Bash - wprowadzenie 1/39 Bash - wprowadzenie Bash - wprowadzenie 1/39 Bash - wprowadzenie 2/39 Czym jest bash? Rysunek : Zadanie powłoki to ukrycie wywołań systemowych Bash - wprowadzenie 3/39 Czym jest bash? Przykład polecenia:

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

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

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Trochę o plikach wsadowych (Windows)

Trochę 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ółowo

Swift (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.) 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ółowo

Platformy Programistyczne Podstawy języka Java

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

Python. Wprowadzenie. Jolanta Bachan

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

Bardziej szczegółowo

Kurs rozszerzony języka Python

Kurs rozszerzony języka Python Wykład 1. 6 października 2017 Plan wykładu 1 2 3 4 Plan wykładu 1 2 3 4 Wykładowca: Termin wykładu: piątek, 10:15 12:00, sala 119 Strona wykładu http://www.ii.uni.wroc.pl/ marcinm/dyd/python Materiały

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Ję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ółowo

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

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

Bardziej szczegółowo

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

Wstę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 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 Ś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ółowo

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

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Ćwiczenie 5. Python 3: Programowanie obiektowe i dziedziczenie

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

Bardziej szczegółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

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

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

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

Bardziej szczegółowo

SWIFT. Zaawansowane Programowanie Obiektowe

SWIFT. 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ółowo

Języki i metody programowania

Ję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ółowo

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

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

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Język Python (3) Język Python (3) 1/35

Ję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ółowo

Podstawy programowania. Python wykład 6

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

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. 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ółowo

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Opis: 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ółowo

Kurs rozszerzony języka Python

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

Bardziej szczegółowo

Język C++ wykład VIII

Ję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ółowo

Programowanie i projektowanie obiektowe

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

Programowanie RAD Delphi

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

Instrukcje. Operatory. Operatory. Instrukcje sterujące. wyrażenie1 && wyrażenie2 ;

Instrukcje. 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ółowo

Programowanie obiektowe

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

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

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

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Podstawy. Jan Koprowski <jan.koprowski@gmail.com> Politechnika Gdańska, FTiMS Informatyka Stosowana

Podstawy. 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ółowo

Programowanie Komputerów

Programowanie Komputerów Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 17 1. Typy i zmienne Jak wiemy, komputer

Bardziej szczegółowo

Programowanie Obiektowe i C++

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

Programowanie obiektowe

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

Przegląd języka Python. Łukasz Anwajler

Przeglą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ółowo

Programowanie obiektowe

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

Python! Lekcja 1 podstawy języka, typy danych

Python! 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ółowo

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

Systemy kodowania. Jolanta Bachan

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

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

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

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

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h] 1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie

Bardziej szczegółowo

Zmienne, stałe i operatory

Zmienne, 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ółowo

MATERIAŁY DO ZAJĘĆ II

MATERIAŁ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ółowo

Algorytmy i struktury danych

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

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

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

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

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

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

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

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Ję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ółowo

Informatyka 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) 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ółowo

KOTLIN. Język programowania dla Androida

KOTLIN. 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ółowo

Wstęp do programowania

Wstę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ółowo

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

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

Szablony klas, zastosowanie szablonów w programach

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

Algorytmika i Programowanie VBA 1 - podstawy

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

Bardziej szczegółowo

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

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

Wykład 2 Składnia języka C# (cz. 1)

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

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

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

Bardziej szczegółowo

Smarty PHP. Leksykon kieszonkowy

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

Struktury, unie, formatowanie, wskaźniki

Struktury, 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ółowo

Programowanie funkcyjne w Pythonie

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

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

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

1. 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ść 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ółowo

SQL 4 Structured Query Lenguage

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

Wykład 4. Tablice. Pliki

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

Podstawy programowania w Pythonie

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

Bardziej szczegółowo

Podstawy otwartych języków programowania Przechowywanie danych

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

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA Python wprowadzenie Warszawa, 24 marca 2017 Python to język: nowoczesny łatwy w użyciu silny można pisać aplikacje Obiektowy klejący może być zintegrowany z innymi językami np. C, C++, Java działający

Bardziej szczegółowo

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

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python Język PYTHON Podstawowe informacje Python to język skryptowy, interpretowany - co oznacza, że piszemy skrypt, a następnie wykonujemy go za

Bardziej szczegółowo

Wprowadzenie do języka Ruby

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

PARADYGMATY PROGRAMOWANIA Wykład 4

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

Typy danych, cd. Łańcuchy znaków

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

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

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

Wstęp do programowania

Wstę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ółowo

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

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

Bardziej szczegółowo