Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl http://orion.fis.agh.edu.pl/~grazyna/ D-10 pokój 227 WYKŁAD 1 WSTĘP DO INFORMATYKI
Plan wykładu 2 Wprowadzenie, trochę historii, systemy liczbowe Kodowanie informacji, arytmetyka binarna Algorytmy i programy Maszyna Turinga Podstawy języka C (6 wykładów) Architektura i działanie komputera Systemy operacyjne (2 wykłady) Kolokwium
Literatura 3 D. Harel Rzecz o istocie informatyki, algorytmika J. G. Brookshear Computer Science: An Overview N. Wirth, Algorytmy + struktury danych =Programy A. Silberschatz Podstawy Systemów Operacyjnych A. Tanenbaum Systemy operacyjne S. Prata, Język C. Szkoła programowania H. Schildt, Programowanie C K. Loudon, Algorytmy w C B. Kernighan i D. Ritchie, Język ANSI C
Ćwiczenia i laboratorium 4 Ćwiczenia tablicowe 7 tygodni grupy ~30 osobowe Ćwiczenia laboratoryjne 7 tygodni grupy 15 osobowe Kolokwium zaliczeniowe - 26 lub 27 stycznia 2017 r.
Czym jest informatyka http://pl.wikipedia.org/wiki/informatyka 5 INFORMATYKA - (łac. informatio - "wyobrażenie", "wizerunek", "pomysł", ang. computer science, computing science, information technology, informatics) Dziedzina nauki i techniki zajmująca się przetwarzaniem informacji w tym technologiami przetwarzania informacji oraz technologiami wytwarzania systemów przetwarzających informacje.
6 Czym jest informatyka ACM Association for Computing Machinery - the world s largest educational and scientific computing society INFORMATYKA - to systematyczne badanie procesów algorytmicznych, które charakteryzują i przetwarzają informację: teoria analiza projektowanie badanie efektywności implementacja zastosowania procesów algorytmicznych co można (efektywnie) zalgorytmizować
Informatyka (fr. informatique i niem. Informatik) 7 Zakopane październik 1968r - ogólnopolska konferencja poświęcona "maszynom matematycznym prof. Romuald Marczyński (1922 2000 profesor, matematyk, pionier polskiej informatyki)
Historia informatyki 8 Informatyka zajmuje się zagadnieniami : zbierania, przechowywania, przetwarzania, przesyłania, prezentacji informacji za pomocą komputerów oraz współpracujących z nimi urządzeń.
Systemy liczbowe 9 SYSTEMY LICZBOWE zbiór reguł do jednolitego zapisywania oraz nazywania cyfr SYSTEMY LICZBOWE addytywne pozycyjno - wagowe
Systemy addytywne 10 Systemy addytywne posiadają osobne symbole dla pierwszych kilku małych liczb, a następnie posiadają kolejne symbole dla ich wielokrotności. W systemach tych liczby tworzy się przez "dodawanie" kolejnych symboli. Rzymski system liczbowy : CXVII = 100 + 10 + 5 +1 +1 = 117
Systemy pozycyjne 11 Każdy system pozycyjny ma przypisaną pewną wartość charakterystyczną, którą nazywamy podstawą systemu. Liczba cyfr, którymi zapisujemy liczbę jest równa wartości podstawy (0,1,2,...). System pozycyjny nie jest w żaden sposób ograniczony co do wielkości zapisywanych liczb. Wartość cyfry w zapisie zależy od jej pozycji, stąd pochodzi nazwa "system pozycyjny". Każda pozycja ma przypisaną wagę. Wagi pozycji są równe kolejnym potęgom podstawy systemu liczonym od strony prawej. Wartość liczby w zapisie pozycyjnym obliczamy jako sumę iloczynów cyfr przez wagi swoich pozycji.
Systemy pozycyjne 12 System pozycyjny o dowolnej podstawie p p > 1 W systemie tym mamy p cyfr, które oznaczymy c i Zapisujemy pewną liczbę za pomocą n cyfr: c n-1 c n-2... c 2 c 1 c 0
Systemy pozycyjne wagi pozycji 13 0 1 2 2 1... p p p p p n n 0 1 2 2 1... c c c c c n n 1 1 2 2 2 2 1 1 0 0... n n n n p c p c p c p c p c 1 0 n i i c i p
Systemy pozycyjne 14 p = 7, zbiór cyfr to {0,1,2,3,4,5,6} 43521 (7) =??? (10) 43521 (7) = 1 * 7 0 + 2 * 7 1 + 5 * 7 2 + 3 * 7 3 + 4 * 7 4 43521 (7) = 1 * 1 + 2 * 7 + 5 * 49 + 3 * 343 + 4 * 2401 43521 (7) = 10893 (10)
Systemy pozycyjne 15 p = 17, zbiór cyfr to {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G} AGF63B (17) =??? (10) AGF63B (17) = 11 * 17 0 + 3 * 17 1 + 6 * 17 2 + 15 * 17 3 + 16 * 17 4 + 10 * 17 5 AGF63B (17) = 11 *1 + 3 * 17 + 6*289 + 15 *4.913 + 16 *83.521 + 10*1.419.857 AGF63B (17) = 15 610 397 (10)
Systemy pozycyjne 16 Podany sposób obliczania wartości liczby zapisanej w dowolnym systemie pozycyjnym jest poprawny, lecz z punktu widzenia wykonywania obliczeń czasochłonny, ponieważ występują w nim potęgi podstawy. Działanie potęgowania jest czasochłonne - komputery dużo szybciej wykonują mnożenie i dodawanie.
17 Schemat Hornera Sposób obliczenia wartości wielomianu dla danej wartości argumentu wykorzystujący minimalną liczbę mnożeń. L = C 4 p 4 + C 3 p 3 + C 2 p 2 + C 1 p 1 + C 0 p 0 Ponieważ p 1 = p oraz p 0 = 1 L = C 4 p 4 + C 3 p 3 + C 2 p 2 + C 1 p + C 0
Schemat Hornera 18 L = C 4 p 4 + C 3 p 3 + C 2 p 2 + C 1 p + C 0 L = p*( C 4 p 3 + C 3 p 2 + C 2 p 1 + C 1 )+ C 0 L = p*(p*( C 4 p 2 + C 3 p 1 + C 2 ) + C 1 )+ C 0 L = p*(p*( p*(c 4 p 1 + C 3 )+ C 2 ) + C 1 )+ C 0 L = p*(p*( p*(p*(c 4 )+ C 3 )+ C 2 ) + C 1 )+ C 0
Schemat Hornera 19 L = p*(p*( p*(p*(c 4 )+ C 3 )+ C 2 ) + C 1 )+ C 0 Możemy przekształcić ze względu na przemienność mnożenia: L = (((C 4 *p + C 3 )* p + C 2 ) *p + C 1 ) *p + C 0
Schemat Hornera 20 Dla wielomianu n-tego stopnia w zwykłej postaci należy wykonać n*(1+n)/2 mnożeń, a dla wielomianu po L 0 = C 4 - wartość początkowa zastosowaniu schematu Hornera tylko n mnożeń! Budujemy algorytm : L 1 = L 0 p + C 3 = C 4 p + C 3 L 2 = L 1 p + C 2 = (C 4 p + C 3 ) p + C 2 = C 4 p 2 + C 3 p + C 2 L 3 = L 2 p + C 1 = (C 4 p 2 + C 3 p + C 2 ) p + C 1 = C 4 p 3 + C 3 p 2 + C 2 p + C 1 L 4 = L 3 p + C 0 = (C 4 p 3 + C 3 p 2 + C 2 p + C 1 ) p + C 0 = C 4 p 4 + C 3 p 3 + C 2 p 2 + C 1 p + C 0
Systemy pozycyjne 21 Jeśli wartość w ma w danym systemie pozycyjnym o podstawie p rozwinięcie c n-1 c n-2...c 1 c 0, to pomnożenie tej wartości przez podstawę systemu p spowoduje w rozwinięciu przesunięcie wszystkich cyfr o jedną pozycję w lewo w = c n-1 p n-1 + c n-2 p n-2 +... + c 1 p 1 + c 0 p 0 w*p = c n-1 p n + c n-2 p n-1 +... + c 1 p 2 + c 0 p 1 + 0 p 0
System dwójkowy (binarny) 22 Podstawę systemu binarnego tworzy liczba 2. Zapis liczby tworzymy za pomocą cyfr 0 i 1 2 5 = 32 2 4 = 16 2 3 = 8 2 2 = 4 2 1 = 2 2 0 = 1 0 1 1 0 1 0 0*32 + 1*16+ 1*8 + 0*4 +1*2 + 0*1 = 26
System dwójkowy (binarny) 23 Algorytm zamiany liczby zapisanej w systemie dziesiętnym na zapis binarny. Liczbę dziesiętną dzielimy systematycznie przez 2. Zapamiętujemy resztę z dzielenia. Reszty te zapisane w odwrotnej kolejności tworzą zapis binarny liczby.
System dwójkowy (binarny) 24 2436 : 2 = 1218 reszta 0 1218 : 2 = 609 reszta 0 609 : 2 = 304 reszta 1 304 : 2 = 152 reszta 0 152 : 2 = 76 reszta 0 76 : 2 = 38 reszta 0 38 : 2 = 19 reszta 0 19 : 2 = 9 reszta 1 9 : 2 = 4 reszta 1 4 : 2 = 2 reszta 0 2 : 2 = 1 reszta 0 1 : 2 = 0 reszta 1 2436 (10) 100110000100 (2)
System dwójkowy (binarny) 25 Konwersja dwójkowo - ósemkowa 1110101000101010111101010101 001 110 101 000 101 010 111 101 010 101 1 6 5 0 5 2 7 5 2 5 1110101000101010111101010101 (2) = 1650527525 (8)
System dwójkowy (binarny) 26 Konwersja ósemkowo - dwójkowa 7266501472 7 2 6 6 5 0 1 4 7 2 111 010 110 110 101 000 001 100 111 010 7266501472 (8) = 111010110110101000001100111010 (2)
System dwójkowy (binarny) 27 Konwersja dwójkowo - szesnastkowa 1110101000101010111101010101 1110 1010 0010 1010 1111 0101 0101 E A 2 A F 5 5 1110101000101010111101010101 (2) = EA2AF55 (16)
System dwójkowy (binarny) 28 Konwersja szesnastkowo - dwójkowa 3FAC72608D 3 F A C 7 2 6 0 8 D 0011 1111 1010 1100 0111 0010 0110 0000 1000 1101 3FAC72608D (16) = 11111110101100011100100110000010001101 (2) )
System dwójkowy (binarny) 29 n pozycji tworzy 2 n różnych symboli binarnych. Do utworzenia n symboli binarnych, gdzie n > 1, potrzebne jest co najmniej [log 2 (n - 1) + 1] pozycji
30 Systemy binarny NBS - Natural Binary System p = 2 zbiór cyfr to {0,1} Wartość liczby zapisanej w systemie binarnym c n 1 c c c c c 2 i n 1 n 2... 2 1 0 i i 0 Na n pozycjach można zapisać liczby od 0 do 2 n -1
Dodawanie elementarne: 31 0 0 0 1 0 1 0 1 1 1 1 1 0 Dodawanie binarne 00111010 00011011 58 27 85 00111010 00011011 01010101 1 00 1110 10 000 110 11 0 1 1 00 1110 10 000 110 11 0 10 1 1 00 1110 10 000 110 11 10 10 1 1 00 1110 10 000 110 11 0 10 10 1
Przepełnienie (reprezentacja 8-bitowa) 32 11111111 (2) + 00000001 (2) = 1 00000000 (2) (255 + 1 = 0) 00000000 (2) 00000001 (2) = 1 11111111 (2) (0 1 = 255)