D-10 pokój 227 PROGRAMOWANIE W JĘZYKU PYTHON Dr inż. Grażyna KRUPIŃSKA
Prezentacja algorytmu w języku programowania Aby przedstawić algorytm w postaci programu, trzeba go napisać jako ciąg instrukcji języka programowania. Każda instrukcja podobnie jak skrzynka w schemacie blokowym odpowiada określonej operacji, dlatego też kolejność występowania instrukcji w programie określa kolejność wykonywania operacji. Nauka programowania nie polega jednak na nauczeniu się na pamięć instrukcji danego języka, ale na zrozumieniu zasad ich działania oraz na umiejętnym ich zastosowaniu. 2
Programowanie algorytm rozwiązuje problem program realizuje algorytm komputer wykonuje program 3
Programowanie PROBLEM ALGORYTM PROGRAM ŹRÓDŁOWY ETAPY PROGRAMOWANIA 0. WYBÓR-ZNALEZIENIE- OPRACOWANIE ALGORYTMU 1. IMPLEMENTACJA to zapis algorytmu w języku programowania PROGRAM WYKONYWALNY KOMPUTER 2. TRANSLACJA to tłumaczenie programu źródłowego na kod maszynowy 3. URUCHOMIENIE programu 4. TESTOWANIE programu
Program źródłowy i wynikowy PROGRAM (KOD) ŹRÓDŁOWY to algorytm zapisany w języku programowania (języku wysokiego poziomu) Przejrzysta struktura (reguły języka) zrozumiały dla człowieka Niezależność od sprzętu PROGRAM (KOD) WYNIKOWY to program zapisany w języku wewnętrznym (maszynowym) procesora Instrukcje odpowiadają instrukcjom konkretnego procesora
Program źródłowy wynikowy TRANSLACJA - tłumaczenie programu źródłowego na kod maszynowy. Używamy do tego programów zwanych translatorami. INTERPRETERY każde polecenie języka wysokiego poziomu jest na bieżąco zamieniane na kod maszynowy i wykonywane (do wykonania programu potrzebne jest uruchomienie interpretera) KOMPILATORY cały program źródłowy jest tłumaczony na kod maszynowy i zapisywany w pliku wykonywalnym (*.exe). Raz skompilowany program jest gotowy do użycia. 6
Program źródłowy wynikowy 7
Zmienne Zmienna jest synonimem pewnego obszaru pamięci, służącego do przechowywania danych. Posiada trzy podstawowe atrybuty: symboliczną nazwę identyfikator, miejsce przechowywania, wartość; Za pomocą nazwy możemy w kodzie źródłowym odwołać się do zawartości. W programie wartość zmiennej może być odczytywana lub zastępowana nową wartością, tak więc wartość zmiennej może zmieniać się w trakcie wykonywania programu. Nazwa i miejsce przechowywania nie zmieniają się w trakcie istnienia zmiennej
Notacja nadmiarowa Wartość dziesiętna liczby zapisanej w dwójkowym kodzie z nadmiarem b n-1 b n-2...b 2 b 1 b 0 (BIAS) = b n-1 2 n-1 + b n-2 2 n-2 +... + b 2 2 2 + b 1 2 1 + b 0 2 0 - bias gdzie b - bit, cyfra dwójkowa 0 lub 1 n - liczba bitów w zapisie liczby bias - nadmiar, odchyłka w stosunku do naturalnych wartości słów kodowych 00011111 (BIAS=63) = 2 4 + 2 3 + 2 2 + 2 1 + 2 0-63 00011111 (BIAS=63) = 31-63 00011111 (BIAS=63) = (-32) (10)
Liczby duże i małe Zapisywanie liczb oznaczających bardzo duże lub bardzo małe wartości notacja naukowa. Gwiazda Proxima Centauri znajduje się w odległości 9460800000000 [km], 9,4608 x 1012. Masa elektronu wynosi me = 0,00000000000000000000000000091095 [g], czyli 9,1095 x 10-28 [g]
Zapis zmiennopozycyjny Liczba w tym zapisie składa się z trzech części: liczby stałoprzecinkowej podstawy systemu potęgi zwanej wykładnikiem lub cechą. L = m * p c m mantysa p podstawa systemu c cecha - wykładnik potęgowy
Zapis zmiennopozycyjny L = m * p c 325 10 20 = 32,5 10 21 = 3,25 10 22 22 = 0,325 10 23 = dokładność liczby wielkość liczby Znormalizowana liczba zmiennoprzecinkowa to taka, w której mantysa spełnia nierówność: p > m 1
Standard zapisu zmiennoprzecinkowego IEEE 754 Standard IEEE 754 definiuje dwa rodzaje liczb zmiennoprzecinkowych: 32-bitowe (pojedynczej precyzji - ang. single precision) 64-bitowe (podwójnej precyzji - ang. double precision). Format zapisu zmiennoprzecinkowego IEEE 754 32 bity (1 bit) b 31 (8 bitów) b 30... b 23 (BIAS=127) (23 bity)b 22... b 0 (U1) 64 bity (1 bit) b 63 (11 bitów) b 62... b 52 (BIAS=1023) (52 bity)b 51... b 0 (U1) Opis pół bitowych bit znaku bity kodu cechy bity mantysy
Standard zapisu zmiennoprzecinkowego IEEE 754 Z kodu wydzielamy poszczególne pola Do odczytanej mantysy dodajemy na początku 01 i przecinek - otrzymujemy dodatnią liczbę stałoprzecinkową w kodzie U1. Obliczamy wartość cechy i mantysy, a następnie wyliczamy wartość liczby wg wzoru: L (IEEE 754) = m * p c = (-1) z *m*2 c 010000101100100000000000000000000 10010000000000000000000 (IEEE 754) ) z = 0 - liczba jest dodatnia c = 10000101 (BIAS=127) = 133-127 = 6 m = 01,10010000000000000000000 (U1) = 1 9 / 16
Standard zapisu zmiennoprzecinkowego IEEE 754 Z kodu wydzielamy poszczególne pola L (IEEE 754) = (-1) z * m * 2 c = (-1) 0 * 1 9 / 16 * 2 6 = 25 / 16 * 2 6 = Do 25 * odczytanej 2 2 = 25 * 4 = mantysy 100 (10) dodajemy na początku 01 i przecinek - 01000010110010000000000000000000 otrzymujemy dodatnią liczbę stałoprzecinkową (IEEE 754) w = kodzie 100 (10) U1. Obliczamy wartość cechy i mantysy, a następnie wyliczamy wartość liczby wg wzoru: L (IEEE 754) = m * p c = (-1) z *m*2 c 010000101100100000000000000000000 10010000000000000000000 (IEEE 754) ) z = 0 - liczba jest dodatnia c = 10000101 (BIAS=127) = 133-127 = 6 m = 01,10010000000000000000000 (U1) = 1 9 / 16
zaprojektowane z myślą o interakcji z użytkownikiem (tryb interaktywny) Przenośne osadzane w aplikacjach (np. Python w Blenderze) często używane do jednorazowych zadań (np. administracyjnych) niektóre nadają się do tworzenia samodzielnych aplikacji zwięzłe
Czym jest Python Pythona stworzył we wczesnych latach 90. holenderski programista Guido van Rossum: Ponad 6 lat temu, w grudniu 1989, szukałem hobbystycznego projektu programistycznego, który zająłby mnie w tygodniu przed świętami. Moje biuro miało być zamknięte, ale miałem domowy komputer. Zdecydowałem się napisać interpreter dla nowego języka skryptowego, nad którym wtedy myślałem: pochodną ABC, która przemawiałaby do hakerów Uniksa i C. Jako roboczy tytuł wybrałem Python, będąc wielkim fanem Latającego Cyrku Monty Pythona. (Wprowadzenie do Programming Python, Mark Lutz, wyd. O'Reilly).
Czym jest Python Python jest interpreterem poleceń. Mamy dwie możliwości ich wydawania interaktywnie z linii poleceń, zapisując polecenia w pliku tekstowym i wykonując je jako program. python3 nazwa.py, gdzie nazwa jest nazwą pliku execfile('nazwa.py') w linii poleceń interpretera, aby uruchomić program.
Czym jest Python Python jest interpreterem poleceń. Mamy dwie możliwości ich wydawania interaktywnie z linii poleceń, zapisując polecenia w pliku tekstowym i wykonując je jako program. python3 nazwa.py, gdzie nazwa jest nazwą pliku execfile('nazwa.py') w linii poleceń interpretera, aby uruchomić program.
Python - zasady Python rozróżnia wielkość liter, np. print znaczy co innego, niż Print nie może być żadnych (niepotrzebnych) spacji ani też znaków tabulacji na początku jakiejkolwiek lin # na początku linii oznacza komentarz
Python - zasady Przez znaki niewidoczne rozumiemy spację, tabulator itp. Rozpoczęcie od nich linii tekstu nazywamy wcięciem linii. Spacje i znaki tabulacji na początku linii są brane pod uwagę przy określaniu stopnia wcięcia danej linii, co z kolei pozwala Pythonowi grupować polecenia. Polecenia, które są tak samo wcięte tworzą blok poleceń.
Python - help
Python - help
Python - zasady Trybu interaktywnego używa się do: obliczeń matematycznych testowania hipotez operacji na danych i wizualizacji danych testowania i modyfikowania wycinków kodu przed wstawieniem ich do większych programów analizowania stanu obiektów w pamięci
Python - zasady Tryb interaktywny Pythona może być używany jako kalkulator.
Python - zasady Tryb interaktywny Pythona może być używany jako kalkulator. potęgowanie reszta z dzielenia wyrażenie złożone
Python - zasady całkowite w zapisie szesnastkowym
Python - zasady W języku Python dostępne są liczby całkowite (0,1,-2,...) typ int boolowskie (tylko wartości False oraz True) typ bool zmiennoprzecinkowe (3.14,2.718, ) typ float zespolone (2+3j,1j,1+0j) typ complex Operatory arytmetyczne: dodawanie + odejmowanie mnożenie, dzielenie /, dzielenie całkowite // reszta z dzielenia całkowitego % pot ęgowanie
Python - zasady Operatory o tym samym priorytecie są obliczane od lewej do prawej. W algebrze mówimy, że są lewostronnie łączne Operatory z operandami typów mieszanych przekształcają operandy boolowskie w całkowite, zmiennoprzecinkowe lub zespolone operandy całkowite w zmiennoprzecinkowe lub zespolone operandy zmiennoprzecinkowe w zespolone.
Python - zasady W trybie interaktywnym, ostatnio wydrukowane wyrażenie przypisywane jest do zmiennej _. Zmienna _ powinna być traktowana jako zmienna tylko do odczytu
Python - zmienne Nazwy zmiennych w Pythonie mogą być dowolnie długie i mogą zawierać zarówno małe, jak i duże litery alfabetu małe i duże litery są rozróżnialne (case sensitive) Jedną z ważnych cech Pythona jest typowanie dynamiczne, które polega na tym, że typy przypisywane są do wartości przechowywanych w zmiennych dopiero w trakcie działania programu. Interpreter ustala typy na podstawie samych wartości S a + b
Python - napisy Napisy możemy podstawiać jak liczby do zmiennych
Python - wprowadzanie danych tekst, który pojawia się na terminalu funkcja wczytująca wczytuje string wartość zmiennej (bez apostrofów) zawartość zmiennej string (napis)
Python - wprowadzanie danych rzutowanie zmiana typu na int
Python - wprowadzanie danych
Python - wprowadzanie danych
Python - wprowadzanie danych
Python wyrażenia logiczne Wyrażenie logiczne to wyrażenie, które jest albo prawdą (True) albo fałszem (False) Operatory porównania a) < (mniejszy niż), b) > (większy niż), c) == (równy), d)!= (różny) e) <= (mniejszy lub równy), f) >= (większy lub równy),
Python wyrażenia logiczne Wyrażenie logiczne to wyrażenie, które jest albo prawdą (True) albo fałszem (False) Operatory porównania a) < (mniejszy niż), b) > (większy niż), c) == (równy), d)!= (różny) e) <= (mniejszy lub równy), f) >= (większy lub równy),
Python wyrażenia logiczne Koniunkcja - AND Negacja - NOT x ~x 0 1 1 0 x y x y 0 1 0 0 0 0 1 1 1 1 0 0 Alternatywa - OR x y x + y 0 1 1 0 0 0 1 1 1 1 0 1
Python porównania wielokrotne
Python porównania łączone FALSE == FALSE TRUE FALSE!= FALSE FALSE
Python wyrażenia logiczne Wyrażenie logiczne mogą być łączone przy pomocy operatorów logicznych a) and (koniunkcja), b) or (alternatywa), c) not (zaprzeczenie),
Python wyrażenia warunkowe Wyrażenie warunkowe to jedno z ważniejszych poleceń pozwalających kontrolować wywołanie programu. Dzięki niemu możemy spowodować, aby pewne partie programu wykonywały się tylko po spełnieniu pewnych warunków. Składnia podstawowego wyrażenia warunkowego jest następująca: if <warunek>: <instrukcje> if <warunek>: <instrukcje> else: <instrukcje>
Python instrukcja warunkowa 46 a 0 Tak wynik a Nie Wypisz wynik
Python instrukcja warunkowa 47 Tak wynik a a 0 Nie wynik -a Wypisz wynik
Python wyrażenia warunkowe Wyrażenia warunkowe można uogólnić na więcej (opcjonalnych) warunków. Składnia ma wówczas postać if <warunek1>: <instrukcje> elif <warunek2>: <instrukcje> else: <instrukcje> jeśli spełniony jest warunek1 wykonywane są instrukcje z bloku if jeśli spełniony jest warunek2, wykonywane są instrukcje z bloku elif jeżeli żaden z powyższych warunków nie jest spełniony, wykonywany jest blok else
Python wyrażenia warunkowe Wyrażenia warunkowe można uogólnić na więcej (opcjonalnych) warunków. Składnia ma wówczas postać jeśli spełniony jest warunek1 wykonywane są instrukcje z bloku if jeśli spełniony jest warunek2, wykonywane są instrukcje z bloku elif jeżeli żaden z powyższych warunków nie jest spełniony, wykonywany jest blok else
Python instrukcja warunkowa 50 Wyrażenia warunkowe można zagnieżdżać
Python pętle 51 Pętla for - pozwala na powtarzanie instrukcji określoną ilość razy for <zmienna> in <sekwencja>: <instrukcje> Tak Czy istnieją elementy sekwencji, które nie zostały przetworzone Nie instrukcje zmienna = kolejny_element Wynik
Python pętle 52 Funkcja wbudowana range jest uniwersalną funkcją torzącą skończony ciąg arytmetyczny. o range(stop) start = 0, krok = 1 o range(start, stop) krok = 1 o range(start, stop, krok) W rzypadku gdy krok > 0, elementy zakresu r określone są wzorem r[j] = start + krok*j, gdzie j >= 0 oraz r[j] < stop. W przypadku gdy krok < 0, elementy zakresu r określone są wzorem r[j] = start + rok*j, gdzie j >= 0 oraz r[j] > stop.
53 Python pętle
54 Python pętle
55 Python pętle
Python grafika żółwia 56 Grafika żółwia w Pythonie dostępna jest poprzez moduł turtle: import turtle cwiczenia/zolw_1.py
Python grafika żółwia 57 Grafika żółwia w Pythonie dostępna jest poprzez moduł turtle: import turtle
Python pętle 58 Pętle mogą zawierać inne pętle mówimy wtedy o nich, że są zagnieżdżone. for x in range(1,11): print for y in range(1,11): #przejście do nowego wiersza print ("%3i" % (x*y)) cwiczenia/zfor_for.py
Python pętle 59 Do tworzenia pętli o nieznanej liczbie powtórzeń w Pythonie służy instrukcja while while <warunek>: <instrukcje> Warunek Prawda Fałsz instrukcje zmienna = kolejny_element Wynik
Python pętle 60 Do tworzenia pętli o nieznanej liczbie powtórzeń w Pythonie służy instrukcja while while <warunek>: <instrukcje> n = 100 s = 0 counter = 1 while counter <= n: s = s + counter counter += 1 print ("Suma of 1 do %d: %d" % (n,s))
Python funkcje 61 Python pozwala również tworzyć programiście własne funkcje. Definicja funkcji musi zawierać: nagłówek funkcji obejmujący nazwę funkcji, która pozwoli zidentyfikować funkcję w pozostałej części programu listę argumentów, która funkcja trzymuje na początku działania programu ciało funkcji, zawierające instrukcje, które zostaną wykonane w momencie wywołania (użycia) funkcji jeżeli funkcja ma zwracać jakiś rezultat, musi zawierać odpowiednią instrukcję
Python funkcje 62 składnia definicji funkcji def nazwa_funkcji ( lista_parametrów): instrukcje_do_wykonania
Python funkcje 63 W celu zapewnienia, że funkcja jest zdefiniowana przed jej pierwszym użyciem, należy rozumieć, w jakiej kolejności wykonywane są instrukcje. Kolejność wykonywania instrukcji jest nazywana przepływem sterowania. Wykonanie programu zaczyna się zawsze od jego pierwszej instrukcji. Instrukcje są wykonywane pojedynczo, w kolejności od góry do dołu. Definicje funkcji nie zmieniają przepływu sterowania programu. Instrukcje wewnątrz funkcji nie są wykonywane, aż do momentu, gdy funkcja zostanie
64 Python funkcje
65 Python funkcje
Python typy sekwencyjne 66 Typ napisowy - string Napisy są sekwencjami znaków. Każdy typ sekwencyjny pozwala na dostęp do każdego swojego elementu z osobna. Aby uzyskać dostęp do znaku na określonej pozycji podajemy jej indeks (numer porządkowy liczony od lewej, zero oznacza pierwszy znak napisu) w nawiasach kwadratowych bezpośrednio po napisie
67 Python typy sekwencyjne
68 Python typy sekwencyjne
Python typy sekwencyjne 69 Do przechowywania sekwencji innych niż napisy mamykrotki (tuples) oraz listy (lists) Elementy zarówno krotek, jak i list mogą być dowolnego typu. Krotki są typem niezmiennym - mają z góry ustaloną długość, zmiana wartości poszczególnych elementów z osobna nie jest możliwa. Listy są typem zmiennym - można je łatwo skracać i wydłużać; jest możliwa zmiana wartości poszczególnych elementów z osobna.
Python typy sekwencyjne 70 Tworzenie i używanie list lista1 = [1, 2, 3] lista złożona z trzech liczb naturalnych
Python typy sekwencyjne 71 Tworzenie i używanie list lista3 = [1.0, 2, "trzy"] lista złożona z trzech elementów różnych typów
Python typy sekwencyjne 72 Tworzenie i używanie list
Python tablice 73 Można dodawać dowolny element na końcu listy przy pomocy metody append. mylist = [] mylist.append(5) mylist.append(27) mylist.append(3) mylist.append(12) mylist
Python 74 Można wymieniać zawartość zmiennych