Python podstawy programowania
|
|
- Barbara Cieślik
- 8 lat temu
- Przeglądów:
Transkrypt
1 Python podstawy programowania Kurs w ramach przedmiotu: Symulacja komputerowa systemów dr inż. Krzysztof Czarnecki Politechnika Gdańska Katedra Systemów Elektroniki Morskiej 2014
2 Plan Słowo wstępu Ogólnie o typowaniu Instrukcje sterujące Programowanie obiektowe interfejs do obiektu Moduły zewnętrzne Wybrane operacje na plikach Obsługa wyjątków Wykres dyskretnej funkcji jednej zmiennej Przetwarzanie wektorów, macierzy Analiza widmowa sygnału Generacja addytywnego szumu białego (AWGN) Generacja sygnału świergotowego Symulacja transmisji danych w paśmie podstawowym Programowanie obiektowe w służbie SKS
3 Zakres kursu, popularność Pythona Niniejszy kurs obejmuje wybrane zagadnienia języka Python. Wspólnym mianownikiem wszystkich prezentowanych tu zagadnień jest implementacja komputerowej symulacji systemów, zwłaszcza analizy i przetwarzania sygnałów, oraz graficzna prezentacja zobrazowań. Elastyczność, wieloplatformowość, dość prosta składnia, ogromna liczba dodatkowych modułów oraz fakt, iż język Python jest udostępniany na wolnej licencji sprawia, że język ten jest jednym z najpopularniejszych języków programowania. spectrum.ieee.org
4 Instalacja interpretera języka Python Instalacja w systemie Linux należy wydać następujące polecenie w terminalu: apt-get install python3 (Ubuntu, Mint) yum install python3 (Fedora)... (inne Linuksy) Instalacja w systemie Windows należy ściągnąć najnowszą wersję ( 3.3.0) instalatora ze strony projektu: i postępować zgodnie z instrukcjami.
5 Wybór zintegrowanego środowiska programistycznego IDE: ang. Integrated Development Environment Do oddzielenia bloków kodu stosuje się wcięcia tabulatora. Dlatego zaleca się stosowanie zaawansowanych edytorów, które będą zapewniały, aby komunikat IndentationError: unexpected indent pojawiał się jak najrzadziej. Często stosowane IDE / edytory: PyCharm IDLE Python Emacs, Vim Notepad++ Eclipse skrypt-1.py 1 # blok 1 x = 1 3 print ("x =", x) if True : # po dwukropku nast ę puje blok,, podrz ę dny 5 # blok 2 7 y, z = 2, 3 print (" x + y + z =", x+y+z)
6 Uruchomienie skryptu Skrypt napisany w języku Python powinien rozpoczynać się od wskazania położenia interpretera w systemie plików oraz wyboru kodowania tekstu. Informacje te przekazuje się w dwóch pierwszych liniach skryptu jako komentarze: skrypt-2.py 1 #!/ usr / bin / python # -*- coding : utf -8 -*- Skrypt można uruchomić za pośrednictwem powłoki (Linux, Unix): bash python skrypt -2. py lub po nadaniu praw do wykonywania, bezpośrednio (Linux, Unix): 1 chmod a+x skrypt -2. py./ skrypt -2. py bash IDE m.in. udostępniają intuicyjne interfejsy do uruchamiania skryptów. (Linux, Windows,...)
7 Hello world! W języku Python deklaracja zmiennej odbywa się automatycznie przy jej inicjacji. Co więcej nie trzeba troszczyć się o usuwanie niepotrzebnych zmiennych i obiektów, gdyż interpreter Pythona jest wyposażony w tzw. garbage collector. Wybrane popularne typy danych to int, float i string. skrypt-3.py x = " Hello world!" # inicjacja zmiennej typu string 2 y = 2014 # inicjacja zmiennej typu int z = # inicjacja zmiennej typu float 4 print ( x, type (x)) 6 print ( y, type (y)) print ( z, type (z)) 8 # konwersja typu, rzutowanie 10 a = str (2014) b = float (" ") 12 c = int (z) 14 print ( a, type (a)) print ( b, type (b)) 16 print ( c, type (c))
8 Instrukcja warunkowa Instrukcja warunkowa: musi składać się z jednej klauzuli if, po której następuje test logiczny może zawierać dowolną liczbę klauzul elif, po których następują testy logiczne może zawierać klauzulę else skrypt-4.py 1 # instrukcja warunkowa,, wbudowana print (" x exists " if " x" in vars () else " x doesnt exist ") 3 # rozbudowana instrukcja warunkowa 5 if not " x" in vars (): pass elif type (x)== type ( float ()): print ("x is float ") 7 elif type (x)== type ( int ()): print ("x is int ") else : 9 print (" unexpected type ") del (x) Jeżeli blok kodu pod klauzulą zawiera tylko jedną instrukcję to może ona być umieszczona bezpośrednio po dwukropku. wbudowana funkcja vars() zwraca zbiór istniejących zmiennych. in służy do testowania czy obiekt znajduje się w zbiorze. Instrukcja pusta może być wywołana poleceniem pass. Można wymusić usunięcie obiektu poleceniem del. not to zaprzeczenie logiczne.
9 Wybrane tablicowe typy danych Tablicowe typy danych collections są szczególnie istotne dla niniejszego kursu, z racji możliwości wyrażania sygnałów dyskretnych za ich pomocą. Trzy często spotykane to napisy (string), listy i krotki (tuple). Odwołania do poszczególnych elementów takich zmiennych można dokonać przy pomocy nawiasów kwadratowych. skrypt-5.py A = " 1234 " # inicjacja napisu 2 B = (1, 2, 3, 4) # inicjacja krotki C = [1, 2, 3, 4] # inicjacja listy 4 print (A, B, type (B), C, type (C)) 6 print (A[2], B [1:3], C [ -2]) Krotki i listy mogą przechowywać obiekty dowolnego typu. Ponadto, z wymienionych, tylko listy mają możliwość przypisania wartości do poszczególnych elementów niezależnie, czym różnią się od krotek i napisów. skrypt-6.py 1 L = [" Adam ", (" Ewa ", 2014), ] print (L [0][0:3], "i " + L [1][0]) # " Ada i Ewa " 3 L [2] = " Ola " 5 L [1][1] = " Ela " # tu interpreter zgł osi błąd TypeError: tuple object does not support item assignment
10 Pętla for Pętla for przeznaczona jest do iterowania po danych typu tablicowego. Instrukcje continue oraz break można stosować podobnie jak w języku C. skrypt-7.py Vips = [" Asia ", " Ania ", " Helena ", " Ela ", " Ola ", " Ala "] 2 for imie in Vips : if imie == " Ania ": continue # pomini ę cie iteracji 4 if imie == " Ela ": break # przerwanie pę tli for litera in imie : print ( litera ) # pę tla zagnie żdż ona 6 print () Przykład wykorzystania pętli generującej listę (inline) do utworzenia osi czasu: skrypt-8.py 1 rate = # pró bki na sekund ę interval = 0.8 # interwa ł w sekundach 3 number = int ( rate * interval ) 5 # Lista przechowuj ąca dyskretne warto ści czasu Timeline = [ float ( n) / rate for n in range ( number )] 7 print ( Timeline ) Wbudowana funkcja range() zwraca listę kolejnych liczb naturalnych.
11 Licznik pętli Co jeżeli potrzebny jest licznik w pętli? skrypt-9.py Vips = [" Asia ", " Ania ", " Helena ", " Ela ", " Ola ", " Ala "] 2 # tu pę tle for da się zmie ścić w 1 czytelnej linii kodu 4 for nr, imie in enumerate ( Vips ): print (" element %d to vip %s" % (nr, imie )) 6 nr = 0 # tu niezb ę dne są 4 linie 8 while (nr < len ( Vips )): print (" element %d to vip %s" % (nr, Vips [nr ])) 10 nr += 1 Wbudowana funkcja enumerate() zwraca listę (dokładniej generator) krotek, których pierwszy element to indeks, a drugi przyjmuje zawartość oryginalnego elementu listy. Wbudowana funkcja len() zwraca długość kolekcji. Przy pierwszej pętli mamy niejawnie do czynienia z wielokrotnym przypisaniem. skrypt-9.py 1 nr, imie = 0, " Asia " # wielokrotne przypisanie nr, imie = (1, " Ania ") # rozpakowanie krotki 3 nr, imie = [2, " Helena "] # rozpakowanie listy Uwaga na ValueError: too many values to unpack ValueError: need more than 2 values to unpack
12 True i False W Pythone dostępne są typy binarne określone słowami kluczowymi True i False. Są wykorzystywane m.in. w testach logicznych przez instrukcje warunkowe oraz pętle. Fałsz logiczny poza zmienną False wyrażają także m.in.: Zaprzeczenie logiczne prawdy: not True Wyrażenie None, reprezentujące brak wartości. Zmienna typu float przyjmująca wartość 0.0. Zmienna typu int przyjmująca wartość 0. Puste krotka, lista lub napis: ( ), [], skrypt-10.py 1 Vips = [" Asia ", " Ania ", " Helena ", " Ela ", " Ola "] print ( Vips ) 3 while ( Vips ): 5 print ( Vips [0]) del ( Vips [0]) 7 print ( Vips ) Do konstruowania testów logicznych służą m.in. następujące operatory: and, or, not, in. Uwaga na IndexError: list assignment index out of range
13 Obiekty Język Python wspiera wszystkie najważniejsze paradygmaty programowania, w tym również paradygmat programowania obiektowego, w którym do opisu programu stosuje się abstrakcyjne obiekty wyposażone w specjalny interfejs. Do poszczególnych atrybutów obiektu (pól, metod, innych zagregowanych obiektów) można odwołać się za pomocą operatora kropki. skrypt-11.py Vips = [" Asia ", " Ania ", " Helena ", " Ela ", " Ola "] 2 print ( Vips ) 4 # metoda append () powoduje dołą czenie # do końca listy kolejnego elementu ( napisu ) 6 Vips. append (" Ala ") print ( Vips ) Do wylistowania wszystkich atrybutów obiektu służy wbudowana funkcja dir(). skrypt-11.py print ( dir ( Vips )) Również zmienne typu int, float oraz string są obiektami w rozumieniu paradygmatu programowania obiektowego.
14 Lista jako obiekt skrypt-12.py Vips = [" Asia ", " Ania ", " Helena ", " Ela ", " Ola "] 2 More_Vips = [" Ala ", " Ula "] 4 # Metoda extend () powoduje rozszerzenie listy o inn ą list ę. Vips. extend ( More_Vips ) 6 print ( Vips ) 8 # Metoda pop ( n) powoduje pobranie i zwr ó cenie elementu # o numerze n z listy. Element jest usuwany z listy! 10 imie = Vips. pop (2) print (imie, Vips ) 12 # Bez podawania jawnie argumentu metody pop () 14 # domy ś lnie zostanie pobrany ostatni element listy. imie = Vips. pop () 16 print (imie, Vips ) 18 # Metoda index zwraca numer pierwszego elementu, # któ rego warto ść jest ró wna argumentowi. 20 print ( Vips. index (" Ela "))
15 Metoda, funkcja, procedura... Funkcje definiowane jako wewnętrzne procedury obiektów nazywa się metodami. Metody wywołuje się na obiektach, tak jak pokazano to na poprzednim slajdzie. Funkcje, w tym także metody, definiuje się zwykle za pomocą słowa kluczowego def. skrypt-13.py 1 def my_cmx (x, y): return x+1j* y 3 print ( my_cmx (1.5, 3.5) ) Funkcje można definiować z domyślnymi wartościami argumentów. Należy przy tym pamiętać, aby argumenty z przypisanymi domyślnymi wartościami były umieszczane na końcu sygnatury (poniżej y=0 występuje po x). skrypt-13.py 1 def my_cmx (x, y =0) : if not isinstance (x, ( int, float )): return None 3 if not isinstance (y, ( int, float )): return None z = complex (x, y) 5 return z 7 print ( my_cmx (1.5) ) print ( my_cmx (y=2, x =1) ) Wbudowaną funkcję isinstance() użyto, aby sprawdzić czy przekazane argumenty mają charakter numeryczny.
16 Moduły rozszerzeniowe Język Python jest językiem ogólnego przeznaczenia, którego funkcjonalność można rozszerzać przy pomocy dodatkowych modułów. Dodatkowe moduły można dołączać za pomocą słowa kluczowego import. Interfejs do zaimportowanego modułu jest spójny z interfejsem klasycznego obiektu. skrypt-14.py 1 import sys # importowanie cał ego modu łu sys 3 print ( dir ( sys )) # lista wszystkich element ów modu łu sys print ( sys. argv ) # linia wywo łująca ten skrypt Moduły wspierające obliczenia, takie jak math, są szczególnie istotne dla tego kursu. skrypt-15.py rate, interval, freq = , 1.2, # Sa/s, s, Hz 2 number = int ( rate * interval ) Timeline = [ float ( n) / rate for n in range ( number )] 4 # import alternatywny za pomoc ą struktury,, from import 6 from math import pi, sin, cos def my_cmx (t, f, a =1) : 8 arg = 2.0* pi*t*f return complex (a* cos ( arg ), a* sin ( arg )) 10 # Wygenerowanie zespolonej sinusoidy : 12 Complexoida = [ my_cmx (t, freq ) for t in Timeline ]
17 Wybrane operacje na plikach Obsługa plików może przebiegać standardowo: otwarcie pliku, zapis lub odczyt oraz zamknięcie pliku. skrypt-16.py 1 Vector = range (16) # wygenerowanie danych fds = open (" data. txt ", "w") # otwarcie pliku do zapisu 3 for e in Vector : fds. write ("%d\t %f\n" % (e, float (e))) # zapis do pliku 5 fds. close () # zamkni ę cie pliku Język python oferuje wygodną w użyciu strukturę with as, którą można wykorzystać m.in. do obsługi plików. skrypt-16.py # otwarcie pliku do odczytu : 2 with open (" data. txt ", "r") as fds : # wczytanie danych do listy : 4 Lines = fds. readlines () 6 # wyś wietlenie danych z pliku : for line in Lines : print (line, end ="",flush = True ) Plik został zamknięty automatycznie po opuszczeniu bloku kodu w strukturze with as.
18 Wygenerowanie i zapisanie sygnału do pliku Moduł cmath jest dedykowany do wsparcia obliczeń z liczbami zespolonymi. Wbudowana funkcja zip() łączy ze sobą dwa obiekty typu tablicowego na zasadzie zamka błyskawicznego, w ten sposób powstaje nowa lista, której elementami są krotki przechowujące odpowiadające sobie elementy z łączonych tablic. Jeżeli tablice mają różne rozmiary, to nieprzystające elementy z dłuższej tablicy są ignorowane. Taki mechanizm wykorzystano w listingu poniżej: skrypt-17.py rate, interval, freq = , 1.2, # Sa/s, s, Hz 2 number = int ( rate * interval ) Timeline = [ float ( n) / rate for n in range ( number )] 4 # Wygenerowanie zespolonej sinusoidy : 6 from cmath import pi, rect Complexoida = [ rect (1.0, 2* pi* t* freq ) for t in Timeline ] 8 # Zapis sygna łu do pliku wraz z osi ą czasu : 10 with open (" signal. txt ", "w") as fds : for t, s in zip ( Timeline, Complexoida ): 12 fds. write ("%f\t%f\t%f\n" % (t,s.real,s. imag ))
19 Obsługa wyjątków skrypt-18.py 1 try : # w pythonie 3 interpreter powinien zgł osi ć błąd 3 eval (" print napis ") except SyntaxError : 5 print ("błąd skł adni... ") 7 # nie zaleca się takiego sposobu programowania, # gdy ż właś ciwie uniemo ż liwia on debugowanie. 9 except : pass 11 def fun (): 13 try : return x **2 15 except NameError : print (" brak x... ") 17 return finally : 19 print (" finally... ") 21 fun ()
20 Wykres y = f (x) - Pylab Modułem przeznaczonym do wizualizacji jest m.in. mathplotlib. bash apt - get install python - matplotlib skrypt-19.py rate, interval, freq = , 0.05, 50.0 # Sa/s, s, Hz 2 number = int ( rate * interval ) Timeline = [ float ( n) / rate for n in range ( number )] 4 # Wygenerowanie zespolonej sinusoidy : 6 from cmath import pi, rect Complexoida = [ rect (1.0, 2* pi* t* freq ) for t in Timeline ] 8 # listy nie wspieraj ą operacji macierzowych 10 def get_real ( Tab ): return [ s. real for s in Tab ] def get_imag ( Tab ): return [ s. imag for s in Tab ] 12 import pylab as pl # kolejny alternatywny spos ób importu 14 pl. plot ( Timeline, get_real ( Complexoida )) pl. plot ( Timeline, get_imag ( Complexoida )) 16 pl. show ()
21 Wykres y = f (x) - Pylab
22 Operacje wektorowe Numpy Moduł numpy wspiera m.in. obliczenia numeryczne, w tym oparte na przetwarzaniu liczb zespolonych i całych macierzy. bash 1 apt - get install python - numpy skrypt-20.py from cmath import pi, rect 2 import pylab as pl, numpy as np 4 rate, interval, freq = , 0.05, 50.0 # Sa/s, s, Hz number = int ( rate * interval ) 6 Timeline = [ float ( n) / rate for n in range ( number )] Complexoida = [ rect (1.0, 2* pi* t* freq ) for t in Timeline ] 8 # konwersja listy do typu numpy. array 10 Complexoida = np. array ( Complexoida ) 12 # numpy. array wspiera operacje na cał ych macierzach pl. plot ( Timeline, Complexoida. real ) 14 pl. plot ( Timeline, Complexoida. imag ) pl. show ()
23 Operacje wektorowe Numpy Wbudowana funkcja map() może być szczególnie przydatna w przetwarzaniu list. Pierwszym argumentem tej metody jest referencja do procedury przetwarzającej poszczególne elementy listy, natomiast drugim obiekt typu tablicowego. Moduł numpy ma wbudowane mechanizmy przetwarzania całych macierzy, więc w wielu sytuacjach nie ma potrzeby stosowania funkcji map() lub pętli. skrypt-21.py import numpy as np, pylab as pl 2 rate, interval, freq = , 0.05, 50.0 # Sa/s, s, Hz 4 Timeline = np. arange (0.0, interval, 1.0/ rate ) 6 # mno ż enie macierzy przez wielko ść skalarn ą: j 2 pi freq # i mapowanie jej warto ści na funkcj ę numpy. exp (): 8 Complexoida = map (np.exp, 2j*np.pi* freq * Timeline ) Complexoida = np. array ( Complexoida ) 10 # ekwiwalentny zapis mógłby wygl ądać nast ę puj ąco: 12 Complexoida = np. exp (2j* np. pi* freq * Timeline ) # numpy. exp () zwraca tu obiekt typu numpy. array 14 pl. plot ( Timeline, Complexoida. real ) 16 pl. plot ( Timeline, Complexoida. imag ) pl. show ()
24 Operacje wektorowe Numpy Wbudowana funkcja abs() może działać różnie, przyjmując argumenty różnych typów 1. Gdy jako argument zostanie podany obiekt typu numpy.array, w wyniku otrzymamy obiekt również tego typu. skrypt-22.py import numpy as np, pylab as pl 2 rate, interval, freq = , 0.05, 50.0 # Sa/s, s, Hz 4 Timeline = np. arange (0.0, interval, 1.0/ rate ) Complexoida = np. exp (2j* np. pi* freq * Timeline ) 6 # przyk ł adowe przetwarzanie macierzy 8 Complexoida. real = abs ( Complexoida. real /( Timeline +0.01) ) Complexoida. imag = Complexoida. imag *( Timeline *2000.0) 10 pl. plot ( Timeline, Complexoida.real, "g") 12 pl. plot ( Timeline, Complexoida.imag, "b") pl. plot ( Timeline, abs ( Complexoida ), "r") 14 pl. grid () pl. show () Z klasycznej listy nie można obliczyć wartości bezwzględnej: TypeError: bad operand type for abs(): list 1 Funkcja abs wykorzystuje mechanizm metod specjalnych, które będą zaprezentowane w dalszej części.
25 Wykres y = f (x) - Pylab
26 Operacje macierzowe Numpy Poniżej przedstawiono wybrane operacje na macierzach reprezentowanych obiektami typu numpy.array. skrypt-23.py import numpy as np 2 A = np. array ([ range (3**2) ]) 4 B = np. array ([ range (3*3) ]) C = A. reshape (9,1) 6 D = A. reshape (3,3) +1j print ("A =", A, "\nb =", B, "\nc =", C, "\nd =\n", D) 8 # Mno ż enie macierzy. Uwaga na ValueError! 10 print ("\na*b =\n", A*B) # Mno ż enie macie ży ement - element print (" dot (A,C) =\n", np.dot (A,C)) # Mno ż enie macierzy 12 print (" dot (C,A) =\n", np.dot (C,A)) # Mno ż enie macierzy 14 # Odwracanie macierzy print ("np. linalg. inv (D) =\n", np. linalg. inv (D)) 16 # Transpozycja, sprz ęż enie i zmiana wymiar ów macierzy 18 print ("A. transpose () =\n", A. transpose ()) print ("A. reshape (3,3) =\n", A. reshape (3,3) ) 20 print ("D. conj (). transpose () =\n", D. conj (). transpose ())
27 Analiza widmowa sygnału skrypt-24.py from numpy import pi, exp, arange 2 rate, interval = , 0.1 # Sa/s, s Timeline = arange (0.0, interval, 1.0/ rate ) 4 # generacja sygna łu 6 f1, f2, a1, a2 = 100.0, 200.0, 1.0, 0.1 w1, w2 = 2.0* pi*f1, 2.0* pi*f2 # rad /s 8 Signal = a1*exp (1j*w1* Timeline )+a2*exp (1j*w2* Timeline ) 10 # analiza widmowa from numpy import log10, blackman 12 from numpy. fft import fft, fftshift Spectrum = fftshift ( fft ( Signal * blackman ( len ( Signal )))) 14 Spectrum = Spectrum / max ( abs ( Spectrum )) # normalizacja Freqline = arange (- rate /2, rate /2, rate / len ( Spectrum )) 16 # ekspozycja w skali logarytmicznej 18 import pylab as pl pl. plot ( Freqline, 20* log10 ( abs ( Spectrum )),".-") 20 pl. xlabel ("F (Hz)") pl. ylabel ("E ( dbc )") 22 pl. grid () pl. show ()
28 Widmo amplitudowe w skali logarytmicznej
29 Generacja addytywnego szumu białego symulacja kanału AWGN skrypt-25.py # obliczenie parametru sigma 2 from numpy import log10, sqrt, mean snr = 20 # Założ ony SNR w db 4 length = len ( Signal ) average = mean ( Signal ) 6 var = sum ( abs ( Signal - average ) **2) / length sigma = sqrt ( var /2) *10**( - snr /20) 8 # losowanie pró bek szumu 10 from numpy. random import normal Noise = normal ( loc =0.0, scale = sigma, size =( length,2) ) 12 NSignal = [s+ complex (*n) for s,n in zip ( Signal, Noise )] 14 print (" Assumed SNR :", snr ) signal_enery = sum ( abs ( Signal ) **2) 16 noise_enery = sum ( k **2 for n in Noise for k in n) print (" Obtained SNR :", 10* log10 ( signal_enery / noise_enery )) Assumed SNR: 20 Obtained SNR:
30 Widmo amplitudowe w skali logarytmicznej analiza fragmentu sygnału długości 0.1 sekundy
31 Widmo amplitudowe w skali logarytmicznej analiza fragmentu sygnału długości 2.2 sekundy
32 Generacja sygnału świergotowego (chirp) skrypt-26.py 1 from numpy import pi, exp, arange rate, interval = , 1.1 # Sa/s, s 3 Timeline = arange (0.0, interval, 1.0/ rate ) 5 # generacja sygna łu chirp f, a, c = 10.0, 2.0, w = 2.0* pi*f # rad /s Signal = Timeline * exp (1j*( w* Timeline + pi* c* Timeline **2) ) skrypt-26.py import pylab as pl 2 pl. figure (" Sygna ł Ś wiergotowy ") pl. subplot (211) 4 pl. plot ( Timeline, Signal.real,"b-") pl. xlabel ("T (s)") 6 pl. ylabel (" Real (V)") pl. grid () 8 #...
33 Sygnał świergotowy
34 Widmo amplitudowe sygnału świergotowego
35 Spektrogram sygnału świergotowego (chirp) skrypt-26.py 1 #... pl. figure (" Widmo Amplitudowe ") 3 pl. plot ( Freqline, 20* log10 ( abs ( Spectrum )),"b.-") pl. xlabel ("F (Hz)") 5 pl. ylabel ("E ( dbc )") pl. grid () skrypt-26.py pl. figure (" Spectrogram ") 2 pl. specgram ( Signal, NFFT =128, Fs=rate, noverlap =127) pl. ylim ([0, 150]) 4 pl. xlim ([0, 1]) pl. xlabel ("T (s)") 6 pl. ylabel ("F (Hz)") pl. grid () 8 pl. show ()
36 Spektrogram sygnału świergotowego
37 Symulacja transmisji danych w paśmie podstawowym skrypt-28.py 1 # Wiadomo ść do przes ł ania. Data = " To jest przesy ł ana informacja w kodzie ASCII." 3 # Ignorowanie wszystkich znak ów nie nale żą cych do kodu ASCII. 5 Data = Data. encode (" ascii ", ignore ) 7 # Przetwarzanie litera po literze. for letter in Data : 9 # Zapewnienie jednakowej dł ugo ści ramek (8 bit ów). 11 Tab = list ( bin ( letter )) # konwersja char to bin as list Frame = (10 - len ( Tab )) *[0] 13 for b in Tab [2:]: Frame. append ( int ( b)) # pierwsze dwie # pozycje reprezentacji binarnej np. 0 b10011 są ignorowane 15 # Formowanie strumienia danych binarnych 17 try : Stream += Frame # unipolarnych (0,1) except NameError : Stream = Frame 19 print (" Nadano : ", Data ) Dalej następuje mapowanie symboli w tej konkretnej sytuacji konwersja kodu unipolarnego (0,1) do bipolarnego (1, -1)
38 Symulacja transmisji danych w paśmie podstawowym - dekodowanie 1 # Dekodowanie. RecStream = Stream 3 # analiza bit po bicie 5 while RecStream : skrypt-28.py 7 frame = "" while len ( frame ) <8: # wydzielanie 8- bitowych ramek 9 frame += str ( RecStream. pop (0) ) 11 char = chr ( int ( frame, 2)) # konwersja bin to int to char 13 # utworzenie łań cucha znak ów: try : RecData += char 15 except NameError : RecData = char 17 print (" Odebrano : ", RecData )
39 Symulacja transmisji danych w paśmie podstawowym - filtr formujący czas, t wstawianie zerowych próbek czas, t odpowiedź impulsowa filtru opóźnienie, τ splot = filtracja czas, t
40 Symulacja transmisji danych w paśmie podstawowym - filtr formujący
41 Symulacja transmisji danych w paśmie podstawowym - symulacja kanału AWGN
42 Symulacja transmisji danych w paśmie podstawowym - filtr dopasowany czas, t opóźnienie, τ odpowiedź impulsowa filtru splot = filtracja czas, t
43 Symulacja transmisji danych w paśmie podstawowym - filtracja i synchronizacja po stronie odbiorczej
44 Symulacja transmisji danych w paśmie podstawowym - analiza widmowa nadawanego sygnału
45 Symulacja transmisji danych w paśmie podstawowym - analiza widmowa dłuższej wiadomości
46 Symulacja transmisji danych w paśmie podstawowym - charakterystyka amplitudowa filtru
47 Symulacja transmisji danych w paśmie podstawowym Nadano: b informacja Uzyskany SNR: db Odebrano (bez filtracji): hntovmqgha Odebrano (po filtracji): informacja SNR Po filtracji: db
48 Klasa jako definicja typu obiektu skrypt-31.py 1 class Box : # instrukcja class rozpoczyna definicj ę klasy 3 def init ( self ): # metoda implementuj ąca konstruktor # argument self jest obowi ą zkowy 5 # oznacza odwo ł anie do instancji tej klasy print (" New box ") 7 self. content = [] # zmienna wewn ą trz klasy, pole self. name = " box " 9 def print_name ( self ): # metoda wyś wietla imi ę 11 print ( self. name ) 13 box1 = Box () # utworzenie obiektu wed ług opisu klasy 15 print ( type ( box1 )) print ( type ( Box )) 17 print ( dir ( box1 )) 19 box1. print_name () print ( box1. name ) 21 print_box1_name = box1. print_name 23 print_box1_name ()
49 Dziedziczenie skrypt-32.py class Box : # konstruktor z dodatkowym argumentem : 2 def init (self, name ): print (" New box : %s" % name ) 4 self. name = name self. content = [] 6 def print_name ( self ): print ( self. name ) 8 class BetterBox ( Box ): # nowa klasa dziedziczy po klasie Box 10 def add (self, item ): self. content. append ( item ) 12 def print_content ( self ): print ( self. content ) 14 box2 = BetterBox (" czarna ") 16 box3 = BetterBox (" czerwona ") box3. print_name () # print_name z klasy Box 18 box2. print_content () 20 box2. add ( box3 ) # content zdefniowano jako lista więc można box2. add (" czapka ") # tu doda ć, w zasadzie, dowolny obiekt 22 box2. print_content ()
50 Dziedziczenie po wielu klasach skrypt-33.py 1 class Contener : # pierwsza klasa nadrz ę dna def init ( self ): 3 self. content = [] def add (self, item ): 5 self. content. append ( item ) def print_content ( self ): 7 print ( self. content ) 9 class Caller : # druga klasa nadrz ę dna def init (self, name ): 11 self. name = name def print_name ( self ): 13 print ( self. name ) 15 class Box ( Contener, Caller ): def init (self, name ): 17 Contener. init ( self ) Caller. init (self, name ) 19 print (" New box : ", end =""); self. print_name () 21 box = Box (" szary ") box. add (" szalik ") 23 box. print_content () print ( type ( box ), isinstance (box, Caller ), isinstance (box, int ))
51 Diagram klas add() Contener print content() = content Box Caller print name() - name
52 Dziedziczenie po wielu klasach - rozwiązywanie kolizji skrypt-34.py 1 class Box_A : # pierwsza klasa nadrz ę dna def add (self, item ): 3 print (" Add A") self. content. append ( item ) 5 class Box_B : # druga klasa nadrz ę dna 7 def add (self, item ): print (" Add B") 9 self. content. append ( item ) 11 class Box ( Box_A, Box_B ): def init ( self ): 13 self. content = [] 15 box = Box () box. add (" item ") # jeżeli nast ę puje kolizja spowodowana wykorzystaniem takich samych nazw, to dziedziczenie pól lub metod nast ę puje z tej klasy przekazanej jako argument bardziej po lewej stronie
53 Dziedziczenie - funkcja super skrypt-35.py class Box ( object ): # dziedziczenie po object nie jest 2 # wymagane w pythonie3, aby kod był # zgodny z nowym stylem pythona 4 def init ( self ): 6 self. content = [] 8 def add (self, item ): print (" Add in Box ") 10 self. content. append ( item ) 12 class BetterBox ( Box ): def add (self, item ): 14 print (" Add in BetterBox ") super ().add ( item ) 16 bbox = BetterBox () 18 bbox. add ("rę kawiczki ") print ( bbox. content )
54 Złe (??) użycie pola skrypt-36.py class Contener : 2 def add (self, item ): self. content. append ( item ) def print_content ( self ): 4 print ( self.name, ":", self. content ) 6 class BadBox ( Contener ): content = [] # pole bę dzie wsp ó lne dla wszystkich 8 # instancji BadBox ( objekt ów klasy BadBox ) def init ( self, name ): self. name = name 10 bbox1, bbox2 = BadBox (" czerwony "),BadBox (" niebieski ") 12 bbox1. add (" czerwone rę kawiczki ") 14 bbox1. add (" czerwona czapka ") bbox2. add (" niebieski szalik ") 16 bbox1. print_content () 18 bbox2. print_content () 20 class GoodBox ( Contener ): # deklaracja klasy może wyst ąpić def init ( self, name ): # właś ciwie w dowolnej części 22 self. content = [] # skryptu self. name = name
55 Polimorfizm na przykładzie skrzynek skrypt-37.py class Box : 2 def init ( self ): self. content = [] def add (self, item ): self. content. append ( item ) 4 def print_content ( self ): print ( self. content ) 6 class DoubleBox : def init ( self ): 8 self. content_1, self. content_2 = [],[] def print_content ( self ): 10 print ( self. content_1 + self. content_2 ) def add (self, item, nr =1) : 12 if nr ==1: self. content_1. append ( item ) elif nr ==2: self. content_2. append ( item ) 14 # lista róż nych typ ów skrzynek : 16 Boxes = [ Box (), DoubleBox (), Box ()] Items = [" szalik ", " czapka ", " mazak ", " klawiatura ", " kubek "] 18 from random import randint 20 for item in Items : # polimorfizm, gdy dodajemy do skrzynki Boxes [ randint (0,2) ]. add ( item ) 22 for box in Boxes : box. print_content () # oraz przy wyś wietlaniu
56 Funkcje specjalne w Pythonie - len() class Box : 2 def init ( self ): self. content = [] skrypt-38.py 4 def add (self, item ): 6 self. content. append ( item ) 8 # ta metoda zostanie wywo łana, gdy # interpreter wykona funkcj ę len (): 10 def len ( self ): print (" Checking len... ") 12 return len ( self. content ) 14 box = Box () print ( len ( box )) 16 box. add (" Asia ") 18 box. add (" Ula ") box. add (" Ola ") 20 print ( len ( box ))
57 Funkcje specjalne w Pythonie - konstruktor i dekonstruktor 1 class Box : skrypt-39.py 3 # konstruktor to ró wnie ż metoda specjalna : def init ( self ): 5 self. content = [] print (" Nowa skrzynka... ") 7 # dekonstruktor jest wywo ł ywany zawsze, 9 # gdy obiekt jest usuwany z pami ęci def del ( self ): 11 print (" Niszczenie skrzynki... ") 13 box1 = Box () del ( box1 ) 15 box2 = Box () print (" Komunikat... ")
58 Porównywanie obiektów Do implementacji sposobu porównywania dwóch obiektów służy następująca grupa funkcji specjalnych: cmp (self, inny), lt (self, inny), le (self, inny), eq (self, inny), ne (self, inny), gt (self, inny), ge (self, inny). Można zdefiniować sposoby konwersji obiektu do znanego typu przy pomocy takich funkcji specjalnych: int (self), str (self), float (self), complex (self)... Słowo kluczowe is służy do sprawdzenia czy dwie referencje odwołują się do tego samego obiektu. skrypt-40.py 1 class Box : 3 def init ( self ): self. content = [] 5 def add (self, item ): 7 self. content. append ( item ) 9 def eq (self, obj ): if not hasattr (obj, " content "): 11 return False elif len ( self. content ) == len ( obj. content ): 13 return True else : 15 return False
59 Porównywanie obiektów box1, box2 = Box (), Box () 2 box3 = box2 skrypt-40.py 4 box1. add (" telefon ") 6 if box1 is box3 : print (" box1 i box3 to ten sam box ") else : print (" box1 i box3 to inne boxy ") 8 if box2 is box3 : print (" box2 i box3 to ten sam box ") 10 else : print (" box2 i box3 to inne boxy ") 12 if box1 == box3 : print (" box1 i box2 maj ą po tyle samo przedmiot ów") else : print (" box1 i box2 nie maj ą po tyle samo przedmiot ów") 14 box3. add (" plakat ") 16 if box1 == box3 : print (" box1 i box2 maj ą po tyle samo przedmiot ów") 18 else : print (" box1 i box2 nie maj ą po tyle samo przedmiot ów")
60 Symulacja wielomodułowego urządzenia skrypt-41.py 1 class Dev : # klasa bazowa wszystkich modu łów def init (self, name ): 3 self. _name = str ( name ) print (" New dev, called ", self. _name ) 5 self. _output = None 7 self. _input = None self. _buffer = [] 9 def len ( self ): 11 return len ( self. _buffer ) 13 def connect (self, dev ): if not isinstance (dev, Dev ): 15 print ( self. _name, " Wrong type, cannot connect... ") else : 17 self. _output = dev dev. _input = self 19 print ( self. _name, " ->", dev. _name, " conected... ") 21 def run ( self ): pass
61 Symulacja wielomodułowego urządzenia skrypt-41.py 1 from random import random class Generator ( Dev ): # przyk ład klasy generatora 3 def run ( self ): self. _buffer. append ( random () -0.5) 5 class Converter ( Dev ): # przyk ład klasy konwertera def run ( self ): 7 while len ( self. _input ) >1: x = self. _input. _buffer. pop () 9 y = self. _input. _buffer. pop () self. _buffer. append ( complex (x,y)) 11 gen = Generator (" gen ") 13 conv = Converter (" conv ") gen. connect ( conv ) 15 # symulacja pracy modu łów 17 for n in range (5) : gen. run () conv. run () 19 print ( gen. _buffer ) 21 print ( conv. _buffer )
62 Dodatkowe informacje Strona domowa autora tej prezentacji: krzysztof.czarnecki Dodatkowe skrypty wykorzystane w tej prezentacji: Zachęcam do zapoznania się z innymi materiałami dydaktycznymi: Data utworzenia tej prezentacji: 21 października 2014
Wykresy i interfejsy użytkownika
Wrocław, 07.11.2017 Wstęp do informatyki i programowania: Wykresy i interfejsy użytkownika Wydział Matematyki Politechniki Wrocławskiej Andrzej Giniewicz Dzisiaj na zajęciach... Instrukcje sterujące Biblioteka
Bardziej szczegółowoKurs rozszerzony języka Python
Wykład 1. 6 października 2017 Plan wykładu 1 2 3 4 Plan wykładu 1 2 3 4 Wykładowca: Termin wykładu: piątek, 10:15 12:00, sala 119 Strona wykładu http://www.ii.uni.wroc.pl/ marcinm/dyd/python Materiały
Bardziej szczegółowoZaawansowany kurs języka Python
Wykład 1. 4 października 2013 Plan wykładu 1 2 3 4 Typy proste Kolekcje Instrukcje w języku (przypomnienie) Wykładowca: Termin wykładu: piątek, 10:15 12:00, sala 119 Strona wykładu http://www.ii.uni.wroc.pl/
Bardziej szczegół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ółowoWstęp do Pythona. Janusz Szwabiński. Python w obliczeniach numerycznych (C) 2005 Janusz Szwabiński p.1/36
Wstęp do Pythona Janusz Szwabiński szwabin@ift.uni.wroc.pl Python w obliczeniach numerycznych (C) 2005 Janusz Szwabiński p.1/36 Wstęp do Pythona Zasoby w sieci Python jako zaawansowany kalkulator Pierwszy
Bardziej szczegółowoKurs rozszerzony języka Python
Wykład 2. 13 października 2017 Plan wykładu Klasy i obiekty 1 Klasy i obiekty 2 3 4 Plan wykładu Klasy i obiekty 1 Klasy i obiekty 2 3 4 Deklaracja klasy Klasy i obiekty Przykłady class Figura: Pierwsza
Bardziej szczegół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ół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ółowoŚ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ół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ół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ółowoWstęp do programowania
Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 1 / 38 Przypomnienie Programowanie imperatywne Program
Bardziej szczegółowoPodstawy. Jan Koprowski <jan.koprowski@gmail.com> Politechnika Gdańska, FTiMS Informatyka Stosowana
Podstawy 1 Plan prezentacji Garść informacji Komentarze Stringi Wbudowane typy liczbowe Konstrukcja print Pobieranie danych Konstrukcja if Konstrukcja if else Konstrukcja if elif else Pętla while Pętla
Bardziej szczegół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ółowoWstę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ół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ół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ół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ół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ół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ół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ół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ół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ół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ół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ół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ółowoJęzyk C++ wykład VIII
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
Bardziej szczegółowoBash - wprowadzenie. Bash - wprowadzenie 1/39
Bash - wprowadzenie Bash - wprowadzenie 1/39 Bash - wprowadzenie 2/39 Czym jest bash? Rysunek : Zadanie powłoki to ukrycie wywołań systemowych Bash - wprowadzenie 3/39 Czym jest bash? Przykład polecenia:
Bardziej szczegół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ół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ółowoKurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/
Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i
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ół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ółowoRedis, skrypty w języku Lua
edis, skrypty w języku Lua 1/15 Redis, skrypty w języku Lua Technologie Zarządzania Treścią dr inż. Robert Perliński rperlinski@icis.pcz.pl Politechnika Częstochowska Instytut Informatyki Teoretycznej
Bardziej szczegółowoĆwiczenie 5. Python 3: Programowanie obiektowe i dziedziczenie
Wizualizacja danych Ćwiczenie 5 Python 3: Programowanie obiektowe i dziedziczenie Dziedziczenie Mając klasę bazową możemy utworzyć klasę pochodną, która będzie dziedziczyć po klasie bazowej czyli będzie
Bardziej szczegółowoWstę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ółowoZaawansowany kurs języka Python
Wykład 4. 23 października 2015 Plan wykładu 1 2 Pliki tekstowe Trwałość obiektów CSV Strumienie Plan wykładu 1 2 Pliki tekstowe Trwałość obiektów CSV Strumienie Protokół iteracyjny Producent Umiem dostarczać
Bardziej szczegół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ółowoOracle PL/SQL. Paweł Rajba.
Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 8 Wprowadzenie Definiowanie typu obiektowego Porównywanie obiektów Tabele z obiektami Operacje DML na obiektach Dziedziczenie -
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ół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ół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ółowoMetody getter https://www.python-course.eu/python3_object_oriented_programming.php 0_class http://interactivepython.org/runestone/static/pythonds/index.html https://www.cs.auckland.ac.nz/compsci105s1c/lectures/
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ół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ół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ół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ół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ółowoPHP: bloki kodu, tablice, obiekty i formularze
1 PHP: bloki kodu, tablice, obiekty i formularze SYSTEMY SIECIOWE Michał Simiński 2 Bloki kodu Blok if-else Switch Pętle Funkcje Blok if-else 3 W PHP blok if i blok if-else wyglądają tak samo i funkcjonują
Bardziej szczegółowoProgramowanie I C / C++ laboratorium 01 Organizacja zajęć
Programowanie I C / C++ laboratorium 01 Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-02-12 Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje
Bardziej szczegółowoWydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe
Wydział Zarządzania AGH Katedra Informatyki Stosowanej Podstawy VBA cz. 1 Programowanie 1 Program wykładu Struktura programu Instrukcja przypisania Wprowadzanie danych Wyprowadzanie wyników Instrukcja
Bardziej szczegółowoPython 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ółowoWykład 2 Składnia języka C# (cz. 1)
Wizualne systemy programowania Wykład 2 Składnia języka C# (cz. 1) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Budowa projektu 2 Struktura programu
Bardziej szczegółowoProgramowanie RAD Delphi
Programowanie RAD Delphi Dr Sławomir Orłowski Zespół Fizyki Medycznej, Instytut Fizyki, Uniwersytet Mikołaja Kopernika w Toruniu Pokój: 202, tel. 611-32-46, e-mial: bigman@fizyka.umk.pl Delphi zasoby Aplikacje
Bardziej szczegółowoProgramowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.
Bardziej szczegółowoTechnologie cyfrowe semestr letni 2018/2019
Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 7 (08.04.2019) Wikipedia Programowanie komputerów proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów
Bardziej szczegółowoTemat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.
Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego. Czas realizacji zajęć: 135 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Zmienne śrowiskowe oraz ich eksportowanie, argumenty
Bardziej szczegółowoSzablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Bardziej szczegół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ółowoŚrodowisko programisty
Środowisko programisty 1/35 Środowisko programisty Język Python cz. 3 dr inż. Grzegorz Michalski 7 kwietnia 2014 Środowisko programisty 2/35 Kod samotestujący Tworzenie def t e s t e r ( ) : p r i n t
Bardziej szczegółowoPython wstęp. Michał Bereta www.michalbereta.pl
Python wstęp Michał Bereta www.michalbereta.pl Wprowadzenie... 1 Źródła wiedzy... 1 Uruchomienie interpretera Pythona... 2 Python jako kalkulator użycie interaktyne... 2 Uruchamianie skryptów z plików...
Bardziej szczegółowoTEMAT : KLASY DZIEDZICZENIE
TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą
Bardziej szczegółowoTypy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura
Programowanie komputerów Programowanie obiektowe. Typy zmiennych proste i złożone Typy zmiennych "wbudowane", tj. identyfikowane przez słowa kluczowe, są określane jako proste: int short long float double
Bardziej szczegółowoProgramowanie robota mobilnego E-puck w języku Python
Programowanie robota mobilnego E-puck w języku Python Joanna Ratajczak Mirela Kaczmarek 1 Zasady bezpieczeństwa W trakcie pracy z robotem E-puck, rys. 1, należy zachować ostrożność. Pod żadnym pozorem
Bardziej szczegółowo2. 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ółowoJęzyki i metody programowania
Języki i metody programowania Wykład 3 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 Wartości boolowskie
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ół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ół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ółowoWprowadzenie 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ół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ół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ółowoJęzyki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
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ół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ół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ółowoPODSTAWY BAZ DANYCH 13. PL/SQL
PODSTAWY BAZ DANYCH 13. PL/SQL 1 Wprowadzenie do języka PL/SQL Język PL/SQL - rozszerzenie SQL o elementy programowania proceduralnego. Możliwość wykorzystywania: zmiennych i stałych, instrukcji sterujących
Bardziej szczegółowoPrzeciążanie operatorów
Instrukcja laboratoryjna nr 4 Programowanie w języku C 2 (C++ poziom zaawansowany) Przeciążanie operatorów dr inż. Wilk-Jakubowski Jacek mgr inż. Lasota Maciej dr inż. Kaczmarek Tomasz Wprowadzenie Oprócz
Bardziej szczegółowoJava - tablice, konstruktory, dziedziczenie i hermetyzacja
Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja
Bardziej szczegółowoPlan. 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ół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ół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ół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ół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ół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ółowoTEI. Dr Wojciech Palubicki
TEI Dr Wojciech Palubicki Tree growth (PhD) Prof. Przemyslaw Prusinkiewicz Lab PhD 2012 Modeling Scale Moss branching Dr. Yoan Coudert, Dr. Jill Harrison and Prof. Ottoline Leyser Tree growth (PhD) Prof.
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ółowoWprowadzenie do Python
Wprowadzenie do Python Marcin Orchel 1 Środowisko Python Zalecane korzystanie z dystrybucji Anaconda. W systemie linux może być już dostępny Python. Sprawdzenie wersji Pythona, python -V. Uruchomienie
Bardziej szczegółowoPLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),
PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 1. Wprowadzenie do aplikacji internetowych
Bardziej szczegółowoDefiniowanie własnych klas
Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor:
Bardziej szczegółowoDIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0
Uwaga: DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 1. Zostały pominięte diagramy: CYFRA, CYFRA SZESNASTKOWA, ZNAK i LITERA. Nie została uwzględniona możliwość posługiwania się komentarzami. 2. Brakuje
Bardziej szczegółowoPodstawy programowania w Pythonie
Podstawy programowania w Pythonie Wykład 5 dr Andrzej Zbrzezny Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 7 listopada 2012 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania
Bardziej szczegółowoListy, krotki, słowniki, funkcje
Listy, krotki, słowniki, funkcje Listy Lista jest najbardziej elastycznym typem obiektu uporządkowanej kolekcji. Może zawierać różne typy danych - liczby, łańcuchy znaków, a nawet inne listy. Tworzy się
Bardziej szczegółowoTOPIT Załącznik nr 3 Programowanie aplikacji internetowych
Szkolenie przeznaczone jest dla osób chcących poszerzyć swoje umiejętności o tworzenie rozwiązań internetowych w PHP. Zajęcia zostały przygotowane w taki sposób, aby po ich ukończeniu można było rozpocząć
Bardziej szczegół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ół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ółowoWyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w
Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w obrębie skryptu. Wyrażenia include() i require() są niemal
Bardziej szczegółowoG PROGRAMMING. Part #4
G PROGRAMMING Part #4 Tablice, wykresy, klastry Tablice Zbiór elementów danych tego samego typu Zastosowanie gromadzenie danych z powtarzalnych operacji odczytu, obliczeń (magazynowanie danych przebiegów
Bardziej szczegółowo