Algorytmy i programowanie

Programowanie w języku Python *

Algorytm

Algorytm to przepis rozwiązania zadania, zawierający opis danych wraz z opisem czynności, które należy wykonać z tymi danymi, aby osiągnąć zamierzony cel. Np. algorytm na sposób dotarcia do najbliższego sklepu, algorytm na ugotowanie jajka, algorytm rozwiązania zadania matematycznego. Sposoby zapisywania algorytmów:

  1. Słowny (przedstawienie rozwiązania za pomocą słów),

  2. Pseudokod (przedstawienie algorytmu w kolejnych punktach prowadzących do rozwiązania problemu),

  3. Schemat blokowy (graficzny sposób przedstawienia algorytmu).

Język programowania

Język programowania to usystematyzowany sposób przekazywania komputerowi poleceń do wykonania. Istnieje wiele różnych języków programowania np. Pascal, C++, Java, Ruby, PHP, itd. Różnią się one regułami (semantycznymi i syntaktycznymi) zapisu poleceń.

Python

Python to język skryptowy, interpretowany - co oznacza, że piszemy program (często określany jako skrypt), a następnie wykonujemy go za pomocą interpretera. W momencie uruchamiania następuje więc tylko analiza składniowa programu (wyszukiwanie zabronionych konstrukcji) nie jest badana za to skład jakościowy (sprawdzanie poprawności wykorzystywanych metod). Wkrótce zobaczysz przykłady.

Instalacja (w domu)

  1. Ściągamy i uruchamiamy instalator Pythona 2.7.3 (na zajęciach będziemy korzystać z pythona w wersji 2.7.x) http://python.org/ftp/python/2.7.3/python-2.7.3.msi

  2. Klikamy kilka razy "Next"

  3. Menu Start -> Programy -> Python 2.7 -> IDLE (Python GUI) Otworzy się Konsola (Python Shell), która działa jako interpreter, czyli możemy bezpośrednio w niej wpisywać polecenia do wykonania.

  4. Po kliknięciu File -> New Window otworzy nam się nowe okno, w którym możemy pisać kod źródłowy programu. Aby uruchomić program klikamy Run -> Run module

  5. Efekt wywołania programu będzie widoczny w Konsoli (pierwszym oknie tzw. Python Shell)

Uruchomienie

Uruchom MENU_START-> Development -> Idle(Python GUI)

Wybierz z menu File -> New Window

W nowo otwartym oknie wpisz

print 'Mój pierwszy kod w Python'

Zapisz kod na swoim dysku, jako plik o rozszerzeniu .py. Wróć do okna z kodem i wciśnij F5 (alternatywnie wybierz Run -> Run module).

W oknie o nazwie Python Shell 2.7.10, powinien pojawić się napis

Mój pierwszy kod w Python.

Co się właśnie stało?

Właśnie uruchomiłeś swój pierwszy program w języku Python. W nowym oknie wpisałeś komendę języka Python print, która służy do wypisywania danych na ekran. Po uruchomieniu programu (przycisk F5) podane w pliku komendy zostały zinterpretowane przez interpreter poleceń języka Python. W przypadku odpowiednich komend może to oznaczać przeprowadzanie obliczeń, zapis danych lub interakcję z konsolą, takie jak wypisywanie danych na ekran konsoli (Python shell) lub też wczytywanie danych podanych w konsoli.

Błędy

Dopisz do swojego programu odpowiednie linie

print '2 linia'
print '3 linia'
print '4 linia'
abecadlo
print '6 linia'

Uruchom program wciskając F5.

W konsoli powinieneś zaobserwować wypisanie się elementów :

Mój pierwszy kod w Python
2 linia
3 linia
4 linia

a po nich następuje komunikat:

Traceback (most recent call last):
File C:/Python27/pierwszy.py, line 5, in <module>
abecadlo
NameError: name 'abecadlo' is not defined

Oznacza on, że w 5 linii programu (nowe okienko gdzie wpisujemy komendy) znajduje się komenda, której interpreter nie umie zinterpretować. Zauważ, że jako, że Python jest językiem interpretowanym komendy umieszczone powyżej w kodzie zostały wykonane i program przerwał swoje wykonanie przy pierwszym napotkaniu na błąd.

Zmienne

Zmienna jest elementem w pamięci komputera w której przechowujemy dane (liczby, znaki itp.). Mówimy, że zmienne mają typy: liczbowe, znakowe, rzeczywiste, całkowitoliczbowe. Typy definiujemy po to by wiedzieć jak działać na zmiennych, dodawać, łączyć, porównywać itd. Przy tworzeniu zmiennej w Pythonie nie musisz podawać, jaki typ danych, jakie będziesz przechowywać w zmiennej. Po prostu podajesz nazwę zmiennej i przypisujesz jej wartość. Z tego powodu mówi się, że Python jest językiem typowanym dynamicznie.

Zapisz i wywołaj programy:

Zmienne liczbowe:

a = 2
b = 5
print a+b
print a*b
print a/b
print a%b

Zmienne rzeczywiste:

a = 2.0
b = 5.0
print a+b
print a*b
print a/b
print a%b

Zmienne znakowe (zwróć uwagę na to, że ciągi znaków otaczamy w pojedynczy (lub podwójny) cudzysłów):

a = 'Programowanie'
print a
# wypisanie pierwszego znaku
print a[0]
# wypisanie pierwszych pięciu znaków
print a[0:5]
b = "Algorytmy"
print b

Zauważ, że linie rozpoczynające się od znaku # traktowane są jako komentarze i nie są interpretowane przez Pythona.

Ćwiczenie

Usuń cudzysłów z linii 6-tej i wciśnij F5. Zaobserwuj, co się stanie.

---

Instrukcja warunkowa

W przypadku, gdy chcemy uzależnić wykonanie jakiegoś polecenia od prawdziwości, lub nieokreślonego warunku stosujemy tzw. instrukcję warunkową.

Wklej i wykonaj poniższy kod.

b = 2
a = 1
if a > b:
        print b
else:
        print a

Zwróćmy uwagę na szczególną konstrukcję tej instrukcji, po pierwsze na końcu linii z if umieszczony jest dwukropek :. Zapamiętaj, że po liniach ze słowami specjalnymi zazwyczaj będziemy umieszczać znak dwukropka.

Ćwiczenie

Usuń znak dwukropka w trzeciej linii i wciśnij F5. Zaobserwuj w jaki sposób w tym wypadku Python sygnalizuje Ci błąd w programie.

---

Zaobserwowany błąd ma naturę syntaktyczną, czyli zastosowaniem nieprawidłowej składni, błąd taki jest sygnalizowany przed wykonaniem programu.

Po drugie komenda umieszczone po instrukcji if są zapisane z wcięciem w postaci pojedynczej tabulacji. Wcięcie to jest obowiązkowe i sygnalizuje, że operacje po nim wykonywane są w przypadku prawdziwości warunku określonego po słowie if.

Ćwiczenie

Usuń wcięcie w linii 4 i wciśnij F5. Zaobserwuj, w jaki sposób w tym wypadku Python sygnalizuje Ci błąd w programie.

---

Operatory logiczne and, or i not (pol. "i" i "lub", "negacja") pozwalają na budowanie kompletnych zdań logicznych. W warunkach logicznych możemy korzystać z operatorów porównania:

== - jest równe
!= - nie jest równe
< - mniejsze niż
> - większe niż

Przykład:

b = 2
a = 1
c = 2

if a > b and a == c:
        print a
elif c == b:
        print "C i B rowne"
else:
        print b

Słowo kluczowe elif pozwala dodawać nowe warunki, których prawdziwość jest sprawdzana w przypadku, gdy warunek podany w IF (lub wcześniejszych elif) nie jest prawdziwy.

Słowo kluczowe else służy do wskazywania, że podane poniżej komendy mają się wykonać w przypadku, gdy żaden z podanych powyżej warunków IF nie jest prawdziwy.

Ćwiczenie

Pozmieniaj wartości tak, aby uzyskać różny efekt.

---

Pętle

Pętlą nazywamy mechanizm pozwalający wykonywać pewien zbiór komend wiele razy, bez potrzeby wielokrotnego ich podawania w kodzie programu. W Pythonie mamy też kilka rodzajów pętli. Pierwsza z nich to pętla while:

Uruchom poniższy kod:

licznik = 10
wartosc = 15

while licznik <= wartosc:
        print "Łajla licze "
        print licznik
        licznik += 1

Pętla ta jest wykonywana tak długo, jak długo prawdziwy jest warunek logiczny podany po słowie kluczowym while. W szczególności komendy przypisane do pętli mogą nie wykonać się ani razu.

Ćwiczenie

Wywołaj kod z różnymi wartościami licznik i wartość.

---

Druga pętla, to pętla for. Przykład:

print "Petla 1:"
for i in range(5):
        print i

print "Petla 2:"
for i in range(3, 5):
        print i

print "Petla 3:"
for i in range(10, 100, 10):
        print i

W tym wypadku po słowie kluczowym for podajemy nazwę zmiennej i zakres w ramach którego ma on przyjmować wartości. Zakres definiujemy słowem range. Funkcja range tworzy listę wartości całkowitych od zera do podanej wartości (jeżeli podamy 1 argument) lub od - do (jeżeli podamy 2 argumenty). Możemy podać też trzeci parametr określający przyrost wartości zmiennej.

Dla typów znakowych pętla ta będzie wyglądać następująco:

slowa = "Algorytmy i programowanie"
for i in slowa:
        print i

W powyższym przypadku zmienna i przyjmuj jako kolejne wartości ciągi znaków oddzielone spacjami i zapisane w ciągu slowa.

Wczytywanie danych

W praktycznych zastosowaniach rzadko kiedy znamy z góry pełen zestaw danych na których ma działać nasz program. Dlatego też musimy posiadać mechanizm umożliwiający użytkownikowi wprowadzanie dowolnych wartości do naszego algorytmu. W Pythonie proces ten wygląda następująco, wywołaj kod i w okienku Python shell wpisz liczbę 12 dwa razy.

liczba = 0
print 'Podaj liczbę'
liczba = raw_input()
print liczba
print liczba + liczba
print 'Podaj liczbę'
liczba = int(raw_input())
print liczba
print liczba + liczba

Do wczytywania zmiennych posłużyła nam funkcja raw_input(), która odczytuje podane przez użytkownika dane (aż do wciśnięcia enter). Otrzymane dane zapisujemy do zmiennej. Nie mamy jednak pewności jakiego typu dane zostały podane. Domyślnie podana wartość traktowana jest jako ciąg znaków. Operacja int() pozwala nam określić, że dane które powinny się znajdować w zmiennej liczba powinny być liczbami całkowitymi. Zapis float(raw_input()) mówi nam, że chcemy wczytać liczbę rzeczywistą.

Ćwiczenie

Wywołaj powyższy kod i wpisz dwa razy 2. Zobacz, co się stanie.

---

Ćwiczenie

Wywołaj powyższy kod i wpisz dwa razy abc. Zobacz, co się stanie.

---

Ćwiczenie

Wywołaj powyższy kod i wpisz dwa razy 12 1. Zobacz, co się stanie.

---

Jeżeli chcemy odczytać tylko wartości do spacji możemy skorzystać z metody .split(), która dzieli dane względem spacji.

liczba = 0
print 'Podaj liczbę'
liczba = int(raw_input().split()[0])
print liczba

Symbol [0] odnosi się do wzięcia pierwszego elementu tzw. tablicy, o której powiemy sobie na przyszłych zajęciach.

Ćwiczenie

Wywołaj powyższy kod i wpisz dwa razy 12 1. Zobacz co się stanie.

---

Zadania

  1. Napisz program wypisujący sumę liczb 12312 i 31238.

  2. Napisz program wypisujący nieparzyste liczby z zakresu 100 do 200

  3. Napisz program obliczający sumę dowolnych dwóch liczb całkowitych.

  4. Program generujący wartość bezwzględną podanej liczby całkowitej.

  5. Napisz program obliczający liczbę cyfr podanej liczby naturalnej.

*

Wykorzystano materiały z:

http://www.learnpython.org/pl/

http://www.python.rk.edu.pl/w/p/wprowadzenie-do-pythona/