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
Wprowadzenie, trochę historii, systemy liczbowe Kodowanie informacji, arytmetyka binarna Algorytmy i programy Maszyna Turinga Podstawy języka C Architektura i działanie komputera Systemy operacyjne
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
Czym jest informatyka http://pl.wikipedia.org/wiki/informatyka 4 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.
Czym jest informatyka http://pl.wikipedia.org/wiki/informatyka 5 Informatyka jest nauką o abstrakcji, czyli nauką o tworzeniu właściwego modelu reprezentującego problem i wynajdowaniu odpowiedniej techniki mechanicznego jego rozwiązywania. Informatycy tworzą abstrakcje rzeczywistych problemów w formach, które mogą być rozumiane i przetwarzane w pamięci komputera.
Czym jest informatyka ACM Association for Computing Machinery - the world s largest educational and scientific computing society 6 INFORMATYKA - to systematyczne badanie procesów algorytmicznych, które charakteryzują i przetwarzają informację: teoria analiza projektowanie badanie efektywności implementacja zastosowania procesów algorytmicznych
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)
Informacja 8 Abstrakcja oznaczać będzie pewne uproszczenie, zastąpienie skomplikowanych i szczegółowych okoliczności występujących w świecie rzeczywistym, zrozumiałym modelem umożliwiającym rozwiązanie naszego problemu. Oznacza to, że abstrahujemy od szczegółów, które nie mają wpływu lub mają minimalny wpływ na rozwiązanie problemu. Opracowanie odpowiedniego modelu ułatwia zajęcie się istotą problemu.
Informatyka: mechanizacja abstrakcji 9 modele danych: abstrakcje wykorzystywane do opisywania problemów struktury danych: konstrukcje języka programowania wykorzystywane do reprezentowania modelów danych. Przykładowo język C udostępnia wbudowane abstrakcje takie jak struktury czy wskaźniki, które umożliwiają reprezentowanie skomplikowanych abstrakcji takich jak grafy algorytmy: techniki wykorzystywane do otrzymywania rozwiązań na podstawie operacji wykonywanych na danych reprezentowanych przez abstrakcje modelu danych, struktury danych lub na inne sposoby
Systemy liczbowe 10 System liczbowy to inaczej zbiór reguł zapisu i nazewnictwa liczb. Do zapisu liczb zawsze używa się pewnego skończonego zbioru znaków, zwanych cyframi (np. arabskimi lub rzymskimi), które jednak można zestawiać ze sobą na różne sposoby otrzymując nieskończoną liczbę kombinacji. SYSTEMY LICZBOWE addytywne pozycyjno - wagowe
System jedynkowy 11 Najbardziej prymitywnym systemem liczbowym jest jedynkowy system liczbowy, w którym występuje tylko jeden znak (np. 1). W systemie tym kolejne liczby są tworzone przez proste powtarzanie tego znaku. Przykład: 3 w tym systemie zapisujemy jako 111, 5 w tym systemie zapisujemy jako 11111.
Systemy addytywne 12 Liczby tworzy się przez dodawanie kolejnych symboli. Przykładem addytywnego systemu jest rzymski system liczbowy z podstawowymi wielokrotnościami 10 i 5 Jego cyfry to: I =1, V =5, X =10, L =50, C =100, D =500, M =1000 W tym systemie w niektórych przypadkach występuje odejmowanie, a nie tylko dodawanie. XVI = 10+5+1 = 16 XIV = 10+5-1 = 14
Systemy addytywne 13 Sześćdziesiątkowy system liczbowy, stosowany Mezopotamii (1900 p.n.e)., w którym podstawowymi wielkościami były 10 i 60, był częściowo addytywny, częściowo pozycyjny. Jest on najstarszym znanym systemem każdego z tych dwóch rodzajów. W życiu codziennym spotykamy ślady babilońskiego systemu w podziale godziny na 60 minut, a minuty na 60 sekund, oraz w podziale kąta na minuty i sekundy kątowe.
Systemy addytywne 14 Zaletą systemów addytywnych jest możliwość zapisu nawet dużych liczb całkowitych (pod warunkiem, że są okrągłe) za pomocą jednego znaku, a wadą złożoność, kłopoty interpretacyjne i zbyt wielka liczba cyfr przy mało okrągłych liczbach, oraz bardzo skomplikowany sposób dokonywania za ich pomocą prostych operacji arytmetycznych, wymagający zapamiętywania długich tabel.
Systemy pozycyjne 15 Każdy system pozycyjny o podstawie g ma przypisaną pewną wartość charakterystyczną, którą nazywamy podstawą systemu. Liczba cyfr, którymi zapisujemy liczbę jest równa wartości podstawy {0,1,..., g-1}. 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.
Systemy pozycyjne 16 System pozycyjny o dowolnej podstawie p p > 1 W systemie tym mamy p cyfr, które oznaczymy c i c i {0, 1, 2,, c p-1 } Zapisujemy pewną liczbę za pomocą n cyfr: c n-1 c n-2... c 2 c 1 c 0
Systemy pozycyjne 17 c n-1 c n-2... c 2 c 1 c 0 wagi pozycji p n-1 p n-2... p 2 p 1 p 0 c 0 p 0 + c 1 p 1... + c n-2 p n-2 + c n-1 p n-1 i 0 n 1 i c i p
Systemy pozycyjne 18 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 19 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 20 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.
Schemat Hornera 21 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 22 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 23 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 24 L Dla = ((((C wielomianu 4 ) *p + C 3 n-tego )* p + Cstopnia 2 ) *p + Cw 1 ) zwykłej *p + C 0 postaci należy wykonać n*(1+n)/2 mnożeń, a dla wielomianu po Budujemy zastosowaniu algorytm schematu : Hornera tylko n mnożeń! L 0 = C 4 - wartość początkowa 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 25 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
Systemy pozycyjne 26 Zaletą systemów pozycyjnych jest ich Klarowność Łatwość dokonywania nawet złożonych operacji arytmetycznych Możliwość zapisu dowolnie dużej liczby, jednak o zapisu bardzo dużych liczb (nawet okrągłych) jest potrzebna duża liczba cyfr. Współcześnie powszechnie używany jest system dziesiątkowy. W informatyce stosowany jest system dwójkowy (binarny), ósemkowy i szesnastkowy (heksadecymalny)
System dwójkowy (binarny) 27 Podstawę systemu binarnego tworzy liczba p = 2 Zapis liczby tworzymy za pomocą cyfr {0, 1 } Reprezentacja jest jednoznaczna, jeśli przyjmiemy, że nie stosujemy wiodących zer. 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) 28 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) 29 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) 30 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) 31 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) 32 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) 33 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) 34 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
Systemy binarny 35 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
Algebra Boole a 36 Przy projektowaniu i analizowaniu układów cyfrowych w komputerach i innych systemach cyfrowych stosuje się algebrę Boole'a - (algebra logiki) - teoria działań algebraicznych na zbiorze dwuelementowym {0,1}, Funkcja logiczna może być wyrażona w postaci algebraicznej An Investigation of The Laws of Thought on Which to Found the Mathematical Theories of Logic and Probabilities (1854) Badanie praw myśli, które mogą być podstawą matematycznych teorii logiki i prawdopodobieństwa
Algebra Boole a 37 Niech dany będzie niepusty zbiór B (przynajmniej dwa różne elementy), w którym wyróżnione są dwa elementy. W zbiorze tym określamy działania sumy logicznej + iloczynu dopełnienia logicznego ~
Algebra Boole a - dwuelementowa 38 Negacja - NOT x ~x 0 1 1 0 Różnica symetryczna XOR x y x y 0 1 1 0 0 0 1 1 0 1 0 1 x y = (~x y)+(x ~y) Koniunkcja - AND x y x y 0 1 0 0 0 0 1 1 1 1 0 0 Alternatywa - OR x y x + y 0 1 1 0 0 0 1 1 1 1 0 1
39 Dodawanie binarne 00111010 00011011 Dodawanie elementarne: 0 0 0 1 0 1 0 1 1 1 1 1 0 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) 40 11111111 (2) + 00000001 (2) = 1 00000000 (2) (255 + 1 = 0) 00000000 (2) 00000001 (2) = 1 11111111 (2) (0 1 = 255)
Zastosowania operacji logicznych 41 Ustawianie zadanego bitu - w słowie binarnym ustawić n-ty bit na 1. x y x + y 0 1 1 0 0 0 1 1 1 1 0 1 Maskę o długości słowa binarnego, w której wszystkie bity są wyzerowane z wyjątkiem bitu n-tego. Wykonujemy operację alternatywy nad słowem binarnym i maską. W wyniku n-ty bit słowa zostanie ustawiony na 1.
Zastosowania operacji logicznych 42 Ustawianie zadanego bitu - w słowie binarnym ustawić n-ty bit na 1. x y x + y 0 1 1 0 0 0 1 1 1 1 0 1 0 1 0 1 0 0 1 1 zmieniane słowo OR 0 0 0 0 1 0 0 0 maska bitowa 0 1 0 1 1 0 1 1 wynik operacji 0 1 0 1 1 0 1 1 zmieniane słowo OR 0 0 0 0 1 0 0 0 maska bitowa 0 1 0 1 1 0 1 1 wynik operacji
Zastosowania operacji logicznych 43 Zerowanie zadanego bitu- w słowie binarnym ustawić n-ty bit na 0. x y x y 0 1 0 0 0 0 1 1 1 1 0 0 Maskę o długości słowa binarnego, w której wszystkie bity są ustawione na 1, z wyjątkiem bitu n-tego (wyzerowany). Wykonujemy operację koniunkcji nad słowem binarnym i maską. W wyniku n-ty bit słowa zostanie ustawiony na 0.
Zastosowania operacji logicznych 44 Ustawianie zadanego bitu - w słowie binarnym ustawić n-ty bit na 1. x y x y 0 1 0 0 0 0 1 1 1 1 0 0 0 1 0 1 0 0 1 1 zmieniane słowo AND 1 1 1 1 0 1 1 1 maska bitowa 0 1 0 1 0 0 1 1 wynik operacji 0 1 0 1 1 0 1 1 zmieniane słowo AND 1 1 1 1 0 1 1 1 maska bitowa 0 1 0 1 0 0 1 1 wynik operacji
Zastosowania operacji logicznych 45 Negacja zadanego bitu- w słowie binarnym zanegować n-ty bit. x y x y 0 1 1 0 0 0 1 1 0 1 0 1 Maskę o długości słowa binarnego, w której wszystkie bity są wyzerowane z wyjątkiem bitu n-tego. Wykonujemy operację różnicy symetrycznej nad słowem binarnym i maską. W wyniku n-ty bit słowa zostanie zanegowany.
Zastosowania operacji logicznych 46 Ustawianie zadanego bitu - w słowie binarnym ustawić n-ty bit na 1. x y x y 0 1 1 0 0 0 1 1 0 1 0 1 0 1 0 1 0 0 1 1 zmieniane słowo XOR 0 0 0 0 1 0 0 0 maska bitowa 0 1 0 1 1 0 1 1 wynik operacji 0 1 0 1 1 0 1 1 zmieniane słowo XOR 0 0 0 0 1 0 0 0 maska bitowa 0 1 0 1 0 0 1 1 wynik operacji
Zastosowania operacji logicznych 47 Zastępowanie bitu/bitów - mamy dwa słowa binarne. W drugim słowie chcemy zastąpić wybrany bit bitem ze słowa pierwszego..
Zastosowania operacji logicznych 48 1 1 0 0 1 0 1 0 słowo_2 AND 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 słowo_2 wyzerowane bity 0 1 0 1 0 0 1 1 słowo_1 AND 0 0 0 0 1 1 1 1 0 1 0 1 0 0 1 1 wynik operacji - maska 1 1 0 0 0 0 0 0 słowo_2 OR 0 1 0 1 0 0 1 1 maska 1 1 0 0 0 0 1 1 słowo_2 wymienione bity
Zastosowania operacji logicznych 49 1 1 0 0 1 0 1 0 słowo_2 AND 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 słowo_2 wyzerowane bity 0 1 0 1 0 0 1 1 słowo_1 AND 0 0 0 0 1 1 1 1 0 1 0 1 0 0 1 1 wynik operacji - maska 1 1 0 0 0 0 0 0 słowo_2 OR 0 1 0 1 0 0 1 1 maska 1 1 0 0 0 0 1 1 słowo_2 wymienione bity