Wstęp do Informatyki i Programowania (kierunek matematyka stosowana) Jacek Cichoń Przemysław Kobylański Instytut Matematyki i Informatyki Politechnika Wrocławska Na podstawie: M.Summerfield.Python 3. Kompletne wprowadzenie do programowania. Helion, 2010. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 1 / 231
Plan wykładu 1 Podstawowe elementy języka Python I 2 Podstawowe elementy języka Python II 3 Podstawowe elementy języka Python III 4 Algorytmy i programy 5 Poprawność algorytmu 6 Projektowanie zstępujące 7 Czasowa złożoność obliczeniowa 8 Rekurencja 9 Zasada dziel i zwyciężaj 10 Przeszukiwanie z nawrotami 11 Zaawansowane elementy języka Python I 12 Zaawansowane elementy języka Python II 13 Zaawansowane elementy języka Python III 14 Kolokwium J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 2 / 231
Literatura Lektura podstawowa 1 S. Alagić, M.A. Arbib. Projektowanie programów poprawnych i dobrze zbudowanych. WNT,Warszawa,1982. 2 D. Harel, Y. Feldman. Rzecz o istocie informatyki. WNT, Warszawa, 2008. 3 M. Summerfield. Python 3. Kompletne wprowadzenie do programowania. Helion,2010. Lektura uzupełniająca 1 A. Hunt, D. Thomas. Pragmatyczny programista. Od czeladnika do mistrza. WNT,Warszawa,2002. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 3 / 231
Wykład 1 I J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 4 / 231
I zmienne wyrażenia instrukcja przypisania instrukcje wejścia/wyjścia instrukcja warunkowa J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 5 / 231
Zmienne >>> x = 1 >>> y = 2 >>> x 1 >>> y 2 >>> x+y 3 >>> J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 6 / 231
Zmienne >>> a = 7 a 7 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 7 / 231
Zmienne >>> a = 7 >>> b = a a 7 b J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 8 / 231
Zmienne >>> a = 7 >>> b = a >>> a = Liberty a 7 b Liberty J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 9 / 231
Zmienne >>> x = "blue" >>> y = "green" >>> z = x >>> print(x, y, z) blue green blue >>> z = y >>> print(x, y, z) blue green green >>> x = z >>> print(x, y, z) green green green J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 10 / 231
Zmienne >>> x = blue x blue J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 11 / 231
Zmienne >>> x = blue >>> y = green x y blue green J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 12 / 231
Zmienne >>> x = blue >>> y = green >>> z = x x y blue green z J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 13 / 231
Zmienne >>> x = blue >>> y = green >>> z = x >>> z = y x y blue green z J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 14 / 231
Zmienne >>> x = blue >>> y = green >>> z = x >>> z = y >>> x = z x y blue green z J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 15 / 231
Zmienne >>> x = blue >>> y = green >>> z = x >>> z = y >>> x = z x y green z Śmieciarz (garbage-collector) J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 16 / 231
Wyrażenia Podstawowe typy: int typ całkowity float typ rzeczywisty podwójnej precyzji complex typ zespolony str łańcuch znaków >>> type(13) <class int > >>> type(3.14) <class float > >>> type(1j) <class complex > >>> type("abrakadabra") <class str > J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 17 / 231
Wyrażenia (operatory na liczbach) Działanie Opis X + Y, X - Y Dodawanie, odejmowanie X * Y, X / Y, Mnożenie, dzielenie X // Y, X % Y Dzielenie całkowite, reszta z dzielenia -X, +X Negacja, tożsamość X Y, X & Y Bitowe operacje OR i AND X ^ Y Bitowa operacja XOR X << N, X >> N Bitowe przesunięcie o N pozycji ~X Bitowa negacja X ** Y Podniesienie X do potęgi Y abs(x) Wartość bezwzględna int(x) Konwersja na liczbę całkowitą float(x) Konwersja na liczbę zmiennopozycyjną complex(x), complex(re, im) Utworzenie liczby zespolonej divmod(x, Y) Krotka (X//Y, X%Y) pow(x, Y, Z) Podnoszenie X do potęgi Y modulo Z J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 18 / 231
Wyrażenia (przykłady) >>> 2 + 2 4 >>> 10 / 3 3.3333333333333335 >>> 10 // 3 3 >>> 10 % 3 1 >>> 6 << 2 24 >>> int(" 123 ") 123 >>> complex(1) (1+0j) J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 19 / 231
Wyrażenia (operatory logiczne) Działanie Opis X if Y else Z Jeśli Y, to X (w p.p. Z) X and Y Logiczna koniunkcja X or Y Logiczna alternatywa not X Logiczna negacja X < Y, X > Y Porównanie wielkości X <= Y, X >= Y Porównanie wielkości X == Y, X!= Y Porównanie wielkości J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 20 / 231
Wyrażenia (przykłady) >>> zero, two, five = 0, 2, 5 >>> two if zero else five 5 >>> two and five 5 >>> five or zero 5 >>> not zero True >>> two < five True >>> five!= zero True J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 21 / 231
Instrukcja przypisania cel = wyrażenie cel zawiera referencję do obiektu wyrażenie zwraca obiekt J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 22 / 231
Instrukcja przypisania cel = wyrażenie cel1 = cel2 = wyrażenie cel1, cel2 = wyrażenie1, wyrażenie2 cel += wyrażenie cel1, cel2,... = iterator-tej-samej-długości (cel1, cel2,...) = iterator-tej-samej-długości [cel1, cel2,...] = iterator-tej-samej-długości cel1, *cel2 = iterator-odpowiedniej-długości J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 23 / 231
Instrukcja przypisania (przykłady) >>> x = y = 1 >>> x, y (1, 1) >>> x, y = 1, 2 >>> x, y (1, 2) >>> x += y >>> x, y (3, 2) >>> x, y, z = [1, 2, 3] >>> x, y, z (1, 2, 3) >>> x, *y = [1, 2, 3] >>> x, y (1, [2, 3]) J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 24 / 231
Instrukcje wejścia/wyjścia >>> print(2+2) 4 >>> print(1, 2, 3) 1 2 3 >>> print(1, 2, 3, sep = - ) 1-2-3 >>> print(1, 2, 3, sep = -, end = koniec ) 1-2-3koniec>>> print() >>> J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 25 / 231
Instrukcje wejścia/wyjścia >>> input("podaj napis: ") podaj napis: >>> input("podaj napis: ") podaj napis: Ala ma Asa. Ala ma Asa. >>> wiek = int(input("podaj swój wiek: ")) podaj swój wiek: 18 >>> wiek 18 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 26 / 231
Instrukcja warunkowa if logiczne_wyrażenie1: instrukcja1 elif logiczne_wyrażenie2: instrukcja2... elif logiczne_wyrażenien: instrukcjan else: instrukcja J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 27 / 231
Instrukcja warunkowa (przykłady) if x: print("x is nonzero") if lines < 1000: print("small") elif lines < 10000: print("medium") else: print("large") J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 28 / 231
Instrukcja warunkowa (trójmian kwadratowy) from math import sqrt # potrzebny pierwiastek kwadratowy a = float(input("podaj a: ")) if a!= 0.0: b = float(input("podaj b: ")) c = float(input("podaj c: ")) delta = b*b-4.0*a*c if delta < 0.0: print("brak pierwiastków") elif delta == 0.0: print(-b/(2.0*a)) else: print((-b-sqrt(delta))/(2.0*a)) print((-b+sqrt(delta))/(2.0*a)) else: print("to nie jest trójmian kwadratowy") J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 29 / 231