Jezyki i metody programowania

Transkrypt

Jezyki i metody programowania
Jezyki
˛
i metody programowania
Wykład 1
dr hab. Bożena Woźna-Szcześniak
[email protected]
Instytut Matematyki i Informatyki
Akademia Jana Długosza w Cz˛estochowie
Wykład na podstawie wykładów dr hab. Andrzeja Zbrzezngo
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Treści programowe
Podstawowe pojecia
˛
programowania
Proste typy danych w Pythonie
Grafika żółwia w Pythonie
Moduły Pythona
Funkcje
Instrukcja wyboru
Iteracje
Łańcuchy znaków
Pliki
Rekurencja
...
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Zalecana Literatura
Python 3 dla poczatkuj
˛ acych
˛
Peter Wentworth, Jeffrey Elkner,Allen B. Downey, Chris Meyers
How to Think Like a Computer Scientist: Learning with Python 3
http://www.ict.ru.ac.za/Resources/cspw/
thinkcspy3/thinkcspy3.pdf
Wersja online:
openbookproject.net/thinkcs/python/english3e/
Wersja interaktywna:
http://interactivepython.org/courselib/static/
thinkcspy/index.html
Python 3 dla średnio zaawansowanych
Mark Summerfield. Python 3. Kompletne wprowadzenie do
programowania. Wydanie II.
Wydawnictwo Helion. Gliwice, czerwiec 2010.
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Literatura uzupełniajaca
˛
Python 3
Przewodnik po jezyku
˛
Python
http://docs.python.org/py3k/tutorial/
Dokumentacja dla wersji 3.2.3 jezyka
˛
Python
http://docs.python.org/py3k/reference/
Mark Pilgrim Dive into Python 3.
http://diveintopython3.org/
Python 2
Dokumentacja dla wersji 2.3 jezyka
˛
Python
http://pl.python.org./docs
Tłumaczenie ksiażki
˛ Dive into Python.
http://pl.wikibooks.org/wiki/Zanurkuj_w_Pythonie.
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Wprowadzenie
Charakterystyka jezyka
˛
Python
Python jest interpretowanym jezykiem
˛
programowania wysokiego
poziomu stworzonym przez holenderskiego programiste˛ Guido
van Rossuma w 1990 roku.
Jezyk
˛
został tak nazwany w ślad za programem telewizyjnym BBC
„Latajacy
˛ cyrk Monty Pythona”.
Obecnie Python rozwijany jest jako projekt Open Source,
zarzadzany
˛
przez Python Software Foundation, bed
˛ ac
˛ a˛
organizacja˛ non-profit.
W stosunku do wcześniejszych wersji jezyka
˛
Python, w wersji 3.0
wprowadzono wiele istotnych zmian, które spowodowały brak
zgodności wstecz.
Najnowsza˛ wersja˛ jezyka
˛
Python jest wersja 3.4.2, która została
wydana 13-10-2014 roku.
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Wprowadzenie
Charakterystyka jezyka
˛
Python
W Pythonie to wartości, a nie zmienne, posiadaja˛ typ – tak wiec
˛
Python jest jezykiem
˛
z typami dynamicznymi.
Python posiada wbudowane abstrakcyjne typy danych takie jak
np. listy, krotki, zbiory i słowniki.
W Pythonie możliwe jest programowanie strukturalne,
programowanie obiektowe i programowanie funkcyjne.
Do zarzadzania
˛
pamieci
˛ a˛ stosuje sie˛ zbieranie nieużytków (ang.
garbage collection), tak wiec
˛ Python nie wymaga od programisty
recznego
˛
zarzadzania
˛
pamieci
˛ a.
˛
Cecha˛ wyróżniajac
˛ a˛ Pythona spośród innych jezyków
˛
jest
stosowanie wcie˛ ć do wydzielania bloków kodu.
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Instalacja interpretera jezyka
˛
Python
W systemie Ubuntu Linux
Najprościej zainstalować Pythona 3 wykonujac
˛ w terminalu
polecenie:
$ sudo apt-get install python3
W systemie Windows
Interpreter Pythona 3 można bezpłatnie pobrać ze strony
https://www.python.org/downloads/windows/
Pobieramy plik python-3.4.2.msi poprzez link
Windows x86 MSI Installer (3.4.2)
lub plik python-3.3.0.amd64.msi poprzez link
Windows X86-64 MSI Installer (3.4.2)
Instalujemy Pythona klikajac
˛ na pobrany plik.
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Używanie interpretera Pythona
Aby uruchomić interpreter Pythona 3 w systemie Linux otwieramy
terminal i w konsoli wpisujemy polecenie:
$ python3
Pojawi sie˛ krótka informacja o interpreterze oraz znak zachety:
˛
>>>
Od tej chwili możemy wpisywać instrukcje oraz wyrażenia jezyka
˛
Python, np.
>>> 1 + 2
Po naciśnieciu
˛
klawisza <Enter> na ekranie zobaczymy
obliczony przez interpreter wynik wyrażenia 1 + 2 oraz
w nastepnej
˛
linii ponownie znak zachety.
˛
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Używanie interpretera Pythona
Importowanie modułów
Aby móc korzystać z funkcji matematycznych należy
zaimportować odpowiedni moduł:
>>> import math
Od tej chwili możemy używać funkcji zdefiniowanych w tym
module, np.
>>> math.sqrt(2)
Po naciśnieciu
˛
klawisza <Enter> na ekranie zobaczymy
obliczony przez funkcje˛ math.sqrt pierwiastek z liczby 2
oraz w nastepnej
˛
linii ponownie znak zachety.
˛
Aby uzyskać pomoc na temat funkcji i stałych zdefiniowanych
w module math należy użyć funkcji help:
>>> help(math)
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Używanie interpretera Pythona
Przykład (Wykorzystanie funkcji print)
>>> print("Witajcie studenci!")
Witajcie studenci!
>>> print(2 + 3)
5
>>>
>>> print("2 + 3 = ", 2 + 3)
2 + 3 = 5
>>>
>>> print(2, "+", 3, "=", 2 + 3)
2 + 3 = 5
>>>
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Typy liczbowe
W jezyku
˛
Python dostepne
˛
sa˛ nastepuj
˛ ace
˛ rodzaje liczb:
całkowite (0, 1, -2, itd.) – typ int
boolowskie (tylko wartości False oraz True) – typ bool
zmiennoprzecinkowe (3.14, 2.718, itd.) – typ float
zespolone (2+3j, 1j, 1+0j) – typ complex
Operatory arytmetyczne:
dodawanie + oraz odejmowanie −
mnożenie ∗, dzielenie /, dzielenie całkowite //
reszta z dzielenia całkowitego %
∗∗
potegowanie
˛
Operatory z operandami typów mieszanych przekształcaja˛
operandy boolowskie w całkowite, zmiennoprzecinkowe lub
zespolone
operandy całkowite w zmiennoprzecinkowe lub zespolone
operandy zmiennoprzecinkowe w zespolone.
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Typy danych
Typ obiektu można pobrać za pomoca˛ wbudowanej funkcji type.
Przykłady
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
type(16)
type("Hello")
type("16")
type(3.14)
type(2∗∗ 64)
type(1 > 0)
type(False)
type(True)
type(None)
type(1 + 2j)
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Priorytety operatorów
Nawiasy maja˛ najwyższy priorytet. Sa˛ używane do wymuszenia
obliczania wartości wyrażenia w żadanej
˛
kolejności,
Potegowanie
˛
ma kolejny najwyższy priorytet.
Mnożenie, dzielenie, dzielenie całkowite i reszta z dzielenia maja˛
ten sam priorytet, który jest wyższy niż dodawanie i odejmowanie,
które również maja˛ ten sam priorytet.
Operatory o tym samym priorytecie sa˛ obliczane od lewej do
prawej. W algebrze mówimy, że sa˛ lewostronnie łaczne.
˛
Wyjatkiem
˛
(z powodów historycznych) jest operator potegowania,
˛
który jest prawostronnie łaczny.
˛
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Operatory porównania
Python oferuje standardowy zestaw binarnych operatorów
porównania charakteryzujacych
˛
sie˛ oczekiwana˛ semantyka:
˛
< (mniejszy niż),
> (wiekszy
˛
niż),
== (równy),
!= (różny
<= (mniejszy lub równy),
>= (wiekszy
˛
lub równy),
Wymienione operatory porównuja˛ wartości obiektów, do których
odniesienia zostały wskazane w operatorze.
Wynikiem porównania jest wartość typu bool: False albo True.
Porównania, które nie maja˛ sensu, bed
˛ a˛ powodowały zgłoszenie
wyjatku.
˛
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Obiekty, wartości i typy
Obiekty sa˛ w Pythonie abstrakcja˛ danych.
Każda dana jest reprezentowana przez obiekt lub przez relacje˛
pomiedzy
˛
obiektami.
Zgodnie z modelem „komputera z programem w pamieci”
˛ von
Neumanna kod również reprezentowany jest przez obiekty.
Każdy obiekt ma tożsamość, typ i wartość.
Od chwili utworzenia obiektu jego tożsamość nigdy sie˛ nie
zmienia.
O tożsamości obiektu można myśleć jak o adresie obiektu
w pamieci.
˛
Do porównania tożsamości dwóch obiektów służy operator is.
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Obiekty, wartości i typy
Wbudowana funkcja id zwraca wartość całkowita,
˛ reprezentujac
˛ a˛
tożsamość obiektu.
W standardowej implementacji funkcja ta zwraca adres obiektu,
przekształcony do postaci liczbowej.
Typ określa zbiór atrybutów i operacji, które można wykonać na
obiekcie oraz definiuje zbiór dopuszczalnych wartości obiektu.
Typ obiektu, podobnie jak jego tożsamość, również nie może ulec
zmianie.
Typ obiektu (który również jest obiektem) można pobrać za
pomoca˛ wbudowanej funkcji type.
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Zmienne
Zmienna w Pythonie jest nazwa,
˛ która jest odniesieniem do
obiektu.
Aby utworzyć zmienna˛ oraz nadać jej wartość należy użyć
instrukcji przypisania:
zmienna = wyrażenie
Powyższa instukcja przypisuje do zmiennej zmienna odniesienie
do obiektu utworzonego w wyniku obliczenia wartości wyrażenia
wyrażenie.
Przypisanie do zmiennej nie jest wypisywane przez interpreter.
Wartość może być przypisana jednocześnie wielu zmiennym, np.
a = b = c = 0
Możliwe sa˛ też jednoczesne przypisania:
a, b, c = 1, 2, 3
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Przykłady
>>> a = 3
>>> b = 3
>>> id(a)
>>> id(b)
>>> a is b
True
>>> a = 3.0
>>> b = 3.0
>>> id(a)
>>> id(b)
>>> a is b
False
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Zmienne
W trybie interaktywnym, ostatnio wydrukowane wyrażenie
przypisywane jest do zmiennej, której nazwa˛ jest _. Oznacza to,
że jeśli używa sie˛ Pythona jako biurkowego kalkulatora, łatwym
staje sie˛ kontynuowanie obliczeń, jak w poniższym przykładzie:
>>> 53.4 * 3.56
11.747999999999999
>>> round(_, 2)
11.75
Zmienna _ powinna być traktowana przez użytkownika jak
zmienna tylko do odczytu.
Przypisanie do zmiennej _ jakiejkolwiek wartości stworzy lokalna˛
zmienna˛ z ta˛ sama˛ nazwa˛ przykrywajac
˛ a˛ wbudowana˛ zmienna˛ _
o tych magicznych właściwościach.
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Słowa kluczowe
Nazwy zmiennych, funkcji i klas sa˛ identyfikatorami.
Identyfikator to dowolny ciag
˛ składajacy
˛ sie˛ z liter, cyfr oraz
znaków podkreślenia zaczynajacy
˛ sie˛ od litery lub znaku
podkreślenia.
Spośród wszystkich możliwych nazw zmiennych 33 sa˛
zarezerwowane. Sa˛ to słowa kluczowe jezyka
˛
Python.
False
None
True
and
as
assert
break
class
continue
def
del
elif
else
except
finally
for
from
global
if
import
in
is
lambda
nonlocal
not
or
pass
raise
return
try
while
with
yield
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Wprowadzanie napisów
>>> imie = input("Podaj swoje imi˛
e: ")
>>> print("Cześć", imie)
Wprowadzanie napisów
>>> rok = int(input("Podaj rok urodzenia: "))
>>> print("Urodziłeś si˛
e w roku", rok)
Wprowadzanie liczb zmiennoprzecinkowych
>>> waga = float(input("Podaj swoja˛ wag˛
e: "))
>>> print("Ważysz", waga, "kg")
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Skrypty w jezyku
˛
Python
Przez skrypt Pythona rozumiemy plik tekstowy zawierajacy
˛
program zapisany w jezyku
˛
Python.
Zwyczajowo skrypty Pythona zapisuje sie˛ w plikach
z rozszerzeniem .py, np. hello.py.
Przykład (Przykładowy skrypt)
#!/usr/bin/env python3
print("Witajcie studenci!")
print("A˛ĆEŁ
˛ ŃÓŚŹŻ")
print("ać˛
˛ ełńóśźż")
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Skrypty w jezyku
˛
Python
Aby wykonać skrypt hello.py wydajemy w konsoli polecenie
$ python3 hello.py
Możemy też uruchomić skrypt hello.py wydajac
˛ w konsoli
polecenie
$ ./hello.py
o ile w pierwszej linii pliku hello.py znajduje sie˛ odwołanie do
interpretera:
#!/usr/bin/env python3
a ponadto plik hello.py ma ustawiony atrybut wykonywalności.
Python 3 akceptuje w skryptach znaki pochodzace
˛ z zestawu
znaków Unikodu w systemie UTF-8.
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Prosta postać instrukcji iteracyjnej for (dla)
Instrukcja iteracyjna for jest używana do iterowania po
elementach sekwencji lub innego obiektu iterowalnego.
Prosta postać instrukcji iteracyjnej for jest nastepuj
˛ aca:
˛
for zmienna in wyrażenie:
blokInstrukcji
blokInstrukcji to ciag
˛ instrukcji, które umieszczone sa˛
w kolejnych liniach, przy czym każda linia jest wcieta
˛ w stosunku
do linii zaczynajacej
˛ sie˛ od for o te˛ sama˛ liczbe˛ spacji.
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Semantyka instrukcji iteracyjnej for
Wyrażenie wyrażenie jest wartościowane raz, a jego wynikiem
powinna być sekwencja.
Dla każdego elementu tej sekwencji (w kolejności rosnacych
˛
indeksów) wykonywany jest podany ciag
˛ instrukcji, przy czym
najpierw element ten jest przypisywany do zmiennej zmienna.
Po wyczerpaniu elementów sekwencji (być może od razu, jeśli
sekwencja ta jest pusta) wykonywanie instrukcji for kończy sie.
˛
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Schemat blokowy instrukcji iteracyjnej for
✲
❄
❅
❅
❅
Czy istnieją ❅
❅ False
elementy sekwencji, ❅
❅ które nie zostały
❅ przetworzone?
❅
❅
❅
❅
True
❄
zmienna = następny element
❄
blokInstrukcji
❄
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Zakresy
Funkcja wbudowana range jest uniwersalna˛ funkcja˛ tworzac
˛ a˛
skończony ciag
˛ arytmetyczny.
Funkcje˛ te˛ można wywoływać z jednym, dwoma lub trzema
argumentami:
range(stop)
range(start, stop)
range(start, stop, krok)
start = 0, krok = 1
krok = 1
W przypadku gdy krok > 0, elementy zakresu r określone sa˛
wzorem r[j] = start + krok * j, gdzie j >= 0 oraz
r[j] < stop.
W przypadku gdy krok < 0, elementy zakresu r określone sa˛
wzorem r[j] = start + krok * j, gdzie j >= 0 oraz
r[j] > stop.
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Przykłady
>>>
[0,
>>>
[1,
>>>
[0,
>>>
[0,
>>>
[0,
>>>
[]
>>>
[]
list(range(10))
1, 2, 3, 4, 5, 6, 7, 8, 9]
list(range(1, 11))
2, 3, 4, 5, 6, 7, 8, 9, 10]
list(range(0, 30, 5))
5, 10, 15, 20, 25]
list(range(0, 10, 3))
3, 6, 9]
list(range(0, -10, -1))
-1, -2, -3, -4, -5, -6, -7, -8, -9]
list(range(0))
list(range(1, 0))
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Przykład (Program z użyciem instrukcji iteracyjnej for)
#!/usr/bin/env python3
n = int(input("Podaj liczb˛
e naturalna:
˛ "))
s = 0
for j in range(1, n + 1):
s = s + j
print("Suma liczb od 1 do", n, "wynosi", s)
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Przykład (Program z użyciem instrukcji iteracyjnej for)
"""Oblicza sum˛
e liczb naturalnych od 1 do n"""
#!/usr/bin/env python3
n = int(input("Podaj liczb˛
e naturalna:
˛ "))
s = 0
for j in range(1, n + 1):
s = s + j
print("Suma liczb od 1 do", n, "wynosi", s)
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28
Podstawy jezyka
˛
Python
Przykład (Program z użyciem instrukcji iteracyjnej for)
"""Oblicza sum˛
e liczb naturalnych od 1 do n"""
#!/usr/bin/env python3
def main():
n = int(input("Podaj liczb˛
e naturalna:
˛ "))
s = 0
for j in range(1, n + 1):
s = s + j
print("Suma liczb od 1 do", n, "wynosi", s)
main()
Wykład na podstawie wykładów dr
Bożena Woźna-Szcześniak (IMI AJD)
JMP
/ 28

Podobne dokumenty