Algorytmy – A. Jędryczkowski Copyright – 2005 r. Algorytmem nazywamy skończony ciąg czynności, przekształcający zbiór danych wejściowych (danych) na zbiór danych wyjściowych (wyników). DANE Algorytm WYNIKI Algorytmy – A. Jędryczkowski Copyright – 2005 r. Algorytmy, które wykonują działania matematyczne na danych liczbowych, numerycznymi. nazywamy algorytmami Algorytmika, to dział informatyki zajmujący się różnymi aspektami algorytmów tworzenia i analizowania Algorytmy – A. Jędryczkowski Copyright – 2005 r. Program komputerowy to logicznie uporządkowany ciąg instrukcji algorytm. języka programowania realizujący Specyfikacja zadania to szczegółowy opis zadania, w którym wymienia się dane wejściowe i wyniki oraz warunki jakie muszą spełniać. Specyfikacja określa zatem związek pomiędzy danymi a wynikami. Algorytmy – A. Jędryczkowski Copyright – 2005 r. Problem wybór Algorytm Komputer wykonuje Program komputerowy zapis realizuje Program Algorytm Algorytmy – A. Jędryczkowski Copyright – 2005 r. oblicz średnią arytmetyczną dowolnych liczb rzeczywistych. Problem: trzech Dane: trzy dowolne liczby rzeczywiste A, B, C Wynik: wartość średniej arytmetycznej liczb A, B, C, równą SR Algorytmy – A. Jędryczkowski Copyright – 2005 r. 1. Zacznij algorytm 2. Wprowadź wartość trzech liczb A, B, C 3. Oblicz wartość wyrażenia: SUMA:=A+B+C 4. Oblicz wartość wyrażenia SR:=SUMA/3 5. Wyprowadź wynik: SR 6. Zakończ algorytm Algorytmy – A. Jędryczkowski Copyright – 2005 r. Problem: oblicz wartość bezwzględną dowolnej liczby rzeczywistej. Dane: dowolna liczba rzeczywista A Wynik: wartość bezwzględna liczby A równa W Algorytmy – A. Jędryczkowski Copyright – 2005 r. 1. Zacznij algorytm 2. Wprowadź wartość liczbę A 3. Jeżeli A>=0, to W:=A. W przeciwnym wypadku W:=-A 4. Wyprowadź wynik: W 5. Zakończ algorytm Algorytmy – A. Jędryczkowski Copyright – 2005 r. START Początek algorytmu STOP Koniec algorytmu Wprowadź (A, B) Wyprowadź (W) Wprowadzanie danych Blok wejścia Wyprowadzanie danych Blok wyjścia Algorytmy – A. Jędryczkowski Copyright – 2005 r. Wykonywanie obliczeń Blok operacyjny S:=A+B W:=C/A Czy A=0? NIE Sprawdzanie warunków Blok warunkowy albo decyzyjny TAK Algorytmy – A. Jędryczkowski Copyright – 2005 r. 1 Łącznik 1 Połączenie Algorytmy – A. Jędryczkowski Copyright – 2005 r. Średnia arytmetyczna trzech dowolnych liczb rzeczywistych START Wprowadź (A, B, C) SUMA:=A+B+C SR:=SUMA/3 Wyprowadź (SR) STOP Algorytmy – A. Jędryczkowski Copyright – 2005 r. Wartość bezwzględna dowolnej liczby rzeczywistej. Algorytm z warunkiem. START Wprowadź (A) W:=A TAK Czy A>0? NIE W:=-A Wyprowadź (W) STOP Algorytmy – A. Jędryczkowski Copyright – 2005 r. Notacja zwana „DRZEWEM ALGORYTMU” nadaje się do prostego przedstawiania algorytmów porządkowania. DRZEWO ALGORYTMU składa się z: • korzenia • wierzchołków pośrednich (węzłów) • wierzchołków końcowych (liści) Algorytmy – A. Jędryczkowski Copyright – 2005 r. Porządkowanie trzech dowolnych liczb A, B, C. A<=B TAK NIE C<=A TAK (C, A, B) TAK (A, B, C) C<=B NIE TAK B<=C (C, B, A) NIE (A, C, B) NIE C<=A TAK (B, C, A) NIE (B, A, C) Algorytmy – A. Jędryczkowski Copyright – 2005 r. ITERACJĄ nazywamy instrukcję powtarzania ciągu instrukcji. Liczba powtórzeń może być ustalona bądź zależeć od spełnienia określonego warunku sprawdzanego w każdej iteracji. Iterację często nazywamy PĘTLĄ. Algorytmy – A. Jędryczkowski Copyright – 2005 r. Wyświetlanie kolejnych liczb od 0 do 14 START K:=0 Wyprowadź (K) K:=K+1 TAK K < 15 NIE STOP Algorytmy – A. Jędryczkowski Copyright – 2005 r. Algorytm ten stosuje się do wyszukiwania największego (najmniejszego) elementu w zbiorze. Dane: dziesięć nieuporządkowanych dowolnych liczb Wynik: największa i najmniejsza liczba Algorytmy – A. Jędryczkowski Copyright – 2005 r. 1. Zacznij algorytm 2. Przyjmij za MAX (MIN) pierwszą liczbę 3. Dla kolejnych liczb jeśli MAX jest mniejszy od kolejnej liczby X (MAX<X) wykonaj MAX:=X (jeśli MIN jest większy od kolejnej liczby X (MIN>X) wykonaj MIN:=X) 4. Wyprowadź wynik: MAX (MIN) 5. Zakończ algorytm Algorytmy – A. Jędryczkowski Copyright – 2005 r. Zasada ta ma następujący cel: Problem algorytmiczny dzielimy na mniejsze części, których rozwiązanie daje rozwiązanie problemu głównego. Najczęściej w ten sposób można efektywniej rozwiązać problem główny. Algorytmy – A. Jędryczkowski Copyright – 2005 r. Algorytm ten stosuje się do jednoczesnego wyszukiwania największego elementu w zbiorze. i najmniejszego Dane: dziesięć nieuporządkowanych dowolnych liczb Wynik: największa i najmniejsza liczba Algorytmy – A. Jędryczkowski Copyright – 2005 r. W celu wyszukania najmniejszej i największej liczby można oczywiście wykonać najpierw algorytm MAX a potem algorytm MIN. Takie postępowanie jest jednak mało ekonomiczne bo wymaga przejrzenia całego zbioru liczb dwukrotnie. Wstępnie podzielimy zbiór liczba na dwa podzbiory wykonując porównania sąsiednich liczb (kolejny slajd) Algorytmy – A. Jędryczkowski Copyright – 2005 r. Zbiór liczb: 2, 5, 3, 7, 9, 1, 4, 8, 0, 6 5 7 2<5 3<7 2 3 Kandydaci na MAX - Kandydaci na MIN - 9 9>1 1 8 6 4<8 0<6 4 0 Pierwszy zbiór przetwarzamy algorytmem MAX a drugi algorytmem MIN otrzymując szukane wartości. Algorytmy – A. Jędryczkowski Copyright – 2005 r. Porządkowanie przez wybór (selection sort) Algorytm ten wykorzystuje poznany wcześniej algorytm MIN. Wyszukiwany jest najmniejszy element, a następnie zamieniany jest miejscami z ostatnim elementem przeszukiwanego podciągu wartości. Kolejne wyszukiwanie prowadzone jest bez elementów, które zostały już uporządkowane. Algorytmy – A. Jędryczkowski Copyright – 2005 r. 4 4 4 4 4 4 6 7 3 3 3 3 7 7 7 6 5 6 6 6 6 6 --- 4 1 2 2 4 4 --- 4 4 7 7 7 7 --- 4 4 3 2 2 4 --- 3 3 3 2 4 4 --- 2 2 2 2 2 2 --- 2 2 2 2 2 1 --- 1 1 1 1 1 1 Algorytmy – A. Jędryczkowski Copyright – 2005 r. 2 7 2 7 7 2 7 2 Komórka pomocnicza Algorytmy – A. Jędryczkowski Copyright – 2005 r. Algorytmy – A. Jędryczkowski Copyright – 2005 r.