Teoretyczne podstawy informatyki Wykład 1 Wprowadzenie do teoretycznych podstaw informatyki [email protected] http://www.cs.put.poznan.pl/jnawrocki/tpi/ Copyright, 2004 © Jerzy R. Nawrocki Co to jest informatyka? Dziedzina wiedzy zajmująca się problemami • przetwarzania, • przechowywania i • przesyłania danych. J.Nawrocki, Wprowadzenie do TPI Definiowanie informatyki ACM = Association for Computing Machinery IEEE = Institution of Electrical and Electronics Engineers IEEE CS = IEEE Computer Society J.Nawrocki, Wprowadzenie do TPI Engineering Science Mathematics Trzy filary informatyki J.Nawrocki, Wprowadzenie do TPI • Matematyka • Nauki ścisłe (science) • Inżynieria Curriculum 2001 - Obszary wiedzy 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Struktury dyskretne (43) Podstawy programowania (38) Algorytmy i złożoność (31) Architektura i organizacja (36) Systemy operacyjne (18) Obliczenia w sieciach (15) Języki programowania (21) Komunikacja człowiek-komputer (8) Grafika i wizualizacja (3) Systemy inteligentne (10) Zarządzanie informacją (10) Społeczne aspekty informatyki (16) Inżynieria oprogramowania (31) Obliczenia i metody numeryczne (0) J.Nawrocki, Wprowadzenie do TPI Struktury dyskretne Graf nieskierowany J.Nawrocki, Wprowadzenie do TPI Klika Struktury dyskretne Ojciec Dzieci Cykl w grafie J.Nawrocki, Wprowadzenie do TPI Drzewo Struktury dyskretne Cykl w grafie Acykliczny graf skierowany (DAG) J.Nawrocki, Wprowadzenie do TPI Podstawy programowania Język schematów blokowych Start R1 SS+1 R2 > 0 Tak J.Nawrocki, Wprowadzenie do TPI Nie Stop Podstawy programowania Silnia(n) = n! = 123 .. n n! = (n-1)! n Silnia(0) = 1 Silnia(1) = 1 Silnia(2) = 2 Silnia(3) = 6 Silnia(4) = 24 Silnia(5) = 120 int Silnia (int n) { int s = 1; while (n > 1) { s = s * n; n = n – 1;} return s; } J.Nawrocki, Wprowadzenie do TPI s1 n>1 Nie Tak ss*n nn-1 Wynik s Algorytmy i złożoność 112 123 134 132 123 114 Dany jest zbiór A zawierający n liczb całkowitych dodatnich. Czy można go podzielić na takie dwa zbiory B, C, że suma liczba w zbiorze B jest równa sumie liczb w zbiorze C? J.Nawrocki, Wprowadzenie do TPI Algorytmy i złożoność n=6 112 123 134 132 123 114 Klasy algorytmów: Wielomianowe: p: czas(n) p(n) 1600 1400 1200 1000 800 600 400 200 0 5 J.Nawrocki, Wprowadzenie do TPI 10 15 20 25 30 35 40 Algorytmy i złożoność n=6 112 123 134 132 123 114 Klasy algorytmów: „Wykładnicze”: p: czas(n) p(n) 2500 2000 1500 1000 500 0 1 J.Nawrocki, Wprowadzenie do TPI 2 3 4 5 6 7 8 9 10 11 Algorytmy i złożoność n=6 Klasy algorytmów: Wielomianowe: p: czas(n) p(n) 112 123 134 132 123 114 „Wykładnicze”: p: czas(n) p(n) Klasy problemów: Wielomianowe: alg. wielomianowy NP-trudne: najpraw. alg. wielomian. J.Nawrocki, Wprowadzenie do TPI Architektura i organizacja 0 1 2 3 4 5 10 21 32 43 54 65 0 1 2 3 4 5 6 7 8 9 10 11 10 21 32 333 444 555 43 54 65 111 222 333 J.Nawrocki, Wprowadzenie do TPI Pamięć wirtualna Odczyt komórki o adresie 9 Architektura i organizacja 0 1 2 3 4 5 111 222 333 43 54 65 str 0 1 2 3 Tablica stron blok jest 0 0 0 0 3 1 0 1 fadr = blok(str) + prz 0 1 2 3 4 5 6 7 8 9 10 11 10 21 32 333 444 555 43 54 65 111 222 333 J.Nawrocki, Wprowadzenie do TPI Pamięć wirtualna Odczyt komórki o adresie log. ladr: str = ladr / 3 prz = ladr mod 3 Architektura i organizacja 0 1 2 3 4 5 111 222 333 43 54 65 Tablica stron str blok 0 -1 1 -1 2 3 3 0 fadr = blok(str) + prz 0 1 2 3 4 5 6 7 8 9 10 11 10 21 32 333 444 555 43 54 65 111 222 333 J.Nawrocki, Wprowadzenie do TPI Pamięć wirtualna Odczyt komórki o adresie log. ladr: str = ladr / 3 prz = ladr mod 3 Systemy operacyjne A LP HD B ? AllocateLP; AllocateHD; AllocateHD; AllocateLP; UseHDandLP; UseHDandLP; ReleaseHD; ReleaseLP; ReleaseLP; ReleaseHD; J.Nawrocki, Wprowadzenie do TPI Systemy operacyjne A LP HD B AllocateLP; AllocateHD; AllocateHD; AllocateLP; UseHDandLP; UseHDandLP; ReleaseHD; ReleaseLP; ReleaseLP; ReleaseHD; J.Nawrocki, Wprowadzenie do TPI NC: Obliczenia w sieciach ... NC4: WWW jako przykład obliczeń typu klient-serwer NC5: Budowanie aplikacji WWW ... NC9: J.Nawrocki, Wprowadzenie do TPI Języki programowania Kompilator .pas Analizator J.Nawrocki, Wprowadzenie do TPI Generator .exe Języki programowania 1+2*3 =7 1+*23 = ??? Dany jest ciąg cyfr, nawiasów, znaków +, -, *, /. Czy ten ciąg jest poprawnie zbudowanym wyrażeniem arytmetycznym? J.Nawrocki, Wprowadzenie do TPI Grafika i wizualizacja Jak odwzorowywać na ekranie obiekty 3-wymiarowe w czasie rzeczywistym? J.Nawrocki, Wprowadzenie do TPI Systemy inteligentne Politechnika Poznańska Jak rozpoznawać obrazy lub pismo? J.Nawrocki, Wprowadzenie do TPI Zarządzanie informacją Pesel #Głów 70010112345 4 56062877777 3 Pesel 70010112345 56062877777 Dochód 48000 33000 Imię Jan Ewa Jak manipulować Nazwisko dużą ilością Klinton danych? Busz Podaj nazwiska tych, u których dochód na głowę > 11 000 zł J.Nawrocki, Wprowadzenie do TPI Inżynieria oprogramowania Syndrom LOOP Loop L ate (późno) Over budget (przekroczony budżet) O vertime (nadgodziny) Poor quality (kiepska jakość) J.Nawrocki, Wprowadzenie do TPI Inżynieria oprogramowania Kiedy i za ile? J.Nawrocki, Wprowadzenie do TPI Co za miesiąc? Inżynieria oprogramowania Opowieści użytkownika Data: 6.11.01 Typ: Nowa: X Naprawa:__ Rozbudowa:__ Numer opowieści: 23 OPOWIEŚĆ: Dla każdego konta oblicz saldo dodając wszystkie wpłaty i odejmując wszystkie wypłaty. Rozmiar: J.Nawrocki, Wprowadzenie do TPI Inżynieria oprogramowania Plan wydania: Gra planistyczna 2 tyg= 24 h/osobę 90h, małe Pisze opowieści Dla opowieści szac. pracochłon. i ryzyko. Ponadto dostępny czas J.Nawrocki, Wprowadzenie do TPI Dzieli opowieść Inżynieria oprogramowania Plan wydania: Gra planistyczna 9 godz Opowieści są OK. Pracochł., ryzyko dostępny czas 2 tyg * 2 osoby= 48 h J.Nawrocki, Wprowadzenie do TPI Wybiera zakres Obliczenia i metody numeryczne 2x = 10 3x = 1 Jak rozwiązać układ równań lub pojedyncze równanie? x2 = 2 J.Nawrocki, Wprowadzenie do TPI Obliczenia i metody numeryczne a2 + b2 = + b*b); 0.0000000000E+00 2 b 1 + (a/b) = begin a:= 3e-25; b:= 4e-25; if a > b then begin a:= 3e-25; b:= 4e-25; m:= sqrt(a*a writeln(m) end. a 1 + (b/a)2 m:= a*sqrt(1+ else (b/a)*(b/a)) m:= b*sqrt(1+ writeln(m) end. (a/b)*(a/b)); 5.0000000000E-25 J.Nawrocki, Wprowadzenie do TPI Egzamin Termin ??? 5 zadań; od 0 do 10 pkt za zadanie Od 28 pkt 3.0; od 33 pkt 3.5; od 38 pkt 4.0, ... Indeks lub legitymacja Kalkulatory zabronione J.Nawrocki, Wprowadzenie do TPI Podsumowanie Wreszcie! Struktury dyskretne: grafy Podstawy progr.: schematy blokowe Algorytmy i złożoność: podział zbioru Architektura: pamięć wirtualna Systemy operacyjne: problem zastoju Języki progr.: kompilator i wyr. arytm. Systemy inteligentne: rozpozn. pisma Zarządzanie informacją: bazy danych Inżynieria oprogr.: gra planistyczna Metody numeryczne: sqrt(a*a+b*b) J.Nawrocki, Wprowadzenie do TPI Ocena wykładu 1. Wrażenie ogólne? (1 - 6) 2. Zbyt wolno czy zbyt szybko? 3. Czy dowiedziałeś się czegoś ważnego? 4. Co poprawić i jak? J.Nawrocki, Wprowadzenie do TPI