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
PROBLEM
ALGORYTM
PROGRAM ŹRÓDŁOWY
KOMPUTER
PROGRAM WYKONYWALNY
1. IMPLEMENTACJA to zapis
algorytmu w języku programowania
2. TRANSLACJA to tłumaczenie
programu źródłowego na kod
maszynowy
3. URUCHOMIENIE programu
4. TESTOWANIE programu
ETAPY PROGRAMOWANIA
0. WYBÓR-ZNALEZIENIE-
OPRACOWANIE ALGORYTMU
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
6
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”.
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
bn-1bn-2...b2b1b0 (BIAS) = bn-12n-1 + bn-22n-2 + ... + b222 + b121 + b020 - 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) = 24 + 23 + 22 + 21 + 20 - 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 * pc m – mantysa p – podstawa systemu c – cecha - wykładnik potęgowy
Zapis zmiennopozycyjny
325 × 1020 = 32,5 × 1021 = 3,25 × 1022 = 0,325 × 1023 = …
Znormalizowana liczba zmiennoprzecinkowa to taka,
w której mantysa spełnia nierówność:
p > |m| ≥ 1
L = m * pc
3,25 × 1022
dokładność liczby wielkość liczby
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) b31 (8 bitów) b30 ... b23 (BIAS=127) (23 bity)b22 ... b0 (U1)
64 bity (1 bit) b63 (11 bitów) b62 ... b52 (BIAS=1023) (52 bity)b51 ... b0 (U1)
Opis pół bitowych bit znaku bity kodu cechy bity mantysy
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:
Standard zapisu zmiennoprzecinkowego IEEE 754
L(IEEE 754) = m * pc = (-1)z*m*2c 01000010110010000000000000000000(IEEE 754) 0 10000101 10010000000000000000000(IEEE 754)
z = 0 - liczba jest dodatnia
c = 10000101(BIAS=127) = 133 - 127 = 6 m = 01,10010000000000000000000(U1) = 19/16
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:
Standard zapisu zmiennoprzecinkowego IEEE 754
L(IEEE 754) = m * pc = (-1)z*m*2c 01000010110010000000000000000000(IEEE 754) 0 10000101 10010000000000000000000(IEEE 754)
z = 0 - liczba jest dodatnia
c = 10000101(BIAS=127) = 133 - 127 = 6 m = 01,10010000000000000000000(U1) = 19/16
L(IEEE 754) = (-1)z * m * 2c = (-1)0 * 19/16 * 26 = 25/16 * 26=
25 * 22 = 25 * 4 = 100(10)
01000010110010000000000000000000(IEEE 754) = 100(10)
• 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
Pythona stworzył we wczesnych latach 90. holenderski programista Guido
van Rossum:
Czym jest Python
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 - 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.
potęgowanie
reszta z dzielenia
wyrażenie złożone
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 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
Operatory o tym samym priorytecie są obliczane od lewej do prawej.
W algebrze mówimy, że są lewostronnie łączne
W trybie interaktywnym, ostatnio wydrukowane wyrażenie przypisywane
jest do zmiennej _.
Zmienna _ powinna być traktowana jako zmienna tylko do odczytu
Python - zasady
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
Python - zmienne
S a + b
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 – 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
Negacja - NOT
x ~x
0 1
1 0
Koniunkcja - AND
Alternatywa - OR
x y x y
0 1 0
0 0 0
1 1 1
1 0 0
x y x + y
0 1 1
0 0 0
1 1 1
1 0 1
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 – 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 – pętle 51
Pętla for - pozwala na powtarzanie instrukcji określoną ilość
razy
Tak Nie
Czy istnieją
elementy sekwencji,
które nie zostały
przetworzone
instrukcje zmienna = kolejny_element
Wynik
for <zmienna> in <sekwencja>: <instrukcje>
Python – pętle 52
• Funkcja wbudowana range jest uniwersalną funkcją torzącą
skończony ciąg arytmetyczny.
orange(stop) start = 0, krok = 1
orange(start, stop) krok = 1
orange(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.
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 #przejście do nowego wiersza
for y in range(1,11):
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>
Prawda Fałsz
Warunek
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
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
Python – typy sekwencyjne 69
Do przechowywania sekwencji innych niż napisy mamy-
krotki (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 – 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
Top Related