Magistrala danych Magistrala adresowa Magistrala steruj ROM, RAM CPU In/Out CPU RAM CPU Magistrala danych Magistrala adresowa Magistrala steruj

Wielkość: px
Rozpocząć pokaz od strony:

Download "Magistrala danych Magistrala adresowa Magistrala steruj ROM, RAM CPU In/Out CPU RAM CPU Magistrala danych Magistrala adresowa Magistrala steruj"

Transkrypt

1 System komputerowy -architektura Rozwój nowoczesnych technik obliczeniowych Magistrala systemowa (System Bus) Budowa komputera, algorytmika i języki programowania Cezary Bolek Katedra Informatyki Pamięć operacyjna ROM, RAM Jednostka centralna Układy we/wy In/Out Magistrala systemowa i pamięć RAM Magistrala danych Magistrala adresowa Magistrala sterująca ROM, RAM In/Out Magistrala adresowa Magistrala danych Magistrala sterująca ROM, RAM In/Out Magistrala danych słuŝy do przesyłania danych pomiędzy komórkami pamięci, rejestrami procesora oraz układami we/wy. Magistrala adresowa słuŝy do przesyłania adresów komórek pamięci (lub układów we/wy), które biorą udział w operacji odczytu lub zapisu. Magistrala sterująca słuŝy do określenia typu operacji ma się wykonać (zapis czy odczyt) oraz kierunku transferu danych (np. do pamięci, pamięć do ) RAM Pamięć operacyjna Pamięć RAM zawiera dane i rozkazy (programy) określające jak przetwarzać dane Magistrala danych przesyła dane z pamięci do w celu ich przetworzenia Magistrala danych przesyła przetworzone dane do pamięci w celu ich późniejszego przetwarzania, wyświetlenia, zapisania itp Jednostka centralna Przetwarza dane 1

2 Procesor Procesor (processor) - urządzenie cyfrowe sekwencyjne potrafiące pobierać, interpretować i wykonywać ciąg rozkazów. Wykonuje on bardzo szybko dowolny ciąg prostych operacji wybranych ze zbioru operacji podstawowych. Procesor składa się z: zespołu rejestrów do przechowywania danych i wyników, jednostki arytmetycznej (arytmometr) do wykonywania prostych operacji na danych, układu sterującego przebiegiem obliczeń, rejestru rozkazów, czyli operacji podstawowych. Procesor Działania wykonywane przez procesor: działania arytmetyczne: dodawanie, odejmowanie, porównywanie dwóch liczb, dodawanie i odejmowanie jedności, zmiana znaku liczby, działania logiczne: iloczyn logiczny - AND, suma logiczna - OR, suma modulo2 (róŝnica symetryczna) - XOR, negacja - NOT, przesunięcie bitów w lewo lub prawo, działania na bitach. Algorytm Innymi słowy, czym jest algorytm? Przepis na rozwiązanie określonego problemu za pomocą prostych czynności wykonywanych w ściśle określonej kolejności. Czynności: 1. muszą być znacznie prostsze od realizowanego algorytmu 2. muszą być wykonywalne dla danego sprzętu (prostota czynności jest sprawą względną) Kolejność: 1. określenie kolejności wykonywania czynności jest krytyczne dla osiągnięcia celu algorytmu; 2. musi istnieć mechanizm rozgałęziania algorytmu, tj. decydowania o kolejności w trakcie wykonywania algorytmu na podstawie zaistniałych warunków. Zbiór logicznie powiązanych kroków prowadzących do określonego celu Sposób rozwiązania problemu "Przepis" Sposób opisu zachowania Algorytm zawiera: Dane Instrukcje 2

3 Dane wejściowe Algorytm Dane wyjściowe Rola algorytmu Algorytm Przepis Ciasteczka czekoladowe DANE (składniki) 2 1/4 szklanki mąki 1 łyŝeczka soli 1 łyŝeczki proszku do pieczenia 2 jajka 3/4 szklanki brązowego cukru 1 łyŝeczki wanilii 3/4 szklanki cukru 1 paczka masła 30 dag startej na tarce czekolady INSTRUKCJE (czynności) Rozgrzać piekarnik do temperatury 375 C. W misie zmieszać mąkę, sól, proszek do pieczenia. Utrzeć razem cukier, masło i wanilię aŝ do uzyskania jednolitej konsystencji. Dodać jajka i utrzeć. Dodać zmieszaną wcześniej mąkę, sól itd., utrzeć. Dodać kawałki czekolady NałoŜyć łyŝeczką niewielkie porcje ciasta na blachę przykrytą do pieczenia. Piec 8 do 10 minut. papierem Cechy dobrego algorytmu Co jest złego w tym algorytmie? Dobry algorytm musi być: Skończony Kompletny Jednoznaczny Poprawny Prosty Zawierać poziomy abstrakcji (Z etykiety szamponu) Sposób uŝycia: Zmoczyć włosy NałoŜyć niewielką ilość szamponu na włosy Wetrzeć Spłukać Czynności powtórzyć 3

4 Sposoby opisu algorytmu Algorytm: Średnie zuŝycie paliwa w l/km Język naturalny (np. angielski) Opis graficzny (np. sieć działań) Pseudokod lub język programowania 1. Pobierz wartości: zuŝyte paliwo w litrach, początkowy i końcowy stan licznika w kilometrach 2. Ustaw wartość: przejechany dystans na wartość (końcowy stan licznika - początkowy stan licznika) 3. Ustaw wartość: średnie zuŝycie paliwa na wartość (zuŝyte paliwo / przejechany dystans) 4. Wydrukuj wartość: średnie zuŝycie paliwa 5. Koniec Zapis algorytmu - sieć działań Zwięzłość, czytelność i wysoki poziom abstrakcji Sieć działań (schemat blokowy): 1. Elementarne czynności oznaczone są blokami (węzły sieci), a kolejność wyznaczona jest poprzez gałęzie sieci, łączące węzły. 2. Kształt bloków odpowiada rodzajowi operacji, a strzałki gałęzi identyfikują jednoznacznie ich kolejność. 3. NiezaleŜność struktury algorytmu od architektury konkretnej maszyny i rodzaju kodowania liczb. Za pomocą sieci działań moŝliwe jest zapisanie kaŝdego poprawnego algorytmu! KaŜdy algorytm moŝna zapisać za pomocą wielu róŝnych sieci działań! Sieć działań: Średnie zuŝycie paliwa w l/km Start zuŝyte paliwo początkowy stan licz. końcowy stan licz. przejechany dystans końcowy stan licz. - końcowy stan licz. średnie zuŝycie paliwa na wartość zuŝyte paliwo / przejechany dystans drukuj średnie zuŝycie paliwa Stop 4

5 Przykład A Znajdowanie największej z trzech liczb: max(a,b,c) Start a,b,c Przykład B Start a,b,c m a Znajdowanie największej z trzech liczb: max(a,b,c) T a>b N m<b T m b T a>c N T c>b N N m<c T m c drukuj a drukuj c drukuj b N drukuj m Stop Stop A max(a,b,c) rozmiar: 4 we/wy 3 dec. 0 op. szybkość: 2 we/wy 2 dec. 0 op. rozbudowa: trudna Sieci A vs B? B max(a,b,c) rozmiar: 2 we/wy 2 dec. 3 op. szybkość: 2 we/wy 2 dec op. rozbudowa: łatwa Rozwiązanie problemu moŝliwe jest za pomocą róŝnych sieci działań. Optymalizacja algorytmu polega na znalezieniu sieci najlepszej według określonego kryterium: np. rozmiaru, szybkości, rozbudowy. Przykład. Wykonanie pseudokodu - krok 1 1. Pobierz wartości dla Litry (zuŝyte paliwo), Start (początkowy stan licznika) i Koniec (końcowy stan licznika) 2. Ustaw wartość dla Dystans (przejechany dystans) na (Koniec - Start) 3. Ustaw wartość dla Sred (średnie zuŝycie paliwa) na (Litry / Dystans) 4. Wydrukuj wartość: Sred 5. Stop Rozkaz Pobierz pobiera dane z zewnątrz i zapisuje je do pamięci Pobierz zmienia zawartość pamięci Zmienne algorytmu odnoszą się do konkretnych miejsc w pamięci 1a PAMIĘĆ 1c Prześlij pobrane dane do pamięci PAMIĘĆ Litry=36 Start=430 Koniec=940 1b Czekaj na dane wej. I/O I/O 5

6 Wykonanie pseudokodu: krok 2 1. Pobierz wartości dla Litry (zuŝyte paliwo), Start (początkowy stan licznika) i Koniec (końcowy stan licznika) 2. Ustaw wartość dla Dystans (przejechany dystans) na (Koniec - Start) 3. Ustaw wartość dla Sred (średnie zuŝycie paliwa) na (Litry / Dystans) 4. Wydrukuj wartość: Sred 5. Stop Rozkaz Ustaw moŝe zmienić zawartość pamięci Procesor wykonuje operacje matematyczne Procesor pobiera dane z pamięci na których operuje Procesor przesyła wynik do pamięci 2a Litry=39 Start=330 Koniec=980 2b 2d Pobierz wart. Prześlij wynik do odejm. do pamięci PAMIĘĆ Litry=39 Start=330 Koniec=980 Dystans=650 PAMIĘĆ I/O 2c: Oblicz róŝnicę I/O Wykonanie pseudokodu: krok 3 1. Pobierz wartości dla Litry (zuŝyte paliwo), Start (początkowy stan licznika) i Koniec (końcowy stan licznika) 2. Ustaw wartość dla Dystans (przejechany dystans) na (Koniec - Start) 3. Ustaw wartość dla Sred (średnie zuŝycie paliwa) na (Litry / Dystans) 4. Wydrukuj wartość: Sred 5. Stop Kolejna operacja Ustaw Analogiczne kroki Analogiczne operacje na pamięci 3a Litry=39 Start=330 Koniec=980 PAMIĘĆ I/O Dystans=650 3b Pobierz wart. 3d do dziel. Prześlij wynik do pamięci Litry=39 Start=330 Koniec=980 PAMIĘĆ Dystans=650 Sred=0.06 3c: Oblicz iloraz I/O Wykonanie pseudokodu: krok 4 1. Pobierz wartości dla Litry (zuŝyte paliwo), Start (początkowy stan licznika) i Koniec (końcowy stan licznika) 2. Ustaw wartość dla Dystans (przejechany dystans) na (Koniec - Start) 3. Ustaw wartość dla Sred (średnie zuŝycie paliwa) na (Litry / Dystans) 4. Wydrukuj wartość: Sred 5. Stop Wartość, która ma być wydrukowana znajduje się w pamięci Procesor wysyła Ŝądanie wysłania zawartości pamięci do urządzenia wyjściowego 4a Litry=39 Start=330 Koniec=980 PAMIĘĆ Dystans=650 Sred=0.06 4b Pobierz wartość z pamięci Litry=39 Start=330 Koniec=980 Dystans=650 Sred=0.06 PAMIĘĆ Wyślij wartośćna wyjście 4c I/O I/O 0.06 Pamięć operacyjna np Język maszynowy 48 h 08 h CA h 0B h FE h Instrukcja procesora (kod programu) w pamięci zapisane są w postaci liczb dwójkowych. Zapis programu za pomocą liczb, które mogą być bezpośrednio wykonywane przez maszyną nazywa się językiem maszynowym., 48, 08, CA, 0B, FE, Pisanie programów w języku maszynowym przez człowieka jest bardzo Ŝmudne, ale było stosowane do programowania komputerów I i II generacji. 6

7 np. 48 h 08 h CA h 0B h FE h Język asemblera KaŜdej instrukcji procesora (która moŝe zajmować jeden lub więcej bajtów) moŝna przypisać skrót literowy (mnemonik), a kaŝdemu rejestrowi nazwę. Zapis programu za pomocą mnemoników nazywa się językiem asemblera, który jest znacznie łatwiejszy do opanowania przez człowieka. BL,8 ADD BL,B INC BL BL,8 ADD BL,B INC BL Program zapisany w języku asemblera nie moŝe być wykonywany bezpośrednio przez komputer i wymaga tłumaczenia na kod maszynowy za pomocą programu zwanego asemblerem. PoniewaŜ istnieje ścisły związek pomiędzy mnemonikami a instrukcjami maszynowymi, proces tłumaczenia (asemblacja) jest stosunkowo prosty. Proces odwrotny nazywa się deasemblacją (za pomocą disasemblera). BL,8 ADD BL,B INC BL Asembler, 48, 08, CA, 0B, FE, Języki wysokiego poziomu Program zapisany w języku wysokiego poziomu charakteryzuje: Abstrakcja danych programista operuje na zmiennych bez konieczności organizacji wykorzystania rejestrów procesora i lokalizacji liczb w pamięci ZłoŜone struktury danych proste jest deklarowanie i korzystanie ze złoŝonych struktur liczb jak np. tablice (macierze), stosy, kolejki, drzewa, etc. Zaawansowane konstrukcje sterujące określenie kolejności wykonywania programu realizuje się z pomocą intuicyjnych konstrukcji warunkowych typu IF-THEN-ELSE, FOR, DO-WHILE, etc. Dowolność układu zapisu programu programista moŝe zapisywać program w postaci najbardziej dla niego czytelnej i zgodnej z upodobaniami. for (i=1; i<10, i++) { n=10+x*2 }; for (i=1; i<10, i++) { n=10+x*2 }; for (i=1; i<10, i++) { n=10+x*2 }; Kompilacja programów Programy napisane w językach wysokiego poziomu muszą być tłumaczone na język maszynowy za mocą programu zwanego kompilatorem, a proces tłumaczenia nazywa się kompilacją. for (i=1; i<10, i++) { n=10+x*2 }; Kompilator, 48, 08, CA, 0B, FE, BL,8 ADD BL,B INC BL Kompilacja programów jest zadaniem bardzo złoŝonym, ze względu na mnogość moŝliwości realizacji zadania w języku asemblera. Kompilatory są jednymi z najbardziej zaawansowanych i złoŝonych programów dla komputerów osobistych. X = X + Y*Z MUL ADD AL,X BL,Y CL,Z CL,BL lub AL,CL X,AL MUL ADD AL,Y BL,Z AL,BL BL,X AL,BL X,AL MUL ADD lub AL,Z AL,Y CL,X X,AL Przykład - algorytm Euklidesa Znajdowanie największego wspólnego podzielnika Największy Wspólny Dzielnik (NWD) dwóch liczb jest największą liczbą naturalną spośród tych, które dzielą obie te liczby bez reszty Np. NWD(24,18) = 6. Aby znaleźć Największy Wspólny Dzielnik dwóch liczb, to od większej liczby naleŝy odejmować mniejszą dotąd, aŝ obie liczby będą sobie równe. Wynik jest ich największym wspólnym podzielnikiem. NWD(24,15) = = = = 3 Od większej liczby odejmujemy mniejszą. Liczby 24 i 15 przechodząw 15 i 9. PoniewaŜnie sąone równe, wykonujemy dalej odejmowanie Teraz otrzymujemy parę9 i 6, która dalej nie składa sięz liczb sobie równych, więc kontynuujemy odejmowanie. Para 6 i 3 - odejmujemy dalej Para 3 i 3 - otrzymaliśmy równość, więc liczba 3 jest największym wspólnym podzielnikiem liczb 24 i 15. 7

8 Przykład - algorytm Euklidesa Lista kroków K01: Czytaj a,b K02: Dopóki a b: wykonuj krok K03 K03: JeŜeli a > b, to a a - b. Inaczej b b a K04: nwd a K05: Zakończ algorytm Schemat blokowy Algorytm Euklidesa kod maszynowy i asembler b b8 0f b c8 7e 04 2b c8 eb 02 2b c1 3b c8 75 f4 33 c0 c3 b b8 0f b c8 7e 04 2b c8 eb 02 2b c1 3b c8 75 f4 33 c0 c3 mov ecx, 24 mov eax, 15 cmp ecx, eax $L591: jle SHORT $L584 sub ecx, eax jmp SHORT $L585 $L584: sub eax, ecx $L585: cmp ecx, eax jne SHORT $L591 xor eax, eax ret 0 Algorytm Euklidesa język Pascal program Od języka wysokiego poziomu do kodu varm,n: Euclide; maszynowego beginreadln(m); readln(n); integer; $L591: mov cmp eax, ecx, eax while if else m<> m> nnthen writeln(m); m:= n:= m n $L584: jle sub jmp ecx, eax $L584 sub SHORT eax, ecx $L585 end. n-m; $L585: cmp jne xor ret ecx, SHORT eax, 0 eax $L591 b9 f c0 0000b8 c3 0f b c8 7e 042b c8 eb02 2b c1 3b c8 75 8

9 Algorytm Euklidesa Język C i Ada with use procedure Text_IO; int { main(int begin a, b: Integer; Euklides is argc, char* argv[]) printf("podaj a,b; a b while := 153; scanf("%d", a.\n"); if 1326; while &a); if &b); b.\n"); elseb a (a > /= a b) b) -b; then loop elseb (a (a a!= b){ -= > b; a; end end loop; if; := b -a; } }printf("nwd return 0; to: %d", a); end; Put_Line("Największy &Integer'Image(b)); wspólny dzielnik (NWD) to: " Język ADA Język C Historia języków programowania 1 Plankalkül (1946, Niemcy) A-O (1951, USA) AutoCode (1952, Wlk.Brytania) FORTRAN I (1957, IBM, USA) FORTRAN II (1958, IBM, USA) pierwszy na świecie język programowania twórca Konrad Zues, komputer Z3 kmdr. Grace Hopper opracowuje kompilator A-O znany takŝe pod nazwą AT-3 studentka Alick Glennie opracowuje w ramach studiów kompilator AutoCode dla komputera Manchester Mark I rozwinięcie kompilatora A-O; opublikowany pod nazwą Math-Matic; programy numeryczno-modelujące rozwinięcie FORTRAN-u I wprowadzenie podprogramów Historia języków programowania 2 Historia języków programowania 3 COBOL (1959, USA) LISP (1959, USA) Algol 60 (1960) język dla przetwarzania duŝych zespołów danych w systemach ewidencyjno-zarządczych (skrót: COmmon Business Oriented Language) John McCarthy publikuje specyfikację LISP-u (skrót: LISt Processing) międzynarodowy zespół publikuje specyfikację języka Algol 60 Snobol (1962, Bell Labs, USA) BASIC (1964, USA) PL/I (1964, IBM, USA) język programowania ukierunkowany na przetwarzanie tekstów i wzorców językowych John Kemeny i Thomas Kurtz opracowują język BASIC (skrót: Beginners All-purpose Symbolic Instruction Code) publikacja specyfikacji języka PL/I przeznaczonego do ogólnych zastosowań APL (1961, USA) Keneth Iversson publikuje specyfikację języka APL ukierunkowanego na zagadnienia matematyczne RPG (1964, IBM, USA) publikacja specyfikacji języka RPG przeznaczonego do raportowania baz danych (skrót: Report Program Generator) FORTRAN IV (1962, USA) publikacja specyfikacji czwartej wersji języka FORTRAN LOGO (1966, USA) język wzorowany na LISP-ie, ukierunkowany na nauczanie dzieci i osób poznających programowanie 9

10 Historia języków programowania 4 Historia języków programowania 5 Simula (1967, Norwegia) język wzorowany na Algolu 60; wprowadzenie pojęcia klasy i obiektu; ukierunkowany na symulacje Smalltalk (1970, XEROX, USA) pierwszy język całkowicie obiektowy PASCAL (1968, Szwajcaria) Niklaus Wirth opracowuje język PASCAL do nauki programowania strukturalnego Icon (1970, USA) język programowania ukierunkowany na przetwarzanie tekstów i wzorców językowych BCPL (1969, Wlk.Brytania) Forth (1970, USA) PROLOG (1970, Francja) język niskiego poziomu zawierający wyłącznie bardzo proste typy danych (skrót: Basic Combined Programming Language) Charles Moore opracowuje język wysokiego poziomu Forth stosujący odwrotną notację polską język wysokiego poziomu stosowany w badaniach nad sztuczną inteligencją (skrót: PROgramming LOGic) B (1970, USA) C (1972, Bell Labs, USA) Tiny BASIC (1975, USA) język bazujący na BCPL opracowany dla komputera PDP-11 Dennis Ritchie opracowuje język C (bazujący na języku B) dla komputera PDP-11 dr Wong opracowuje miniaturową (tylko 2 KB pamięci) wersję BASIC-a dla mikroprocesorów Intela i Ziloga; jest to pierwszy program freeware; w programie uŝyto zastrzeŝeń: All Wrongs Reserved oraz Copyleft Historia języków programowania 6 Historia języków programowania 7 BASIC (1975, USA) Bill Gates i Paul Allen opracowują własną wersję BASIC-a, którą sprzedają dla firmy MITS produkującej mikrokomputer Altair, w którym stosowany jest mikroprocesor Intel 8080 Modula-2 (1983, Szwajcaria) C++ (1983, Bell Labs, USA) Niklaus Wirth opracowuje ulepszoną wersję języka Modula zespół Bjarne Stroustrupa opracowuje język C++ na bazie rozszerzonego języka C (C z klasami) DSL (1975, USA) ADA (1977, USA) Modula (1977, Szwajcaria) język będący poprzednikiem PostScriptu Jean Ichbiahn wraz z zespołem opracowują język ADA przyjęty później jako standardowy język programowania Ministerstwa Obrony USA Niklaus Wirth opracowuje język stosujący modularyzację i współbieŝność Perl (1987) Java (1995, Sun, USA) C# (2000, Microsoft, USA) udostępniona zostaje wersja 1.0 języka PERL opracowanego przez Larry ego Walla i Randala Schwartza; (skrót: Practical Extract and Report Language) zaprezentowano język programowania i środowisko opracowywane od roku 1991 przez zespół Jamesa Goslinga w Sun Microsystems Microsoft prezentuje język C# dla platformy.net będący kompilacją języków C++ i Java 10

11 Rozwój języków programowania Dlaczego tak duŝo języków programowania? Ewolucja Osobiste preferencje Specjalne zastosowania Obszary zastosowań Co czyni język popularnym? Aplikacje naukowe (Fortran, TCE) Aplikacje biznesowe (Cobol) Sztuczna inteligencja (Lisp) Programowanie systemowe (C, C++) Aplikacje sieciowe (Java, C#) Języki bardzo wysokiego poziomu (perl) Języki wysoce specjalizowane (make, sh) Efektywność kodu Łatwość nauki Łatwość implementacji Open Source Dostępność kompilatorów, bibliotek Ekonomia, patronat, inercja Składnia podobna do języka C 11

12 Paradygmaty programowania ZłoŜoność obliczeniowa ZłoŜoność obliczeniowa miara efektywności algorytmu Imperatywne (C, Pascal, etc.) Funkcjonalne (Lisp, ML, Haskell) Logiczne (Prolog) Zorientowane obiektowo (C++, Java, CLOS) Podawana jako liczba operacji potrzebnych do wykonania algorytmu, wyraŝona w stosunku do liczby elementów zbioru (n), na którym działa dany algorytm. PoniewaŜ dokładna liczba operacji zaleŝy od konkretnych danych wejściowych, złoŝoność obliczeniową podaje się dla najgorszego moŝliwego przypadku ZłoŜoność obliczeniową wyraŝa się za pomocą tzw. notacji O( ), która określa dominującą tendencję zaleŝności liczby operacji od n. np. algorytm sortowania bąbelkowego zbioru n-elementowego: liczba porównań = 0.5(n 2 -n) liczba przesunięć = 0.75(n 2 -n) złoŝoność obliczeniowa = O(n 2 ) Big-Oh np. 100n, 2n+4, 0.5n+n -1, 0.01n O(n) ZłoŜoność przykład Sortowanie zbioru n=1,000,000 (słowniki, ksiąŝki telefoniczne, bazy danych) Proste metody sortowania O(n 2 ) (wstawianie, wybieranie, bąbelkowe) Sprzęt Czas 1mln op/s 6 dni 100,000 op/s 2 miesiące 10,000 op/s 2 lata Zaawansowane metody sortowania O(n*log(n)) (Shell a, przez podział, ) Sprzęt Czas 1mln op/s 12s 100,000 op/s 2min 10,000 op/s 20min (op/s dotyczy operacji na elementach sortowanego zbioru, które mogąbyćzłoŝone, a nie elementarnych operacji procesora. ZłoŜoność przykład Sortowanie zbioru n=1,000,000,000 (symulacje fizyczne, astronomiczne, biologiczne) Proste metody sortowania O(n 2 ) (wstawianie, wybieranie, bąbelkowe) Sprzęt 1mln op/s Czas 160 lat Zaawansowane metody sortowania O(n*log(n)) (Shell a, przez podział, ) Sprzęt Czas 1mln op/s 0.5h 100,000 op/s 4.5h 10,000 op/s 2 dni (op/s dotyczy operacji na elementach sortowanego zbioru, które mogąbyćzłoŝone, a nie elementarnych operacji procesora. 12

13 Przykład - WieŜe Hanoi WieŜe Hanoi: Rozwiązanie Stan początkowy Ruch 1 A B C Cel: Przenieść wszystkie krąŝki z jednego drąŝka na inny Zasada 1: Wolno przenosić tylko jeden krąŝek za kaŝdym razem Zasada 2: Nie wolno połoŝyć większego krąŝka na mniejszym Ruch 2 Ruch 3 Ruch 4 Ruch 5 Ruch 6 Ruch 7 WieŜe Hanoi - ZłoŜoność WieŜe Hanoi (2 N ) Dla trzech pierścieni naleŝy wykonać 7 operacji. W ogólnym przypadku: koszt wynosi 2 N 1 = O(2 N ) Przy kaŝdym zwiększeniu N o jeden, nakłady pracy zwiększają się dwukrotnie. Przyrost pracy rośnie bardzo szybko! Dla N = 64 2 N = 2 64 = 18,450,000,000,000,000,000 Dysponując komputerem mogącym wykonywać milion instrukcji na sekundę Wykonanie zajęłoby 584,000 lat! Ale moŝe być jeszcze gorzej 13

14 ZłoŜoność rozsądna i nierozsądna Algorytmy o rozsądnej złoŝoności obliczeniowej mają złoŝoność najwyŝej wielomianową : O (Log N) O (N) O (NK) where K is a constant Algorytmy o nierozsądnej złoŝoności obliczeniowej mają złoŝoność wykładniczą i wyŝszą O (2 N ) O (N!) O (N N ) O( ) n log n n ,000 90,000 1,000,000 n ,000,000 27mln 1mld (10-cyfr) 2 n cyfr 31-cyfr 91-cyfr n! 3,6mld 65-cyfr 161-cyfr n n 10mld 85-cyfr 201-cyfr Algorytmy heurystyczne - heurystyka Heurystyka od greckiego słowa heurisco odkrywać znajdować Heurystyka twórcze rozwiązywanie problemów, zarówno logicznych, jak i matematycznych przez eksperyment, metodą prób i błędów bądź odwołaniem się do analogii Zastosowanie wszędzie tam, gdzie rozwiązanie problemu wymaga olbrzymiej ilości obliczeń. Dzięki heurystyce moŝna wyeliminować pewne obszary poszukiwanej przestrzeni, redukując koszty obliczeniowe i przyspieszając znalezienie rozwiązania dla porównania: liczba protonów we wszechświecie 126-cyfr liczba mikrosekund od powstania wszechświata 24 cyfry Heurystyka idea - przykład Przypuśćmy, Ŝe komuś upadło szkło kontaktowe. MoŜliwości poszukiwań: Szukanie ślepe schylanie się i szukanie po omacku, nie gwarantuje pozytywnego rezultatu Szukanie systematyczne polega na rozszerzaniu przeszukiwanej przestrzeni w sposób metodyczny i zorganizowany. Zawsze gwarantuje sukces, ale jest bardzo czasochłonne Szukanie analityczne wymaga rozwiązania równania matematycznego rządzącego upadkiem szkła z uwzględnieniem oporu powietrza, siły wiatru, ciąŝenia. Gwarantuje sukces, ale jest niepraktyczne. Szukanie leniwe polega na znalezieniu najbliŝszego optyka i zakupie nowego szkła Szukanie heurystyczne określamy przybliŝony kierunek upadku i domyślamy się, na jaką odległość moŝe upaść szkło, a następnie przeszukujemy wybrany obszar Heurystyka Przeszukiwanie ślepe i heurystyczne jest w penym stopniu do siebie podobne, ale: o szukaniu ślepym mówi się wtedy, gdy nie są wykorzystywane informacje o dziedzinie rozwiązywanego problemu w poszukiwaniu heurystycznym korzysta się z dodatkowych informacji o przestrzeni stanów, a ponadto jest się w stanie ocenić postępy poprawiające efektywność działania Pokonanie mistrza świata w szachach przez komputer stało się moŝliwe dzięki technikom heurystycznym, które pozwoliły wykluczyć warianty nie rokujące sukcesu. 14

15 Systemy sztucznej inteligencji Wykorzystują heurystykę w celu realizacji celu. Inteligencja - cecha umysłu odpowiadajaąca za sprawność myślenia i innych czynności poznawczych, umoŝliwiajaąca jednostce korzystanie z nabytej wiedzy oraz skuteczne zachowanie się wobec nowych zadań i sytuacji. Encyklopedia Powszechna PWN Inteligencja - umiejętność wnioskowania, rozumowania, kojarzenia faktów. Słownik jęz. ang. Webster Systemy sztucznej inteligencji AI Artificial Intelligence AI jest nauką podejmującą próbę stworzenia urządzeń cechujących się INTELIGENCJĄ W świetle definicji inteligencji, nie (Test wiadomo Turinga) konkretnie jakich urządzeń MoŜna załoŝyć takich jak my (bądź sprytniejszych od nas) Systemy AI to systemy, które (Sieci zachowują Neuronowe) się jak ludzie. Systemy AI to systemy, których budowa i działanie jest oparta o działanie mózgu. (poprawne wnioskowanie) Systemy AI to systemy, których działanie oparte jest o racjonalne zasady. (poprawne wnioskowanie + optymalne decyzje) Systemy AI to systemy, które w działaniu wykazują znamiona racjonalności. Systemy sztucznej inteligencji Systemy ekspertowe Sieci neuronowe Systemy ewolucyjne (algorytmy genetyczne) Technologie oparte na logice rozmytej Algorytmy mrówkowe Teoria gier inne 15

Wstęp do informatyki. Język asemblera. Język maszynowy. Programowanie komputerów PC. Cezary Bolek

Wstęp do informatyki. Język asemblera. Język maszynowy. Programowanie komputerów PC. Cezary Bolek Program komputera Wstęp do informatyki Programowanie komputerów PC Komputer jest maszyną wykonującą polecenia odczytywane z pamięci operacyjnej (instrukcje procesora kod programu) Instrukcje procesora

Bardziej szczegółowo

Wstęp do informatyki. Język maszynowy. Programowanie komputerów PC. Cezary Bolek

Wstęp do informatyki. Język maszynowy. Programowanie komputerów PC. Cezary Bolek Wstęp do informatyki Programowanie komputerów PC Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Program komputera Komputer jest maszyną wykonującą polecenia

Bardziej szczegółowo

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy Wstęp do informatyki Architektura komputera Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki System komputerowy systemowa (System Bus) Pamięć operacyjna ROM,

Bardziej szczegółowo

Magistrala systemowa (System Bus)

Magistrala systemowa (System Bus) Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki systemowa (System Bus) Pamięć operacyjna ROM, RAM Jednostka centralna Układy we/wy In/Out Wstęp do Informatyki

Bardziej szczegółowo

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek Wstęp do informatyki Architektura komputera Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki System komputerowy systemowa (System Bus) Pamięć operacyjna ROM,

Bardziej szczegółowo

Wstęp do informatyki. Algorytm. Algorytmika. Cezary Bolek. Uniwersytet Łódzki

Wstęp do informatyki. Algorytm. Algorytmika. Cezary Bolek. Uniwersytet Łódzki Wstęp do informatyki Algorytmika Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Algorytm Przepis na rozwiązanie określonego problemu za pomocą prostych czynności

Bardziej szczegółowo

Przepis na rozwiązanie określonego problemu za pomocą prostych czynności wykonywanych w ściśle określonej kolejności.

Przepis na rozwiązanie określonego problemu za pomocą prostych czynności wykonywanych w ściśle określonej kolejności. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Przepis na rozwiązanie określonego problemu za pomocą prostych czynności wykonywanych w ściśle określonej kolejności. Czynności:

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych Definicja i cechy algorytmów Sieci działań Programowanie strukturalne Witold Marańda maranda@dmcs.p.lodz.pl 1 Literatura 1. iklaus Wirth, Algorytmy + Struktury danych = Programy,

Bardziej szczegółowo

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++ Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu

Bardziej szczegółowo

Podstawy Informatyki Języki programowania

Podstawy Informatyki Języki programowania Podstawy Informatyki Języki programowania alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Wprowadzenie Języki programowania 2 Przykład Wczytywanie programu do pamięci Podsumowanie 3 Przykład

Bardziej szczegółowo

Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Komputer jest maszyną wykonującą polecenia odczytywane z pamięci operacyjnej (instrukcje procesora kod programu) Instrukcje procesora

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Algorytmy. Programowanie Proceduralne 1

Algorytmy. Programowanie Proceduralne 1 Algorytmy Programowanie Proceduralne 1 Przepis Warzenie piwa Brunświckiego Programowanie Proceduralne 2 Przepis Warzenie piwa Brunświckiego składniki (dane wejściowe): woda, słód, itd. wynik: beczka piwa

Bardziej szczegółowo

1 Wprowadzenie do algorytmiki

1 Wprowadzenie do algorytmiki Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności

Bardziej szczegółowo

Algorytmy. Programowanie Proceduralne 1

Algorytmy. Programowanie Proceduralne 1 Algorytmy Programowanie Proceduralne 1 Przepis Warzenie piwa Brunświckiego Programowanie Proceduralne 2 Przepis Warzenie piwa Brunświckiego składniki (dane wejściowe): woda, słód, itd. wynik: beczka piwa

Bardziej szczegółowo

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,

Bardziej szczegółowo

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Komputer jest urządzeniem, którego działanie opiera się na wykonywaniu przez procesor instrukcji pobieranych z pamięci operacyjnej

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Literatura David Harel. Rzecz o istocie informatyki. Algorytmika. Wydawnictwa Naukowo-Techniczne. Wydanie trzecie. Seria: Klasyka informatyki. Warszawa 2000. Niklaus Wirth. Algorytmy

Bardziej szczegółowo

Wprowadzenie do algorytmiki

Wprowadzenie do algorytmiki Wprowadzenie do algorytmiki Pojecie algorytmu Powszechnie przyjmuje się, że algorytm jest opisem krok po kroku rozwiązania postawionego problemu lub sposób osiągnięcia jakiegoś celu. Wywodzi się z matematyki

Bardziej szczegółowo

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania Wstęp do Informatyki Program, proces tworzenia programu Środowisko programistyczne Języki programowania Program - definicje Program jest przekładem problemu użytkownika na język maszyny Niklaus Wirth:

Bardziej szczegółowo

Programowanie I. Wprowadzenie. Proces programowania

Programowanie I. Wprowadzenie. Proces programowania I. Wprowadzenie. Proces Aleksander Denisiuk Uniwersytet Warmińsko-Mazurski Olsztyn, ul. Słoneczna 54 denisjuk@matman.uwm.edu.pl 6 lutego 2018 1 / 25 Wprowadzenie. Proces Najnowsza wersja tego dokumentu

Bardziej szczegółowo

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń. Podstawy programowania Programowanie wyrażeń 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń. W językach programowania są wykorzystywane

Bardziej szczegółowo

Architektura komputerów. Asembler procesorów rodziny x86

Architektura komputerów. Asembler procesorów rodziny x86 Architektura komputerów Asembler procesorów rodziny x86 Architektura komputerów Asembler procesorów rodziny x86 Rozkazy mikroprocesora Rozkazy mikroprocesora 8086 można podzielić na siedem funkcjonalnych

Bardziej szczegółowo

Programowanie komputerów

Programowanie komputerów Programowanie komputerów Wykład 1-2. Podstawowe pojęcia Plan wykładu Omówienie programu wykładów, laboratoriów oraz egzaminu Etapy rozwiązywania problemów dr Helena Dudycz Katedra Technologii Informacyjnych

Bardziej szczegółowo

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część pierwsza Od języka symbolicznego do języka wysokiego poziomu Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót

Bardziej szczegółowo

Podstawy programowania w języku C

Podstawy programowania w języku C Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu

Bardziej szczegółowo

Język programowania PASCAL

Język programowania PASCAL Język programowania PASCAL (wersja podstawowa - standard) Literatura: dowolny podręcznik do języka PASCAL (na laboratoriach Borland) Iglewski, Madey, Matwin PASCAL STANDARD, PASCAL 360 Marciniak TURBO

Bardziej szczegółowo

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Studia podyplomowe dla nauczycieli INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Przedmiot JĘZYKI PROGRAMOWANIA DEFINICJE I PODSTAWOWE POJĘCIA Autor mgr Sławomir Ciernicki 1/7 Aby

Bardziej szczegółowo

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 1. Podaj definicję informatyki. 2. W jaki sposób można definiować informatykę? 3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 4. Co to jest algorytm? 5. Podaj neumanowską architekturę

Bardziej szczegółowo

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL Programowanie Pascal - język programowania wysokiego poziomu Klasa 2 Lekcja 9 PASCAL Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany

Bardziej szczegółowo

Podstawy Programowania Algorytmy i programowanie

Podstawy Programowania Algorytmy i programowanie Podstawy Programowania Algorytmy i programowanie Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Algorytm Algorytm w matematyce, informatyce, fizyce, itp. lub innej dziedzinie życia,

Bardziej szczegółowo

Technologie informacyjne - wykład 12 -

Technologie informacyjne - wykład 12 - Zakład Fizyki Budowli i Komputerowych Metod Projektowania Instytut Budownictwa Wydział Budownictwa Lądowego i Wodnego Politechnika Wrocławska Technologie informacyjne - wykład 12 - Prowadzący: Dmochowski

Bardziej szczegółowo

Języki i metodyka programowania

Języki i metodyka programowania Języki i metodyka programowania www.ee.pw.edu.pl/~slawinsm Dr inż. Maciej Sławiński M.Slawinski@ee.pw.edu.pl GE518l Konsultacje: śr. 13 00-13 45 SK201/GE518l pt. 10 15-11 00 GE518l/SK201 Algorytmika Literatura

Bardziej szczegółowo

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy 1 Wprowadzenie do informatyki i użytkowania komputerów Kodowanie informacji System komputerowy Kodowanie informacji 2 Co to jest? bit, bajt, kod ASCII. Jak działa system komputerowy? Co to jest? pamięć

Bardziej szczegółowo

Algorytmika i pseudoprogramowanie

Algorytmika i pseudoprogramowanie Przedmiotowy system oceniania Zawód: Technik Informatyk Nr programu: 312[ 01] /T,SP/MENiS/ 2004.06.14 Przedmiot: Programowanie Strukturalne i Obiektowe Klasa: druga Dział Dopuszczający Dostateczny Dobry

Bardziej szczegółowo

Heurystyki. Strategie poszukiwań

Heurystyki. Strategie poszukiwań Sztuczna inteligencja Heurystyki. Strategie poszukiwań Jacek Bartman Zakład Elektrotechniki i Informatyki Instytut Techniki Uniwersytet Rzeszowski DLACZEGO METODY PRZESZUKIWANIA? Sztuczna Inteligencja

Bardziej szczegółowo

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie. Wykład 4 Algorytmy + struktury danych = programy Niklaus Wirth Algorytm = logika + sterowanie Robert Kowalski J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 80 / 277 algorytm program język

Bardziej szczegółowo

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL Studia Podyplomowe INFORMATYKA Podstawy Informatyki Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL 1 Część 1 Pojęcie algorytmu 2 I. Pojęcie algorytmu Trochę historii Pierwsze

Bardziej szczegółowo

Algorytmy od problemu do wyniku

Algorytmy od problemu do wyniku Algorytmy Etapy tworzenia programu: 1) Sformułowanie zadania analiza problemu. 2) Opracowanie algorytmu sposób rozwiązania. 3) Zapisanie algorytmu w języku programowania kodowanie programu. 4) Kompilowanie

Bardziej szczegółowo

Algorytm. Krótka historia algorytmów

Algorytm. Krótka historia algorytmów Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny Algorytm to przepis; zestawienie kolejnych kroków prowadzących do wykonania określonego zadania; to uporządkowany sposób postępowania przy rozwiązywaniu zadania, problemu, z uwzględnieniem opisu danych

Bardziej szczegółowo

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer Realizacja algorytmu przez komputer Wstęp do informatyki Wykład UniwersytetWrocławski 0 Tydzień temu: opis algorytmu w języku zrozumiałym dla człowieka: schemat blokowy, pseudokod. Dziś: schemat logiczny

Bardziej szczegółowo

ALGORYTMY I PROGRAMY

ALGORYTMY I PROGRAMY ALGORYTMY I PROGRAMY Program to ciąg instrukcji, zapisanych w języku zrozumiałym dla komputera. Ten ciąg instrukcji realizuje jakiś algorytm. Algorytm jest opisem krok po kroku jak rozwiązać problem, czy

Bardziej szczegółowo

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów przeznaczonych do wykonania w komputerze (ang. software).

Bardziej szczegółowo

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania 1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca

Bardziej szczegółowo

Wprowadzenie do złożoności obliczeniowej

Wprowadzenie do złożoności obliczeniowej problemów Katedra Informatyki Politechniki Świętokrzyskiej Kielce, 16 stycznia 2007 problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów

Bardziej szczegółowo

Budowa komputera Komputer computer computare

Budowa komputera Komputer computer computare 11. Budowa komputera Komputer (z ang. computer od łac. computare obliczać) urządzenie elektroniczne służące do przetwarzania wszelkich informacji, które da się zapisać w formie ciągu cyfr albo sygnału

Bardziej szczegółowo

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki Studia Podyplomowe INFORMATYKA Podstawy Informatyki Wykład V Rzut okiem na języki programowania 1 Kompilacja vs. interpretacja KOMPILACJA Proces, który przetwarza program zapisany w języku programowania,

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 1 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan wykładów (1) Algorytmy i programy Proste typy danych Rozgałęzienia

Bardziej szczegółowo

Informatyczna Wieża Babel, czyli o różnych językach programowania. Informatyczna Wieża Babel, czyli o różnych językach programowania

Informatyczna Wieża Babel, czyli o różnych językach programowania. Informatyczna Wieża Babel, czyli o różnych językach programowania Informatyczna Wieża Babel, czyli o różnych językach programowania Informatyczna Wieża Babel, czyli o różnych językach programowania Wstęp Aplikacje i programy, jakich dziś używamy, ukryte dla nas pod postacią

Bardziej szczegółowo

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

Bardziej szczegółowo

2.8. Algorytmy, schematy, programy

2.8. Algorytmy, schematy, programy https://app.wsipnet.pl/podreczniki/strona/38766 2.8. Algorytmy, schematy, programy DOWIESZ SIĘ co oznaczają pojęcia: algorytm, schemat blokowy, język programowania, jakie są sposoby obliczania największego

Bardziej szczegółowo

Podstawy Programowania

Podstawy Programowania Podstawy Programowania Monika Wrzosek Instytut Matematyki Uniwersytet Gdański Matematyka 2017/18 Monika Wrzosek (IM UG) Podstawy Programowania 1 / 119 Sprawy organizacyjne E-mail: mwrzosek@mat.ug.edu.pl

Bardziej szczegółowo

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy Podstawy Informatyki Inżynieria Ciepła, I rok Wykład 7 Algorytmy Programowanie Sformułowanie problemu. Opracowanie metodyki rozwiązania. Opracowanie algorytmu. Napisanie kodu źródłowego (zakodowanie) w

Bardziej szczegółowo

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24 Wymagania proceduralnych języków wysokiego poziomu ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH modele programowe procesorów ASK MP.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad.

Bardziej szczegółowo

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Temat 1: Podstawowe pojęcia: program, kompilacja, kod Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,

Bardziej szczegółowo

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Technologie cyfrowe Artur Kalinowski Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.pl Semestr letni 2014/2015 Zadanie algorytmiczne: wyszukiwanie dane wejściowe:

Bardziej szczegółowo

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Poniżej pozwoliłem sobie za cytować za wikipedią definicję zmiennej w informatyce.

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

Jerzy Nawrocki, Wprowadzenie do informatyki

Jerzy Nawrocki, Wprowadzenie do informatyki Jerzy Nawrocki, Jerzy Nawrocki Wydział Informatyki Politechnika Poznańska jerzy.nawrocki@put.poznan.pl Cel wykładu Programowanie imperatywne i język C Zaprezentować paradygmat programowania imperatywnego

Bardziej szczegółowo

Języki i paradygmaty programowania. I. Wprowadzenie

Języki i paradygmaty programowania. I. Wprowadzenie Języki i paradygmaty programowania I. Wprowadzenie O źródłach wykład został przygotowany w ogromnej części w oparciu o serwis http://wazniak.mimuw.edu.pl/ (zgodnie z licencją serwisu) inne źródła: Wikipedia:

Bardziej szczegółowo

Podstawy programowania. Wykład 1 Wstęp. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 1 Wstęp. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 1 Wstęp Krzysztof Banaś Podstawy programowania 1 Elementy historii informatyki I think there is a world market for maybe five computers. - Thomas Watson, chairman of IBM,

Bardziej szczegółowo

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji. Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji. Maria Górska 9 stycznia 2010 1 Spis treści 1 Pojęcie algorytmu 3 2 Sposób

Bardziej szczegółowo

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O Budowa komputera Magistrala Procesor Pamięć Układy I/O 1 Procesor to CPU (Central Processing Unit) centralny układ elektroniczny realizujący przetwarzanie informacji Zmiana stanu tranzystorów wewnątrz

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych Proste algorytmy sortowania Witold Marańda maranda@dmcs.p.lodz.pl 1 Pojęcie sortowania Sortowaniem nazywa się proces ustawiania zbioru obiektów w określonym porządku Sortowanie

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje

Bardziej szczegółowo

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński ppelczynski@swspiz.pl

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński ppelczynski@swspiz.pl Programowanie niskopoziomowe dr inż. Paweł Pełczyński ppelczynski@swspiz.pl 1 Literatura Randall Hyde: Asembler. Sztuka programowania, Helion, 2004. Eugeniusz Wróbel: Praktyczny kurs asemblera, Helion,

Bardziej szczegółowo

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy Programowanie w C++ 1.Czym jest programowanie Pisanie programów to wcale nie czarna magia, tylko bardzo logiczna rozmowa z komputerem. Oczywiście w jednym ze specjalnie stworzonych do tego celu języków.

Bardziej szczegółowo

Praktyka Programowania

Praktyka Programowania Praktyka Programowania Dariusz Dereniowski Materiały udostępnione przez Adriana Kosowskiego Katedra Algorytmów i Modelowania Systemów Politechnika Gdańska deren@eti.pg.gda.pl Gdańsk, 2010 strona przedmiotu:

Bardziej szczegółowo

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu Programowanie V Dariusz Skibicki Wydział Inżynierii Mechanicznej Uniwersytet Technologiczno-Przyrodniczy im. Jana i Jędrzeja Śniadeckich w Bydgoszczy dariusz.skibicki(at)utp.edu.pl Programowanie Projektowanie

Bardziej szczegółowo

Struktura i działanie jednostki centralnej

Struktura i działanie jednostki centralnej Struktura i działanie jednostki centralnej ALU Jednostka sterująca Rejestry Zadania procesora: Pobieranie rozkazów; Interpretowanie rozkazów; Pobieranie danych Przetwarzanie danych Zapisywanie danych magistrala

Bardziej szczegółowo

Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++

Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++ Programowanie obiektowo zorientowane Mirosław Głowacki Wykład w języku C++ Literatura B. Meyer, Programowanie zorientowane obiektowo, Helion Gliwice, 2005 J. Grębosz, Symfonia C++ Standard, Oficyna Kallimach,

Bardziej szczegółowo

Język programowania: Lista instrukcji (IL Instruction List)

Język programowania: Lista instrukcji (IL Instruction List) Język programowania: Lista instrukcji (IL Instruction List) Wykład w ramach przedmiotu: Sterowniki programowalne Opracował dr inż. Jarosław Tarnawski 08.12.2009 Norma IEC 1131 Języki tekstowe Języki graficzne

Bardziej szczegółowo

Wstęp do informatyki. Algorytm. Innymi słowy, czym jest algorytm?

Wstęp do informatyki. Algorytm. Innymi słowy, czym jest algorytm? Wstęp do informatyki Algorytmika Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Algorytm Przepis na rozwiązanie określonego problemu za pomocą prostych czynności

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania wykład 1 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Jak działa komputer Komputer może być traktowany jako urządzenie służące do

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Mariusz Różycki University of Cambridge Zajęcia będą mieć formę wykładową. Slajdy można znaleźć na stronie kursu: http://lw.mi.edu.pl/informatyka/algorytmy.

Bardziej szczegółowo

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki. Literatura 1. D. Gajski, Principles of Digital Design, Prentice- Hall, 1997 2. C. Zieliński, Podstawy projektowania układów cyfrowych, PWN, Warszawa 2003 3. G. de Micheli, Synteza i optymalizacja układów

Bardziej szczegółowo

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2014/15 Znajdowanie maksimum w zbiorze

Bardziej szczegółowo

Modelowanie i Programowanie Obiektowe

Modelowanie i Programowanie Obiektowe Modelowanie i Programowanie Obiektowe Wykład I: Wstęp 20 październik 2012 Programowanie obiektowe Metodyka wytwarzania oprogramowania Metodyka Metodyka ustandaryzowane dla wybranego obszaru podejście do

Bardziej szczegółowo

Proste algorytmy w języku C

Proste algorytmy w języku C Proste algorytmy w języku C Michał Rad AGH Laboratorium Maszyn Elektrycznych 2016-12-01 Outline Język C Zadanie pierwsze - obliczanie miejsc zerowych wielomianu Zadanie drugie - znajdowanie największego

Bardziej szczegółowo

Organizacja typowego mikroprocesora

Organizacja typowego mikroprocesora Organizacja typowego mikroprocesora 1 Architektura procesora 8086 2 Architektura współczesnego procesora 3 Schemat blokowy procesora AVR Mega o architekturze harwardzkiej Wszystkie mikroprocesory zawierają

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Informatyka 1. Złożoność obliczeniowa

Informatyka 1. Złożoność obliczeniowa Informatyka 1 Wykład XI Złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada 80 20, ocena efektywności

Bardziej szczegółowo

Języki formalne i techniki translacji

Języki formalne i techniki translacji Języki formalne i techniki translacji Laboratorium - Projekt Termin oddania: ostatnie zajęcia przed 17 stycznia 2016 Wysłanie do wykładowcy: przed 23:59 28 stycznia 2016 Używając BISON-a i FLEX-a napisz

Bardziej szczegółowo

Podstawy programowania wykład

Podstawy programowania wykład Podstawy programowania wykład WYDZIAŁ ELEKTRONIKI i INFORMATYKI dr inż. Robert Arsoba Politechnika Koszalińska Wydział Elektroniki i Informatyki POLITECHNIKA KOSZALIŃSKA 2009/2010 1 Materiały do wykładu

Bardziej szczegółowo

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych Ćwiczenie nr 3 Wyświetlanie i wczytywanie danych 3.1 Wstęp Współczesne komputery przetwarzają dane zakodowane za pomocą ciągów zerojedynkowych. W szczególności przetwarzane liczby kodowane są w systemie

Bardziej szczegółowo

Języki programowania zasady ich tworzenia

Języki programowania zasady ich tworzenia Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie

Bardziej szczegółowo

Wstęp do Informatyki i Programowania

Wstęp do Informatyki i Programowania Wstęp do Informatyki i Programowania Jacek Cichoń Przemysław Kobylański Katedra Informatyki W11/K2 Politechnika Wrocławska J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 1 / 356 Plan wykładu

Bardziej szczegółowo

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny Klasa 2 INFORMATYKA dla szkół ponadgimnazjalnych zakres rozszerzony Założone osiągnięcia ucznia wymagania edukacyjne na poszczególne oceny Algorytmy 2 3 4 5 6 Wie, co to jest algorytm. Wymienia przykłady

Bardziej szczegółowo

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem. Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD programowania w C++ Typy c.d. 2 Typy zmiennych Instrukcja typedef -

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Elementy algorytmiki C w środowisku.e (C#) dr inż. Grzegorz Zych Copernicanum, pok. 3 lub 206a 1 Minimum programowe reści kształcenia: Pojęcie algorytmu. Podstawowe konstrukcje programistyczne.

Bardziej szczegółowo

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut Arkusz zawiera informacje prawnie chronione do momentu rozpoczęcia egzaminu. Układ graficzny CKE 2013 KOD UZUPEŁNIA ZDAJĄCY PESEL miejsce na naklejkę EGZAMIN MATURALNY Z INFORMATYKI POZIOM PODSTAWOWY CZĘŚĆ

Bardziej szczegółowo

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski Algorytmy i złożoność obliczeniowa Wojciech Horzelski 1 Tematyka wykładu Ø Ø Ø Ø Ø Wprowadzenie Poprawność algorytmów (elementy analizy algorytmów) Wyszukiwanie Sortowanie Elementarne i abstrakcyjne struktury

Bardziej szczegółowo

Logiczny model komputera i działanie procesora. Część 1.

Logiczny model komputera i działanie procesora. Część 1. Logiczny model komputera i działanie procesora. Część 1. Klasyczny komputer o architekturze podanej przez von Neumana składa się z trzech podstawowych bloków: procesora pamięci operacyjnej urządzeń wejścia/wyjścia.

Bardziej szczegółowo

Szczegółowy program kursów szkoły programowania Halpress

Szczegółowy program kursów szkoły programowania Halpress Szczegółowy program kursów szkoły programowania Halpress Lekcja A - Bezpłatna lekcja pokazowa w LCB Leszno "Godzina kodowania - Hour of Code (11-16 lat) Kurs (B) - Indywidualne przygotowanie do matury

Bardziej szczegółowo

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Co to jest algorytm? Zapis algorytmów Algorytmy

Bardziej szczegółowo

Zapisywanie algorytmów w języku programowania

Zapisywanie algorytmów w języku programowania Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym

Bardziej szczegółowo