2. Składnia Pythona. Robert Janczewski. Gdańsk, 2014
|
|
- Krystian Kalinowski
- 8 lat temu
- Przeglądów:
Transkrypt
1 Gdańsk, 2014
2 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 programy. Znajduje zastosowanie tam, gdzie nie ma znaczenia czas działania programu, a istotna jest możliwość szybkiego jego napisania. Możliwe jest napisanie fragmentów, które mają być szybkie, w C, i całej reszty w Pythonie.
3 Czym jest Python? Python a C Struktura programu Zmienne i zarządzanie pamięcią Przykład Cechy Pythona: jest językiem ogólnego przeznaczenia; jest w pełni obiektowy; umożliwia programowanie w różnych stylach (strukturalne, obiektowe, funkcyjne itd.); jest dostępny w różnych systemach operacyjnych (Windows, Linux itd.); jest językiem o wzorcowej dokumentacji, dostępnej w sieci oraz lokalnie (po instalacji); jest językiem o dynamicznym typowaniu; jest językiem interpretowanym.
4 Czym jest Python? Python a C Struktura programu Zmienne i zarządzanie pamięcią Przykład Po uruchomieniu interpretera można wydawać mu polecenia. Możliwe jest m.in.: obliczanie wyrażeń arytmetycznych, nawet na liczbach zespolonych; nadawanie wartości zmiennym i wykorzystanie ich w obliczeniach; przeglądanie zawartości obiektów (funkcja dir()); uruchamianie programów napisanych w Pythonie (instrukcja import).
5 Czym jest Python? Python a C Struktura programu Zmienne i zarządzanie pamięcią Przykład Programy napisane w Pythonie są zazwyczaj kilkukrotnie krótsze (i kilkukrotnie wolniejsze) niż ich odpowiedniki w C. Dla przykładu, funkcja napisana w C, obliczająca iloczyn skalarny float iloczyn( float u[], float v[], unsigned n ) { float il = 0; } while (n--) il += u[n] * v[n]; return il; w Pythonie przyjmie poniższą postać: def iloczyn( u,v ): return sum( [x * y for x,y in zip( u,v )] )
6 Czym jest Python? Python a C Struktura programu Zmienne i zarządzanie pamięcią Przykład Programy napisane w Pythonie składają się z: komentarzy; instrukcji; deklaracji. Python nie jest językiem o swobodnej składni wcięcia w kodzie są wykorzystywane do tworzenia bloków (instrukcji złożonych). Instrukcje jednakowo wcięte stanowią blok; nowy blok może pojawić się tylko w niektórych miejscach (zazwyczaj po dwukropku).
7 Czym jest Python? Python a C Struktura programu Zmienne i zarządzanie pamięcią Przykład Komentarze rozpoczynają się od znaku #, a kończą wraz z końcem wiersza. Wyrażenie składające się wyłącznie z napisu jest traktowane przez interpreter Pythona niemal tak samo jak komentarz. Instrukcje kończą się średnikiem lub znakiem nowej linii; jeżeli instrukcja ma być kontynuowana w następnej linii, należy na końcu bieżącej linii postawić \. Deklaracji wymagają wyłącznie funkcje oraz klasy.
8 Czym jest Python? Python a C Struktura programu Zmienne i zarządzanie pamięcią Przykład Python sam zarządza pamięcią programista nie musi przydzielać ani nie zwalnia pamięci. Aby utworzyć zmienną, należy nadać jej wartość. Zostanie ona usunięta automatycznie, gdy nie będzie już dłużej potrzebna. Można wymusić usunięcie zmiennej w konkretnym miejscu, pisząc del nazwa-zmiennej. Zmienne utworzone w trakcie wykonywania funkcji są lokalne; wszystkie pozostałe są domyślnie globalne. Aby uzyskać dostęp do zmiennej globalnej x, należy napisać global x.
9 Czym jest Python? Python a C Struktura programu Zmienne i zarządzanie pamięcią Przykład Poniższy program oblicza sumę dwóch liczb całkowitych: #!/usr/bin/env python3 # -*- coding: utf-8 -*- if name == " main ": a,b = input( "Podaj a: " ),input( "Podaj b: " ) suma = int( a ) + int( b ) print( "Suma =",suma )
10 Wartości logiczne Liczby całkowite Liczby rzeczywiste i zespolone Napisy Listy (tablice) i krotki Słowniki Zbiory Wartości logiczne są przechowywane przez zmienne typu bool. Mogą one przyjmować wyłącznie wartości True lub False. Każde wyrażenie ma wartość logiczną wyrażenie jest fałszywe wtedy i tylko wtedy, gdy jego wartość jest równa: None lub False; 0, 0.0, 0j; "", (), [], {}. (Istnieją wyjątki od powyższej reguły, wrócimy do nich przy omawianiu programowania obiektowego.)
11 Wartości logiczne Liczby całkowite Liczby rzeczywiste i zespolone Napisy Listy (tablice) i krotki Słowniki Zbiory Liczby całkowite są przechowywane przez zmienne typu int. Typ int umożliwia przechowywanie liczb dowolnej wielkości. W Pythonie serii 2 istnieją dwa typy całkowitoliczbowe: int, który jest odpowiednikiem typu long w C; long, który umożliwia przechowywanie liczb dowolnej wielkości. W Pythonie nie występuje zjawisko przekroczenia zakresu jeśli zmienna typu int zmienia wartość na nie mieszczącą się w zakresie typu int, automatycznie jej typem staje się long.
12 Wartości logiczne Liczby całkowite Liczby rzeczywiste i zespolone Napisy Listy (tablice) i krotki Słowniki Zbiory Wartości rzeczywiste (zespolone) są przechowywane przez zmienne typu float (complex). Typ float jest odpowiednikiem typu double w C. Literały zespolone mają postać a + bj, gdzie a to część rzeczywista, a b część urojona liczby. Jeżeli z jest zmienną zespoloną, to z.real i z.imag to odpowiednio część rzeczywista i urojona tej liczby.
13 Wartości logiczne Liczby całkowite Liczby rzeczywiste i zespolone Napisy Listy (tablice) i krotki Słowniki Zbiory Na typach liczbowych można wykonywać wszystkie podstawowe operacje arytmetyczne: dodawanie + i odejmowanie -; mnożenie * i dzielenie /; wyznaczanie reszty % i dzielenie całkowitoliczbowe //; potęgowanie **. Liczby całkowite i rzeczywiste można z sobą porównywać przy pomocy operatorów ==,!=, >, <, >= i <=. Dostępne są konwersje do typów int, float i complex: int( i ) przekształci i w liczbę typu int itd.
14 Wartości logiczne Liczby całkowite Liczby rzeczywiste i zespolone Napisy Listy (tablice) i krotki Słowniki Zbiory Napisy w Pythonie należą do typu str. Literały tego typu można tworzyć na kilka sposobów: napisy mieszczące się w jednej linii można umieścić wewnątrz cudzysłowów lub apostrofów; napisy wielowierszowe umieszcza się wewnątrz potrójnych apostrofów lub cudzysłowów; poprzedzenie napisu literą r spowoduje, że znaki specjalne (takie jak \n) staną się zwykłymi znakami.
15 Wartości logiczne Liczby całkowite Liczby rzeczywiste i zespolone Napisy Listy (tablice) i krotki Słowniki Zbiory Aby przekształcić wartość wyrażenia x w napis, piszemy str( x ) lub repr( x ). Tworzenie bardziej skomplikowanych napisów zbudowanych z wyrażeń umożliwia funkcja format(). Można podzielić napis na fragmenty rozdzielone podanym separatorem przy pomocy funkcji split(). Dostępna jest także funkcja join(), która łączy wiele napisów w jeden przy pomocy podanego łącznika. Napisy są tablicami, więc operacje wykonywalne na tablicach można wykonać także na napisach.
16 Wartości logiczne Liczby całkowite Liczby rzeczywiste i zespolone Napisy Listy (tablice) i krotki Słowniki Zbiory Poniższy program drukuje wynik różnych operacji na podanych liczbach całkowitych. #!/usr/bin/env python3 # -*- coding: utf-8 -*- a = int( input( "Podaj a: " ) ) b = int( input( "Podaj b: " ) ) print( "{0} + {1} = {2}".format( a,b,a + b ) ) print( "{:d} - {:d} = {:f}".format( a,b,a - b ) ) print( "{2:d} * {0:d} = {1:d}".format( b,a * b,a ) )
17 Wartości logiczne Liczby całkowite Liczby rzeczywiste i zespolone Napisy Listy (tablice) i krotki Słowniki Zbiory Tablice w Pythonie to struktury danych, które składają się z wielu elementów. Tablice mają typ list. W odróżnieniu od takich języków jak C, elementy tablicy w Pythonie nie muszą być tego samego typu. Tablice mają dynamiczny charakter interpreter dba o to, by zajmowały tyle miejsca w pamięci, ile jest niezbędne. Literały tablicowe tworzymy umieszczając elementy tablicy w nawiasach kwadratowych i rozdzielając je przecinkami.
18 Wartości logiczne Liczby całkowite Liczby rzeczywiste i zespolone Napisy Listy (tablice) i krotki Słowniki Zbiory Na tablicach można wykonywać m.in. następujące operacje: przeszukiwanie x in t, x not in t, t.count( x ), t.index( x ); dostęp do elementów t[i] i podtablic t[i:j], t[i:j:k]; dodawanie oraz usuwanie elementów t.append( x ), t.insert( i,x ), t.pop(), t.remove( x ); dodawanie podtablic t.extend( x ), t += x; odwracanie t.reverse() i sortowanie t.sort(); wyznaczanie liczby elementów len( t ).
19 Wartości logiczne Liczby całkowite Liczby rzeczywiste i zespolone Napisy Listy (tablice) i krotki Słowniki Zbiory Krotki (pary, trójki itd.) to tablice o stałym rozmiarze. Krotki należą do typu tuple. Krotki są obiektami niemodyfikowalnymi (podobnie jak napisy). Nie można zmienić wartości krotki! Krotki tworzymy umieszczając ich elementy wewnątrz nawiasów. Krotka 1-elementowa ma postać (x,). Na krotkach można wykonywać te same operacje co na tablicach, za wyjątkiem tych, które modyfikują zawartość tablicy.
20 Wartości logiczne Liczby całkowite Liczby rzeczywiste i zespolone Napisy Listy (tablice) i krotki Słowniki Zbiory Słowniki to struktury danych, które przechowują pary klucz-wartość. Klucze muszą być obiektami niemodyfikowalnymi. Literały słownikowe umieszczamy wewnątrz nawiasów klamrowych. Klucze oddzielamy dwukropkiem od wartości; poszczególne pary klucz-wartość rozdzielamy przecinkami. Słowniki w Pythonie należą do typu dict.
21 Wartości logiczne Liczby całkowite Liczby rzeczywiste i zespolone Napisy Listy (tablice) i krotki Słowniki Zbiory Na słownikach można wykonywać m.in. następujące operacje: przeszukiwanie k in d; dostęp do pojedynczych wartości d[k], listy kluczy d.keys(), wartości d.values() i par klucz-wartość d.items(); dodawanie oraz usuwanie elementów d[k] = w, del d[k]; wyznaczanie liczby elementów len( d ).
22 Wartości logiczne Liczby całkowite Liczby rzeczywiste i zespolone Napisy Listy (tablice) i krotki Słowniki Zbiory Zbiory reprezentuje w Pythonie typ set. Na zbiorach można wykonywać m.in. następujące operacje: przekształcenie listy w zbiór set( l ); dodawanie oraz usuwanie elementów s.add( e ), s.discard( e ); suma, część wspólna, różnica i różnica symetryczna zbiorów s.union( a ), s.intersection( a ), s.difference( a ), s.symmetric_difference( a ); sprawdzanie, czy zbiór jest podzbiorem/nadzbiorem innego s.issubset( a ), s.issuperset( a ); sprawdzanie, czy element należy do zbioru e in s.
23 Instrukcje warunkowe And, or i not Pętla while Pętla for Przetwarzanie tablic w pętli Instrukcja warunkowa w Pythonie ma jedną z poniższych postaci: if warunek: blok instrukcji elif warunek: blok instrukcji else: blok instrukcji wyrażenie1 if warunek else wyrażenie2 Zarówno else, jak i elif są opcjonalne. Klauzul elif może być dowolnie wiele.
24 Instrukcje warunkowe And, or i not Pętla while Pętla for Przetwarzanie tablic w pętli Operatory and, or i not umożliwiają tworzenie skomplikowanych wyrażeń warunkowych. x and y (x or y) jest równe x, jeśli x jest fałszywe (prawdziwe), lub y, w przeciwnym przypadku. Zatem z = w and x or y jest (prawie) równoważne z z = x if w else y.
25 Instrukcje warunkowe And, or i not Pętla while Pętla for Przetwarzanie tablic w pętli Pętla while (odpowiednik pętli while z C) ma w Pythonie następującą postać: while warunek: blok instrukcji (1) else: blok instrukcji (2) Pierwszy blok instrukcji jest wykonywany tak długo, jak długo warunek jest prawdziwy; kiedy warunek staje się fałszywy, wykonany zostaje drugi blok instrukcji i pętla się kończy.
26 Instrukcje warunkowe And, or i not Pętla while Pętla for Przetwarzanie tablic w pętli Instrukcja break przerywa wykonywanie pętli; blok następujący po else nie jest wtedy wykonywany. Instrukcja continue powoduje przeskok do kolejnej iteracji pętli. Klauzula else jest opcjonalna.
27 Instrukcje warunkowe And, or i not Pętla while Pętla for Przetwarzanie tablic w pętli Pętla for (odpowiednik pętli for z C) ma w Pythonie następującą postać: for zmienna in lista: blok instrukcji (1) else: blok instrukcji (2) Pierwszy blok instrukcji jest wykonywany dla kolejnych elementów listy; po przejrzeniu listy wykonuje się drugi blok instrukcji.
28 Instrukcje warunkowe And, or i not Pętla while Pętla for Przetwarzanie tablic w pętli Instrukcje break i continue działają tak samo jak w przypadku pętli while; klauzula else jest opcjonalna. Funkcja range() umożliwia iterowanie po podanym zakresie. Poniższy fragment programu sprawdza, czy n jest liczbą pierwszą. for x in range( 2,n ): if n % x == 0: print( n,"=",x,"*",n//x ) break else: print( n,"jest liczbą pierwszą" )
29 Instrukcje warunkowe And, or i not Pętla while Pętla for Przetwarzanie tablic w pętli Instrukcja [f( x ) for x in t] tworzy tablicę elementów postaci f( x ), gdzie x to kolejne elementy tablicy t. Instrukcja [f( x ) for x in t if g( x )] tworzy tablicę elementów postaci f( x ), gdzie x to kolejne elementy tablicy t spełniające warunek g.
30 Czym są wyjątki? Obsługa wyjątków Przegląd wbudowanych wyjątków to jeden ze sposobów na zgłaszanie i obsługę błędów pojawiających się w trakcie działania programu. Podstawową zaletą wyjątków jest możliwość rozdzielenia kodu odpowiedzialnego za obsługę błędów od kodu odpowiedzialnego za prawidłowe wykonanie programu. Każdy wyjątek posiada pole args, które przechowuje komunikat o błędzie (i ewentualnie inne, dodatkowe informacje związane z błędem). Komunikat o błędzie przechowywany przez wyjątek e można uzyskać przy pomocy polecenia str( e ).
31 Czym są wyjątki? Obsługa wyjątków Przegląd wbudowanych wyjątków Kod, w którym mogą wystąpić wyjątki, wygląda następująco: try: blok, wewnątrz którego może pojawić się wyjątek except: obsługa wyjątków else: kod wykonywany gdy wyjątek nie nastąpił finally: kod wykonywany zawsze
32 Czym są wyjątki? Obsługa wyjątków Przegląd wbudowanych wyjątków Klauzule else i finally są opcjonalne. Klauzul except może wystąpić dowolnie wiele. Klauzula except może mieć jedną z poniższych postaci: except: przechwytuje wszystkie wyjątki; except T: przechwytuje wyjątki typu T (i klas pochodnych); except ( T1,T2 ): przechwytuje wyjątki typu T1 i T2 (typów może być więcej); except T as v: przechwytuje wyjątki typu T i umieszcza je w zmiennej v. Można zgłaszać wyjątki przy pomocy instrukcji raise.
33 Czym są wyjątki? Obsługa wyjątków Przegląd wbudowanych wyjątków AssertionError pojawia się w wyniku użycia instrukcji assert z podanym fałszywym warunkiem (assert z warunkiem prawdziwym nie robi nic). EOFError pojawia się w momencie napotkania końca pliku przez funkcje wczytujące dane, takie jak input() czy read(). IOError oznacza błąd wejścia/wyjścia; może wystąpić w trakcie użycia dowolnej z funkcji operujących na plikach (omówionych dalej). SyntaxError to błąd składni. Występuje w wyniku próby załadowania niepoprawnego modułu lub użycia funkcji eval() i exec().
34 Czym są wyjątki? Obsługa wyjątków Przegląd wbudowanych wyjątków ImportError występuje w przypadku nieudanej próby załadowania modułu (podstawowy powód: nie udało się znaleźć modułu na dysku). KeyError oznacza, że nastąpiła próba odczytania w słowniku wartości związanej z kluczem, którego ten słownik nie zawiera. FloatingPointError to błąd w operacjach zmiennoprzecinkowych. IndexError oznacza indeks tablicy poza zakresem.
35 Czym są wyjątki? Obsługa wyjątków Przegląd wbudowanych wyjątków TypeError to niewłaściwy typ argumentu (występuje przy wywoływaniu funkcji). ValueError to niewłaściwa wartość argumentu; pojawia się m.in. jako efekt nieudanej konwersji napisu do liczby lub liczby do liczby innego typu. ZeroDivisionError to błąd dzielenia przez zero.
36 Standardowe wejście Standardowe wyjście Obsługa plików Dane z wejścia można pobierać na kilka sposobów: przy pomocy funkcji input(); przy pomocy obiektu sys.stdin. Obiekt sys.stdin umożliwia traktowanie standardowego wejścia jak pliku. W Pythonie serii 2 funkcja input() działa inaczej; do pobierania danych służy tam funkcja raw_input().
37 Standardowe wejście Standardowe wyjście Obsługa plików Poniższy program sumuje liczby pojawiające się na wejściu do momentu, aż się skończą. Następnie drukuje ich sumę. #!/usr/bin/env python3 # -*- coding: utf-8 -*- suma = 0 try: while True: suma += int( input() ) except EOFError: print( "Suma =",suma )
38 Standardowe wejście Standardowe wyjście Obsługa plików Poniższy program sumuje liczby pojawiające się na wejściu do momentu, aż się skończą. Następnie drukuje ich sumę. #!/usr/bin/env python3 # -*- coding: utf-8 -*- from sys import stdin suma = 0 for ln in stdin: suma += int( ln ) print( "Suma =",suma )
39 Standardowe wejście Standardowe wyjście Obsługa plików Dane można wypisywać na standardowym wyjściu na kilka sposobów: przy pomocy funkcji print(); przy pomocy obiektu sys.stdout. Obiekt sys.stdout umożliwia traktowanie standardowego wyjścia jak pliku. W Pythonie serii 2 print jest słowem kluczowym, a nie funkcją; piszemy tam print x zamiast print( x ).
40 Standardowe wejście Standardowe wyjście Obsługa plików Funkcja print() drukuje argumenty jeden za drugim, rozdzielając je znakiem zawartym w zmiennej sep (domyślnie jest to spacja). Następnie drukuje znak zawarty w zmiennej end (domyślnie: znak nowej linii). Wydruk następuje do pliku zawartego w zmiennej file (domyślnie: sys.stdout).
41 Standardowe wejście Standardowe wyjście Obsługa plików Schemat pracy z plikiem jest w Pythonie następujący: otwieramy plik funkcją open(); czytamy dane (read()), zapisujemy dane (write()); zamykamy plik funkcją close(). Po otwarciu, na pliku można wykonywać także inne operacje: przeszukiwanie, ustalanie pozycji itd.
42 Standardowe wejście Standardowe wyjście Obsługa plików Przy otwieraniu pliku trzeba podać nazwę oraz tryb; można określić także sposób kodowania znaków w pliku. Dane można czytać funkcją read(), readline() lub readlines(). Funkcja read() wczytuje podaną liczbę bajtów (cały plik jeśli nie podamy ilości) i zwraca je jako napis (dla plików tekstowych) lub tablicę bajtów (dla plików binarnych). W Pythonie serii 2 nie było różnicy między plikami tekstowymi a binarnymi funkcja read() zawsze zwracała napis. Dane do zapisania w pliku mają postać napisu lub tablicy bajtów.
43 Standardowe wejście Standardowe wyjście Obsługa plików Poniższy fragment programu zlicza liczbę linii znajdujących się w pliku dane.txt. try: f = open( "dane.txt","r" ) ln = f.readline() linie = 0 while ln: linie += 1 ln = f.readline() print( "Liczba linii =",linie ) f.close() except: pass
44 Standardowe wejście Standardowe wyjście Obsługa plików Poniższy fragment programu zlicza liczbę linii znajdujących się w pliku dane.txt. with open( "dane.txt","r" ) as f: ln,linie = f.readline(),0 while ln: linie += 1 ln = f.readline() print( "Liczba linii =",linie )
45 Deklaracja Argumenty Zwracane wyniki Wbudowane funkcje Przed użyciem funkcje muszą zostać zadeklarowane. Deklaracja funkcji ma w Pythonie następującą postać: def nazwa_funkcji( lista argumentów ): ciało funkcji Nazwa musi być unikatowa funkcji w Pythonie nie wolno przeciążać (dokładniej: nowa deklaracja funkcji o tej samej nazwie zastępuje starą). Jeżeli pierwszą instrukcją w funkcji jest napis, to staje się on jej opisem. Opis funkcji f jest dostępny w polu f. doc.
46 Deklaracja Argumenty Zwracane wyniki Wbudowane funkcje Określając argumenty, podajemy wyłącznie ich nazwy. Python nie sprawdza typów przekazywanych danych! Poszczególne argumenty rozdzielamy przecinkami. Można określić wartość domyślną argumentu, pisząc nazwa = wartość. Postawienie przed ostatnim argumentem znaku * spowoduje, że stanie się on tablicą, do której trafią wartości wszystkich argumentów (poza tymi, które trafią do wcześniejszych argumentów). Postawienie przed ostatnim argumentem znaku ** spowoduje, że stanie się on słownikiem, do którego trafią wartości wszystkich argumentów nazwanych.
47 Deklaracja Argumenty Zwracane wyniki Wbudowane funkcje Każda funkcja zwraca jakiś wynik. Jeżeli nie określimy go jawnie, to wartością zwracaną przez funkcję jest None. Instrukcja return x (return) kończy działanie funkcji i zwraca x (None) jako wynik. Można definiować funkcje anonimowe, które jako wynik zwracają wyrażenie będące ich ciałem. Definicja takiej funkcji ma postać lambda argumenty: wynik.
48 Deklaracja Argumenty Zwracane wyniki Wbudowane funkcje Niektóre z wbudowanych w Pythona funkcji pojawiły się już wcześniej (były to: dir(), input(), print(), sum(), bool(), int(), float() i complex()). abs() zwraca wartość bezwzględną podanej liczby. all() (any()) zwraca wartość prawdziwą wtedy i tylko wtedy, gdy wszystkie (co najmniej jeden) z argumentów są prawdziwe. chr() (ord()) zwraca znak o podanym kodzie (kod podanego znaku).
49 Deklaracja Argumenty Zwracane wyniki Wbudowane funkcje enumerate() użyte na liście l zwraca listę par postaci ( i,l[i] ). zip() łączy podane listy l1, l2,..., ln w listę, której elementami są n-tki ( l1[i],l2[i],...,ln[i] ). reversed() (sorted()) zwraca iterator umożliwiający przeglądanie listy w odwróconym (posortowanym) porządku.
50 Moduł to inaczej program w Pythonie. Aby załadować moduł znajdujący się w pliku m.py, należy skorzystać z jednej z poniższych konstrukcji: import m; elementy modułu m są dostępne w postaci m.nazwa; from m import *; elementy modułu są dostępne bez przedrostka m.. Aby załadować tylko wybrane elementy modułu, np. funkcję f, piszemy from m import f lub from m import f as g. W drugim przypadku funkcja f będzie dostępna pod nazwą g.
51 Niezależnie od tego, jaką metodę załadowania modułu wybierzemy, w trakcie pierwszego jego importowania wykonywana jest jego część główna. Funkcję modułu może pełnić także katalog. Musi on zawierać plik init.py, który jest wówczas traktowany jako część główna modułu. Aby załadować moduł m znajdujący się w katalogu d piszemy import d.m.
52 Definicja klasy Konstruktor, destruktor i inicjalizator Metody specjalne Dziedziczenie Klasa musi zostać zadeklarowana zanim zostanie użyta. Definicja klasy w Pythonie ma postać: class nazwa_klasy: ciało klasy Ciało klasy może zawierać instrukcje inicjalizacyjne (wykonywane w momencie, w którym interpreter analizuje ciało klasy) oraz definicje metod klasy. Pustą klasę o definicji class nazwa: pass można wykorzystać do zasymulowania rekordu.
53 Definicja klasy Konstruktor, destruktor i inicjalizator Metody specjalne Dziedziczenie Jeżeli pierwsza instrukcja w ciele klasy X jest napisem, to napis ten staje się opisem klasy X i jest dostępny w czasie działania programu w zmiennej X. doc. Instrukcje inicjalizacyjne można wykorzystać do stworzenia pól klasy (nazywanych w innych językach obiektowych statycznymi). Dla przykładu, poniższa klasa X class X: a = 1 b = 2 ma dwa takie pola: X.a i X.b.
54 Definicja klasy Konstruktor, destruktor i inicjalizator Metody specjalne Dziedziczenie Definicja metod jest niemal taka sama jak definicja zwykłych funkcji. Jedyna różnica polega na tym, że metody zawsze mają co najmniej jeden argument i pierwszy z argumentów (nazywany zwyczajowo self) jest referencją do obiektu, dla którego ta metoda została wywołana. Dla przykładu, poniższa klasa X class X: def a( self ): pass def b( self,x ): pass ma dwie nic nie robiące metody a() i b().
55 Definicja klasy Konstruktor, destruktor i inicjalizator Metody specjalne Dziedziczenie Jak tworzymy i korzystamy z instancji klas? nową instancję klasy X tworzymy pisząc zmienna = X( argumenty ), gdzie argumenty to lista argumentów inicjalizatora klasy X; jeżeli x jest instancją klasy X, to x.m( a ) wywoła dla niej metodę m i przekaże jej listę argumentów a; jeżeli x jest instancją klasy X, to x.p (x.p = w) zwróci (zmieni) wartość przechowywaną w polu p (na w). Typ zmiennej x przechowywany jest w polu x. class. Listę pól i metod zmiennej x zwraca instrukcja dir( x ).
56 Definicja klasy Konstruktor, destruktor i inicjalizator Metody specjalne Dziedziczenie Uwaga! W Pythonie pola i metody są domyślnie publiczne. Nie istnieją pola/metody w pełni prywatne. Jedyne pola/metody, które mają charakter zbliżony do prywatnego, mają nazwy zaczynające się od dwóch znaków podkreślenia i kończące maksymalnie jednym znakiem podkreślenia. Tego typu pola/metody nie są widoczne poza klasą, ale można się do nich dostać stosując specjalną składnię pole p obiektu klasy X jest widoczne poza klasą pod nazwą _X p.
57 Definicja klasy Konstruktor, destruktor i inicjalizator Metody specjalne Dziedziczenie Konstruktor to funkcja, która jest wywoływana w momencie tworzenia nowego obiektu. Jej zadanie polega na jego utworzeniu. Definicja konstruktora ma postać: def new ( cls,argumenty ): ciało konstruktora Pierwszym argumentem konstruktora jest klasa, której instancja ma zostać utworzona. Wartością zwracaną przez konstruktor powinien być nowo utworzony obiekt. Klasa, w której nie zadeklarujemy konstruktora, otrzymuje konstruktor domyślny, tworzący pusty obiekt. Takie zachowanie konstruktora jest pożądane niemal w 100% przypadków.
58 Definicja klasy Konstruktor, destruktor i inicjalizator Metody specjalne Dziedziczenie Inicjalizator to funkcja, która jest wywoływana w momencie, gdy obiekt został już utworzony (bezpośrednio po konstruktorze). Jej celem jest zainicjalizowanie obiektu. Definicja inicjalizatora ma postać: def init ( self,argumenty ): ciało inicjalizatora Aby zainicjalizować obiekt, należy nadać wartości jego polom. Dobrym zwyczajem jest utworzenie wszystkich pól obiektu w inicjalizatorze, ale składnia języka umożliwia tworzenie ich gdziekolwiek (!).
59 Definicja klasy Konstruktor, destruktor i inicjalizator Metody specjalne Dziedziczenie Uwaga! Inicjalizator nie może zwracać żadnego wyniku! Destruktor to funkcja, która jest wywoływana bezpośrednio przed usunięciem obiektu. Jej celem jest zwolnienie zasobów zajętych przez usuwany obiekt. Definicja destruktora ma postać: def del ( self ): ciało destruktora Ponieważ Python sam zarządza pamięcią, destruktory rzadko kiedy są potrzebne.
60 Definicja klasy Konstruktor, destruktor i inicjalizator Metody specjalne Dziedziczenie Metody specjalne umożliwiają osiąganie rozmaitych specjalnych efektów dla klas, m.in. definiowanie operatorów działających na klasach. Metody specjalne mają nazwy rozpoczynające się od dwóch znaków podkreślenia i kończące się dwoma znakami podkreślenia. Konstruktor, inicjalizator i destruktor to przykłady metod specjalnych.
61 Definicja klasy Konstruktor, destruktor i inicjalizator Metody specjalne Dziedziczenie Jakie metody specjalne są dostępne? x. repr () (x. str ()); zwraca napisową reprezentację x; jest równoważne repr( x ) (str( x )); x. lt ( y ) (x. le ( y ), x eq ( y ), x. ne ( y ), x. gt ( y ) i x. ge ( y )); operatory porównania równoważne z x < y (x <= y, x == y, x!= y, x > y, x >= y); x. bool (); sprawdza, czy x jest prawdziwe; jest równoważne bool( x ); x. call ( a ); równoważne z x( a ); x. len (); zwraca rozmiar x; jest równoważne len( x );
62 Definicja klasy Konstruktor, destruktor i inicjalizator Metody specjalne Dziedziczenie x. getitem ( k ) (x. setitem ( k,w ), x. delitem ( k )); odpowiednik operacji x[k] (x[k] = w, del x[k]); x. contains ( y ); operator przynależności; równoważne z y in x; x. add ( y ); operator sumy równoważny z x + y; niemal każdy operator arytmetyczny ma swój odpowiednik w postaci odpowiedniej funkcji; x. int () (x. float (), x. complex ()); funkcja konwertujące do typu int (float, complex); odpowiednik int( x ) (float( x ), complex( x )). (I inne powyższa lista nie jest kompletna).
63 Definicja klasy Konstruktor, destruktor i inicjalizator Metody specjalne Dziedziczenie specjalne bool () i len (), o ile zostały zdefiniowane, są wykorzystywane w trakcie ustalania, czy obiekt jest prawdziwy, czy fałszywy. Obiekt jest prawdziwy wtedy i tylko wtedy, gdy bool () ( len ()) zwróci wartość prawdziwą (niezerową).
64 Definicja klasy Konstruktor, destruktor i inicjalizator Metody specjalne Dziedziczenie Klasy mogą po sobie dziedziczyć klasa pochodna dziedziczy wszystkie metody klas bazowych. Pola nie są dziedziczone. Jeżeli chcemy, by odziedziczone zostały także pola klas bazowych, to musimy w inicjalizatorze wywołać metody klas bazowych, które te pola tworzą (będą to zapewne inicjalizatory tych klas). Aby stworzyć klasę X, która dziedziczy po klasach Y, Z,... piszemy: class X( Y,Z,... ): ciało klasy
65 Definicja klasy Konstruktor, destruktor i inicjalizator Metody specjalne Dziedziczenie Można sprawdzić, czy klasa X dziedziczy po Y issubclass( X,Y ) zwraca informację o tym, czy Y jest klasą bazową dla X. Można wywoływać metody z klas bazowych przy pomocy konstrukcji Klasa.Metoda( obiekt,argumenty ) albo funkcji super(). Jeżeli w kilku klasach bazowych występuje ta sama metoda, to odziedziczona zostanie wyłącznie ta, która występuje w pierwszej od lewej klasie (kolejność klas bazowych ma znaczenie!).
66 Definicja klasy Konstruktor, destruktor i inicjalizator Metody specjalne Dziedziczenie Jeżeli nie podamy jawnie klasy bazowej, to staje się nią object. Klasą bazową dla wyjątków jest BaseException, a wszystkie wyjątki, które nie są wbudowane w Pythona powinny dziedziczyć po klasie Exception.
67 Po co łączyć Pythona z C? Przygotowania Przykłady Są dwa ważne powody, dla których warto łączyć kod napisany w C z kodem napisanym w Pythonie: kod w C jest szybszy, więc fragmenty napisane w C będą szybsze niż robiące to samo fragmenty napisane w Pythonie; można wzbogacić Pythona o nowe typy danych, których nie można (lub jest bardzo trudno) napisać w Pythonie. Można zarówno napisać kod w C, który będzie potem używany przez program napisany w Pythonie, jak i napisać program w Pythonie, który zostanie wywołany z poziomu języka C.
68 Po co łączyć Pythona z C? Przygotowania Przykłady Program napisany w C może zostać zaimportowany przez Pythona jako moduł. Aby było to możliwe, program w C musi zostać odpowiednio przygotowany. Ujmując rzecz schematycznie, program ten musi wyglądać następująco: #include <Python.h> /* tu wstaw ciało modułu */ PyMODINIT_FUNC PyInit_nazwa_modułu( void ) { /* tu wstaw kod inicjalizujący moduł */ }
69 Po co łączyć Pythona z C? Przygotowania Przykłady Po przygotowaniu programu, następnym krokiem jest jego kompilacja i instalacja, najlepiej przy pomocy modułu distutils. Moduł distutils umożliwia stworzenie skryptu, którego zadaniem jest kompilacja i instalacja programu napisanego w C. Skrypt ten (w minimalnej postaci) wygląda następująco: #!/usr/bin/env python3 # -*- coding: utf-8 -*- from distutils.core import setup,extension setup( name = "nazwa modułu", \ ext_modules = [Extension( "nazwa", \ sources = ["plik źródłowy"] )] )
70 Po co łączyć Pythona z C? Przygotowania Przykłady Po zapisaniu powyższego skryptu pod nazwą make.py, uruchamiamy go następująco: python3 make.py build by skompilować program; python3 make.py install by zainstalować program. O ile kompilacja i instalacja się udały (instalacja może wymagać uprawnień administratora), program napisany w C będzie dostępny z poziomu Pythona jako moduł.
71 Po co łączyć Pythona z C? Przygotowania Przykłady Poniższy program zawiera implementację 2-wymiarowych wektorów. #include <Python.h> #include <math.h> // Obiekty typu Vector -- 2-wymiarowe wektory. typedef struct { PyObject_HEAD // część inicjalizacyjna double x, y; // współrzędne } Vector;
72 Po co łączyć Pythona z C? Przygotowania Przykłady // Konstruktor typu Vector. static PyObject *Vector new ( PyTypeObject *type, PyObject *args ) { return type->tp_alloc( type,0 ); } // Destruktor typu Vector. static void Vector del ( Vector *self ) { Py_TYPE( self )->tp_free( (PyObject *)self ); }
73 Po co łączyć Pythona z C? Przygotowania Przykłady // Inicjalizator typu Vector. static int Vector init ( Vector *self, PyObject *args ) { double x = 0.0, y = 0.0; } if (PyArg_ParseTuple( args," dd",&x,&y )) { self->x = x; self->y = y; return 0; } return -1;
74 Po co łączyć Pythona z C? Przygotowania Przykłady // Norma wektora. static PyObject *VectorNorm( Vector *self ) { return PyFloat_FromDouble( sqrt( self->x * self->x + self->y * self->y ) ); } // Współrzędne x i y wektora. static PyObject *VectorX( Vector *self ) { return PyFloat_FromDouble( self->x ); } static PyObject *VectorY( Vector *self ) { return PyFloat_FromDouble( self->y ); }
75 Po co łączyć Pythona z C? Przygotowania Przykłady // Konwersja Vector -> napis. static PyObject *Vector str ( Vector *self ) { PyObject *x = PyFloat_FromDouble( self->x ); PyObject *y = PyFloat_FromDouble( self->y ); PyObject *r = PyUnicode_FromFormat( "(%S,%S)",x,y ); Py_XDECREF( x ); Py_XDECREF( y ); return r; }
76 Po co łączyć Pythona z C? Przygotowania Przykłady // Lista metod klasy Vector, wraz z opisem. static PyMethodDef VectorMethods[] = { { "norm",(pycfunction)vectornorm,meth_noargs, "Return the norm." }, { "x",(pycfunction)vectorx,meth_noargs, "Return the first coordinate." }, { "y",(pycfunction)vectory,meth_noargs, "Return the second coordinate." }, { NULL } } ;
77 Po co łączyć Pythona z C? Przygotowania Przykłady // Opis typu Vector. static PyTypeObject VectorType = { PyVarObject_HEAD_INIT( NULL,0 ) // inicjalizacja "vector.vector", // nazwa sizeof( Vector ), // rozmiar 0, // (destructor)vector del, // destruktor 0,0,0,0,0,0,0,0,0,0, // (reprfunc)vector str, // obiekt -> napis 0,0,0, // Py_TPFLAGS_DEFAULT, // "2-dimensional vectors.", // opis
78 Po co łączyć Pythona z C? Przygotowania Przykłady 0,0,0,0,0,0, // VectorMethods, // metody 0,0,0,0,0,0,0, // (initproc)vector init, // inicjalizator 0, // (newfunc)vector new // konstruktor } ;
79 Po co łączyć Pythona z C? Przygotowania Przykłady // Opis modułu. static PyModuleDef vector_module = { PyModuleDef_HEAD_INIT, "vector", "Implementation of 2-dimensional vectors.", -1, NULL, NULL, NULL, NULL, NULL } ;
80 Po co łączyć Pythona z C? Przygotowania Przykłady // Inicjalizacja modułu PyMODINIT_FUNC PyInit_vector( void ) { if (PyType_Ready( &VectorType ) < 0) return NULL; PyObject* m = PyModule_Create( &vector_module ); if (m == NULL) return NULL; } Py_INCREF( &VectorType ); PyModule_AddObject( m,"vector", (PyObject *)&VectorType ); return m;
81 Po co łączyć Pythona z C? Przygotowania Przykłady Poniższy program pokazuje, jak z poziomu C wywołać interpreter Pythona. #include <Python.h> int main() { Py_Initialize(); PyRun_SimpleString( "from time import time,ctime\n" "print( Data:,ctime( time() ) )\n" ); Py_Finalize(); return 0; }
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ółowo1 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ółowoPodstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Bardziej szczegółowoMETODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Bardziej szczegółowo1 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ółowoSwift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności
Bardziej szczegółowoProgramowanie w języku Python. Grażyna Koba
Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i
Bardziej szczegółowoJęzyk skryptowy: Laboratorium 1. Wprowadzenie do języka Python
Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python Język PYTHON Podstawowe informacje Python to język skryptowy, interpretowany - co oznacza, że piszemy skrypt, a następnie wykonujemy go za
Bardziej szczegółowoWykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Bardziej szczegółowoJę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ółowoStrona 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ółowo1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie
Bardziej szczegółowoUwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)
Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie
Bardziej szczegółowoSwift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności
Bardziej szczegółowoPython. Wprowadzenie. Jolanta Bachan
Python Wprowadzenie Jolanta Bachan Zainstaluj i przetestuj Pythona https://www.python.org/downloads/ print 'Hello world!' operatory numeryczne: + - * / // % ** operatory porównania: ==!= > < >=
Bardziej szczegółowoJAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Bardziej szczegółowoPodstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH
Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH Michał Bujacz bujaczm@p.lodz.pl B9 Lodex 207 godziny przyjęć: środy i czwartki 10:00-11:00 http://www.eletel.p.lodz.pl/bujacz/ 1 Pytania weryfikacyjne:
Bardziej szczegółowoIMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
Bardziej szczegółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Bardziej szczegółowoSystem operacyjny Linux
Paweł Rajba pawel.rajba@continet.pl http://kursy24.eu/ Zawartość modułu 6 Język bash Pierwszy skrypt Rozwinięcia parametryczne Bloki instrukcji Dwa przydatne polecenia Tablice Sprawdzanie warunków Instrukcje
Bardziej szczegółowoJęzyk Python. Język Python 1/35
Język Python Język Python 1/35 Język Python 2/35 Wstęp Uruchamianie interpretera python Skrypty wykonywalne #!/usr/bin/python #!/usr/bin/env python lub #!/usr/bin/python3 #!/usr/bin/env python3 chmod +x
Bardziej szczegółowoProgramowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44
Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia
Bardziej szczegółowoJĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Bardziej szczegółowoWykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
Bardziej szczegółowoPython. Skąd taka nazwa? Kurs systemu UNIX 1
Python Skąd taka nazwa? Kurs systemu UNIX 1 Cechy języka marketing Obiektowy (dużo prostszy od C++) Darmowy Nie tylko Unix (choć tam najpopularniejszy) Wiele bibliotek (np. Tkinter, czyli interfejs do
Bardziej szczegółowoC++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów
Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów
Bardziej szczegółowoNaukę 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ółowoPodstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Bardziej szczegółowoPodstawy programowania. Podstawy C# Tablice
Podstawy programowania Podstawy C# Tablice Tablica to indeksowany zbiór elementów Tablica jest typem referencyjnym (deklaracja tworzy tylko referencję, sama tablica musi być utworzona oddzielnie, najprościej
Bardziej szczegółowoMyśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści
Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop. 2017 Spis treści Przedmowa 11 1. Jak w programie 21 Czym jest program? 21 Uruchamianie interpretera języka Python 22 Pierwszy
Bardziej szczegółowoKurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Bardziej szczegółowo7. Pętle for. Przykłady
. Pętle for Przykłady.1. Bez użycia pętli while ani rekurencji, napisz program, który wypisze na ekran kolejne liczby naturalne od 0 do pewnego danego n. 5 int n; 6 cin >> n; 8 for (int i = 0; i
Bardziej szczegółowoPodstawy Programowania Podstawowa składnia języka C++
Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include
Bardziej szczegółowoSkrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać
MatLab część III 1 Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać komentarze poprzedzone znakiem % Skrypty
Bardziej szczegółowoInformatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki
Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu
Bardziej szczegółowoĆwiczenie 1. Wprowadzenie do programu Octave
Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 1. Wprowadzenie do programu Octave Mimo że program Octave został stworzony do
Bardziej szczegółowo2 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ółowoJava EE produkcja oprogramowania
Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 1 Warszawa, 2016Z 2 Ogólna charakterystyka języka Java 3 Java 1/2 Język programowania Java został opracowany przez
Bardziej szczegółowo4. Funkcje. Przykłady
4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni
Bardziej szczegółowoJęzyk ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Bardziej szczegółowoPARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Bardziej szczegółowoOpis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].
ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości
Bardziej szczegółowoPython wstęp do programowania dla użytkowników WCSS
Python wstęp do programowania dla użytkowników WCSS Dr inż. Krzysztof Berezowski Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Wprowadzenie CHARAKTERYSTYKA JĘZYKA Filozofia języka
Bardziej szczegółowoSWIFT. Zaawansowane Programowanie Obiektowe
SWIFT Zaawansowane Programowanie Obiektowe Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje
Bardziej szczegółowoPython wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA
Python wprowadzenie Warszawa, 24 marca 2017 Python to język: nowoczesny łatwy w użyciu silny można pisać aplikacje Obiektowy klejący może być zintegrowany z innymi językami np. C, C++, Java działający
Bardziej szczegółowoPodstawy i języki programowania
Podstawy i języki programowania Laboratorium 2 - wprowadzenie do zmiennych mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 23 października 2017 1 / 26 mgr inż. Krzysztof Szwarc Podstawy i
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Język programowania Ruby Marcin Młotkowski 12 kwietnia 2018 Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy
Bardziej szczegółowoLiczby losowe i pętla while w języku Python
Liczby losowe i pętla while w języku Python Mateusz Miotk 17 stycznia 2017 Instytut Informatyki UG 1 Generowanie liczb losowych Na ogół programy są spójne i prowadzą do przewidywanych wyników. Czasem jednak
Bardziej szczegółowoJęzyki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.
Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia Zmienna: [] [ '[' ']' ] ['=' ]; Zmienna to fragment pamięci o określonym
Bardziej szczegółowoTablice (jedno i wielowymiarowe), łańcuchy znaków
Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie
Bardziej szczegółowoPython dla początkujących. Małgorzata Niewiem AGH, GGiOŚ, Katedra Geoinformatyki i Informatyki Stosowanej SATIM Satelitarny Monitoring
Python dla początkujących Małgorzata Niewiem AGH, GGiOŚ, Katedra Geoinformatyki i Informatyki Stosowanej SATIM Satelitarny Monitoring Wstęp Stworzony w latach 90 przez Guido van Rossum Nazwa pochodzi od
Bardziej szczegółowoBloki anonimowe w PL/SQL
Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia
Bardziej szczegółowoObiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.
Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody
Bardziej szczegółowoPodstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski
Podstawy Pythona Krzysztof Gdawiec Instytut Informatyki Uniwersytet Śląski Słownik jest typem mutowalnym. Każdy element to para: klucz wartość. W celu stworzenia słownika pary klucz wartość umieszczamy
Bardziej szczegółowoJę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ółowoInformatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Bardziej szczegółowoPodstawy programowania w Pythonie
Podstawy programowania w Pythonie Wykład 2 dr Andrzej Zbrzezny Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 10 października 2012 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania
Bardziej szczegółowoJava: kilka brakujących szczegółów i uniwersalna nadklasa Object
Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów
Bardziej szczegółowoWykład 5: Klasy cz. 3
Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu
Bardziej szczegółowoProgramowanie strukturalne. Opis ogólny programu w Turbo Pascalu
Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki zaprojektowany jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych jest to język pozwalający na programowanie zarówno proceduralne
Bardziej szczegółowoJęzyk C zajęcia nr 11. Funkcje
Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji
Bardziej szczegółowoPrzegląd języka Python. Łukasz Anwajler
Przegląd języka Python Łukasz Anwajler lukasz.anwajler@pjwstk.edu.pl Nie wierzcie mi na słowo Zaraz zobaczymy: czym jest Python dlaczego warto go używać jakie ma zastosowania gdzie z niego korzystają jakzacząć
Bardziej szczegółowoWstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.
Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy Laboratorium 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Komentarze Funkcja printf() Zmienne Łańcuchy
Bardziej szczegółowoznajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
Bardziej szczegółowoJAVAScript 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ółowoLaboratorium 03: Podstawowe konstrukcje w języku Java [2h]
1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie
Bardziej szczegółowoMicrosoft IT Academy kurs programowania
Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego
Bardziej szczegółowoPodstawowe 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ółowoTechnologie cyfrowe semestr letni 2018/2019
Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 8 (15.04.2019) Kompilacja Kompilacja programu (kodu): proces tłumaczenia kodu napisanego w wybranym języku na kod maszynowy, zrozumiały
Bardziej szczegółowoJęzyk programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści
Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop. 2016 Spis treści Przedmowa 1 Stosowana notacja 1 1. Wprowadzenie 3 1.1. Konsola interaktywna języka Scala 3 1.2. Zmienne 5 1.3. Wartości
Bardziej szczegółowoJava. 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ółowoSpis treści. Funkcje. 1 Funkcje 1.1 Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie 7
Spis treści 1 Funkcje 1.1 Zadanie 1 1.2 Zadanie 2 1.3 Zadanie 3 1.4 Zadanie 4 1.5 Zadanie 5 1.6 Zadanie 6 1.7 Zadanie 7 Funkcje Przy programowaniu często zdarza się, że pewne czynności chcemy wykonywać
Bardziej szczegółowoInformatyka- 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ółowoPodstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk
Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, Materiał
Bardziej szczegółowoJęzyk C++ zajęcia nr 2
Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator
Bardziej szczegółowoJeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.
Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji
Bardziej szczegółowoAlgorytmika i Programowanie VBA 1 - podstawy
Algorytmika i Programowanie VBA 1 - podstawy Tomasz Sokół ZZI, IL, PW Czas START uruchamianie środowiska VBA w Excelu Alt-F11 lub Narzędzia / Makra / Edytor Visual Basic konfiguracja środowiska VBA przy
Bardziej szczegółowoPytania sprawdzające wiedzę z programowania C++
Pytania sprawdzające wiedzę z programowania C++ Wstęp 1. Zaprezentuj mechanikę tworzenia programu napisanego w języku C++. 2. Co to jest kompilacja? 3. Co to jest konsolidacja? 4. Co to jest kod wykonywalny?
Bardziej szczegółowoKOTLIN. Język programowania dla Androida
KOTLIN Język programowania dla Androida Historia Kotlin został opracowany przez firmę JetBrains Prace rozpoczęto w 2011 r., od 2012 r. dostępny na licencji Apache 2. Nazwa pochodzi od wyspy koło Petersburga
Bardziej szczegółowoMATERIAŁY DO ZAJĘĆ II
MATERIAŁY DO ZAJĘĆ II Zmienne w C# Spis treści I. Definicja zmiennej II. Hierarchia typów (CTS) III. Typy wbudowane IV. Deklaracja zmiennych V. Literały VI. Pobieranie i wypisywanie wartości zmiennych
Bardziej szczegółowoDelphi 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ółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Bardziej szczegółowoPascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:
Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym
Bardziej szczegółowodo instrukcja while (wyrażenie);
Instrukcje pętli -ćwiczenia Instrukcja while Pętla while (póki) powoduje powtarzanie zawartej w niej sekwencji instrukcji tak długo, jak długo zaczynające pętlę wyrażenie pozostaje prawdziwe. while ( wyrażenie
Bardziej szczegółowoTemat 1: Podstawowe pojęcia: program, kompilacja, kod
Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,
Bardziej szczegółowoPodstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.
M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza
Bardziej szczegółowoJAVA. 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ółowoJę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ółowoProgramowanie komputerowe. Zajęcia 1
Programowanie komputerowe Zajęcia 1 Code::Blocks - tworzenie projektu Create New Project Console Application -> C++ Wybierz nazwę projektu Stworzy się nowy projekt z wpisaną funkcją main Wpisz swój program
Bardziej szczegółowoProgramowanie komputerowe. Zajęcia 4
Programowanie komputerowe Zajęcia 4 Typ logiczny Wartości logiczne są reprezentowane przez typ bool. Typ bool posiada tylko dwie wartości: true i false. Zamiast wartości logicznych można używać wartości
Bardziej szczegółowoPliki. Informacje ogólne. Obsługa plików w języku C
Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego
Bardziej szczegółowoWarsztaty dla nauczycieli
WPROWADZENIE Wyprowadzanie danych: Wyprowadzanie na ekran komunikatów i wyników umożliwia instrukcja wyjścia funkcja print(). Argumentami funkcji (podanymi w nawiasach) mogą być teksty, wyrażenia arytmetyczne
Bardziej szczegółowoJęzyki programowania zasady ich tworzenia
Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie
Bardziej szczegółowoPodstawy programowania w Pythonie
Podstawy programowania w Pythonie Wykład 6 dr Andrzej Zbrzezny Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 21 listopada 2012 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania
Bardziej szczegółowoPo uruchomieniu programu nasza litera zostanie wyświetlona na ekranie
Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których
Bardziej szczegółowoTemat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,
Bardziej szczegółowo