Konspekt Podstawy informatyki Dyka E , Mończyk M


Konspekt jest współfinansowany przez Unię Europejską

w ramach Europejskiego Funduszu Społecznego

w projekcie:

"Innowacyjna dydaktyka bez ograniczeń

- zintegrowany rozwój Politechniki Łódzkiej zarządzanie Uczelnią,

nowoczesna oferta edukacyjna

i wzmacniania zdolności do zatrudniania,

także osób niepełnosprawnych".

Ewa Dyka

Marek Mończyk

Konspekt

0x08 graphic

Podstawy informatyki

0x08 graphic


Spis treści


  1. Wstęp

INFORMACJA

Słowo informacja (łac. informatio - przedstawienie, wizerunek; informare - kształtować, wyobrażać, określać) początkowo odnoszone było jedynie do relacji społecznych i oznaczało powiadomienie o czymś, zakomunikowanie czegoś; wiadomość, wskazówkę, pouczenie. Stopniowo następowało rozszerzenie znaczenia tego słowa na różne dziedziny nauki,
gdzie przyjmowało ono różnorodne interpretacje w zależności od obiektu i relacji między obiektami, przy czym jako obiekty rozumiane są organizmy żywe, struktury społeczne
i gospodarcze, urządzenia techniczne itp.

Termin informacja używany jest między innymi w:

Obecnie w fizyce informacja rozumiana jest jako powszechna właściwość każdego układu materialnego i stanowi powszechną własność materii.

Ogólnie termin ten określa właściwości pewnych obiektów oraz relację między elementami zbiorów pewnych obiektów, prowadząc do zmniejszenia ich nieokreśloności.

Informacja jest wielkością abstrakcyjną, która może być przechowywana i przetwarzana
w obiektach, przesyłana pomiędzy obiektami oraz stosowana do sterowania nimi.

W XX w., wraz z wynalezieniem maszyn cyfrowych i rozwojem technologii komputerowych, termin informacja zaczął oznaczać m.in. dane (wyrażone za pomocą znaków językowych), które można gromadzić, przetwarzać i przekazywać.

INFORMATYKA

Informatyka to ogół dyscyplin nauki i techniki, których przedmiotem jest gromadzenie, analizowanie, przetwarzanie i wykorzystywanie informacji. Początkowo była ona częścią matematyki, obecnie stanowi już samodzielną dyscyplinę naukową wykorzystywaną w wielu dziedzinach życia, która oparta jest niezmiennie na podstawach teoretycznych matematyki.

Zakres informatyki obejmuje:

W Polsce termin informatyka został zaproponowany w październiku 1968 r.
przez prof. Romualda Marczyńskiego na konferencji poświęconej „maszynom matematycznym”.

  1. Rozwój techniki komputerowej

Podstawowym narzędziem wykorzystywanym w rozwiązywaniu problemów informatycznych jest komputer. Nazwa wskazuje na urządzenie do wykonywania obliczeń,
ale współczesne komputery stały się bardzo uniwersalnymi narzędziami do przekształcania, gromadzenia i udostępniania różnorodnych informacji.

Komputer - urządzenie elektroniczne posiadające system cyfrowy przetwarzający dane wejściowe według algorytmu zapisanego w postaci programu umieszczonego w pamięci.

Sprzęt komputerowy - (ang. hardware) sprzęt elektroniczny pomocny przy przetwarzaniu danych np.: komputer, drukarka, skaner i inne podzespoły.

    1. Umowny podział komputerów

budowane w oparciu o przekaźniki elektromechaniczne działały jak programowalne kalkulatory elektryczne.

budowane w oparciu o lampy elektronowe elektroniczne maszyny cyfrowe programowane w języku wewnętrznym (ang. assembler); duże rozmiary, dane przechowywane na taśmach i kartach perforowanych lub bębnach magnetycznych (ENIAC).

budowane w oparciu o tranzystory, programowane w językach wysokiego poziomu: Fortranie, Algolu, Cobolu; mniejsze rozmiary, pamięci ferrytowe, taśmy magnetyczne, dane na dziurkowanych kartach, wyniki w postaci wydruków (ZAM 41).

budowane w oparciu o układy scalone, możliwa praca wielodostępna pod nadzorem systemu operacyjnego, nowe języki programowania Pascal, C; karty dziurkowane, bardzo drogie dyski magnetyczne (Odra 1305).

budowane w oparciu o układy scalone o wielkiej skali integracji, mikrokomputery IBM PC i superkomputery (Cray), pojawia się programowanie obiektowe i komputery równoległe
w różnych architekturach, wieloprocesowe systemy operacyjne, rozwój specjalnych języków i kompilatorów dla potrzeb równoległego przetwarzania.

budowa jak w generacji czwartej, rozwija się masowo przetwarzanie równoległe (MPP), komputery pracują w sieciach, wykorzystywane jest przetwarzanie heterogeniczne
przy użyciu sieci heterogenicznych komputerów z dzieloną pamięcią wirtualną; systemy MPP piątej generacji są reprezentowane przez projekty takie jak Fujitsu (VPP500), Cray Research (MPP), Thinking Machines Corporation (CM-5) oraz Intel Superior Systems (Paragon).

komputery o bardzo wielu jednocześnie pracujących procesorach,

komputery przyszłości:

biokomputery - nie będą oparte, tak jak obecnie, na związkach półprzewodnikowych (krzemowych), lecz na związkach biologicznych (węglowych),

komputery optyczne - wykorzystujące światło zamiast prądu elektrycznego, dzięki czemu możliwe będzie zwiększenie aż do prędkości światła ich szybkość działania,

komputery kwantowe i neurokomputery

    1. Trendy rozwoju komputerów

Terminal jest końcówką pozwalającą człowiekowi na pracę z komputerem lub systemem komputerowym. Początkową formą pracy terminalowej był dalekopis. Po powstaniu komputera osobistego prawie całkowicie zrezygnowano z pracy terminalowej, pozostawiając ją jedynie dla dużych serwerów sieciowych. Dokonujący się w ostatnich latach znaczący rozwój sieci komputerowych spowodował powszechny powrót do pracy terminalowej w postaci terminali wirtualnych.

Obecnie komputery mobilne (przenośne) wypierają w coraz większym stopniu osobiste komputery stacjonarne. Pierwszym komercyjnie oferowanym komputerem mobilnym był zaprojektowany w 1979 roku laptop (ang. lap - kolana, top - na wierzchu) o nazwie Grid Compass Computer 1109, który używany był przez NASA w programie promów kosmicznych. W latach 80-tych XX w. powstały prototypy pierwszych palmtopów
(ang. palm - dłoń, top - na wierzchu), komputerów wielkości dłoni, których podstawowymi funkcjami były: kalendarz, terminarz, kalkulator, notatnik (także notatki odręczne), książka adresowa. Do grupy komputerów mobilnych należą również mniejsze od laptopów notebooki oraz netbooki.

Przetwarzanie rozproszone (ang. distributed processing) polega na wykonywaniu określonych zadań przez użytkownika korzystającego ze współdzielonych zasobów sieci komputerowej. Przeważnie przetwarzanie to dotyczy heterogenicznych sieci komputerowych z dzieloną pamięcią wirtualną. Przykładem przetwarzania rozproszonego są obliczenia rozproszone, które polegają na jednoczesnej pracy wielu komputerów nad jednym zagadnieniem. Na podstawie danych pobranych z serwera komputery wykonują zaprogramowane obliczenia, których wyniki przesyłają z powrotem do serwera, gdzie są one gromadzone i udostępniane do dalszej analizy.

Wolne Oprogramowanie (ang. Free Software, Open Source) rozprowadzane jest zgodnie
z regułami zawartymi w Powszechnej Licencji Publicznej GNU, której celem jest prawne zagwarantowanie producentom możliwości tworzenia oprogramowania bez ograniczeń licencyjnych dla wszystkich użytkowników. Użytkownicy licencji mają zagwarantowaną swobodę zmieniania i udostępniania tego oprogramowania, przy czym zobowiązani są
do udostępniania postaci źródłowej programu wraz z każdą jego dystrybucją binarną.

Na zasadach GNU GPL udostępniane jest m.in. jądro systemu operacyjnego Linux
oraz większość jego oprogramowania.

  1. Podstawy teorii informacji

Informacja

Wiadomość

Komunikat

WŁASNOŚCI INFORMACJI

FUNKCJE INFORMACJI

JEDNOSTKI INFORMACJI

długość słowa jest potęgą liczby 2 (16, 32, 64 ....)
słowo jest jednostką danych używanych przez określony komputer, a jego wielkość uwarunkowana jest przez rozmiar rejestrów procesora oraz szyny danych

1kbajt [KB]=210 bajta= 1024 bajty

1Mbajt [MB]= 220 bajta = 1024 KB =1048576 bajty

1 Gbajt = 230 bajta = 1024 MB = 1073741824 bajty

1 Tbajt [TB] =240 bajta = 1024 GB

    1. Systemy liczbowe

System liczbowy definiuje zbiór wartości (cyfr) wykorzystywany do reprezentowania ilości (liczby) oraz określa zasady zapisu liczb i wykonywania na nich obliczeń.

Wśród dyskretnych zapisów kodowych wyróżnia się:

Komputer gromadzi i przetwarza informację zapisaną wyłącznie w systemie dwójkowym.

System dwójkowy

dwa znaki (cyfry) : 0, 1

zapis liczby naturalnej:

L(2) = c0*20 + c1*21 + ... + cn * 2n gdzie: c0, c1, cn - cyfry układu

10110(2) = 0*20 + 1*21 + 1*22 + 0*23 + 1*24 = 0+2+4+0+16 = 22(10)

System dziesiętny

dziesięć znaków (cyfr): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

zapis liczby naturalnej:

L(10) = c0*100 + c1*101 + ... + cn * 10n gdzie: c0, c1, cn - cyfry układu

2548(10) = 8*100 + 4*101 + 5*102 + 2*103

System szesnastkowy

szesnaście znaków: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

zapis liczby naturalnej:

L(16) = c0*160 + c1*161 + ... + cn * 16n gdzie: c0, c1, cn - cyfry układu

400(16) = 0*160 + 0*161 + 4*162 = 1024(10)

System BCD

dwa znaki (cyfry): 0, 1

zapis liczby naturalnej:

L(BCD) = L(2) L(2) gdzie: L(2) - czteropozycyjna liczba w systemie dwójkowym

34(10) = 0011 0100(BCD)

Jest to dziesiętny kod pozycyjny; każda cyfra dziesiętna kodowana jest na czterech pozycjach
w systemie dwójkowym. Kod BCD jest kodem nadmiarowym, ponieważ wykorzystuje jedynie 10 liczb
z 16 możliwych do zakodowania na czterech pozycjach kodu binarnego. Ze względu na przechowywanie informacji w bajtach, w jednym bajcie przechowuje się 1 lub 2 liczby (upakowany BCD).

Konwersja układów z dwójkowego na szesnastkowy

W celu dokonania konwersji liczby zapisanej w systemie dwójkowym na system szesnastkowy należy tę liczbę podzielić na czteroznakowe fragmenty i przypisać im odpowiednie wartości kodu szesnastkowego:

10010101001111110001(2) = (1001) (0101) (0011) (1111) (0001)

(1001)(2) (0101)(2) (0011)(2) (1111)(2) (0001)(2)

(9)(10) (5)(10) (3)(10) (15)(10) (1)(10)

(9)(16) (5)(16) (3)(16) (F)(16) (1)(16)

Aby zamienić liczbę z systemu szesnastkowego na system dwójkowy, należy każdą cyfrę szesnastkową zastąpić ciągiem czterech cyfr w systemie dwójkowym.

Konwersja układów z dziesiętnego na dwójkowy

Aby liczbę dziesiętną zapisać w postaci binarnej należy dzieląc ją kolejno przez dwa zapisywać resztę z dzielenia:

41 : 2 = 20 r 1

20 : 2 = 10 r 0

10 : 2 = 5 r 0

5 : 2 = 2 r 1

2 : 2 = 1 r 0

1 : 2 = 0 r 1

Wynik stanowi kolumna reszt z dzielenia przepisana kolejno od dołu w górę:

(41)(10) = (101001)(10)

    1. Kodowanie informacji

Komputer może przetwarzać jedynie dane zapisane w postaci binarnej (zero-jedynkowej), dlatego wszystkie informacje wprowadzane do komputera (liczby, litery, wartości logiczne, kolory, obrazy, dźwięki itp.) muszą zostać przekształcone do tej postaci. Zapis w postaci binarnej (według ustalonych reguł) dowolnej informacji nazywany jest kodowaniem.

Kodowanie liczb całkowitych

Liczba całkowita jest przekształcana do postaci binarnej. Istnieją różne systemy kodowania, np. system ZM (znak-mantysa) lub U2 (uzupełnienie do dwóch), gdzie wszystkie bity zamieniane są na przeciwne i dodawana jest binarna jedynka.

(10) ZM U2

-127 1 1111111 1 0000001

-126 1 1111110 1 0000010

-1 1 0000001 1 1111111

0 0 0000000 0 0000000

Istnieją też inne sposoby kodowania np. kod nadmiarowy (ang. redundancy code). Kod ten, oprócz bitów przedstawiających kodowaną informację, zawiera również tzw. bity kontrolne, dzięki którym możliwe jest poprawianie błędów kodowania. Przykładowo informacja przyjmująca 3 wartości (-1, 0, 1) może zostać zakodowana w 4 bitach w taki sposób, że 1000 oznacza 0, 1001 oznacza 1 a 0111 to -1.

Minimalna i maksymalna liczba, którą można zapisać na n bitach wynosi:

Lmin = - 2n-1 Lmax = 2n-1-1

Np. dla typu short int (C, C++) reprezentującego liczby całkowite za pomocą dwóch bajtów (16 bitów) zakres jest następujący: -32768 ÷32767 (ze znakiem) lub: 0 ÷ 65535 (bez znaku).

Kodowanie liczb rzeczywistych

Liczbę zapisujemy w postaci:

L = ± m · pc gdzie:

m - mantysa,

c- cecha,

p - podstawa systemu liczbowego

Przykład zapisu w systemie dziesiętnym (p = 10)

0,000123 = 0,123 ⋅ 10-3

32,25 = 0,3225 ⋅ 102

Przykład zapisu w systemie dwójkowym (p = 2)

5,625

  1. 5 = 101 część całkowita 101

  2. 0,625 ⋅ 2 = 1,25 część ułamkowa 0,25 całkowita 1

  3. 0,25 ⋅ 2 = 0,5 część ułamkowa 0,5 całkowita 0

  4. 0,5 ⋅ 2 = 1 część ułamkowa 0 całkowita 1

  5. Zapisujemy części całkowite w kierunku z góry na dół

  6. 5,625 = 101,101

  7. 5,625 = 0,101101 ⋅ 23

Błędy zaokrągleń

np. nie można przedstawić liczby 0,1 w systemie dwójkowym w postaci

skończonej liczby cyfr:

1/16 + 1/32 + 1/256 + 1/512 + 1/4096 + 1/8192 + 1/65536 = 0,0999908

np. trzy cyfry dziesiętne w mantysie:

1,51

+ 0,00001

--------------------

1,51001 komputer przechowa wartość 1,51

np. 7,54293 - 7, 54129 i TRZY cyfry dziesiętne w mantysie.

Kompilator obliczy: 7,54 - 7,54 = 0, choć dokładny wynik wynosi 0,00164