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

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

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

Transkrypt

1 Wstęp do informatyki Algorytmika Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki 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. Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 2 1

2 Innymi słowy, czym jest algorytm? 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 Wstęp do informatyki Cezary Bolek 3 Rola algorytmu Dane wejściowe Algorytm Dane wyjściowe Wstęp do informatyki Cezary Bolek 4 2

3 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ą papierem do pieczenia. Piec 8 do 10 minut. Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 5 Cechy dobrego algorytmu Dobry algorytm musi być: Skończony Kompletny Jednoznaczny Poprawny Prosty Zawierać poziomy abstrakcji Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 6 3

4 Cechy algorytmu Skończoność: algorytm musi zapewnić osiągnięcie do rozwiązania w skończonej liczbie kroków (a więc teŝ w skończonym czasie). Skończona liczba kroków nie oznacza, ze z góry wiadomo po ilu krokach algorytm się zakończy. Komunikat o błędzie lub braku rozwiązania teŝ jest jednym z moŝliwych poprawnych zakończeń realizacji algorytmu. np. Obliczanie wartości sin(x) moŝna wykonać numerycznie za pomocą sumowania kolejnych wyrazów szeregu: x x x x sin x = x + + K 3! 5! 7! 9! Algorytm taki musi posiadać warunek zakończenie tej operacji (np. kryterium dokładności) aby nie wykonywał się, mimo Ŝe poprawnie, w nieskończoność. Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 7 Cechy algorytmu Kompletność: algorytm musi uwzględniać wszystkie moŝliwe przypadki, które mogą pojawić się podczas jego realizacji. Uwzględnienie róŝnych przypadków oznacza zapewnienie dalszej realizacji algorytmu, zgodnie z przewidzianymi na taką okoliczność instrukcjami. W praktyce programistycznej oznacza to przewidzenie wystąpienia błędów numerycznych i logicznych oraz opracowanie systemu reakcji (komunikaty o błędach, odpowiednie zakończenie działania). np. Obliczanie rozwiązań równania kwadratowego wymaga uwzględnienia przypadków: 2 b 4ac > 0, 2 b 4ac < 0 Brak sprawdzenia trzeciego warunku (=0) i wartości parametru a jest przypadkiem niekompletności algorytmu i moŝe spowodować jego błędne działanie. Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 8 4

5 Cechy algorytmu Jednoznaczność: dla tych samych danych wejściowych algorytm musi zawsze dawać te same wyniki. Jednoznaczność w praktyce oznacza niezaleŝność działania programu od momentu jego wykonania, wpływu innych programów realizowanych równocześnie przez system operacyjny oraz, co najtrudniejsze, od sprzętu realizującego dany algorytm. np. Algorytmy wykonujące obliczenia arytmetyczne powinny dawać dokładnie takie same wyniki na róŝnych komputerach i systemach operacyjnych - jest to bardzo trudne do spełnienia (róŝne kodowanie liczb, róŝne algorytmy ich przetwarzania) Algorytmy formatujące tekst (procesory tekstu) powinny dawać taki sam wygląd strony (układ tekstu, łamanie wyrazów, etc.) zgodny z informacją zapisaną w pliku, niezaleŝnie od typu komputera i wersji systemu operacyjnego Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 9 Co jest złego w tym algorytmie? (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ć Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 10 5

6 Terminologia Algorytm moŝe być wykonany przez kaŝdego (człowieka lub maszynę), kto zna język, w którym zapisano algorytm. Wykonawca algorytmu musi umieć wykonywać jego instrukcje, ale nie musi znać jego istoty algorytmu lub jego przeznaczenia, aby osiągnąć poŝądany wynik. Języki przeznaczone do zapisu algorytmów w postaci instrukcji zrozumiałych przez maszynę cyfrową noszą nazwę języków programowania. Algorytm zapisany w języku programowania nosi nazwę: programu. Języki programowania (wysokiego poziomu) są kompromisem pomiędzy językiem naturalnym (zrozumiałym dla człowieka) a pojęciami bliskimi konstrukcji maszyny cyfrowej (bity, bajty, etc.) Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 11 Dane algorytmu KaŜdy algorytm wykonuje operacje na obiektach: liczbach i ich bardziej złoŝonych strukturach. liczby, wektory, tablice, rekordy, struktury, unie, stosy kolejki, listy, drzewa, grafy... Liczby są zwykle modelami obiektów rzeczywistych, w aspekcie tych cech, którymi zajmuje się algorytm. wartość pojedynczej liczby moŝe być modelem wysokości zarobku w programie finansowym, wektor trzech liczb moŝe być modelem punktu w przestrzeni w programie grafiki trójwymiarowej, kolejka moŝe być modelem zgłoszeń zapytań w programie bazy danych, etc. Konstrukcja kaŝdego algorytmu stoi na dwóch nogach : - algorytmizacji problemu (rozbiciu na elementarne operacje), - doborze właściwych struktur danych, stosownych do zadania, którego dotyczy algorytm. Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 12 6

7 Problem Program Algorytm Problem Struktury danych Program Algorytmizacja Kodowanie Programowanie Wstęp do informatyki Cezary Bolek 13 Sposoby opisu algorytmu Język naturalny (np. angielski) Opis graficzny (np. sieć działań) Pseudokod lub język programowania Wstęp do informatyki Cezary Bolek 14 7

8 Algorytm: Średnie zuŝycie paliwa w l/km 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 Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 15 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ń! Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 16 8

9 Sieć działań: przykład Start Stwórz listę zajęć w których chcesz uczestniczyć Liczba Godzin = 0 Wybierz przedmiot o najwyŝszym priorytecie tak Czy są wolne miejsca? nie tak Czy konflikt czasowy? nie Dodaj przedmiot do rozkładu zajęć. Dodaj czas przedmiotu do Liczba Godzin Usuń przedmiot z listy tak Liczba Godzin >= 15? tak nie Są jakieś przedmioty na liście? nie Koniec Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 17 Sieć działań operacja blok operacyjny (obliczeniowy) dokładnie jedno wejście i jedno wyjście realizacja elementarnej czynności wartość 1 wartość 2 warunek blok decyzyjny (warunkowy) dokładnie jedno wejście, dwa lub więcej wyjść warunek jest zdaniem (wyraŝeniem arytmetycznym), które w danej sytuacji moŝe przyjmować róŝne wartości wartość 1 warunek wartość 2... wartość n blok warunkowy jest miejscem rozgałęziania programu: kolejna instrukcja do wykonania jest wyznaczana przez gałąź z opisem wartości równym wartości testowanego wyraŝenia Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 18 9

10 Sieć działań dane blok wejścia-wyjścia (we/wy) dokładnie jedno wejście i jedno wyjście oznaczenia miejsca wymiany danych pomiędzy algorytmem a światem zewnętrznym, bez konkretyzowania źródła danych i metody tej operacji Start blok startu dokładnie jedno wyjście oznaczenia początku algorytmu Stop blok startu dokładnie jedno wejście oznaczenia końca algorytmu Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 19 Zmienne Liczby (i struktury danych) występują w algorytmach i programach komputerowych w postaci zmiennych. Zmienna jest obiektem, który posiada dwa atrybuty: - nazwę, czyli symbol poprzez który odwołujemy się do zmiennej, - wartość, czyli liczbę przypisaną do danego symbolu. Podstawowe operacje wykonywane na zmiennych: arytmetyczne : a+4 b-a a+d*5 przypisanie : a 5 b a c a+b porównanie : a=5 b>a c<=a+b Symbole operatorów przypisania i porównania zaleŝą od języka programowania, ale zawsze operator przypisania zmienia wartość zmiennej, a operatory porównania nie. WyraŜenie zawierające operatory porównania moŝna oceniać w sensie logiki matematycznej (prawda lub fałsz). Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 20 10

11 Przykład A Znajdowanie największej z trzech liczb: max(a,b,c) Start a,b,c T a>b N T a>c N T c>b N drukuj a drukuj c drukuj b Stop Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 21 Przykład B Start a,b,c m a Znajdowanie największej z trzech liczb: max(a,b,c) m<b N m<c N drukuj m Stop T T m b m c Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 22 11

12 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. Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 23 Analiza algorytmów we wy??? Analiza poprawności sieci działań jest zadaniem skomplikowanym. Prześledzenie wszystkich ścieŝek przejścia przez sieć dla wszystkich moŝliwych danych jest zwykle niemoŝliwe. W praktyce testowanie algorytmów dotyczy sytuacji: typowych krytycznych Techniki konstrukcji sieci wspomagające analizę poprawności to: podział na moduły (podprogramy) tworzenie sieci strukturalnych (programowanie strukturalne) Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 24 12

13 Sieci strukturalne Podstawowe rodzaje konstrukcji strukturalnych: sekwencja selekcja s1 c s2 s1 s2 sn c selekcja wielokrotna s1 s2 sn Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 25 Sieci strukturalne Podstawowe rodzaje konstrukcji strukturalnych: cykl (pętla) s T c N N s c pre-check T post-check Instrukcja s będzie wykonana 0 lub więcej razy. Cykl jest powtarzany dopóki spełniony jest warunek c. Instrukcja s będzie wykonana 1 lub więcej razy. Cykl jest powtarzany aŝ do spełnienia warunku c. Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 26 13

14 Algorytmy strukturalne KaŜda konstrukcja strukturalna (sekwencja, selekcja, cykl) posiada dokładnie jedno wejście i jedno wyjście. Sekwencja składa się z instrukcji, które są wykonywane w danej konstrukcji tylko jedne raz w ściśle określonej kolejności. Selekcja musi uwzględniać wszystkie moŝliwe wartości, które moŝe przyjmować warunek selekcji (kompletność). Cykl nie moŝe być nieskończony (skończoność), a zmienna występująca w warunku (zmienna sterująca cyklu) musi być modyfikowana wewnątrz cyklu. Za pomocą sekwencji, selekcji i cykli moŝna zapisać kaŝdy algorytm. Algorytmy zapisane jedynie za pomocą sekwencji, selekcji i cykli nazywają się algorytmami strukturalnymi (sieci strukturalne) Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 27 Struktura modułowa Algorytmy strukturalne moŝna redukować, zastępując złoŝone fragmenty blokami o wyŝszym stopniu funkcjonalności. Podział na moduły ułatwia testowanie całego programu, gdyŝ moŝna zapewnić oddzielnie poprawność modułów (black box), a następnie całej, zredukowanej sieci. Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 28 14

15 Zalety stosowania struktury modularnej Szczegóły algorytmu są ukryte w "pod-algorytmach" co poprawia czytelność całości poprzez "ukrycie" mało czytelnych fragmentów Ułatwia tworzenie algorytmu poprzez podział problemu na części o prostszej konstrukcji (pozwala pracować zespołom nad jednym projektem) Oszczędzanie czasu, nakładu pracy ale takŝe rozmiaru algorytmu - moduły mogą być "wywoływane" z dowolnego miejsca wewnątrz algorytmu UmoŜliwia ponowne wykorzystanie raz utworzonych modułów w innych, nowo tworzonych algorytmach - reusing Ułatwia wyszukiwanie błędów i późniejsze "utrzymanie" kodu Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 29 Programowanie strukturalne Konstrukcja strukturalne (sekwencje, selekcje, cykle) są realizowane w językach programowania jako tzw. instrukcje sterujące. Programowanie strukturalne polega na konstruowaniu programów wykorzystując jedynie struktur sekwencji, selekcji i cykli. Zalety programowania strukturalnego: hierarchiczna i modułowa struktura programu moŝliwość tworzenia programu w stylu top-down lub bottom-up moŝliwość analizy poprawności programu łatwość modyfikacji, redukcja błędów i czasu pisania programu moŝliwość wykorzystania modułów do innych programów Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 30 15

16 Programowanie strukturalne Języki strukturalne Pascal, C, Java... Języki niestrukturalne Fortran, Basic... (goto) siec strukturalna siec niestrukturalna (spaghetti programing) Wstęp do informatyki Cezary Bolek 31 Błędy w algorytmach Systemowe polegające na nieporozumieniu pomiędzy załoŝonymi zadaniami algorytmu a sposobem ich realizacji, lub błędnej ich interpretacji. Logiczne polegające na błędnej interpretacji analizowanej w algorytmie sytuacji lub nie uwzględnieniu moŝliwości zaistnienia sytuacji dodatkowych. np. a (x,y) a<x i a>y czy a<x lub a>y Składniowe polegają na niewłaściwym uŝyciu składni danego języka, w taki sposób, Ŝe nie powoduje to błędu składniowego, tylko inne znaczenie zapisu (poprawne językowo, ale niezgodne z intencją autora). x/y/z x/(y*z) czy x/(y/z) Komputery są nieomylne! błędy tkwią w danych wejściowych lub konstrukcji algorytmu. Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 32 16

17 Błędy... przykład nieskończone pętle: X = 0 Nie Czy X=100? Tak Nie Czy X=1? Tak X = X + 1 X = X Co się stanie gdy na początku cyklu X będzie równe 200 lub 10.5? Co się stanie przy załoŝeniu, Ŝe zmienna X liczbą zmiennopozycyjną (IEEE754)? Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 33 Błędy... przykład Fragment algorytmu automatycznej analizy rachunków za energię elektryczną pobierz dane następnego klienta Tak Czy klient nie płaci dłuŝej niŝ x miesięcy? dolicz odsetki i kolejny miesiąc opóźnienia Nie Nie Tak czy wpłynęła opłata za ostatni miesiąc? Tak czy zadłuŝenie klienta wynosi 0? Nie Odetnij prąd, skieruj sprawę do sądu Wyślij upomnienie kasuj dane o zaległościach Jaka będzie reakcja na nieterminowe spłaty rachunku? Jaka będzie reakcja na częściową spłatę zadłuŝenia? Jaka będzie reakcja na brak zapłaty rachunku zerowego? czy to ostatni klient? Tak Nie Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 34 17

18 Błędy... przykład Algorytm wykrywający pracowników, których zarobki są większe od ich kierowników pobierz dane pierwszego pracownika (P) pobierz dane pierwszego pracownika (K) Tak czy K jest kierownikiem P? Tak drukuj dane pracownika (P) czy zarobki P > K? Nie Nie czy K jest ostatni na liście? Tak czy P jest ostatni na liście? Tak Nie Nie pobierz dane następnego pracownika (K) pobierz dane następnego pracownika (P) Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 35 ZłoŜoność obliczeniowa ZłoŜoność obliczeniowa miara efektywności algorytmu 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 ) np. 100n, 2n+4, 0.5n+n -1, 0.01n O(n) Big-Oh Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 36 18

19 ZłoŜoność... Realne ulepszenie algorytmu następuje tylko wówczas, gdy uda się osiągnąć mniejszą złoŝoność w notacji O( ) Wpływ złoŝoności obliczeniowej uwidacznia się dla odpowiednio duŝych wartości n operacje (czas) O(n 2 ) O(n) O(log(n)) n i n j n k n Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 37 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 012s 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. Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 38 19

20 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. Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 39 Poprawna interpretacja O() O(1) or Stopnia pierwszego Nie znaczy, Ŝe algorytm wykona tylko jedną operację Znaczy, Ŝe nakład pracy nie zmienia się gdy zmienia się N Oznaczenie stałych nakładów pracy O(n) or Stopnia n Nie znaczy, Ŝe algorytm wykona n operacji Znaczy, Ŝe nakłady pracy zmieniają się w sposób proporcjonalny do n Oznaczenie "liniowo rosnących nakładów pracy" Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 40 20

21 Klasy złoŝoności obliczeniowej log n logarytmiczna n liniowa n*log n liniowo-logarytmiczna n 2 kwadratowa n k wielomianowa 2 n wykładnicza n! silnia n n... Hierarchia funkcji: log n << n << n*log n << n 2 << n 3 << 2 n << n! Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 41 Ograniczenia złoŝoności np. O(n 5 ) O(n 3 ) Ograniczenie górne związane jest z najlepszym znanym algorytmem rozwiązania danego problemu. luka algorytmiczna problem otwarty ogr.górne > ogr. dolne problem zamknięty ogr.górne = ogr. dolne O(n) O(n*log n) Ograniczenie dolne związane jest z matematycznym dowodem niemoŝliwości rozwiązania problemu za pomocą mniejszej niŝ wykazana liczby operacji Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 42 21

22 Przykład - WieŜe Hanoi 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 Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 43 WieŜe Hanoi: Rozwiązanie Stan początkowy Ruch 1 Ruch 2 Ruch 3 Ruch 4 Ruch 5 Ruch 6 Ruch 7 Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 44 22

23 WieŜe Hanoi - ZłoŜoność 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! Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 45 WieŜe Hanoi (2 N ) 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 Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 46 23

24 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 (N K ) gdzie K jest stałą 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 dla porównania: liczba protonów we wszechświecie 126-cyfr liczba mikrosekund od powstania wszechświata 24 cyfry Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 47 24

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

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

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

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

Wykład z Technologii Informacyjnych. Piotr Mika

Wykład z Technologii Informacyjnych. Piotr Mika Wykład z Technologii Informacyjnych Piotr Mika Uniwersalna forma graficznego zapisu algorytmów Schemat blokowy zbiór bloków, powiązanych ze sobą liniami zorientowanymi. Jest to rodzaj grafu, którego węzły

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

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

11. Blok ten jest blokiem: a. decyzyjnym b. końcowym c. operacyjnym

11. Blok ten jest blokiem: a. decyzyjnym b. końcowym c. operacyjnym 1. Instrukcja warunkowa a. słuŝy do wprowadzania danych oraz wprowadzania wyników b. to instrukcja decyzyjna c. to sposób przedstawienia algorytmu 2. Instrukcja, która opisuje wykonanie róŝnych czynności

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

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

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych Funkcje i procedury Zasięg zmiennych Rekurencja Witold Marańda maranda@dmcs.p.lodz.pl 1 Modularyzacja programu Algorytmy strukturalne moŝna redukować, zastępując złoŝone fragmenty

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. 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

Efektywna metoda sortowania sortowanie przez scalanie

Efektywna metoda sortowania sortowanie przez scalanie Efektywna metoda sortowania sortowanie przez scalanie Rekurencja Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Metoda dziel i zwycięŝaj Dzielimy

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

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy Informatyka wprowadze do algorytmów (II) dr hab. inż. Mikołaj Morzy plan wykładu cechy algorytmów sposoby zapisu algorytmów klasyfikacja algorytmów przykłady algorytmów sumowa przeszukiwa ciągu liczb sortowa

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

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

ECDL Podstawy programowania Sylabus - wersja 1.0

ECDL Podstawy programowania Sylabus - wersja 1.0 ECDL Podstawy programowania Sylabus - wersja 1.0 Przeznaczenie Sylabusa Dokument ten zawiera szczegółowy Sylabus dla modułu Podstawy programowania. Sylabus opisuje, poprzez efekty uczenia się, zakres wiedzy

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

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

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

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

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności

Bardziej szczegółowo

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne 2 Algorytmy Nazwa algorytm wywodzi się od nazwiska perskiego matematyka Muhamed ibn

Bardziej szczegółowo

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności

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

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni z przedmiotu Podstawy Informatyki Kod przedmiotu: TS1C 100 003 Ćwiczenie pt. METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

Bardziej szczegółowo

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Więcej o sprawności algorytmów Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Załóżmy, że możemy wykonać dane zadanie przy użyciu dwóch algorytmów: jednego o złożoności czasowej

Bardziej szczegółowo

Złożoność algorytmów. Wstęp do Informatyki

Złożoność algorytmów. Wstęp do Informatyki Złożoność algorytmów Złożoność pamięciowa - liczba i rozmiar struktur danych wykorzystywanych w algorytmie Złożoność czasowa - liczba operacji elementarnych wykonywanych w trakcie przebiegu algorytmu Złożoność

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

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

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

Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu,

Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu, wprowadzenie Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu, w przepisie tym podaje się opis czynności, które trzeba wykonać, oraz dane, dla których algorytm będzie określony.

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

INFORMATYKA SORTOWANIE DANYCH.

INFORMATYKA SORTOWANIE DANYCH. INFORMATYKA SORTOWANIE DANYCH http://www.infoceram.agh.edu.pl SORTOWANIE Jest to proces ustawiania zbioru obiektów w określonym porządku. Sortowanie stosowane jest w celu ułatwienia późniejszego wyszukania

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

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

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście

Bardziej szczegółowo

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne. 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

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

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

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

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne. Algorytm znaczenie informatyczne 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

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

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] 3-2 5 8 12-4 -26 12 45-76

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] 3-2 5 8 12-4 -26 12 45-76 . p. 1 Algorytmem nazywa się poddający się interpretacji skończony zbiór instrukcji wykonania zadania mającego określony stan końcowy dla każdego zestawu danych wejściowych W algorytmach mogą występować

Bardziej szczegółowo

Wstęp do informatyki. Pojęcie liczebności. Zapis liczb. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Wstęp do informatyki. Pojęcie liczebności. Zapis liczb. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek Pojęcie liczebności Wstęp do informatyki Podstawy arytmetyki komputerowej Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Naturalna zdolność człowieka do postrzegania

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

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych ZłoŜoność obliczeniowa algorytmów Techniki projektowania algorytmów Witold Marańda maranda@dmcs.p.lodz.pl 1 ZłoŜoność obliczeniowa miara efektywności algorytmu ZłoŜoność obliczeniowa

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

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

Bardziej szczegółowo

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

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny ALGORYMY 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

Bardziej szczegółowo

Metodyki i techniki programowania

Metodyki i techniki programowania Metodyki i techniki programowania dr inż. Maciej Kusy Katedra Podstaw Elektroniki Wydział Elektrotechniki i Informatyki Politechnika Rzeszowska Elektronika i Telekomunikacja, sem. 2 Plan wykładu Sprawy

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

Programowanie w języku C++ Grażyna Koba

Programowanie w języku C++ Grażyna Koba Programowanie w języku C++ Grażyna Koba Kilka definicji: Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i zasad

Bardziej szczegółowo

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa Autorzy scenariusza: SCENARIUSZ LEKCJI OPRACOWANY W RAMACH PROJEKTU: INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA. PROGRAM NAUCZANIA INFORMATYKI Z ELEMENTAMI PRZEDMIOTÓW MATEMATYCZNO-PRZYRODNICZYCH

Bardziej szczegółowo

Podstawy Informatyki. Sprawność algorytmów

Podstawy Informatyki. Sprawność algorytmów Podstawy Informatyki Sprawność algorytmów Sprawność algorytmów Kryteria oceny oszczędności Miara złożoności rozmiaru pamięci (złożoność pamięciowa): Liczba zmiennych + liczba i rozmiar struktur danych

Bardziej szczegółowo

Podstawy Programowania. Złożoność obliczeniowa

Podstawy Programowania. Złożoność obliczeniowa Podstawy Programowania Wykład X Złożoność obliczeniowa Robert Muszyński Katedra Cybernetyki i Robotyki, PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada

Bardziej szczegółowo

Programowanie i techniki algorytmiczne

Programowanie i techniki algorytmiczne Temat 2. Programowanie i techniki algorytmiczne Realizacja podstawy programowej 1) wyjaśnia pojęcie algorytmu, podaje odpowiednie przykłady algorytmów rozwiązywania różnych 2) formułuje ścisły opis prostej

Bardziej szczegółowo

Wstęp do informatyki. Pojęcie liczebności. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Wstęp do informatyki. Pojęcie liczebności. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek Wstęp do informatyki Podstawy arytmetyki komputerowej Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Pojęcie liczebności Naturalna zdolność człowieka do postrzegania

Bardziej szczegółowo

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1. Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1. Grażyna Koba MIGRA 2019 Spis treści (propozycja na 2*32 = 64 godziny lekcyjne) Moduł A. Wokół komputera i sieci komputerowych

Bardziej szczegółowo

Algorytmy i struktury danych Matematyka III sem.

Algorytmy i struktury danych Matematyka III sem. Algorytmy i struktury danych Matematyka III sem. 30 godz. wykł. / 15 godz. ćw. / 15 godz. projekt dr inŝ. Paweł Syty, 413GB, sylas@mif.pg.gda.pl, http://sylas.info Literatura T.H. Cormen i inni, Wprowadzenie

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

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

Algorytmy i schematy blokowe

Algorytmy i schematy blokowe Algorytmy i schematy blokowe Algorytm dokładny przepis podający sposób rozwiązania określonego zadania w skończonej liczbie kroków; zbiór poleceń odnoszących się do pewnych obiektów, ze wskazaniem porządku,

Bardziej szczegółowo

Poprawność algorytmów

Poprawność algorytmów Poprawność algorytmów Jeśli uważasz, że jakiś program komputerowy jest bezbłędny, to się mylisz - po prostu nie zauważyłeś jeszcze skutków błędu, który jest w nim zawarty. Jakie błędy można popełnić? Błędy

Bardziej szczegółowo

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA WYŻSZA SZKOŁA IFORMATYKI STOSOWAEJ I ZARZĄDZAIA Złożoność algorytmów Złożoność pamięciowa algorytmu wynika z liczby i rozmiaru struktur danych wykorzystywanych w algorytmie. Złożoność czasowa algorytmu

Bardziej szczegółowo

POLITECHNIKA OPOLSKA

POLITECHNIKA OPOLSKA POLITECHNIKA OPOLSKA WYDZIAŁ MECHANICZNY Katedra Technologii Maszyn i Automatyzacji Produkcji Laboratorium Podstaw Inżynierii Jakości Ćwiczenie nr 2 Temat: Schemat blokowy (algorytm) procesu selekcji wymiarowej

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

Podstawy Programowania

Podstawy Programowania Podstawy Programowania Wykład X 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

Podstawy Programowania. Złożoność obliczeniowa

Podstawy Programowania. Złożoność obliczeniowa Podstawy Programowania Wykład X Złożoność obliczeniowa Robert Muszyński Katedra Cybernetyki i Robotyki, PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada

Bardziej szczegółowo

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++ Jednostka prowadząca: Wydział Techniczny Kierunek studiów: Elektronika i telekomunikacja Nazwa przedmiotu: Język programowania C++ Charakter przedmiotu: podstawowy, obowiązkowy Typ studiów: inŝynierskie

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

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

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Podstawy Informatyki. Algorytmy i ich poprawność

Podstawy Informatyki. Algorytmy i ich poprawność Podstawy Informatyki Algorytmy i ich poprawność Błędy Błędy: językowe logiczne Błędy językowe Związane ze składnią języka Wykrywane automatycznie przez kompilator lub interpreter Prosty sposób usuwania

Bardziej szczegółowo

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

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro

Bardziej szczegółowo

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

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro

Bardziej szczegółowo

Algorytmy, reprezentacja algorytmów.

Algorytmy, reprezentacja algorytmów. Algorytmy, reprezentacja algorytmów. Wprowadzenie do algorytmów Najważniejszym pojęciem algorytmiki jest algorytm (ang. algorithm). Nazwa pochodzi od nazwiska perskiego astronoma, astrologa, matematyka

Bardziej szczegółowo

Zasady analizy algorytmów

Zasady analizy algorytmów Zasady analizy algorytmów A więc dziś w programie: - Kilka ważnych definicji i opisów formalnych - Złożoność: czasowa i pamięciowa - Kategorie problemów - Jakieś przykłady Problem: Zadanie możliwe do rozwiązania

Bardziej szczegółowo

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa). Algorytmy definicja, cechy, złożoność. Algorytmy napotykamy wszędzie, gdziekolwiek się zwrócimy. Rządzą one wieloma codziennymi czynnościami, jak np. wymiana przedziurawionej dętki, montowanie szafy z

Bardziej szczegółowo

Podstawy Informatyki Systemy sterowane przepływem argumentów

Podstawy Informatyki Systemy sterowane przepływem argumentów Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Komputer i jego architektura Taksonomia Flynna 2 Komputer i jego architektura Taksonomia Flynna Komputer Komputer

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

Metody Programowania

Metody Programowania POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Metody Programowania www.pk.edu.pl/~zk/mp_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 15: Klasyczne techniki

Bardziej szczegółowo

Kodowanie informacji. Kody liczbowe

Kodowanie informacji. Kody liczbowe Wykład 2 2-1 Kodowanie informacji PoniewaŜ komputer jest urządzeniem zbudowanym z układów cyfrowych, informacja przetwarzana przez niego musi być reprezentowana przy pomocy dwóch stanów - wysokiego i niskiego,

Bardziej szczegółowo

Programowanie strukturalne

Programowanie strukturalne Programowanie strukturalne Semestr I Technik Informatyk - Prowadzący: Elżbieta Majka Plan pracy semestrze I podstawy algorytmizacji programowanie strukturalne na przykładzie języka j Pascal podstawowe

Bardziej szczegółowo

Ćwiczenie 14. Maria Bełtowska-Brzezinska KINETYKA REAKCJI ENZYMATYCZNYCH

Ćwiczenie 14. Maria Bełtowska-Brzezinska KINETYKA REAKCJI ENZYMATYCZNYCH Ćwiczenie 14 aria Bełtowska-Brzezinska KINETYKA REAKCJI ENZYATYCZNYCH Zagadnienia: Podstawowe pojęcia kinetyki chemicznej (szybkość reakcji, reakcje elementarne, rząd reakcji). Równania kinetyczne prostych

Bardziej szczegółowo

Język programowania C C Programming Language. ogólnoakademicki

Język programowania C C Programming Language. ogólnoakademicki Załącznik nr 7 do Zarządzenia Rektora nr 10/12 z dnia 21 lutego 2012r. KARTA MODUŁU / KARTA PRZEDMIOTU Kod modułu Nazwa modułu Nazwa modułu w języku angielskim Obowiązuje od roku akademickiego 2013/2014

Bardziej szczegółowo

POLITECHNIKA OPOLSKA

POLITECHNIKA OPOLSKA POLITECHNIKA OPOLSKA WYDZIAŁ MECHANICZNY Katedra Technologii Maszyn i Automatyzacji Produkcji Laboratorium Podstaw Inżynierii Jakości Ćwiczenie nr 2 Temat: Schemat blokowy (algorytm) procesu selekcji wymiarowej

Bardziej szczegółowo

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop. 2017 Spis treści O autorach 11 Podziękowania 12 Wprowadzenie 13 CZĘŚĆ I ZACZNIJ PROGRAMOWAĆ JUŻ DZIŚ Godzina 1. Praktyczne

Bardziej szczegółowo

Technologia informacyjna Algorytm Janusz Uriasz

Technologia informacyjna Algorytm Janusz Uriasz Technologia informacyjna Algorytm Janusz Uriasz Algorytm Algorytm - (łac. algorithmus); ścisły przepis realizacji działań w określonym porządku, system operacji, reguła komponowania operacji, sposób postępowania.

Bardziej szczegółowo

Definicja algorytmu brzmi:

Definicja algorytmu brzmi: 1.1. Definicja algorytmu Często w życiu stajesz przed koniecznością rozwiązania jakiegoś zadania. Na lekcji matematyki musisz na przykład rozwiązać równanie i w tym celu wykonujesz szereg czynności: od

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

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie: Rekurencje Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie: T(n) = Θ(1) (dla n = 1) T(n) = 2 T(n/2) + Θ(n) (dla n

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

Wyszukiwanie. Wyszukiwanie binarne

Wyszukiwanie. Wyszukiwanie binarne Wyszukiwanie Wejście: posortowana, n-elementowa tablica liczbowa T oraz liczba p. Wyjście: liczba naturalna, określająca pozycję elementu p w tablicy T, bądź 1, jeŝeli element w tablicy nie występuje.

Bardziej szczegółowo

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2 Pętle wielokrotne wykonywanie ciągu instrukcji. Bardzo często w programowaniu wykorzystuje się wielokrotne powtarzanie określonego ciągu czynności (instrukcji). Rozróżniamy sytuacje, gdy liczba powtórzeń

Bardziej szczegółowo

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst. Schematy blokowe I Jeżeli po schematach blokowych będzie używany język C, to należy używać operatorów: '&&', ' ', '!=', '%' natomiast jeśli Ruby to 'and', 'or', '%', '!='. 1. Dostępne bloki: a) początek:

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