Wykresy i interfejsy użytkownika

Podobne dokumenty
Wrocław, Wstęp do informatyki i programowania: liczby pierwsze. Wydział Matematyki Politechniki Wrocławskiej.

Pętla for. Wynik działania programu:

1 Podstawy c++ w pigułce.

Wprowadzenie do Python

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

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

Podstawy Programowania Podstawowa składnia języka C++

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

Pętle. Dodał Administrator niedziela, 14 marzec :27

Liczby losowe i pętla while w języku Python

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

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

Przetwarzanie i analiza danych w języku Python / Marek Gągolewski, Maciej Bartoszuk, Anna Cena. Warszawa, Spis treści

1 Podstawy c++ w pigułce.

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Warunki logiczne instrukcja if

do MATLABa programowanie WYKŁAD Piotr Ciskowski

Ą Ą Ł Ą

Ł Ą Ż Ż Ó ż ć

Ł


ż ą Ę ą ą Ż ą ż ż ą Ż Ż ż ą ą ż ć Ż Ź ż ż ą ą Ł ć Ó ż Ó Ć

Ł ó ż ż Ż Ż Ż Ż Ż Ż Ż Ź Ź ż

Matlab Składnia + podstawy programowania

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

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

Podstawy Programowania C++

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Ćwiczenie 1. Wprowadzenie do programu Octave

Programowanie robota mobilnego E-puck w języku Python

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Modelowanie rynków finansowych z wykorzystaniem pakietu R

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Wstęp do programowania

Symulacja obliczeń kwantowych

Zapis algorytmów: schematy blokowe i pseudokod 1

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Cw.12 JAVAScript w dokumentach HTML

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Instrukcje sterujące

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

Ź Ć Ó Ó

Przetwarzanie sygnałów

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Pętle. Programowanie komputerowe

Blockly Kodowanie pomoc.

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Ł Ó Ó Ó Ł Ó Ó Ł Ł Ó Ą Ć Ó Ą ć Ó ć ć

ć Ę ó ż ć

Języki i metody programowania

Ł ż Ó Ó ć Ó Ć

ż Ż Ż Ż Ż Ż

ą ą ż ąż Ę ć ć ż ż ż ć ą ą

ż ć

C e l e m c z ę ś c i d y s k u s y j n e j j e s t u ś w i a d o m i e n i e s o b i e, w o p a r c i u o r o z w a ż a n i a P i s m a Ś w.

ź Ą Ę Ę ć Ł ć ć ć ć ć ć ć

ć ć Ą ć Ęć Ó Ą ź ć ć ć ć ź ź Ą ć Ę ć ź ć ć ć ź ć ź ć ć ć Ś Ź ź

Programowanie - wykład 4

W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. for (w1;w2;w3) instrukcja

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Ą Ł ć Ę ć Ę ć

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

ć Ś Ś Ść

ż ż ż ż Ź ż Ą ż ż ż Ś

Ź ć Ż ć ć Ó

ź Ś Ó Ó Ż

Ą Ź ć ć Ó Ó Ć Ć Ś

ć Ę ż Ł ź ż ź Ś Ś ź ć Ć ż Ś ż Ś

ć ć ć ć ć Ł

ć ć Ł ć ć ć Ę Ę

Ż ć ć Ł Ł ć ć Ł ć ć

ć ć ć Ó ć Ó ć Ę ć Ł ć Ś ć Ę ć Ą ć ć ć ć ć ć ć

Ę Ą Ż Ż Ę Ą

ć ć Ł ć Ź ć Ł ź ć Ś ć ć Ż Ł Ż ć ż ć

Ó Ś Ś ć

Ó Ł Ę ź ź ź ć Ó ć

Ą Ó Ś ź Ś

ć ć ź ć ć ć Ść ć ź ź ź ć ź Ą ź

Ś Ż Ó Ś ż Ó ć ź ż ż Ą

Ś

Ź ź Ź

Ł ż

ź Ę

Struktura pliku projektu Console Application

Ć ć ć Ś ć

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Ę Ą Ł Ę Ł ć

Ł Ą Ż Ą Ż Ż ź

Ó Ż Ó ź Ć

Ż Ć Ź Ź Ż Ą Ą ć Ź Ź Ć Ę

Ę Ą Ż ć Ę Ż Ł ź

ć Ę Ę ć Ę ć Ę Ę Ę

Ą Ż Ę Ź Ł Ż Ł Ż Ż Ż

ć Ę ć ć ć ć ą

Ą Ą Ł

Ą Ą ć Ę ć

Ą Ą

Transkrypt:

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 NumPy Biblioteka Matplotlib Biblioteka ipywidgets 1/35

Instrukcje sterujące Instrukcje sterujące 2/35

Instrukcje sterujące if Instrukcja if jest podobna do filtrów w produktowaniu list oraz wyrażenia if. Od filtru różni się tym, że może wystąpić w dowolnym miejscu bloku jako samodzielna instrukcja, od wyrażenia różni się tym, że nie posiada wartości. Instrukcja ta oznacza w przybliżeniu jeżeli. Instrukcje sterujące 3/35

Instrukcje sterujące if Instrukcja if jest podobna do filtrów w produktowaniu list oraz wyrażenia if. Od filtru różni się tym, że może wystąpić w dowolnym miejscu bloku jako samodzielna instrukcja, od wyrażenia różni się tym, że nie posiada wartości. Instrukcja ta oznacza w przybliżeniu jeżeli. Instrukcję if zapisujemy w następujący sposób. i f warunek : # b l o k kodu, gdy warunek t o prawda Instrukcje sterujące 3/35

Więcej o if Instrukcja if może mieć dowolną liczbę kontynuacji zapisywanych jako elif. Są one sprawdzane, gdy wcześniejsze warunki nie zachodzą. Oznaczają mniej więcej w przeciwnym razie, jeżeli. Instrukcje sterujące 4/35

Więcej o if Instrukcja if może mieć dowolną liczbę kontynuacji zapisywanych jako elif. Są one sprawdzane, gdy wcześniejsze warunki nie zachodzą. Oznaczają mniej więcej w przeciwnym razie, jeżeli. i f warunek1 : # co, gdy warunek1 j e s t prawdą e l i f warunek2 : # co, gdy warunek1 j e s t f a ł szem, a l e 2 prawdą e l i f warunek3 : # co, gdy 1 i 2 j e s t f a ł szem, a l e 3 prawdą Instrukcje sterujące 4/35

To nie koniec if Niezależnie od tego, czy występowały wcześniej warunki elif czy nie, warunek równoważny elif True, zapisujemy jako else. Oznacza on mniej więcej w przeciwnym razie. Instrukcje sterujące 5/35

To nie koniec if Niezależnie od tego, czy występowały wcześniej warunki elif czy nie, warunek równoważny elif True, zapisujemy jako else. Oznacza on mniej więcej w przeciwnym razie. i f n%2==0: p r i n t ( n, " j e s t l i c z b ą parzyst ą " ) e l se : p r i n t ( n, " j e s t l i c z b ą n i e p a r z y s t ą " ) Instrukcje sterujące 5/35

Pętla for Pętla for jest tym dla generatorów z produktowania list, czym instrukcja if dla filtrów. Ma podobne działanie, ale może występować w dowolnym bloku kodu. Oznacza mniej więcej dla. Łączy się z instrukcją in oznaczającą mniej więcej należących do. Instrukcje sterujące 6/35

Pętla for Pętla for jest tym dla generatorów z produktowania list, czym instrukcja if dla filtrów. Ma podobne działanie, ale może występować w dowolnym bloku kodu. Oznacza mniej więcej dla. Łączy się z instrukcją in oznaczającą mniej więcej należących do. for zmienna in l i s t a : # kod, k t ó ry ma s i ę wykona ć # d l a ka ż dego elementu l i s t y Instrukcje sterujące 6/35

Przykład L = [ a, b, c ] for x in L : p r i n t ( " teraz x to ", x ) Instrukcje sterujące 7/35

Przykład L = [ a, b, c ] for x in L : p r i n t ( " teraz x to ", x ) W wyniku dostaniemy teraz x to a teraz x to b teraz x to c Instrukcje sterujące 7/35

Produktowanie za pomocą instrukcji Rozważmy kod L = l i s t ( range ( 1 0 ) ) X = [ ( x, y ) for x in L for y in L i f y<x ] Instrukcje sterujące 8/35

Produktowanie za pomocą instrukcji Rozważmy kod L = l i s t ( range ( 1 0 ) ) X = [ ( x, y ) for x in L for y in L i f y<x ] Jest to mniej więcej to samo, co L = l i s t ( range ( 1 0 ) ) X = [ ] for x in L : for y in L : i f y<x : X. append ( ( x, y ) ) Instrukcje sterujące 8/35

break i continue W pętlach są dwie dodatkowe instrukcje break oraz continue. Komenda break powoduje przerwanie pętli, natomiast continue powoduje zignorowanie reszty bloku kodu i pobranie nowego elementu z listy. Instrukcje sterujące 9/35

break i continue W pętlach są dwie dodatkowe instrukcje break oraz continue. Komenda break powoduje przerwanie pętli, natomiast continue powoduje zignorowanie reszty bloku kodu i pobranie nowego elementu z listy. for x in range (1000000): i f x > 10: break i f x%2 == 0: continue p r i n t ( x ) Instrukcje sterujące 9/35

break i continue W pętlach są dwie dodatkowe instrukcje break oraz continue. Komenda break powoduje przerwanie pętli, natomiast continue powoduje zignorowanie reszty bloku kodu i pobranie nowego elementu z listy. for x in range (1000000): i f x > 10: break i f x%2 == 0: continue p r i n t ( x ) Na ekranie zobaczymy liczby: 1, 3, 5, 7, 9. Instrukcje sterujące 9/35

else w for Co ciekawe, w języku Python do pętli for można dodać instrukcję else. Fragment kodu z else zostanie wykonany, pętla zakończy się bez użycia break. Instrukcje sterujące 10/35

else w for Co ciekawe, w języku Python do pętli for można dodać instrukcję else. Fragment kodu z else zostanie wykonany, pętla zakończy się bez użycia break. for x in L : i f x%2==0: p r i n t ( "W L j e s t l i c z b a parzysta " ) break e l se : p r i n t ( "W L nie ma l i c z b y p a r z y s t e j " ) Instrukcje sterujące 10/35

Czy to wszystko? Nie! Okazuje się, że jest jeszcze jeden rodzaj pętli. Pętle te mają ogólniejszą budowę, ponieważ nie muszą przechodzić po liście. Pętla ta to while, która mniej więcej oznacza dopóki. Instrukcje sterujące 11/35

Czy to wszystko? Nie! Okazuje się, że jest jeszcze jeden rodzaj pętli. Pętle te mają ogólniejszą budowę, ponieważ nie muszą przechodzić po liście. Pętla ta to while, która mniej więcej oznacza dopóki. while warunek : # wykonuje b l o k tak d ł ugo, # dopó k i warunek j e s t prawdą Instrukcje sterujące 11/35

Czy to wszystko? Nie! Okazuje się, że jest jeszcze jeden rodzaj pętli. Pętle te mają ogólniejszą budowę, ponieważ nie muszą przechodzić po liście. Pętla ta to while, która mniej więcej oznacza dopóki. while warunek : # wykonuje b l o k tak d ł ugo, # dopó k i warunek j e s t prawdą W instrukcji while możemy użyć break i continue oraz else. Działają tak samo, jak w pętli else. Instrukcje sterujące 11/35

Przykład z while a, b = 0, 1 while a < 100: p r i n t ( a ) a, b = b, a+b Instrukcje sterujące 12/35

Przykład z while a, b = 0, 1 while a < 100: p r i n t ( a ) a, b = b, a+b Wyświetli się 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89. Instrukcje sterujące 12/35

To już wszystko? Nie, ale wystarczy nam na długo. Poznaliśmy znaczną część języka Python! Nie poznaliśmy: programowania obiektowego, Instrukcje sterujące 13/35

To już wszystko? Nie, ale wystarczy nam na długo. Poznaliśmy znaczną część języka Python! Nie poznaliśmy: programowania obiektowego, wyjątków, Instrukcje sterujące 13/35

To już wszystko? Nie, ale wystarczy nam na długo. Poznaliśmy znaczną część języka Python! Nie poznaliśmy: programowania obiektowego, wyjątków, środowisk,... Instrukcje sterujące 13/35

To już wszystko? Nie, ale wystarczy nam na długo. Poznaliśmy znaczną część języka Python! Nie poznaliśmy: programowania obiektowego, wyjątków, środowisk,... Większość z tych rzeczy wymaga programowania obiektowego i choć ułatwia programowanie, to można sobie poradzić bez tego. Dalszy ciąg dopiero na kursie z programowania. Teraz zajmijmy się bibliotekami spoza biblioteki standardowej. Instrukcje sterujące 13/35

Biblioteka NumPy Biblioteka NumPy 14/35

Biblioteka NumPy NumPy (Numerical Python) jest biblioteką dostarczającą szybki i wydajny typ danych dla wektorów, macierzy oraz więcej wymiarowych tablic. Biblioteka NumPy 15/35

Biblioteka NumPy NumPy (Numerical Python) jest biblioteką dostarczającą szybki i wydajny typ danych dla wektorów, macierzy oraz więcej wymiarowych tablic. Czym się różni od list? Głównie wydajnością, ale również tym, że podstawowe operacje działają po elementach. Przykładowo list [1,2,3] i [0,0,1] operacja dodawania stworzy listę [1,2,3,0,0,1], natomiast dla wektorów, stworzy wektor o elementach 1 + 0 = 1, 2 + 0 = 2 oraz 3 + 1 = 4. W przypadku macierzy istnieje możliwość mnożenia element po elemencie (dla macierzy tego samego wymiaru) lub mnożenia uwzględniającego wymiary (zgodnego z matematyczną definicją mnożenia macierzy). Biblioteka NumPy 15/35

Biblioteka NumPy NumPy (Numerical Python) jest biblioteką dostarczającą szybki i wydajny typ danych dla wektorów, macierzy oraz więcej wymiarowych tablic. Czym się różni od list? Głównie wydajnością, ale również tym, że podstawowe operacje działają po elementach. Przykładowo list [1,2,3] i [0,0,1] operacja dodawania stworzy listę [1,2,3,0,0,1], natomiast dla wektorów, stworzy wektor o elementach 1 + 0 = 1, 2 + 0 = 2 oraz 3 + 1 = 4. W przypadku macierzy istnieje możliwość mnożenia element po elemencie (dla macierzy tego samego wymiaru) lub mnożenia uwzględniającego wymiary (zgodnego z matematyczną definicją mnożenia macierzy). Dodatkowo biblioteka NumPy definiuje odpowiedniki funkcji matematycznych (np.: sin), które działają na wektorach (funkcja jest liczona na każdym elemencie wektora). Biblioteka NumPy 15/35

Tworzenie wektorów Podczas zajęć interesować nas będą tylko tablice wymiaru 1 (wektory). Biblioteka NumPy 16/35

Tworzenie wektorów Podczas zajęć interesować nas będą tylko tablice wymiaru 1 (wektory). Zaczynamy od importu biblioteki import numpy as np Biblioteka NumPy 16/35

Tworzenie wektorów Podczas zajęć interesować nas będą tylko tablice wymiaru 1 (wektory). Zaczynamy od importu biblioteki import numpy as np Możemy je stworzyć z listy, krotki lub dowolnego typu uporządkowanego. np. array ( l i s t a ) # z l i s t y np. arange ( i, j, k ) # j a k range, od i do j co k np. l i n s p a c e ( a, b, n ) # n punkt ów r ówno od a do b np. zeros ( n ) # wektor n z e r np. ones ( n ) # wektor n j e d y n e k Biblioteka NumPy 16/35

Typy danych Mamy kilka podstawowych typów, najpopularniejsze to np.float oraz np.int. Jeśli tworzymy tablicę z listy np. array ( [ 1, 2, 3 ] ) powstanie wektor liczb całkowitych. Jeśli chcemy aby były to liczby zmiennoprzecinkowe, piszemy np. array ( [ 1, 2, 3 ], np. f l o a t ) Biblioteka NumPy 17/35

Typy danych Mamy kilka podstawowych typów, najpopularniejsze to np.float oraz np.int. Jeśli tworzymy tablicę z listy np. array ( [ 1, 2, 3 ] ) powstanie wektor liczb całkowitych. Jeśli chcemy aby były to liczby zmiennoprzecinkowe, piszemy np. array ( [ 1, 2, 3 ], np. f l o a t ) Tak samo działa dla pozostałych funkcji (następny po opisanych parametr). Biblioteka NumPy 17/35

Operacje na wektorach A = np. array ( [ 1, 0, 0 ] ) B = np. array ( [ 1, 1, 1 ] ) ( B A) 7 / (A + 1) Biblioteka NumPy 18/35

Operacje na wektorach A = np. array ( [ 1, 0, 0 ] ) B = np. array ( [ 1, 1, 1 ] ) ( B A) 7 / (A + 1) Co to jest? B A = (1, 1, 1) (1, 0, 0) = (0, 1, 1). Natomiast (B A) 7 = (0, 7, 7). A + 1 = (1, 0, 0) + 1 = (2, 1, 1). Całość wyrażenia, to (0/2, 7/1, 7/1) = (0, 7, 7). Biblioteka NumPy 18/35

Operacje na wektorach import math t = np. arange ( 0, 4 math. pi, math. p i / 2 ) np. s i n ( t ) Biblioteka NumPy 19/35

Operacje na wektorach import math t = np. arange ( 0, 4 math. pi, math. p i / 2 ) np. s i n ( t ) Co to jest? t to wektor od 0 do 4π (bez 4π) co π/2. Końcowy wektor, to w przybliżeniu (0, 1, 0, 1, 0, 1, 0, 1). Biblioteka NumPy 19/35

Biblioteka Matplotlib Biblioteka Matplotlib 20/35

Importowanie Matplotlib Matplotlib to biblioteka do robienia wykresów. Jak jej używać? Importujemy ją i to, co potrzebne do obliczeń. import m a t p l o t l i b. pyplot as p l t import numpy as np import math Biblioteka Matplotlib 21/35

Importowanie Matplotlib Matplotlib to biblioteka do robienia wykresów. Jak jej używać? Importujemy ją i to, co potrzebne do obliczeń. import m a t p l o t l i b. pyplot as p l t import numpy as np import math Dodatkowo, aby widzieć wykresy, gdzieś w notatniku wywołujemy komórkę zawierającą %m a t p l o t l i b i n l i n e Biblioteka Matplotlib 21/35

Pierwszy wykres x = np. l i n s p a c e ( math. pi, math. pi, 100) y = np. s i n ( x ) p l t. p l o t ( x, y ) Biblioteka Matplotlib 22/35

Jak zrobić własną funkcję? @np. v e c t o r i z e def sinus_kwadrat ( x ) : return math. s i n ( x ) 2 Biblioteka Matplotlib 23/35

Jak zrobić własną funkcję? @np. v e c t o r i z e def sinus_kwadrat ( x ) : return math. s i n ( x ) 2 x = np. l i n s p a c e ( math. pi, math. pi, 100) y = sinus_kwadrat ( x ) p l t. p l o t ( x, y ) Biblioteka Matplotlib 23/35

Dokumentacja http://matplotlib.org/api/pyplot_api.html# matplotlib.pyplot.plot http://matplotlib.org/gallery.html Biblioteka Matplotlib 24/35

Biblioteka ipywidgets Biblioteka ipywidgets 25/35

Najpierw importy %m a t p l o t l i b i n l i n e from ipywidgets import i n t e r a c t import m a t p l o t l i b. pyplot as p l t import numpy as np import math Biblioteka ipywidgets 26/35

Zaczynamy od rysunku f = 10 phi = 0 T = 1/ f t = np. l i n s p a c e ( 0, 5 T, 1000) x = np. s i n (2 math. p i f t + phi ) p l t. p l o t ( t, x ) Biblioteka ipywidgets 27/35

Robimy funkcję def r y s u j ( ) : f = 10 phi = 0 T = 1/ f t = np. l i n s p a c e ( 0, 5 T, 1000) x = np. s i n (2 math. p i f t + phi ) p l t. p l o t ( t, x ) r y s u j ( ) Biblioteka ipywidgets 28/35

Parametryzujemy def r y s u j ( f, phi ) : T = 1/ f t = np. l i n s p a c e ( 0, 5 T, 1000) x = np. s i n (2 math. p i f t + phi ) p l t. p l o t ( t, x ) r y s u j (10, 0) Biblioteka ipywidgets 29/35

Interact! def r y s u j ( f, phi ) : T = 1/ f t = np. l i n s p a c e ( 0, 5 T, 1000) x = np. s i n (2 math. p i f t + phi ) p l t. p l o t ( t, x ) p l t. show ( ) i n t e r a c t ( rysuj, f =(1, 3, 0. 0 1 ), phi =( 5, 5, 0. 0 1 ) ) Biblioteka ipywidgets 30/35

Dekorowane @interact ( f =(1, 3, 0. 0 1 ), phi =( 5, 5, 0. 0 1 ) ) def r y s u j ( f, phi ) : T = 1/ f t = np. l i n s p a c e ( 0, 5 T, 1000) x = np. s i n (2 math. p i f t + phi ) p l t. p l o t ( t, x ) p l t. show ( ) Biblioteka ipywidgets 31/35

Dokumentacja https://ipywidgets.readthedocs.io Biblioteka ipywidgets 32/35

Gdzie dalej Możemy tworzyć dowolne, nawet bardzo skomplikowane interfejsy graficzne. Na przykład https://www.youtube.com/watch?v=bh0rtx0qq5w http://bfy.tw/8uen Biblioteka ipywidgets 33/35

W następnym odcinku Kończymy z programowaniem, zaczynamy z informatyką zaczynamy od szukania miejsc zerowych i ekstremów. Biblioteka ipywidgets 34/35

Pytania? Pytania? 35/35