JĘZYK PYTHON NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Dr Marcin Lewandowski [ ] 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 [ ] Strona kursu: 1

2 2 PYTHON - WSTĘP

3 3 Języki kompilowane.c.o.exe Plik z kodem źródłowym KOMPILACJA Plik z kodem binarnym KONSOLIDACJA Plik wykonywalny

4 4 Interpreter Pythona.py.pyc Plik z kodem źródłowym KOMPILACJA - jednokrotna Plik z binarnym kodem pośrednim Program wykonywalny dla maszyny wirtualnej Uruchamianie na różnych systemach operacyjnych/maszynach wirtualnych

5 5 DRY KISS KISS Keep It Simple Stupid nie przesadzaj ze skomplikowanymi konstrukcjami prostota jest cnotą DRY Don t repeat yourself przemyśl architekturę całości i klocków z których ją zbudujesz pisz możliwie generyczne/uniwersalne funkcje

6 Zen of Python import this 6 >>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!

7 7 START Uruchomienie Python w trybie interaktywnym: > python Enthought Python Distribution -- Version: (32-bit) Python EPD (32-bit) (default, Apr , 14:30:37) [MSC v bit (Intel)] on win32 Type "credits", "demo" or "enthought" for more information. >>> Ewaluacja wyrażenia: >>> 3*(7+2) 27 Wyjście z trybu interaktywnego Pythona: CTRL-Z CTRL-D # EOF on Windows # EOF on Unix

8 8 Uruchomienie skryptu Python Windows: > python skrypt.py > skrypt.py Linux: % python skrypt.py %./skrypt.py Wymaga dodania pierwszej linii: #!/usr/bin/env python Wymaga ustawienia atrybutu executable : % chmod u+x skrypt.py

9 9 Wykonanie/Ewaluacja poleceń/skryptu Wykonanie: s = a = 2*2; print a exec(s) Ewaluacja: s = 2*2 a = eval(s) print a Wykonanie skryptu z pliku: execfile( myscript.py )

10 10 Kod Python w module mymod.py: def fun1(): print 2*2 def fun2(): print 2+2 Załadowanie modułu i wykonanie funkcji: $ python >>> import mymod >>> mymod.fun1() >>> mymod.fun2()

11 11 Błędy Błędy składni (Syntax errors) czyli błędy gramatyczne i ortograficzne języka - Python wykona program tylko gdy tego typu błędów nie ma. Błędy składni są sygnalizowane na etapie kompilacji kodu źródłowego. PYTHON nie weryfikuje statycznie zgodności typów danych dlatego niezgodności typów będą powodowały błędy działania! Błędy działania (Runtime errors) Błędy które pojawiają się na etapie wykonywania programu. Obecnie w językach programowania tego typu błędy są nazywane Wyjątkami (Exceptions) i istnieje specjalny mechanizm ich obsługi Błędy semantyczne (Semantic errors) Program działa i nie zgłasza błędów, ale wynik jego działania jest niepoprawny to błąd semantyczny. Programista miał co innego na myśli niż faktycznie wykonuje program.

12 12 Debugging Debug Prints Umieszczanie w kodzie programu funkcji print do śledzenia jego stanu wewnętrznego w newralgicznych miejscach: a = 1 if _debug_: print a:, a b = a + 1 if _debug_: print b:, b Log Exceptions/Trace Debugger

13 13 IDLE

14 IDLE debugger 14 EX1

15 15 ELEMENTY JĘZYKA PYTHON

16 16 Słowa kluczowe assert, break, continue, del, except, exec, finally, import, is, pass, print, raise, return, try, yield and, as, in, or, not for, from, with if, else, elif, while class, def, global, lambda

17 17 Zarezerwowane _ jest używany w trybie interaktywnym do pamiętania rezultatu ostatniej ewaluacji ( koncepcja twórczo rozwinięta w IPython) _* nazwy lokalne (nie widoczne przy imporcie) * używany do nazw systemowych i niech tak zostanie (np.: builtins, doc, name ) * prywatne nazwy w klasach

18 18 Raczej zarezerwowane dir( builtins ) ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'None', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError', 'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', ' debug ', ' doc ', ' import ', ' name ', ' package ', 'abs', 'all', 'any', 'apply', 'basestring', 'bin', 'bool', 'buffer', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'cmp', 'coerce', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile', 'exit', 'file', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'intern', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'long', 'map', 'max', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode', 'vars', 'xrange', 'zip ]

19 Przedefiniowanie nazw (tego bym raczej nie robił) Spróbuj: >>> len <built-in function len> >>> len('abc') 3 >>> len=2 >>> len 2 >>> len('abc') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'int' object is not callable >>> del len >>> len <built-in function len> >>> 19

20 20 Identyfikatory identifier ::= (letter "_") (letter digit "_")* letter ::= lowercase uppercase lowercase ::= "a"..."z" uppercase ::= "A"..."Z" digit ::= "0"..."9" WieLkOść LiTeR Ma znaczenie!!! W wersji 3.0+ UNICODE!

21 21 Linia kodu Linia tekstu zakończona znakiem nowej linii: LF (0x0A) Unix (Linux, MacOS, Solaris, ) CR LF (0x0D 0x0A) Windows Narzędzie do zamiany CRLF na LF <PYTHON>\Tools\scripts\crlf.py Wcięcia linii definiują bloki wykonawcze!!!

22 22 Kodowanie znaków (Charset/Encoding) Ustalenie kodowania dla pliku: # -*- coding: <encoding-name> -*- Latin-1 (ISO ) domyślny 7-bit/char Latin-2 (ISO ) polskie znaki UTF-8 BOM (byte-order mark)

23 23 Komentarze Znak # rozpoczyna komentarz traktowany do końca linii print 2*2 # oblicz 2*2 Oczywiście: print Tutaj to nie jest # komentarz # Komentarze dokumentacyjne: def fun(x): Ta funkcja zwraca 2*sin(x) return 2*sin(x)

24 24 Duck typing "If it looks like a duck and quacks like a duck, it must be a duck. def calc(a, b, c): return (a+b)*c print calc(1, 2, 3) print calc([1, 2, 3], [4, 5, 6], 2) print calc('apples ', 'and oranges, ', 3) [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6] apples and oranges, apples and oranges, apples and oranges,

25 25 Typy proste None specjalny obiekt pusty: None==None is true None==False is false not(none) is true! Boolean typ logiczny: True False==False bool(42) not(42==true) (True or False) and not(false) True==1 not( ==1) == 1

26 26 Integer Stałopozycyjny 32-bitowy 32 int( 32 ) # int ze stringu 1/3 # sic! UWAGA!!! int(3.14) # trunc 0xABCD # heksadecymalnie 0o # ósemkowo 0b # binarnie

27 27 Long Stałopozycyjny dowolnie długi! 5L long(1) W Python 3.0+ usunięty/ujednolicony z Integer!

28 28 Float Zmiennopozycyjny 32-bitowy float(44) 1.0/3 complex(1+2j).real complex(1+2j).imag 4.25e3, 4.25E+3 + moduł decimal patrz dokumentacja Pythona

29 29 Zespolony Complex zespolony (2x Float): complex(1) complex(2j) complex( 3+j ) complex(1,2) 1+2j

30 30 Operatory numeryczne Operator Rezultat Uwagi x + y x - y x * y x / y x // y Suma x i y Różnica x i y Iloczyn x i y Dzielenie x przez y Dzielenie x przez y x % y Reszta z dzielenia x przez y Modulo -x zmiana znaku x +x Bez zmiany znaku x Dzielenie całkowitoliczbowe dla Int Dzielenie całkowitoliczbowe

31 31 Funkcje numeryczne Operator Rezultat Uwagi abs(x) Wartość bezwzględna/moduł x Moduł dla zespolonych int(x) long(x) float(x) complex(re,im) c.conjugate() Konwersja x do Integer Konwersja x do Long Konwersja x do Float Liczba zespolona: re + im*j Sprzężenie liczby zespolonej c divmod(x, y) Zwraca parę: (x // y, x % y) pow(x, y) x ** y x do potęgi y + moduł math patrz dokumentacja Pythona

32 32 Operatory bitowe Operator Rezultat Uwagi x y x ^ y x & y x << n x >> n x OR y x XOR y x AND y Przesunięcie x o n bitów w lewo Przesunięcie x o n bitów w prawo ~x Negacja bitów x n >= 0 n >= 0

33 33 Funkcje konwersji Integer/Long Funkcja bin(i) hex(i) int(o) long(o) int(s, base) long(s, base) oct(i) Opis Binarna reprezentacja liczby całkowitej i (string) bin(12) == 0b1100 Heksadecymalna reprezentacja liczby całkowitej i (string) hex(12) == 0xc Konwersja obiektu o do liczby Integer/Long (trunc dla o typu Float) Konwersja łańcucha s do liczby Integer/Long w zadanej bazie Ósemkowa reprezentacja liczby całkowitej i (string) oct(12) == 014

34 Łańcuchy znakowe 34 EX2 String łańcuchy znakowe: A string "Another string" "Escape \" quotation" He + llo +! *10 Cote d azure """Multiline string a newline""" T: %.02f P:%d % (20.567, 1024) + funkcje typu string patrz dokumentacja Pythona

35 35 Listy List lista: [1, 2, 3] [ word, 33, ] [ w, o, r, d ] list("word") [[ list ], [ of, lists ]] list(( a, 1, 2)) Tuple lista niemodyfikowalna: (1, 2) ( a, 1) ( memento comma!,) tuple([ a, 1]) range(3) # [0, 1, 2] range(2, 4) # [2, 3] range(0, 5, 2) # [0, 2, 4]

36 36 Funkcje dla list i łańcuchów znakowych Listy (modyfikują a!): a = [5, 6, 7, 8] a.pop() # a = [5, 6, 7] a.append(2) # a = [5, 6, 7, 2] a.sort() # a = [2, 5, 6, 7] a.reverse() # a = [7, 6, 5, 2] Łańcuchy znakowe: a = Ala ma kota a.split() # [ Ala, ma, kota ] a.upper() # ALA MA KOTA a.title() # Ala Ma Kota import string string.join(a.split(), _ ) # Ala_ma_kota + więcej funkcji patrz dokumentacja Pythona

37 37 Indeksowanie sekwencji (1) Wyrażenie Wynik seq[i:j] Elementy seq w zakresie [i j) seq[i:] Elementy seq w zakresie [i końca] seq[:j] Elementy seq w zakresie [0 j) seq[:-1] seq[:] seq[i:j:k] Elementy seq w zakresie [0 końca-1] Wszystkie elementy seq (kopia) Elementy seq w zakresie [i j) z krokiem k (co k-ty)

38 38 Indeksowanie sekwencji (2) PYTHON Wynik MATLAB a = [5, 6, 7, 8] a = [ ] a[0] 5 a(1) a[2:4] [7, 8] a(3:4) a[-1] 8 a(end) a[-2] 7 a(end-1) a[2:] [7, 8] a(3:end) a[::2] [5, 7] a(1:2:end) a[::-1] [8, 7, 6, 5] a(end:-1:1) len(a) 4 length(a) [min(a), max(a)] [5, 8] [min(a) max(a)] TAKŻE DLA: a = Python rulez [0:4] a = (5, 6, 7, 8) a = [{1: 2}, [3, 4], 5, Six ]

39 39 Słowniki Dictionary/Hash słownik: {}, dict() {1: one, 2: two, 5: five } { A :1, AB :2, ABC :1234} { NY : USA, WAW : Poland } dict(one=2, two=3) dict(zip(('one', 'two'), (2, 3))) dict([['two', 3], ['one', 2]])

40 40 Operatory/Funkcje dla kolekcji (1) Operacja s[i] = x s[i:j] = t Wynik Element i słownika s jest zamieniany na x Plaster s elementów [i j) jest zamieniany na elementy z t del s[i:j] To samo co s[i:j] = [] s[i:j:k] = t del s[i:j:k] Elementy s[i:j:k] zamieniane na elementy z t Usunięcie elementów s[i:j:k]

41 41 Operatory/Funkcje dla kolekcji (2) Operacja s.append(x) s.extend(x) s.count(x) s.index(x[, i[, j]]) s.insert(i, x) s.pop([i]) s.remove(x) s.reverse() s.sort([cmp[, key[, reverse]]]) Wynik To samo co s[len(s):len(s)] = [x] To samo co s[len(s):len(s)] = x Zwraca liczbę elementów spełniających warunek: s[i] == x Zwraca najmniejszy indeks k, taki że s[k] == x oraz i <= k < j To samo co s[i:i] = [x] To samo co x = s[i]; del s[i]; return x To samo co del s[s.index(x)] Odwraca kolejność elementów s (w miejscu) Sortuje elementy s (w miejscu)

42 42 Operatory/Funkcje dla kolekcji (3) Operacja x in coll x not in coll any(coll) all(coll) len(coll) max(coll[, key=function]) Wynik True jeśli coll zawiera x True jeśli coll zawiera x True jeśli którykolwiek element coll jest True True jeśli wszystkie elementy coll są True Liczba elementów coll Element maksymalny coll min(coll[, key=function]) Element minimalny coll

43 43 Zbiory set zbiór (nieuporządkowany) : set() set([1, 2]), set([2, 1]) set((2, 1)) set(range(0,5)) set([1, 2]) set([3, 4]) frozenset zbiór niemodyfikowalny + funkcje na zbiorach patrz dokumentacja Pythona

44 44 Jak skopiować kolekcję >>> a = [1, 2, 3] >>> b = a # kopia!? >>> a[1] = 2000 # zmiana w oryginale >>> b [1, 2000, 3]

45 Kopia kolekcji 45 EX3 a = [1, 2, 3] b = a[:] # metoda 1 b = list(a) # metoda 2 b = []; b.extend(a) # metoda 3 b = []; # metoda 4 b = [ e for e in a ] for n in range(len(a)): # metoda 5 b.append(a[n]) + deepcopy patrz dokumentacja Pythona

46 46 range()/xrange() Pętla na sekwencji: for n in range( ): print(n) MemoryError Rozwiązanie użyj xrange() for n in xrange( ): print(n) W Python 3.0 xrange() nieistnieje, a range() zachowuje się jak xrange()!!! patrz iteratory

47 47 List comprehension (1) Tworzenie listy: all = [] for i in range(0, 100): all.append(i) j.w. w wersji jednolinijkowej: all = [ i for i in range(0, 100) ] list = [ expr for item in iterable ]

48 48 List comprehension (2) Tworzenie listy: odd = [] for i in range(0, 100): if i%2: odd.append(i) j.w. w wersji jednolinijkowej: odd = [ i for i in range(0, 100) if i%2] list = [ expr for item in iterable if cond]

49 49 Struktury kontrolne i pętle Instrukcje warunkowe If Pętle for while Inne import return yield pass assert

50 50 if if warunek1: blok1 elif warunek2: blok2 # Dodatkowe elif else: blok3

51 51 True or False False: None False Numeryczne zero: 0, 0L, 0.0, 0j Pusta sekwencja: '', (), [] Pusta słownik: {} Instancja klasy z funkcjami nonzero () lub len (), które zwracają 0 lub False Reszta True

52 52 Operatory porównań Operator Znaczenie Uwagi < Mniejszy niż <= Mniejszy lub równy > Większy niż >= Większy lub równy == Równy!= Nie równy <> is Identyczność obiektów is not Zaprzeczenie identyczności obiektów + Operatory logiczne: not, and, or

53 UWAGA na zwarcia! "short circuit" >>> 'a' == ('a' or 'b') True >>> 'b' == ('a' or 'b') False >>> 'a' == ('a' and 'b') False >>> 'b' == ('a' and 'b') True 53

54 54 For in range >>> od1do10 = range(1, 11) >>> for count in od1do10 : print count >>> od1do10 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

55 55 for-continue, for-else for n in range(2, 10, 1): if n % 2: print n, is odd break else: print Odd not found

56 56 while, while-else input_ok = False while not input_ok: s = input('enter something: ') if s == 'exit': break if len(s) < 3: print('too small') continue input_ok = True else: print Input is OK

57 BMI (Body Mass Index) 57 EX4

58 58 BMI zakresy Zakres BMI Diagnoza < 16.5 Poważna niedowaga [16.5, 18.5) Niedowaga [18.5, 25) Prawidłowa [25, 30) Nadwaga [30, 35) Otyłość klasy I [35, 40) Otyłość klasy II > 40 Otyłość klasy III

59 59 Algorytm 1. Instrukcja dla użytkownika 2. Wprowadzenie danych: wagi i wzrostu 3. Sprawdzenie poprawności zakresów danych Waga 0-150kg Wzrost 0-200cm 4. Obliczenie BMI wg. wzoru 5. Klasyfikacja BMI wg. Tabeli 6. Powrót do punktu 1

60 60 Wersja I Korzystając z: Tylko typy proste Instrukcje: pętli, warunki Operacje numeryczne Komenda print, Funkcje: raw_input(), sys.exit()

61 61 Wersja II Modyfikacja Wersji I: Użyj listy do definicji klasyfikatora BMI

62 62 Funkcje def <name>(arg1, arg2,... argn): <statements> return <value> #optional n.p.: def sayhello(who): print 'Hello, who # End of function

63 63 Funkcje przykład def printmax(a, b): if a > b: print a, 'is maximum' elif a == b: print a, 'is equal to', b else: print b, 'is maximum' >>> printmax(3, 4) 4 is maximum >>> x = 5 >>> y = 7 >>> printmax(x, y) 7 is maximum

64 64 lambda lambda arg1, arg2,... argn :expression using arguments f = lambda x, y, z: x + y + z def func(x, y, z): return x + y + z

65 65 def/lambda/return/yeld def jest wykonywalny (!) i tworzy nowy obiekt pod nazwą funkcji lambda tworzy i zwraca nowy obiekt funkcji return zwraca rezultat do kodu wywołującego yield podobnie jak return zwraca rezultat, ale zapamiętuje stan wewn. funkcji i miejsce powrotu global deklaruje zmienne w funkcji jako globalne (domyślnie są lokalne) Argumenty do funkcji są przekazywane przez przypisanie (object reference) Argumenty, wartości zwracane i zmienne nie są deklarowane Python 3.0+: nonlocal odpowiednik global dla zakresu otaczającego

66 66 Reguły zakresu (scoping) Moduł to zakres global. Zmienne zdefiniowane na poziomie modułu są dostępne z innych modułów za pomocą prefiksu nazwy modułu. Zakres global obejmuje tylko jeden plik!!! Można zaimportować wszystkie nazwy z modułu do przestrzeni globalnej modułu importując jego zawartość. Każde wywołanie funkcji tworzy nowy zakres lokalny (dla tej funkcji). Zmienne utworzone/przypisane w funkcji są lokalne, chyba, że zostały zadeklarowane jako global Wszystkie inne nazwy są wyszukiwane w zakresie: otaczającym (enclosing scope), globalnym, wbudowanym ( builtin ).

67 67 Reguła przeszukiwania LEGB

68 68 Przykłady X = 88 # global X def func(): X = 99 # local X func() print(x) # # Global scope X = 99 def func(y): # Local scope Z = X + Y # X is a global return Z func(1) # 100

69 69 Argumenty funkcji Argumenty typów niemodyfikowalnych (Immutable) efektywnie są przekazywane przez wartość (np. integer, string). Argumenty typów modyfikowalnych efektywnie są przekazywane przez referencję (np. listy, słowniki).

70 70 Składnia argumentów funkcji Składnia Strona Interpretacja func(value) Wywołanie argument normalny pozycyjny func(name=value) Wywołanie argument nazwany func(*sequence) Wywołanie przekazuje elementy sekwencji jako kolejne argumenty pozycyjne func(**dict) Wywołanie przekazuje elementy słownika (klucz/wartość) jako kolejne argumenty nazwane def func(name) Funkcja Argument normalny: dopasowanie po pozycji lub nazwie def func(name=value) Funkcja Argument domyślny, o ile nie przekazany w wywołaniu def func(*name) Funkcja Zbiera pozostałe argumenty pozycyjne w listę def func(**name) Funkcja Zbiera pozostałe argumenty nazwane w słownik

71 71 Argumenty pozycyjne/nazwane/domyślne def func(spam, eggs, toast=0, ham=0): print((spam, eggs, toast, ham)) > func(1, 2) (1, 2, 0, 0) > func(1, ham=1, eggs=0) (1, 0, 0, 1) > func(spam=1, eggs=0) (1, 0, 0, 0) > func(toast=1, eggs=2, spam=3) (3, 2, 1, 0) > func(1, 2, 3, 4) (1, 2, 3, 4)

72 72 Argumenty typu * i ** >>> def f(*args): print(args)... > f() () > f(1) (1,) > f(1, 2, 3, 4) (1, 2, 3, 4) > def f(**args): print(args)... > f() {} > f(a=1, b=2) {'a': 1, 'b': 2}

73 73 Funkcje dobra praktyka Funkcja powinna służyć do realizacji jednej dobrze określonej rzeczy i nie być zbyt rozbudowana Używaj argumentów na wejściu i return na wyjściu funkcji Zmiennych global używaj tylko w kiedy to absolutnie konieczne Nie modyfikuj argumentów przekazywanych przez referencję o ile wywołujący się tego nie spodziewa Nie modyfikuj zmiennych w innych modułach

74 74 Wyjątki try: blok-try except ErrorClass1: blok-except1 except ErrorClass2: blok-except2 except else: blok-else finally: blok-finally

75 75 Wyjątki - przykład try: a = 1/0 except: print 'except' else: print 'ok' finally: print 'finally'

76 76 Generacja wyjątku # Generacja instancji wyjątku raise <instance> # Utworzenie instancji i generacja wyjątku raise <class> # Powtórna generacja ostatniego wyjątku raise try: raise IndexError except IndexError: print 'got exception

77 77 Składnia try/except/else/finally Składnia except: except name: except name as value: except (name1, name2): except (name1, name2) as value: else: finally: Interpretacja Łapie wyjątki wszystkich typów Łapie tylko wyjątki danego typu Łapie wyjątki danego typu oraz jego instancję Łapie wyjątki danych typów Łapie wyjątki danych typów oraz ich instancję Wykonywane gdy żaden wyjątek nie został zgłoszony Wykonywane ZAWSZE na końcu bloku except

78 with/as 78 EX5 with expression [as variable]: with-block with open(r'c:\data') as file: for line in file: print(line) + Context Management Protocol patrz dokumentacja Pythona

79 79 MODUŁY

80 80 Moduły po co i jak MODUŁ = biblioteka Pythona PAKIET (Package) = zestaw modułów w drzewie katalogów Po co: Code reuse! Dzielenie kodu/przestrzeni nazw Współdzielenie serwisów/funkcji/danych Kroki ładowania modułu: 1. Znalezienie pliku modułu (ścieżka przeszukiwania) 2. Kompilacja modułu do byte-code (o ile konieczne) 3. Wykonanie modułu

81 81 import import <module1>, <module2> from <module> import <name1>, <name2> from <module> import *

82 82 sys.path Poszukiwanie pliku modułu: 1. Katalog domowy/bieżący (UWAGA na nazwy!) 2. Zmienna systemowa PYTHONPATH 3. Katalog biblioteki standardowej 4. Zawartość plików.pth Powyższe tworzy ścieżkę przeszukiwania pamiętaną w sys.path

83 83 Typy modułów import mod Plik źródłowy Python modułu: mod.py Skompilowany byte-code modułu: mod.pyc Katalog o nazwie mod dla importu pakietów Skompilowany moduł natywny biblioteka dynamiczna systemu operacyjnego (np. mod.dll/mod.pyd dla Windows, mod.so dla Linux) Moduł wbudowany w interpreter Pythona (skompilowany i statycznie zlinkowany) Plik ZIP zostaje automatycznie rozpakowany w locie Obraz modułu w pamięci dla zamrożonych programów wykonawczych

84 84 Przykład >>> sin(2.0) NameError: name 'sin' is not defined >>> import math >>> dir(math) # look what is in the math [' doc ', ' name ', ' package ', 'acos', 'acosh', 'asin', >>> math.sin(math.pi/2) 1.0 >>> from math import sin >>> sin(math.pi/2) 1.0

85 85 Ładowanie modułów c.d. Przemianowanie podczas ładowania: from math import sin as mysin Możliwość przeładowania modułu: reload(mymodule)

86 86 Przekrywanie nazw przy imporcie from M import func from N import func # ooops func() # wywoła N.func! import M, N M.func() N.func() # ładuje całe moduły # wołamy M.func() # wołamy N.func()

87 87 Nieśmiałe ładowanie try: import urllib3 as urllib # 1st try except: try: import urllib2 as urllib # 2nd try except: import urllib as urllib # urllib.urlopen( )

88 88 Dokumentacja modułów/funkcji """A module ble, ble, ble...""" def fun_add(x, y=1): """ fun_add(x,y=1) takes one or two numerical arguments and adds them together. If the second argumentn is empty it increments input by 1 """ return x + y print myfunction. doc >>> help(myfunction) Generacja dokumentacji HTML dla modułu $ pydoc -w./mymodule.py

89 89 Uruchamianie modułu jako skryptu Przydatne np. do testowania modułów Moduł uruchomiony jako skrypt if name == ' main ': print Just self testing test1()

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

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

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 1 / 34 Przypomnienie Programowanie imperatywne Program

Bardziej szczegółowo

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

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana) Wstęp do Informatyki i Programowania (kierunek matematyka stosowana) Jacek Cichoń Przemysław Kobylański Instytut Matematyki i Informatyki Politechnika Wrocławska Na podstawie: M.Summerfield.Python 3. Kompletne

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

Środowisko programisty

Środowisko programisty Środowisko programisty 1/34 Środowisko programisty Język Python cz. 1 dr inż. Grzegorz Michalski 24 marca 2014 Środowisko programisty 2/34 Wstęp Uruchamianie interpretera python Wykonywalne skrypty #!/usr/bin/python

Bardziej szczegółowo

Podstawy. Jan Koprowski 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

Plan Przegląd podstawowych typów i konstrukcji języka

Plan Przegląd podstawowych typów i konstrukcji języka Plan Przegląd podstawowych typów i konstrukcji języka interpreter i witaj świecie struktura kodu, wcięcia zakresy widoczności zmiennych typy proste, int, float, konwersje podstawowe instrukcje Łukasz Ligowski,

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

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard

Bardziej szczegół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

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

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

Koło Studentów Informatyki Uniwersytetu Wrocławskiego

Koło Studentów Informatyki Uniwersytetu Wrocławskiego Koło Studentów Informatyki Uniwersytetu Wrocławskiego Python programming is fun again! Piotr Wasilewski wasilewski.piotrek (at) gmail.com Akademickie Stowarzyszenie Informatyczne Plan wykładu Wstęp Język

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

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania

Bardziej szczegółowo

Należy ściągnąć oprogramowanie Apache na platformę

Należy ściągnąć oprogramowanie Apache na platformę Programowanie Internetowe Język PHP - wprowadzenie 1. Instalacja Oracle+Apache+PHP Instalacja Apache, PHP, Oracle Programy i ich lokalizacja Oracle Database 10g Express Edition10.2 http://www.oracle.com/technology/products/database/

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

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

2. Składnia Pythona. Robert Janczewski. Gdańsk, 2014

2. Składnia Pythona. Robert Janczewski. Gdańsk, 2014 Gdańsk, 2014 Czym jest Python? Python a C Struktura programu Zmienne i zarządzanie pamięcią Przykład Python to język programowania, który został zaprojektowany tak, by można było szybko tworzyć czytelne

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

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. PYTHON Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. Aby program napisany w danym języku mógł być wykonany, niezbędne

Bardziej szczegół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

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

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

Serwer WWW Apache. http://httpd.apache.org/ Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, 2.2.25, 2.0.65 zakończony projekt

Serwer WWW Apache. http://httpd.apache.org/ Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, 2.2.25, 2.0.65 zakończony projekt Serwer WWW Apache http://httpd.apache.org/ Plik konfiguracyjny httpd.conf Definiujemy m.in.: Katalog który ma być serwowany Moduły, które mają zostać uruchomione na serwerze m.in. PHP, mod_rewrite Wirtualne

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

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

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

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. IŚ ćw.8 JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript są zagnieżdżane w dokumentach HTML. Skrypt JavaScript

Bardziej szczegółowo

Ś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

Funkcje są prawdopodobnie najważniejszą częścią każdego poważnego programu (w każdym języku programowania).

Funkcje są prawdopodobnie najważniejszą częścią każdego poważnego programu (w każdym języku programowania). Funkcje w Pythonie Funkcje to części programu wielokrotnego użytku. Pozwalają nam nadad nazwę blokowi wyrażeo, a następnie uruchamiad ten blok używając tej nazwy gdziekolwiek w programie, dowolną ilośd

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Języki skryptowe w programie Plans

Języki skryptowe w programie Plans Języki skryptowe w programie Plans Warsztaty uŝytkowników programu PLANS Kościelisko 2010 Zalety skryptów Automatyzacja powtarzających się czynności Rozszerzenie moŝliwości programu Budowa własnych algorytmów

Bardziej szczegół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

Python podstawy programowania

Python podstawy programowania Python podstawy programowania Krzysztof Katarzyński Centrum Astronomii UMK W roku 1945 rozpętał się pokój. Latajacy Cyrk Monty Pythona Program w Pythonie jako plik tekstowy Konsola tekstowa Pythona umożliwia

Bardziej szczegółowo

Algorytm. a programowanie -

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

Bardziej szczegółowo

Powtórka algorytmów. Wprowadzenie do języka Java.

Powtórka algorytmów. Wprowadzenie do języka Java. Powtórka algorytmów. Wprowadzenie do języka Java. Przypomnienie schematów blokowych BEGIN Readln(a); Readln(b); Suma := 0; IF Suma < 10 THEN Writeln( Suma wynosi:, Suma); ELSE Writeln( Suma większa niż

Bardziej szczegółowo

Delphi Laboratorium 3

Delphi Laboratorium 3 Delphi Laboratorium 3 1. Procedury i funkcje Funkcja jest to wydzielony blok kodu, który wykonuje określoną czynność i zwraca wynik. Procedura jest to wydzielony blok kodu, który wykonuje określoną czynność,

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia ZP/ITS/11/2012 Załącznik nr 1a do SIWZ ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia Przedmiotem zamówienia jest: Przygotowanie zajęć dydaktycznych w postaci kursów e-learningowych przeznaczonych

Bardziej szczegółowo

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++ Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu

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

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem Moduł 1 1. Wprowadzenie do języka Python Python jest dynamicznym językiem interpretowanym. Interpretowany tzn. że kod, który napiszemy możemy natychmiast wykonać bez potrzeby tłumaczenia kodu programistycznego

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegół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

Właściwości i metody obiektu Comment Właściwości

Właściwości i metody obiektu Comment Właściwości Właściwości i metody obiektu Comment Właściwości Właściwość Czy można zmieniać Opis Application nie Zwraca nazwę aplikacji, która utworzyła komentarz Author nie Zwraca nazwę osoby, która utworzyła komentarz

Bardziej szczegółowo

Wykład nr 1 Język Ruby i framework Rails

Wykład nr 1 Język Ruby i framework Rails Wykład nr 1 Język Ruby i framework Rails Elektroniczne Przetwarzanie Informacji Konsultacje: czw. 14.00-15.30, pokój 3.211 Historia Rubiego i Railsów 1993 Yukihiro Matsumoto San, Japonia 1995 pierwsze

Bardziej szczegółowo

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu Programowanie V Dariusz Skibicki Wydział Inżynierii Mechanicznej Uniwersytet Technologiczno-Przyrodniczy im. Jana i Jędrzeja Śniadeckich w Bydgoszczy dariusz.skibicki(at)utp.edu.pl Programowanie Projektowanie

Bardziej szczegółowo

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

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest

Bardziej szczegółowo

KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ

KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ Wykład 2 Katedra Inżynierii Komputerowej Jakub Romanowski jakub.romanowski@kik.pcz.pl Budowanie biblioteki DLL Projekt typu Class Library Zmiana właściwości

Bardziej szczegółowo

Cw.12 JAVAScript w dokumentach HTML

Cw.12 JAVAScript w dokumentach HTML Cw.12 JAVAScript w dokumentach HTML Wstawienie skryptu do dokumentu HTML JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.skrypty Java- Script mogą być zagnieżdżane

Bardziej szczegółowo

DECLARE typ [( )] [ NOT NULL ] [ { := DEFAULT } ];

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ]; Braki w SQL obsługi zdarzeń i sytuacji wyjątkowych funkcji i procedur użytkownika definiowania złożonych ograniczeń integralnościowych Proceduralny SQL Transact- SQL używany przez Microsoft SQL Server

Bardziej szczegółowo

Wstęp do ruby dla programistów javy

Wstęp do ruby dla programistów javy czyli dlaczego java ssie Akademickie Stowarzyszenie Informatyczne 26 lutego 2011 Podstawowe cechy Ruby vs Java Wieloparadygmatowy Imperatywny Typowanie Silne Dynamiczne Otwarte klasy Interpretowany Wszystko

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

Kiedy i czy konieczne?

Kiedy i czy konieczne? Bazy Danych Kiedy i czy konieczne? Zastanów się: czy często wykonujesz te same czynności? czy wielokrotnie musisz tworzyć i wypełniać dokumenty do siebie podobne (faktury, oferty, raporty itp.) czy ciągle

Bardziej szczegółowo

Programowanie C# mgr in. Dariusz Ku. p. 119A dkus@dune.pol.lublin.pl http://antenor.pol.lublin.pl/~dkus

Programowanie C# mgr in. Dariusz Ku. p. 119A dkus@dune.pol.lublin.pl http://antenor.pol.lublin.pl/~dkus Programowanie C# mgr in. Dariusz Ku p. 119A dkus@dune.pol.lublin.pl http://antenor.pol.lublin.pl/~dkus Translacja kodu Kod ródłowy Java, C# Kompilator Kompilator Kod poredni Interpreter Maszyna wirtualna

Bardziej szczegółowo

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice. Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice. Język PHP Język interpretowalny, a nie kompilowany Powstał w celu programowania

Bardziej szczegółowo

Paradygmaty programowania

Paradygmaty programowania Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów

Bardziej szczegółowo

JavaScript funkcyjność

JavaScript funkcyjność JavaScript funkcyjność WWW 9 kwietnia 2014 Możliwości tworzenia dynamicznych stron WWW HTML i CSS. Skrypty CGI (Perl, PHP). Serwery (django, java). Plug-iny. Ksiażka Większość przykładów pochodzi z ksiażki:

Bardziej szczegółowo

Języki skryptowe Python

Języki skryptowe Python Języki skryptowe Python Wykład 6 Moduły i pliki Janusz Szwabiński Plan wykładu: Moduły i ich importowanie Tworzenie własnych modułów Pliki odczyt i zapis Manipulowanie plikami i katalogami Moduły i ich

Bardziej szczegółowo

Scenariusz Web Design DHTML na 10 sesji. - Strony statyczne I dynamiczne. - Dodawanie kodu VBScript do strony HTML. Rysunek nie jest potrzebny

Scenariusz Web Design DHTML na 10 sesji. - Strony statyczne I dynamiczne. - Dodawanie kodu VBScript do strony HTML. Rysunek nie jest potrzebny Scenariusz Web Design DHTML na 10 sesji L.p. Specyficzne detale 2.1 - Strony statyczne I dynamiczne - Dodawanie kodu VBScript do strony HTML doc w Rysunek nie jest potrzebny 2.1.1 Opcje w pisaniu skryptów

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20. i łączenie podprogramów a z programem napisanym w Ze względu na duże rozpowszechnienie języka, szczególnie

Bardziej szczegółowo

Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/

Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Podstawy programowania C dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Tematy Struktura programu w C Typy danych Operacje Instrukcja grupująca Instrukcja przypisania Instrukcja warunkowa Struktura

Bardziej szczegółowo

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

Plan. krótkie opisy modułów. 1 Uwagi na temat wydajności CPython a. 2 Podstawowe techniki poprawiające wydajność obliczeniową

Plan. krótkie opisy modułów. 1 Uwagi na temat wydajności CPython a. 2 Podstawowe techniki poprawiające wydajność obliczeniową Plan 1 Uwagi na temat wydajności CPython a 2 Podstawowe techniki poprawiające wydajność obliczeniową 3 Podstawowe techniki poprawiające zużycie pamięci krótkie opisy modułów 1 array - jak oszczędzić na

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16 M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16

Bardziej szczegółowo

Wprowadzenie do Scilab: podstawy języka Scilab

Wprowadzenie do Scilab: podstawy języka Scilab Wprowadzenie do Scilab: podstawy języka Scilab Magdalena Deckert, Izabela Szczęch, Barbara Wołyńska, Bartłomiej Prędki Politechnika Poznańska, Instytut Informatyki Narzędzia Informatyki Narzędzia Informatyki

Bardziej szczegółowo

Obliczenia Symboliczne I. Python - Składnia Typizacja

Obliczenia Symboliczne I. Python - Składnia Typizacja Obliczenia Symboliczne I Python - Składnia Typizacja Sprawy organizacyjne Tryb zaliczenia ćwiczeń Zakres i tematyka wykładu http://home.agh.edu.pl/~korzycki/osi/ Zakres tematyczny

Bardziej szczegółowo

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Jak pisać poprawne programy. Kilka ładnych rozwiązań. Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk(Wydział Fizyki) WP w. V Jesień 2014 1 / 33 Poważne decyzje Problem Przed

Bardziej szczegółowo

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science Systemy internetowe Wykład 3 PHP PHP - cechy PHP (Hypertext Preprocessor) bardzo łatwy do opanowania, prosta składnia, obsługuje wymianę danych z różnymi systemami baz danych pozwala na dynamiczne generowanie

Bardziej szczegółowo

Ada-95. Dariusz Wawrzyniak

Ada-95. Dariusz Wawrzyniak Część I Wskaźniki Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Wskaźniki

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo

Programowanie, algorytmy i struktury danych

Programowanie, algorytmy i struktury danych 1/44 Programowanie, algorytmy i struktury danych materiały do wykładu: http://cez.wipb.pl/moodle/ email: m.tabedzki@pb.edu.pl strona: http://aragorn.pb.bialystok.pl/~tabedzki/ Marek Tabędzki Wymagania

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

JAVAScript w dokumentach HTML - przypomnienie

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

Bardziej szczegółowo

JAVAScript w dokumentach HTML (1)

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

Bardziej szczegółowo

PROGRAMOWANIE W ŚRODOWISKU FLASH wykład 2

PROGRAMOWANIE W ŚRODOWISKU FLASH wykład 2 PROGRAMOWANIE W ŚRODOWISKU FLASH wykład 2 Paweł Woszkowski SWSIM 2009 ADOBE ACTIONSCRIPT Programming language of the Adobe Flash Platform. Originally developed as a way for developers to program interactivity,

Bardziej szczegółowo

Laboratorium Programowania Kart Elektronicznych

Laboratorium Programowania Kart Elektronicznych Laboratorium Programowania Kart Elektronicznych Programowanie BasicCard Marek Gosławski Przygotowanie do zajęć dokumentacja ZeitControl BasicCard środowisko programistyczne karta BasicCard Potrzebne wiadomości

Bardziej szczegółowo

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze Cechy bloków nazwanych: w postaci skompilowanej trwale przechowywane na serwerze wraz z danymi wykonywane na żądanie użytkownika lub w

Bardziej szczegółowo

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski Informatyka- wykład Podstawy programowania w Pythonie dr Marcin Ziółkowski Instytut Matematyki i Informatyki Akademia im. Jana Długosza w Częstochowie 23 listopada 2015 r. JĘZYK PYTHON Język Python jest

Bardziej szczegółowo

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 1 Marcin Młotkowski 3 października 2012 Plan wykładu Sprawy organizacyjne Wykład Źródła wiedzy Zaliczenia O języku Historia i pochodzenie języka O języku Instrukcje złożone

Bardziej szczegółowo

Materiały do laboratorium MS ACCESS BASIC

Materiały do laboratorium MS ACCESS BASIC Materiały do laboratorium MS ACCESS BASIC Opracowała: Katarzyna Harężlak Access Basic jest językiem programowania wykorzystywanym w celu powiązania obiektów aplikacji w jeden spójny system. PROCEDURY I

Bardziej szczegółowo

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,

Bardziej szczegółowo

Krótki kurs JavaScript

Krótki kurs JavaScript Krótki kurs JavaScript Java Script jest językiem wbudowanym w przeglądarkę. Gdy ma się podstawy nabyte w innych językach programowania jest dość łatwy do opanowania. JavaScript jest stosowany do powiększania

Bardziej szczegółowo

SZCZEGÓŁOWY SPIS TREŚCI

SZCZEGÓŁOWY SPIS TREŚCI SZCZEGÓŁOWY SPIS TREŚCI Podziękowania XIX Wprowadzenie XXI Dlaczego właśnie Python?...xxii Jak się uczyć pisania kodu...xxii Kto powinien przeczytać tę książkę...xxiii Co jest w tej książce... xxiv Strona

Bardziej szczegółowo

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

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

Pobieranie argumentów wiersza polecenia

Pobieranie argumentów wiersza polecenia Pobieranie argumentów wiersza polecenia 2. Argumenty wiersza polecenia Lista argumentów Lista argumentów zawiera cały wiersz poleceń, łącznie z nazwą programu i wszystkimi dostarczonymi argumentami. Przykłady:

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

Wstęp do programowania, część I

Wstęp do programowania, część I Wstęp do programowania, część I Rafał J. Wysocki Instytut Fizyki Teoretycznej, Wydział Fizyki UW 12 października 2011 Rafał J. Wysocki (rwys@fuw.edu.pl) Wstęp do programowania, część I 12 października

Bardziej szczegółowo

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python Wykład 5. 30 października 2013 Plan wykładu 1 2 3 4 yield from Zamiast Example for item in iterable: yield item: można pisać Example yield from iterable Plan wykładu 1 2 3 4 Przykłady wyrażeń regularnych

Bardziej szczegółowo

Funkcje i instrukcje języka JavaScript

Funkcje i instrukcje języka JavaScript Funkcje i instrukcje języka JavaScript 1. Cele lekcji a) Wiadomości Uczeń : zna operatory i typy danych języka JavaScript, zna konstrukcję definicji funkcji, zna pętlę If i For, Do i While oraz podaje

Bardziej szczegółowo

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów SQL3 wprowadza następujące kolekcje: zbiory ( SETS ) - zestaw elementów bez powtórzeń, kolejność nieistotna listy ( LISTS ) - zestaw

Bardziej szczegółowo