dr inż. Paweł Myszkowski Politechnika Białostocka Wydział Elektryczny Elektronika i Telekomunikacja, semestr II, studia stacjonarne I stopnia Rok akademicki 2015/2016 Wykład nr 1 (24.02.2016)
Plan prezentacji: informacje organizacyjne informacja cyfrowa i jej jednostki pozycyjne systemy liczbowe
Informacje organizacyjne kontakt z wykładowcą informatyka na EiT wybrane przedmioty ramowy program wykładu literatura efekty kształcenia (EK) warunki zaliczenia wykładu terminarz zajęć
Kontakt z wykładowcą: dr inż. Paweł Myszkowski Katedra Elektrotechniki Teoretycznej i Metrologii Wydział Elektryczny, Politechnika Białostocka pokój WE-206 (II piętro), ul. Wiejska 45D e-mail: p.myszkowski@pb.edu.pl tel.: (85) 746-94-27 www: http://we.pb.edu.pl/~pmyszkowski FACEBOOK!!! Konsultacje: Środa 11.00 13.00 Piątek 12.00 14.00
Informatyka na kierunku EiT: Semestr I Podstawy Informatyki [Pracownia 30 h] Semestr II Metodyki i Techniki Programowania [Wykład 15 h, Pracownia 30 h] Semestr III Programowanie w językach wysokiego poziomu [Pracownia 30 h] MATLAB Oprogramowanie biurowe Schematy blokowe algorytmów Kodowanie (niewielki zakres) Teoria programowania Architektura komputerów (Flynn) Programowanie w C++ (teoria i praktyka) Podstawy programowania obiektowego [C++ i Java] Obsługa urządzeń peryferyjnych
Informatyka na kierunku EiT: Semestr IV [spec.: Teleinf. i Optoel.] Obiektowe programowanie aplikacji [Wykład 30 h, Pracownia 30 h] Semestr IV [spec.: Aparatura el.] Programowalne struktury logiczne [Wykład 30 h, Laboratorium 30 h] Semestr IV [spec.: Aparatura el.] Technika mikroprocesorowa 1 [Wykład 30 h] Programowanie obiektowe w C++ Biblioteki metod, szablonów i klas Podstawy prog. wielowątkowego Elementy architektury układów FPGA Programowanie układów PLD Dekodery adresowe, mapa pamięci Przerwania, urządzenia wejścia/wyjścia Mikroprocesor: architektura, rozkazy
Informatyka na kierunku EiT: Semestr V [spec.: Teleinf. i Optoel.] Architektura i programowanie procesorów sygnałowych [Wykład 30 h, Laboratorium 45 h] Cyfrowe przetwarzanie sygnałów w językach niskiego i wysokiego poziomu Współpraca z układami peryferyjnymi Semestr VI [spec.: Aparatura el.] Programowanie obiektowe [Pracownia 30 h] Przygotowanie projektu aplikacji Programowanie obiektowe w wybranych językach programowania
Ramowy program wykładu (1/3): 1. Informacje organizacyjne. Informacja cyfrowa i jej jednostki. Pozycyjne systemy liczbowe. 2. Kodowanie liczb stałopozycyjnych. Klasyfikacje kodów. Kodowanie znaków. Systemy pozycyjne w języku C++. 3. Arytmetyka liczb binarnych. Kodowanie liczb zmiennoprzecinkowych. Standard IEEE-754. 4. Arytmetyka zmiennoprzecinkowa i jej dokładność. Paradygmaty programowania. 5. Klasyfikacja języków programowania. Struktura programu w języku C++. Definicje i deklaracje zmiennych i stałych.
Ramowy program wykładu (2/3): 6. Typy danych. Instrukcje wejścia/wyjścia. Wyrażenia. Zakresy obowiązywania zmiennych. Klasyfikacja i hierarchia operatorów. 7. Funkcje: konstrukcja, przekazywanie parametrów, funkcje standardowe, biblioteki. 8. Podstawowe konstrukcje języków algorytmicznych: instrukcja warunkowa if, instrukcja wyboru switch, operator warunkowy. 9. Podstawowe konstrukcje języków algorytmicznych: instrukcje iteracyjne for, while, do while. Instrukcja skoku. 10. Podstawowe struktury danych: tablice, łańcuchy znaków, wskaźniki. Typ strukturalny.
Ramowy program wykładu (3/3): 11. Dynamiczne struktury danych: stos, kolejka. 12. Dynamiczne struktury danych: lista (jedno- i dwukierunkowa, cykliczna), drzewo. 13. Architektura komputerów, klasyfikacja Flynna. Pamięć współdzielona i rozproszona. Strategie i metody programowania: iteracja, rekurencja, sekwencyjność, współbieżność. Złożoność obliczeniowa algorytmów: miary złożoności, różne klasy złożoności.
Literatura (1/2): 1. Ogrodzki J.: "Wstęp do systemów komputerowych". Oficyna Wydawnicza Politechniki Warszawskiej, Warszawa, 2005. 2. Pochopień B.: "Arytmetyka systemów cyfrowych". Wydawnictwo Politechniki Śląskiej, Gliwice, 2003. 3. Gryś S.: "Arytmetyka komputerów". PWN, Warszawa, 2007. 4. Tanenbaum A.S.: "Strukturalna organizacja systemów komputerowych". Helion, Gliwice, 2006. 5. Stallings W.: "Organizacja i architektura systemu komputerowego. Projektowanie systemu a jego wydajność". WNT, Warszawa, 2004 6. Harel D., Feldman Y.: "Rzecz o istocie informatyki. Algorytmika". WNT, Warszawa, 2008
Literatura (2/2): 7. Malina W., Szwoch M.: "Metodologia i techniki programowania". PWN, Warszawa, 2008. 8. Wróblewski P.: "Algorytmy, struktury danych i techniki programowania. Wydanie IV". Helion, Gliwice, 2009. 9. Kernighan B.W., Ritchie D.M.: "Język ANSI C. Programowanie. Wydanie II". Helion, Gliwice, 2010. 10. Prata S.: "Język C. Szkoła programowania. Wydanie V". Helion, Gliwice, 2006 11. Grębosz J.: "Symfonia C++ standard: programowanie w języku C++ orientowane obiektowo. Tom 1 i 2". Wydawnictwo "Edition 2000", Kraków, 2008. 12. Eckel B.: "Thinking in C++. Edycja polska". Helion, Gliwice, 2002.
Efekty kształcenia ustalone dla przedmiotu (1/2) Student, który zaliczył przedmiot: EK1 wyjaśnia i stosuje podstawowe metody programowania strukturalnego [W, P] EK2 dostrzega powiązanie programu z architekturą komputera i oszacowuje wymagania tworzonego algorytmu, związane z realizacją sprzętową [W, P] EK3 identyfikuje podstawowe cechy, konstruuje algorytmy i stosuje schematy programowania, niezbędne do realizacji zadania [W, P]
Efekty kształcenia ustalone dla przedmiotu (2/2) Student, który zaliczył przedmiot: EK4 potrafi przygotować i uruchomić program związany z obliczeniami numerycznymi [P] EK5 analizuje budowę tworzonych programów, określa właściwości programów [P] EK6 przygotowuje dokumentację techniczną dotyczącą tworzonych programów [P]
Warunki zaliczenia: - nie ma egzaminu, wykład kończy się zaliczeniem - zamiast jednego sprawdzianu - dwa kolokwia - kolokwium w wymiarze czasowym 45 minut - I kolokwium połowa semestru - II kolokwium końcówka semestru - w obu przypadkach termin podstawowy (w ramach wykładu) oraz poprawkowy (poza) - zadania związane z efektami kształcenia
Zagadnienia związane z poszczególnymi EK (1/3) EK1: - znajomość konstrukcji programu w C++, - deklarowanie zmiennych, definiowanie stałych, - stosowanie instrukcji wejścia/wyjścia, - stosowanie operatorów, znajomość hierarchii, - stosowanie instrukcji sterujących (warunkowa, wyboru, pętle), - obsługa i rozumienie tablic.
Zagadnienia związane z poszczególnymi EK (2/3) EK2: - mechanizmy kodowania liczb i znaków w systemach komputerowych, - umiejętność doboru odpowiedniego typu danych, - umiejętność szacowania złożoności algorytmu, - przetwarzanie sekwencyjne a równoległe / wielowątkowe.
Zagadnienia związane z poszczególnymi EK (3/3) EK3: - wydzielanie bloków programu w postaci funkcji, - przekazywanie parametrów do funkcji, - zasięg i przesłanianie zmiennych, - wybór strategii programowania: sekwencyjność, iteracja, rekurencja.
Dokładne wytyczne dotyczące zaliczenia wykładu oraz pracowni, jak również karta przedmiotu, dostępne są po zalogowaniu w systemie USOS: http://usosweb.pb.edu.pl
Metodyki i Techniki Programowania - terminarz wykładów Termin nr 1 24.02.2016 Termin nr 2 2.03.2016 Termin nr 3 9.03.2016 Termin nr 4 16.03.2016 Termin nr 5 23.03.2016 Święta Wielkanocne Termin nr 6 30.03.2016 Termin nr 7 6.04.2016 Termin nr 8 13.04.2016 KOLOKWIUM NR 1 Termin nr 9 20.04.2016 Termin nr 10 27.04.2016 Długi weekend majowy Termin nr 11 11.05.2016 Juwenalia Termin nr 12 18.05.2016 Termin nr 13 1.06.2016 Termin nr 14 8.06.2016 Termin nr 15 15.06.2016 KOLOKWIUM NR 2
Plan dalszej części prezentacji: informacja cyfrowa i jej jednostki pozycyjne systemy liczbowe i ich zastosowania
Informacja wielkość abstrakcyjna Informacja może być: - przechowywana, - przesyłana, - przetwarzana, - stosowana do sterowania. 10100110101001011 0110101001010001011 1010101011001010111 010111110100111111? Informacja = Dane + Interpretacja
Informacja: co oznaczają poniższe dane? 011001101100110010011001 01100110 11001100 10011001 Kod NKB? 102, 204, 153 0110 0110 1100 1100 1001 1001 A może kod BCD? 6 6 C C 9 9 Kod szesnastkowy? #66CC99 = [102, 204, 153] Kolor w trybie RGB!
Informacja w postaci analogowej i cyfrowej Sygnał analogowy y(t) Sygnał cyfrowy y(t) - może przyjmować dowolną wartość z przedziału zmienności - w dowolnej chwili t można wyznaczyć y(t) na podstawie opisu matematycznego t - zbiory argumentów i wartości są dyskretne (nieciągłe) - sygnał może zmieniać wartość tylko w określonych chwilach czasu i przyjmować tylko określone wartości t
W układach cyfrowych występują dwa stany, służące do zapisu i przetwarzania informacji: - stan niski (L), poziom logiczny niski => zero (0) - stan wysoki (H), poziom logiczny wysoki => jedynka (1) Bit (ang. binary digit) podstawowa jednostka informacji w systemach komputerowych i telekomunikacji - przyjmuje jedną z dwóch wartości: 0 (zero) lub 1 (jeden) 0 1 - określa najmniejszą ilość informacji niezbędną do określenia, który z dwóch możliwych stanów przyjął układ - oznaczenie: b (IEEE 1541 Standard, rok 2002) lub bit (IEC 60027)
Bajt (ang. byte, nazywany także oktetem) najmniejsza jednostka informacji pamięci komputerowej podlegającą adresowaniu. 7 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 6 5 4 3 2 1 0 Przyjmuje się bajt o długości 8 bitów, choć nie zawsze tak było: - w pierwszych komputerach bajt miał 4, 6, 7, 9 lub 12 bitów, - od 1964 r. standard 8-bitowy wprowadzony przez IBM, - oznaczenie: wielka litera B. 2 8 = 256 - ilość kombinacji bitowych, możliwa do zapisania na jednym bajcie 0000 0000 => 0 0000 0001 => 1 1111 1110 => 254 1111 1111 => 255
Obok podstawowych jednostek, jakimi są bit oraz bajt, występuje także tetrada (ang. nibble), zwana półbajtem. 0 1 0 1 0 1 0 1 Tetrada Tetrada znajduje zastosowanie m.in. w kodzie BCD oraz do zapisu cyfr w systemie szesnastkowym [0,1, 9,A,B,,F] W obrębie bajtu możemy wyróżnić tetradę górną (strefę) oraz dolną (cyfrę).
Podwielokrotności jednostek (układ SI) Nazwa Symbol Mnożnik Nazwa mnożnika Stosowane od - - 10 0 jeden decy d 10-1 jedna dziesiąta 1795 centy c 10-2 jedna setna 1795 mili m 10-3 = 1000-1 jedna tysięczna 1795 mikro 10-6 = 1000-2 jedna milionowa 1960 nano n 10-9 = 1000-3 jedna miliardowa 1960 piko p 10-12 = 1000-4 jedna bilionowa 1960 femto f 10-15 = 1000-5 jedna biliardowa 1964 atto a 10-18 = 1000-6 jedna trylionowa 1964 zepto z 10-21 = 1000-7 jedna tryliardowa 1991 jokto y 10-24 = 1000-8 jedna kwadrylionowa 1991
Wielokrotności jednostek (układ SI) Nazwa Symbol Mnożnik Nazwa mnożnika Stosowane od jotta Y 10 24 = 1000 8 kwadrylion 1991 zetta Z 10 21 = 1000 7 tryliard 1991 eksa E 10 18 = 1000 6 trylion 1975 peta P 10 15 = 1000 5 biliard 1975 tera T 10 12 = 1000 4 bilion 1960 giga G 10 9 = 1000 3 miliard 1960 mega M 10 6 = 1000 2 milion 1960 kilo k 10 3 = 1000 1 tysiąc 1795 hekto h 10 2 sto 1795 deka da 10 1 dziesięć 1795 - - 10 0 jeden
Przedrostki binarne (IEC 60027-2, 1998 r.) Nazwa Symbol Mnożnik jobi Yi 2 80 = 1024 8 zebi Zi 2 70 = 1024 7 eksbi Ei 2 60 = 1024 6 pebi Pi 2 50 = 1024 5 tebi Ti 2 40 = 1024 4 gibi Gi 2 30 = 1024 3 mebi Mi 2 20 = 1024 2 kibi Ki 2 10 = 1024 1 Norma IEC staje się standardem, jednak dość powoli, mimo niewątpliwych korzyści.
Błędy zaokrągleń Jednostka System SI Różnica System binarny Jednostka k (kilo) 10 3 = 1 000 2.40% 2 10 = 1 024 Ki (kibi) M (mega) 10 6 = 1 000 000 4.86% 2 20 = 1 048 576 Mi (mebi) G (giga) 10 9 = 1 000 000 000 7.37% 2 30 = 1 073 741 824 Gi (gibi) T (tera) 10 12 = 1 000 000 000 000 9.95% 2 40 = 1 099 511 627 776 Ti (tebi) P (peta) 10 15 = 1 000 000 000 000 000 12.59% 2 50 = 1 125 899 906 842 620 Pi (pebi) E (eksa) 10 18 = 15.29% 2 60 = Ei (eksbi) Z (zetta) 10 21 = 18.06% 2 70 = Zi (zebi) Y (jotta) 10 24 = 20.89% 2 80 = Yi (jobi) Im wyższy przedrostek, tym większy błąd zaokrąglenia!
Dlaczego plik z filmem o rozmiarze 4.6 GB nie mieści się na płytę DVD o pojemności 4.7 GB? 4.7 GB (DVD) = 4700 MB = 4700000 kb = 4700000000 B 4700000000 B / 1024 = 4589843.7 KiB 4589843.7 KiB / 1024 = 4 482.27 MiB 4 482.27 MiB / 1024 = 4.38 GiB ("rzeczywista" pojemność płyty) Producenci sprzętu używają jednostek z układu SI, programy komputerowe (dla tych samych oznaczeń) stosują jednostki binarne, oparte na normie IEC 60027-2. 2010: pierwsze sprawy sądowe użytkowników przeciwko firmie Seagate w USA
Inne jednostki związane z informacją MIPS (Million Instructions Per Second) miara wydajności procesora określa liczbę milionów operacji stałoprzecinkowych, wykonywanych w ciągu sekundy, przez daną jednostkę obliczeniową FLOPS (Floating Point Operations Per Second) miara wydajności układów realizujących obliczenia zmiennoprzecinkowe określa liczbę operacji zmiennoprzecinkowych na sekundę
Przykłady wydajności procesorów Intel Core i7 3.46 Ghz wydajność teoretyczna 55.36 Gflops najszybszy system równoległy na świecie (Listopad 2012-2015) Tianhe-2 (MilkyWay-2) National Super Computer Center in Guangzhou (China) 3 120 000 cores, 2.2 Ghz Xeon wydajność teoretyczna 54 902 TFlops wydajność praktyczna (test LinPack) 33 863 Tflops (źródło: www.top500.org)
Systemy liczbowe Systemy liczbowe pozycyjne niepozycyjne binarny rzymski trójkowy dziesiętny System liczbowy zbiór zasad, dzięki którym można przedstawiać liczby za pomocą umownych znaków (cyfr) oraz wykonywać na liczbach działania
Systemy liczbowe systemy pozycyjne znaczenie danej cyfry zależy od miejsca (pozycji), na którym występuje ona w liczbie system dziesiętny, liczba 111 te same cyfry, a każda ma inne znaczenie systemy niepozycyjne znaczenie cyfr nie zależy od miejsca (pozycji) w liczbie system rzymski, liczba III
Szablon systemu pozycyjnego - system o podstawie "p" p 3 p 2 p 1 p 0 p -1 p -2 p -3 p-4 x 3 x 2 x 1 x 0 3 2 1 0, x -1 x -2 x -3 x -4-1 -2-3 -4 wagi cyfry pozycje część całkowita część ułamkowa Właściwości: występuje p cyfr o wartościach 0,1,,p-1 system czwórkowy: p = 4, D = {0, 1, 2, 3} wartość cyfry w liczbie zależy od jej pozycji pozycja posiada wagę równą podstawie systemu podniesionej do potęgi o wartości pozycji p podstawa systemu D zbiór dozwolonych cyfr
System dziesiętny - znany nam od dziecka 1000 100 10 1 0,1 0,01 0,001 0,0001 10 3 wagi 10 2 10 1 10 0 10-1 10-2 10-3 10-4 x 3 x 2 x 1 x 0 3 2 1 0, x -1 x -2 x -3 x -4-1 -2-3 -4 p = 10, D = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} cyfry pozycje X (10) + x 3 10 3 + x 2 10 2 + x 1 10 1 + x 0 10 0 + + x -1 10-1 + x -2 10-2 + x -3 10-3 + x -4 10-4 +
System dziesiętny Przykład: liczba : 1924,89 10 3 10 2 10 1 10 0 10-1 10-2 1 9 2 4, 8 9 1924,89 (10) = = 1 10 3 + 9 10 2 + 2 10 1 + 4 10 0 + 8 10-1 + 9 10-2 = = 1000 + 900 + 20 + 4 + 0,8 + 0,09
System dwójkowy (binarny) "ojciec" maszyn cyfrowych 8 4 2 1 0,5 0,25 0,125 0,0625 2 2 2 1 2 0 2-1 2-2 2-3 2-4 x 3 x 2 x 1 x 0 2 3 wagi 3 2 1 0, x -1 x -2 x -3 x -4-1 -2-3 -4 cyfry pozycje p = 2, D = {0, 1} X (10) + x 3 2 3 + x 2 2 2 + x 1 2 1 + x 0 2 0 + + x -1 2-1 + x -2 2-2 + x -3 2-3 + x -4 2-4 +
System binarny Przykład: liczba : 1101,01 2 3 2 2 2 1 2 0 2-1 2-2 1 1 0 1, 0 1 1101,01 (2) = = 1 2 3 + 1 2 2 + 0 2 1 + 1 2 0 + 0 2-1 + 1 2-2 = = 8 + 4 + 0 + 1 + 0 + 0,25 = = 13,25 (10)
Systemy pozycyjne X (2) X (3) X (4) X (5) X (8) X (10) X (12) X (16) 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 10 2 2 2 2 2 2 2 11 10 3 3 3 3 3 3 100 11 10 4 4 4 4 4 101 12 11 10 5 5 5 5 110 20 12 11 6 6 6 6 111 21 13 12 7 7 7 7 1000 22 20 13 10 8 8 8 1001 100 21 14 11 9 9 9 1010 101 22 20 12 10 A A 1011 102 23 21 13 11 B B 1100 110 30 22 14 12 10 C 1101 111 31 23 15 13 11 D 1110 112 32 24 16 14 12 E 1111 120 33 30 17 15 13 F
Zastosowania systemów liczbowych system dwójkowy p = 2, D = {0,1} w pewnym stopniu uwarunkowany antropologicznie (dwie ręce, dwie nogi, dwoje oczu, ) podstawa elektroniki cyfrowej i informatyki
Zastosowania systemów liczbowych system ósemkowy p = 8, D = {0, 1, 2, 3, 4, 5, 6, 7} obecnie ma bardzo niewielkie zastosowanie UNIX: chmod 777 jakis_plik.txt zmiana praw dostępu do pliku 7 7 7 111 111 111 r w x r w x r w x user group others
Zastosowania systemów liczbowych system dziesiętny p = 10, D = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} podstawowy system liczbowy praktycznie we wszystkich krajach świata w dużym stopniu uwarunkowany antropologicznie (dziesięć palców jako pierwsze narzędzie do liczenia) od XVI wieku zaczął wypierać system rzymski, szczególnie w bankowości, księgowości i nauce
Zastosowania systemów liczbowych system dwunastkowy p = 12, D = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B} ma cztery dzielniki naturalne (2,3,4,6), a dziesiętny tylko dwa (2,5) stosowany w krajach anglosaskich m.in. do typografii i pomiaru długości stopa = 12 cali cal = 12 linii linia = 12 punktów w Polsce również znany od dawna tuzin (12 sztuk) kopa (5 tuzinów) gros (12 tuzinów) miary czasu rok = 12 miesięcy doba = 24 godziny godzina = 60 minut
Zastosowania systemów liczbowych system szesnastkowy (heksadecymalny) p = 16, D = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} stosowany powszechnie w informatyce do zapisu jednego bajtu wystarczą dwie cyfry w systemie szesnastkowym 00000000 (2) => 00 (16) 11111111 (2) => FF (16) dzięki temu świetnie nadaje się do zapisu dużych liczb, np. adresów pamięci adresy sprzętowe MAC urządzeń sieciowych, np. 1E:4A:0D:F1:3B:78 w języku HTML stosowany do zapisu kolorów RGB (24 bity) #66CC99 = [102, 204, 153]
Dziękuję za uwagę. Kolejny wykład: 2 marca 2016. Zapraszam!