Podstawowe elementy języka Python III. Wykład 3. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 50 / 277

Podobne dokumenty
Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)

Wielkości liczbowe. Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Wielkości liczbowe. Wykład z Podstaw Informatyki. Piotr Mika

Liczby rzeczywiste są reprezentowane w komputerze przez liczby zmiennopozycyjne. Liczbę k można przedstawid w postaci:

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

Arytmetyka liczb binarnych

Podstawy Informatyki

Pracownia Komputerowa wykład VI

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Python wstęp do programowania dla użytkowników WCSS

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Architektura komputerów

ARCHITEKTURA KOMPUTERÓW Liczby zmiennoprzecinkowe

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 2 WSTĘP DO INFORMATYKI

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

Wstęp do informatyki- wykład 2

Technologie Informacyjne Wykład 4

Pracownia Komputerowa wyk ad VI

Zapis liczb binarnych ze znakiem

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Kiedy i czy konieczne?

Arytmetyka binarna - wykład 6

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

Systemy zapisu liczb.

Kod IEEE754. IEEE754 (1985) - norma dotycząca zapisu binarnego liczb zmiennopozycyjnych (pojedynczej precyzji) Liczbę binarną o postaci

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Wprowadzenie do informatyki - ć wiczenia

LICZBY ZMIENNOPRZECINKOWE

Technologie Informacyjne

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Wstęp do programowania. Reprezentacje liczb. Liczby naturalne, całkowite i rzeczywiste w układzie binarnym

Kodowanie informacji. Kody liczbowe

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

dr inż. Jarosław Forenc

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Stan wysoki (H) i stan niski (L)

Wstęp do informatyki- wykład 1 Systemy liczbowe

Podstawy programowania w Pythonie

Kod U2 Opracował: Andrzej Nowak

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Wstęp do informatyki- wykład 1 Systemy liczbowe

Wykład 2. Informatyka Stosowana. 8 października 2018, M. A-B. Informatyka Stosowana Wykład 2 8 października 2018, M. A-B 1 / 41

1. Operacje logiczne A B A OR B

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Podstawy i języki programowania

Obliczenia Naukowe. O arytmetyce komputerów, Czyli jak nie dać się zaskoczyć. Bartek Wilczyński 29.

Podstawy Informatyki

System liczbowy jest zbiorem reguł określających jednolity sposób zapisu i nazewnictwa liczb.

Wprowadzenie do informatyki - ć wiczenia

DYDAKTYKA ZAGADNIENIA CYFROWE ZAGADNIENIA CYFROWE

Teoretyczne Podstawy Informatyki

PROGRAMOWANIE W JĘZYKU PYTHON

Podstawy i języki programowania

Liczby zmiennoprzecinkowe i błędy

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łan Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn

Pracownia Komputerowa wykład V

Programowanie Niskopoziomowe

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

W jaki sposób użyć tych n bitów do reprezentacji liczb całkowitych

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Naturalny kod binarny (NKB)

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

1.1. Pozycyjne systemy liczbowe

Wstęp do Informatyki i Programowania Laboratorium: Lista 1 Środowisko programowania

Algorytmy i struktury danych. Wykład 4

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

Arytmetyka stało i zmiennoprzecinkowa

Architektura komputerów Reprezentacja liczb. Kodowanie rozkazów.

Wstęp do Informatyki

Operatory w C++ Operatory arytmetyczne. Operatory relacyjne (porównania) Operatory logiczne. + dodawanie - odejmowanie * mnożenie / dzielenie % modulo

Cw.12 JAVAScript w dokumentach HTML

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Pracownia Komputerowa wykład IV

Podstawy programowania w Pythonie

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Algorytmy i struktury danych

Podstawy Informatyki dla Nauczyciela

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Architektura komputerów

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Algorytmika i Programowanie VBA 1 - podstawy

Podstawy i języki programowania

4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

LibreOffice Calc VBA

Pozycyjny system liczbowy

Podstawy programowania. Python wykład 6

Typy danych, zmienne i tablice. Tomasz Borzyszkowski

Transkrypt:

Wykład 3 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 50 / 277

liczby całkowite wartości logiczne liczby rzeczywiste liczby zespolone łańcuchy znaków krotki listy zbiory J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 51 / 277

Liczby całkowite reprezentacja binarna liczby całkowite wartości logiczne J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 52 / 277

Liczby całkowite: reprezentacja binarna Niech (b n 1, b n 2,...,b 1, b 0 ) 2 będzie binarną reprezentacją liczby całkowitej ze znakiem. Bit b n 1 nazywa się bitem znaku. Gdy b n 1 = 1, to liczba całkowita jest ujemna. Niech m = P n 2 i=0 2i b i będzie wartością zapisaną na bitach od b n 2 do b 0. Wówczas wartością liczby ze znakiem zapisanej w kodzie uzupełnień do dwóch (U2) na n bitach jest m 2 n 1 b n 1. Example (n = 8) (10101010) 2 = (2 + 8 + 32) 2 7 = 42 128 = 86 (11111111) 2 = (1 + 2 + 4 + 8 + 16 + 32 + 64) 2 7 = 127 128 = 1 (01010101) 2 = (1 + 4 + 16 + 64) 0 = 85 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 53 / 277

Liczby całkowite: reprezentacja binarna Wkodzieuzupełnieńdodwóch(U2)możnazapomocąn bitów zapisać 2 n wartości z zakresu: 2 n 1..2 n 1 1 Example (n = 3) 0 0 0 0 0 0 1 1 0 1 0 2 0 1 1 3 1 0 0-4 1 0 1-3 1 1 0-2 1 1 1-1 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 54 / 277

Liczby całkowite W języku Python 3 liczba całkowita reprezentowana jest dowolnie długim ciągiem bitów a jedynym ograniczeniem jest dostępna pamięć maszyny. Na wartościach całkowitych wykonywać można następujące operacje: + - * dodawanie, odejmowanie, mnożenie / // % dzielenie, dzielenie całkowite, reszta z dzielenia ^ & ~ bitowa OR, XOR, AND, NOT << >> przesunięcie w lewo i w prawo ** potęgowanie J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 55 / 277

Liczby całkowite Example >>> 5 3 # (0101) (0011) = (0111) 7 >>> 5 ^ 3 # (0101) ^ (0011) = (0110) 6 >>> 5 & 3 # (0101) & (0011) = (0001) 1 >>> ~3 # ~(011) = (100) -4 >>> 5 << 2 # (0101) << 2 = (010100) 20 >>> 5 >> 2 # (0101) >> 2 = (01) 1 >>> 5 ** 2 25 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 56 / 277

Wartości logiczne Wartość 0 reprezentuje fałsz natomiast wartość 1 reprezentuje prawdę 1. Dostępne są stałe True i False reprezentujące wartości logiczne. Operacje logiczne: and or not Wybrane operacje porównania: koniunkcja i alternatywa negacja < <= mniejsze, mniejsze lub równe > >= większe, większe lub równe ==!= równe, różne 1 W rzeczywistości każda wartość całkowita różna od zera oznacza prawdę. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 57 / 277

Liczby zmiennoprzecinkowe Liczby zmiennoprzecinkowe reprezentowane są jako liczby podwójnej precyzji zgodnie ze standardem IEEE 754. Liczba zmiennoprzecinkowa zajmuje 64 bity (8 bajtów): 1 bit znaku cecha (11 bitów) mantysa (52 bity) J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 58 / 277

Liczby zmiennoprzecinkowe Niech z będzie bitem znaku, c 10 c 9...c 0 będą bitami cechy 2, natomiast m 51 m 50...m 0 bitami mantysy. Reprezentowana liczba ma wartość: ( 1) z (1.m 51 m 50...m 0 ) 2 2 (c 10c 9...c 0 ) 2 1023 Jest skończenie wiele liczb zmiennoprzecinkowych (co najwyżej 2 64 ). Liczby zmiennoprzecinkowe rozmieszczone są symetrycznie względem zera. Jest najmniejsza dodatnia liczba zmiennopozycyjna (= 2 1022 2.2 10 308 ). Jest największa dodatnia liczba zmiennopozycyjna (= (2 2 52 ) 2 1023 2 1024 1.8 10 308 ). 2 Cechy 00000000000 i 11111111111 mają specjalne znaczenie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 59 / 277

Liczby zmiennoprzecinkowe Epsilon maszynowym nazywa się najmniejszą liczbę zmiennoprzecinkową, która dodana do 1 jest większa od 1 (= 2 52 2.22 10 16 ). Wprzedziale[2 n, 2 n+1 ] liczby zmiennoprzecinkowe odległe są od siebie o2 n 52. Example (2 53 + 1 = 2 53 ) W zakresie [2 53, 2 54 ]=[9007199254740992, 18014398509481984] odległość między kolejnymi liczbami zmiennoprzecinkowymi wynosi 2 53 52 = 2. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 60 / 277

Liczby dziesiętne Operacje na liczbach zmiennoprzecinkowe obarczone są błędami zaokrągleń. Dokładne wyniki można uzyskać stosując liczby dziesiętne (zmiennoprzecinkowe stałej precyzji). Example >>> 0.1-0.3-0.19999999999999998 >>> from decimal import Decimal >>> Decimal( 0.1 )-Decimal( 0.3 ) Decimal( -0.2 ) J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 61 / 277

Ułamki (liczby wymierne) Do reprezentowania liczb wymiernych można zastosować ułamki. Podstawowe operacje na ułamkach nie są obaczone błędami zaokrągleń. Example ( 1 5 5 6= 1) >>> 1/5 0.2 >>> from fractions import Fraction >>> Fraction(1/5) Fraction(3602879701896397, 18014398509481984) >>> Fraction(1/5)*5 Fraction(18014398509481985, 18014398509481984) J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 62 / 277

Ułamki (liczby wymierne) Example >>> Fraction( 1/5 ) Fraction(1, 5) >>> Fraction( 1/5 )*5 Fraction(1, 1) >>> Fraction( 1/2 )**Fraction( 1/2 ) 0.7071067811865476 >>> from math import sqrt >>> sqrt(0.5) 0.7071067811865476 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 63 / 277

Liczby zespolone Liczbę zespoloną o części rzeczywistej R i części urojonej I zapisać można jako R + Ij Example >>> (1+2j)*(3+4j) (-5+10j) >>> 1j*1j (-1+0j) J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 64 / 277

Łańcuchy znaków Łańcuchy znaków są niemutowalne (nie mogą być modyfikowane). Napisy umieszcza się między znakami albo " " (można je stosować zamiennie): "Python s" Python"s Łańcuch znaków może być kontynuowany przez kolejne wiersze ale powinien być ujęty w trzy znaki cudzysłów """: """To jest blok wielowierszowy""" Kolejne łańcuchy znaków zostają scalone (sklejone): "To " "będzie " "scalone." J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 65 / 277

Łańcuchy znaków Łańcuch znaków może zawierać między innymi następujące znaki specjalne: \nowy wiersz kontynuacja w nowym wierszu \\ lewy ukośnik \ apostrof \" cudzysłów \a dzwonek \b Backspace \f wysunięcie strony \n nowy wiersz \r powrót karetki \t przesunięcie do pozycji tabulacji \0 znak NULL o kodzie 0 (nie kończy napisu) J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 66 / 277

Łańcuchy znaków Niech s będzie łańcuchem znaków. Wówczas s.find(sub) zwraca pozycję od której łańcuch sub zaczyna się w łańcuchu s ( 1 gdy brak). s.index(sub) tak jak s.find(sub) ale zgłasza wyjątek ValueError zamiast zwracać wartość 1. s.count(sub) zwraca liczbę nienachodzących na siebie wystąpień łańcucha sub w łańcuchu s. s.split(sep) zwraca listę łańcuchów powstałych w wyniku podzielenia łańcucha s względem separatora sep: >>> s = "Lubię góry, programowanie, fotografowanie." >>> s.split(",") [ Lubię góry, programowanie, fotografowanie. ] J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 67 / 277

Łańcuchy znaków Niech s będzie łańcuchem znaków. Wówczas sep.join(list) zwraca łańcuch powstały w wyniku połączenia łańcuchów na liście list oddzielając je separatorem sep: >>> sep = "+" >>> sep.join(["a", "10", "f(x)"]) a+10+f(x) s.replace(old, new) zwraca kopię łańcucha s, w której wszystkie wystąpienia łańcucha old zastąpiono łańcuchem new: >>> s = "abrakadabra" >>> s.replace("bra", "kra") akrakadakra J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 68 / 277

Krotki Krotki są niemutowalne (nie mogą być modyfikowane). Krotkę zapisuje się wymieniając jej elementy oddzielone przecinkiem między okrągłymi nawiasami ( ): () pusta krotka (0, ) krotka jednoelementowa 0 == (0)!= (0,) (0, 1, 2, 3) krotka złożona z czterech elementów Dostawanie się do elementów krotki: >>> atuple = ( spam, (42, jajka )) >>> atuple[1][1] jajka Konwersja do postaci krotki: >>> atuple = tuple("spam") >>> atuple ( s, p, a, m ) J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 69 / 277

Krotki Niech t będzie krotką. Wówczas t.index(x) zwraca indeks pierwszego wystąpienia wartości x w krotce t. t.count(x) zwraca liczbę wystąpień wartości x w krotce t: >>> tuple("abrakadabra").count("a") 5 >>> tuple("abrakadabra").count("b") 2 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 70 / 277

Listy Listy są mutowalne (mogą być modyfikowane). Listę zapisuje się wymieniając jej elementy oddzielone przecinkiem między kwadratowymi nawiasami [ ]: [] lista pusta [0] lista jednoelementowa (0,)!= [0]!= 0 [0, 1, 2, 3] lista złożona z czterech elementów Dostawanie się do elementów listy: >>> alist = [ spam, [42, 3.1415], 1.23] >>> alist[1][0] 42 Konwersja do postaci listy: >>> alist = list( spam ) >>> alist [ s, p, a, m ] J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 71 / 277

Listy Niech alist będzie listą. Wówczas: alist.append(x) dołączenie pojedynczego elementu x na końcu listy alist. alist.reverse() odwrócenie elementów listy (w miejscu bez tworzenia kopii): >>> alist = [x**2 for x in range(5)] >>> alist.reverse() >>> alist [16, 9, 4, 1, 0] alist.index(x) indeks pierwszego wystąpienia wartości x na liście alist. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 72 / 277

Listy alist.insert(i, x) wstawia na pozycję i listy alist wartość x. >>> alist = [1, 2, 3, 4] >>> alist.insert(0, "new") >>> alist [ new, 1, 2, 3, 4] alist.count(x) zwraca liczbę wystąpień wartości x na liście alist. alist.remove(x) usuwa pierwsze wystąpienie wartości x na liście alist. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 73 / 277

Listy Niech alist1 i alist2 będą dwiema listami. Wówczas alist1 + alist2 tworzy nową listę będącą połączeniem (konkatenacją) list alist1 i alist2. >>> alist1 = [1, 2, 3] >>> alist2 = [4, 5] >>> alist = alist1 + alist2 >>> alist [1, 2, 3, 4, 5] >>> alist1[1] = 13 >>> alist [1, 2, 3, 4, 5] J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 74 / 277

Listy Niech alist będzie niepustą listą a niech x i y będą zmiennymi. Wówczas Instrukcja podstawienia x, *y = alist podstawia pod x pierwszy element listy (głowę listy) a pod y listę pozostałych elementów listy (ogon listy). >>> alist = ["ala", "ma", "asa"] >>> x, *y = alist >>> x ala >>> y [ ma, asa ] W przypadku gdy alist jest listą pustą, wówczas zgłaszany jest wyjątek ValueError. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 75 / 277

Listy Example Dołączenie listy y na końcu listy x: def app(x, y): for z in y: x.append(z) >>> alist1 = [1, 2, 3] >>> alist2 = [4, 5] >>> app(alist1, alist2) >>> alist1 [1, 2, 3, 4, 5] Uwaga: powstaje nowa kopia elementów listy alist2. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 76 / 277

Zbiory Zbiór to mutowalną nieuporządkowana kolekcja unikalnych elementów. Dostępna są operacje in oraz not in, które sprawdzają czy obiekt jest lub nie jest elementem zbioru i funkcja len, która oblicza wielkość zbioru. Można iterować pętlę po elementach zbioru: >>> for x in set("abrakadabra"): print(x) d r a b k J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 77 / 277

Zbiory Niech aset1 i aset2 będą zbiorami. Wówczas Operacje mnogościowe na zbiorach aset1 aset2, aset1 & aset2, aset1 - aset2, aset1 ˆ aset2: set("pecan") set("pie") == { p, e, a, c, n, i } # suma zbiorów set("pecan") & set("pie") == { p, e } # część wspólna zbiorów set("pecan") - set("pie") == { c, a, n } # różnica zbiorów set("pecan") ^ set("pie") == { c, a, n, i } # różnica symetryczna J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 78 / 277

Zbiory Niech s i t będą zbiorami. Wówczas s.add(x) dodaje element x do zbioru s. s.clear() usuwa wszystkie elementy z s. s.difference_update(t) usuwa z s elementy, które są w zbiorze t. s.intersection_update(t) pozostawia w s elementy, które są w zbiorze t. s.union(t) dodaje do zbioru s elementy ze zbioru t. s.issubset(t) sprawdza czy s jest podzbiorem zbioru t. s.isdisjoint(t) sprawdza czy zbiory s i t są rozłączne. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 79 / 277