Technologia informacyjna dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018
Wykładowca E-mail: a.czerepicki@wt.pw.edu.pl WWW: http://www2.wt.pw.edu.pl/~a.czerepicki Zakład Systemów Informatycznych i Mechatronicznych w Transporcie (SIMT), pok. 221 Kierownik Zespołu Informatyki w zakładzie SIMT Opiekun naukowy studenckiego koła naukowego KNEST Dyżury dla studentów: będą inf. na stronie WWW Wykształcenie: wyższe informatyczne Specjalizacja: programowanie, bazy danych, technologie sieciowe, aplikacje internetowe, etc. 2
Cele przedmiotu Zdobycie wiedzy z zakresu podstaw budowy oraz funkcjonowania systemów komputerowych, w tym architektury oraz elementów sprzętowych komputera, oprogramowania systemowego i użytkowego, zasad funkcjonowania sieci komputerowych, sieci Internet oraz relacyjnych baz danych Nabycie praktycznych umiejętności w zakresie posługiwania się edytorem tekstowym, arkuszem kalkulacyjnym, przygotowania prezentacji, korzystania z usług sieci Internet 3
Tematyka wykładów Algorytmy, programy i dane Architektura oraz elementy budowy komputerów Oprogramowanie systemowe i użytkowe Podstawy sieci komputerowych Sieć Internet, usługi oraz protokoły Wstęp do baz danych Bezpieczeństwo systemów informatycznych 4
Sprawy organizacyjne Harmonogram zajęć Regulamin zajęć Efekty kształcenia KRK Warunki zaliczenia przedmiotu 5
Harmonogram zajęć Wykłady: 1 7 tydzień Zaliczenie wykładów Podejście 1 na koniec wykładów Podejście 2 na koniec semestru / sesja Podejście 3 w sesji poprawkowej Laboratoria: 8 14 tydzień Zaliczenie lab. : 14 tydzień Poprawy: 15 tydzień 6
Regulamin zajęć Jest dostępny na stronie WWW wykładowcy Liczba godzin: 15 + 15 Skala ocen: od 51% (3.0) do 91% (5.0) co 10% Dwa kolokwium (zaliczeniowe + poprawkowe) Laboratoria muszą być zaliczone przed sesją (!), nie ma poprawy lab. w sesji wrześniowej Możliwość korzystania z materiałów pomocniczych podczas zaliczeń: Wykładów nie można korzystać ż żadnych pomocy Laboratoriów wg ustalenia z prowadzącymi Zakaz użytkowania urządzeń elektronicznych Zasady odpracowania nieobecności na zajęciach 7
Efekty kształcenia KRK - wiedza Student zdobywa wiedzę o podstawach komputerowego przetwarzania danych w formatach binarnych z wykorzystaniem układów elektronicznych rozumie parametry charakteryzujące komputery i sieci komputerowych i rozumie operowanie komputerami w środowisku systemu operacyjnego Windows zna zasady pracy głównych aplikacji Internetu i sposoby adresowania protokołu komunikacyjnego IP potrafi posługiwać się pakietami oprogramowania aplikacyjnego ogólnego dostępu w zakresie przetwarzania tekstu i obliczeń w tabelach i sporządzania wykresów z uzyskanymi wynikami ma umiejętność samodzielnego budowania elementarnych relacyjnych baz danych i prezentacji graficznych 8
Efekty kształcenia KRK umiejętności i kompetencje Student.. posiada merytoryczną biegłość w wykorzystaniu komputerów i sieci komputerowych do podstawowych zastosowań potrafi wykorzystać zdobytą wiedzę w posługiwaniu się Internetem a zwłaszcza WWW rozumie potrzebę podnoszenia wiedzy informatycznej przez całe życie, przede wszystkim z uwagi na niezwykle szybki postęp rozwoju informatyki i jej zastosowań 9
Warunki zaliczenia przedmiotu Ocena W zaliczenie wykładów Ocena L zaliczenie laboratoriów Oceny są niezależne (!) Ocena końcowa z przedmiotu = ocena średnia arytmetyczna z dwóch pozytywnych ocen Wszystkie oceny są wpisywane do WD W celu zaliczenia przedmiotu należy zaliczyć W + L Ocenę z laboratoriów wystawia prowadzący lab. 10
Wykład 1. Wstęp do technologii informacyjnej Pojęcie Informatyki oraz Technologii Informacyjnej Algorytmy, programy i dane Sposoby reprezentacji danych w komputerze. Języki programowania 11
Informatyka a Technologia informacyjna
Definicja Informatyki Informatyka (ang. Computer Science) nauka o metodach oraz technologiach pozyskania, przechowywania oraz przetwarzania informacji Informacja + Automatyka 1957 na świecie 1968 w Polsce 13
Geneza informatyki Matematyka Elektronika Inne nauki Informatyka 1970 Uznanie za samodzielną dyscyplinę 14
Dziedziny informatyki Teoretyczna (metody) Informatyka Stosowana (technologie) Kierunek nauczania 15
Informatyka jako dyscyplina naukowa Algorytmika itp. Teoria informacji Modelowanie systemów informatycznych Sztuczna inteligencja Teoria programowania Architektura komputerów 16
Informatyka jako dyscyplina stosowana Programowanie itp. Technologie sieciowe i internetowe Administrowanie systemami informatycznymi Grafika komputerowa Sprzęt komputerowy Wytwarzanie systemów informacyjnych 17
Technologia informacyjna IT (ang. Information Technology) = zagadnienia, metody, narzędzia oraz środki przetwarzania informacji Sprzęt Programy Informacja Przetwarzanie Prezentacja Bezpieczeństwo 18
Zagadnienia IT omawiane w ramach wykładów Podstawy algorytmiki. Algorytmy i dane. System binarny. Języki programowania. Architektura komputerów Oprogramowanie Technologie sieciowe Internet i WWW Bazy danych Bezpieczeństwo systemów IT 19
Algorytmy, programy i dane 20
Definicja oraz cechy algorytmu Algorytm lista kroków (czynności) mających na celu rozwiązanie określonego zadania Zadanie musi być wykonalne (warunki, wykonawca) Lista czynności musi być skończona Każdy algorytm działa na danych wejściowych (argumenty) oraz generuje dane wyjściowe (wynik) 21
Przykłady algorytmów Powszechne Instrukcja montażu mebli Przepisy kulinarne Pobranie gotówki z bankomatu Zakup biletu w biletomacie Etc. Specjalistyczne Wyszukiwanie najkrótszej ścieżki w grafie Sortowanie elementów w tablicy Wyszukiwanie wzorca w tekście Porównanie dużych zbiorów Etc. 22
Kamienie milowe historii algorytmów Algorytmy pojawiły się o wiele wcześniej od komputerów Euklides: obliczenie NWD jeden z pierwszych niebanalnych algorytmów używany do dziś (RSA) IX wiek: Muhammed Al Chuwarizmi reguły wykonania operacji matematycznych, pojęcie zera w matematyce XVIII wiek: pierwszy sprzęt programowalny krosno tkackie Charles Babbage projekt maszyny analitycznej programowalnej za pomocą kartek Ada Lovelace pierwszy program dla ww. maszyny XX wiek: Fundamentalne prace nad teorią algorytmów Alan Turing koncepcja uniwersalnej maszyny obliczeniowej Pierwsze komputery i programy 23
Formy reprezentacji algorytmu W jakiej postaci zapisać algorytm? Lista kroków (postać tekstowa) Schemat blokowy (postać graficzna) Kod źródłowy programu (postać sformalizowana) 24
Zapis algorytmu w formie listy kroków Przykład: algorytm obliczenia silni liczby N! = N (N 1) N 2 2 1 1) Wprowadź liczbę całkowitą dodatnią N 2) zapamiętaj jako S wartość N 3) zmniejsz N o 1 4) pomnóż S przez N i zapisz nową wartość do S 5) jeśli N większe od 1 to przejdź do pkt. 3 6) wyświetl wartość S jako wynik 25
Zapis algorytmu w postaci schematu blokowego Początek algorytmu początek Wprowadzenie danych N Blok instrukcji S := N koniec Koniec algorytmu N := N 1 S := S * N print S Wyprowadzanie danych Przejście tak N > 1? nie warunek 26
Bazowe elementy schematu blokowego Początek / koniec Instrukcja / Blok instrukcji / Proces Podprogram Dokument Decyzja Objaśnienie Łączniki Dane Dysk twardy 27
Zapis algorytmu w postaci kodu źródłowego programu Algorytm obliczenia silni liczby N w języku Java 28
Program komputerowy Program komputerowy = zapis algorytmu w postaci zbioru instrukcji należących do określonego języka programowania Instrukcja pojedyncza czynność Język programowania - zbiór wszystkich dozwolonych instrukcji oraz zasad posługiwania się nimi Algorytm Program 29
Programowanie Programowanie proces implementacji algorytmu Programista osoba realizująca przełożenie algorytmu na kod źródłowy Algorytm proces Programowanie Programista Kod źródłowy programu 30
Dane Dane zbiór uporządkowanych informacji zapisanych w określonym formacie w celu przetwarzania w komputerze Dane wejściowe: argumenty (parametry) algorytmu Dane wewnętrzne: lokalne dane pomocnicze Dane wyjściowe: wynik działania algorytmu Dane wejściowe Komputer Dane lokalne Dane wyjściowe 31
Definicja programu wg prof. Niklausa Wirtha Algorytm Dane Program Algorytm jest uniwersalny Program komputerowy jest ściśle związany z wybranym językiem programowania 32
Sposoby reprezentacji danych w komputerze 33
Reprezentacja danych w komputerze Dane w komputerach są reprezentowane w postaci binarnej (syn. zerojedynkowej) Komputer jest urzadzeniem elektronicznym Dane są reprezentowane za pomocą sygnałów System binarny pozwala na analizę ilościową (jest napięcie czy nie) zamiast jakościowej (jaki poziom napięcia odpowiada danej liczbie?) U Sygnał Informacja 1 0 0 1 1 1 1 t 34
Systemy liczbowe System liczbowy jest zbiorem zasad jednolitego zapisu oraz nazewnictwa liczb Skończony zbiór znaków np. 0... 9 Nieskończona ilość liczb... + System liczbowy pozycyjny można opisać poprzez wzór n k a b k =0 k gdzie a k { 0,... b 1} b nazywamy bazą systemu 35
System dziesiętny (DEC) Baza = 10, alfabet = { 0, 1,. 9 } Naturalny dla ludzi, w komputerach istnieje tylko na poziomie języków programowania, przeważnie wysokiego poziomu Próby stworzenia komputera opartego na dziesiętnym systemie miały miejsce na samym początku epoki komputerów; komputery te jednak zostały wkrótce wyparte przez komputery z systemem binarnym 36
System liczbowy dwójkowy BIN (syn. binarny) Alfabet systemu: { 0, 1 } Baza: 2 Każda liczba może być zapisana w postaci k k n k a 2 0 = } {0,1 a k, 2 0 1 2 3 4 5 6 7 8 9 10 10 11111011001 2 1 2 0 2 0 2 1 2 1 2 0 2 1 2 1 2 1 2 1 2 1 2009 = + + + + + + + + + + + + = 37
System szesnastkowy (HEX) Baza = 16, alfabet = { 0, 1, 9, A, B, C, D, E, F } Praktyczną wartość uzyskał w zastosowaniach komputerowych jako kompaktowa forma zapisu dużych liczb 8-znakową liczbę binarną można zapisać 2 cyframi w systemie szesnastkowym Jest również nazywany systemem heksadecymalnym 38
Zapis liczb w różnych systemach DEC BIN HEX 0 0 0 1 1 1 2 10 2 3 11 3 4 100 4 5 101 5 6 110 6 7 111 7 8 1000 8 DEC BIN HEX 9 1001 9 10 1010 A 11 1011 B 12 1100 C 13 1101 D 14 1110 E 15 1111 F 16 10000 10 17 10001 11 39
Algorytm konwersji liczb BIN->DEC 1) Mamy liczbę B zapisaną w systemie binarnym 2) Ustawiamy wartość liczby D w systemie dziesiętnym równą 0 3) Ustawiamy indeks znaku N w skrajnej prawej pozycji ( N = 0 ) 4) ustawiamy mnożnik M = 1 5) Dla każdego pozycji N liczby B powtarzamy póki N<B: o jeśli znak liczby B w pozycji N równa się 1 to dodaj do D wartość M o zwiększ wartość N o 1 o zwiększ wartość M dwukrotnie 6) Wyświetl D jako wynik konwersji 40
Algorytm konwersji liczb DEC->BIN 1) Mamy liczbę D zapisaną w systemie dziesiętnym 2) Ciąg znaków reprezentujących liczbę B w systemie dwójkowym jest pusty 3) Obliczamy liczbę całkowitą R jako resztę z dzielenia D przez 2 4) Obliczamy liczbę całkowitą W jako wynik z dzielenia D przez 2 4) R dopisujemy do ciągu znaków B z lewej (!) strony 5) Przypisujemy do D wartość W 6) jeśli D > 0, przechodzimy do pkt. 3 7) wynikiem konwersji jest ciąg znaków B 41
Kierunek odczytu wyniku Przykład konwersji liczb pomiędzy systemem binarnym a dziesiętnym 1 0 1 1 0 1x16 + 0x8 + 1x4 + 1x2 + 0x1 = 22 MOD reszta z dzielenia DIV operacja dzielenia liczb całkowitych 22 MOD 2 = 0 22 DIV 2 = 11 11 MOD 2 = 1 11 DIV 2 = 5 5 MOD 2 = 1 5 DIV 2 = 2 2 MOD 2 = 0 2 DIV 2 = 1 1 MOD 2 = 1 1 DIV 2 = 0 42
Bit jednostka informacji Bit (ang. Binary Digit) najmniejsza jednostka informacji przyjmująca jedną z dwóch wartości 0 lub 1 Bit jest oznaczany małą literą 'b' Przykład: prędkość połączenia sieciowego jest mierzona obecnie w gigabitach na sekundę, skrót Gb/s (nie GB/s!) 43
Zdjęcie zapisane w formacie 1 bit = 1 piksel 44
Bajt Bajt (ang. Byte) najmniejsza adresowana jednostka informacji w komputerze Składa się z 8 bitów Forma skrócona - duża literą B Bajt (B) Kilobajt (KB) Megabajt (MB) Gigabajt (GB) Terabajt (TB) 8 b 1024 B 1024 KB 1024 MB 1024 GB 45
Bit vs Bajt Najbardziej znaczący bit Najmniej znaczący bit 46
Wszystko w komputerze jest liczbą! Liczba całkowita wynika z definicji Ułamek dwie części całkowite oddzielone przecinkiem Symbol (znak alfabetu) poprzez jego kod (np. spacja ma kod 32) Tekst zbiór znaków alfabetu Data i czas liczba dni/godzin/min./sek. (najczęściej liczonych od godziny zero - 1 stycznia 1900 r.) etc. 47
Języki programowania 48
Definicja Język programowania zbiór zasad konstruowania oraz interpretacji poleceń Istnieje ok. 3 tys. języków programowania 10 popularnych języków programowania (C#, Java, C++, C#, PHP, VB, etc.) stanowią > 90% kodów istniejących programów Języki niskiego oraz wysokiego poziomu Generacje języków programowania 49
Generacje języków programowania I kody maszynowe (010010101001 ) II języki Assemblera ( MOV AX,10 ADD BX) III języki proceduralne C, Fortran, Algol, etc. IV języki obiektowe C++, VB.NET, Java, etc. + rozbudowane narzędzia projektowania aplikacji V brak dokładnego określenia sztuczna inteligencja? nowe metody programowania? budowa aplikacji z klocków? 50
Poziomy języka programowania Języki niskiego poziomu składnia języka jest bliska postaci maszynowej i trudna dla programisty Assembler, kody maszynowe Języki wysokiego poziomu składnia języka opiera się na konstrukcjach języków naturalnych (j. angielski) i jest łatwa do zrozumienia przez człowieka, ale wymaga dodatkowej translacji do postaci maszynowej C/C++, Visual Basic, Java, Ruby, Python, PHP, etc. 51
Języki maszynowe (1G) Kod źródłowy programu jest zapisywany za pomocą zer i jedynek (języki niskiego poziomu) Nie wymaga przełożenia na język komputera Nieczytelny dla człowieka Pisany pod konkretną architekturę komputera Program w kodzie binarnym Program w kodzie szesnastkowym 52
Języki Asemblera (2G) Instrukcje programu są zapisywane za pomocą nazw mnemonicznych (języki niskiego poziomu) np. MOV przenieś, ADD dodaj, JMP - przejdź Nieco wyższy komfort pracy programistów Wysoka wydajność wykonania programu Programy nie przenoszą się na inne platformy 53
Języki wysokiego poziomu (3G) Konstrukcje języka wykorzystują uproszczone słownictwo języka naturalnego Znaczący wzrost wydajności pracy programistów Krótszy kod źródłowy Nieco niższa efektywność działania programu Konieczność posiadania translatora kodu źródłowego na język maszynowy Przenośność na inne platformy (ograniczona) C, C++, Visual Basic, Fortran, Cobol, Algol, Smalltalk, PHP, 54
Języki programowania wizualnego (4G) Zintegrowane środowiska programowania pozwalające na napisanie programów metodą budowania z już gotowych komponentów z minimalnym kodowaniem Ewolucja języków 3G, nie rewolucja Platformy programowania (ang. Frameworks) Microsoft.NET Framework Java Platforms Platformy programowania aplikacji WWW. 55
Języki 5G W latach 80. XX wieku uważano iż kolejna generacja języków programowania będzie się opierała o mechanizmy sztucznej inteligencji (AI), wydawanie poleceń w języku naturalnym itp. Czasami zaliczają tu grupę języków programowania w logice (PROLOG); nie spełniły one oczekiwań i nie są obecnie rozwijane Obecnie nie ma jednolitego zdania co do 5G 56
Popularność języków programowania 57
Język programowania Współczesny język programowania: został zaprojektowany w połowie lat 90. XX wieku Język obiektowy: realizuje sprawdzoną koncepcję programowania obiektowego, co pozwala na budowę dużych oraz stabilnych systemów informatycznych Wieloplatformowy: działa w systemach operacyjnych Windows, Linux, pozwala budować aplikacje WWW, działa na urządzeniach wbudowanych, platformach mobilnych etc. 58
Literatura (uzupełniająca) http://wazniak.mimuw.edu.pl/ przedmiot Wstęp do programowania (tematy Pojęcie algorytmu, Języki formalne oraz Reprezentacja liczb w komputerze wybrane fragmenty) D.E.Knuth. Sztuka programowania (dowolne wydanie), Tom 1 Algorytmy podstawowe Cormen, Thomas H.; Leiserson, etc. Wprowadzenie do algorytmów, wyd. 7, WNT 2007 59