ALGORYTMY
CO TO JEST ALGORYTM? Algorytm - uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych i opisu kolejnych czynności, prowadzących do jego rozwiązania w skończonym czasie. Algorytmika - dział informatyki zajmujący się poszukiwaniem, konstruowaniem i badaniem własności algorytmów w kontekście ich przydatności do rozwiązywania problemów za pomocą komputerów.
ETAPY ROZWIĄZYWANIA PROBLEMÓW 1) Sformułowanie zadania. 2) Określenie danych wejściowych. 3) Określenie celu, czyli wyniku. 4) Poszukiwanie metody rozwiązania, czyli algorytmu. 5) Przedstawienie algorytmu w postaci: opisu słownego, listy kroków, schematu blokowego, jednego z języków programowania 6) Analiza poprawności rozwiązania. 7) Testowanie rozwiązania dla różnych danych - ocena efektywności przyjętej metody.
HISTORIA ALGORYTMU Słowo „algorytm” wywodzi się od przydomku perskiego matematyka ABU JAFARA MUBAMMADA ibn MUSA al CHWARIZMIEGO. Przydomek al Chwarizmi w łacińskich dziełach tłumaczono jako Algoritmi. Matematyk ten żyjący w IX wieku opisał pozycyjny system dziesiętny liczb, stosowany przedtem wyłącznie w Indiach i sztukę kodowania w tym systemie i stosowanie zera jako symbolu oznaczającego „nic”.
BUDOWA ALGORYTMU Co składa się na algorytm? dane wejściowe, które należy wprowadzić na początku; cel, który ma zostać osiągnięty (czyli oczekiwany wynik). plan działania, czyli przetworzenia danych (np. w postaci ciągu czynności, które muszą być wykonane w określonej kolejności) Instrukcja – opis czynności zawartej w algorytmie. Specyfikacja algorytmu – dokładny opis zadania (problemu), które ma być wykonane, czyli szukanie związku, jaki zachodzi między danymi a wynikami. W specyfikacji należy określić dane konieczne do wprowadzenia, by rozwiązać zadanie oraz wyniki, które mają być skutkiem działania algorytmu.
CECHY ALGORYTMU Algorytm musi być: poprawny – tzn. dla każdego poprawnego zestawu danych, po wykonaniu skończonej liczby czynności prowadzi do poprawnych wyników jednoznaczny – tzn. w każdym przypadku jego zastosowania, dla tych samych danych uzyskamy ten sam wynik szczegółowy – aby wykonawca algorytmu zrozumiał opisane czynności i potrafił je wykonać uniwersalny – aby służył do rozwiązywania pewnej grupy zadań, a nie tylko jednego zadania (np. algorytm jest przepisem na rozwiązanie równania postaci ax + b = 0 dla dowolnych współczynników a i b , a nie – jednego konkretnego równania np. 2x + 3 = 0 )
Sposoby przedstawiania algorytmów: Opis słowny Wypunktowana lista kroków Schemat blokowy Określony język programowania
Opis słowny algorytmu Najprostszą formą zapisu algorytmu jest opis słowny. Możemy powiedzieć, że forma ta jest pierwszym, niezbyt ścisłym opisem postępowania. Jeżeli jest to przepis, który precyzyjnie określa kolejne czynności i w jednoznaczny sposób pozwala dojść do celu, to właśnie posługujesz się opisem słownym algorytmu.
Opis słowny algorytmu - przykłady
Opis słowny algorytmu - przykłady
Opis słowny algorytmu - przykłady
LISTA KROKÓW ALGORYTMU Zapis algorytmu w postaci listy kroków polega na opisaniu poszczególnych działań w punktach. Kolejność ich wykonywania wynika z porządku, w jakim są podane oraz z podanych poleceń (czasami musimy się cofnąć do wcześniejszego kroku). Lista kroków jest prostym i dość szczegółowym opisem działań wchodzących w skład algorytmu. Jednak dla bardziej złożonych algorytmów taki opis może być mniej czytelny. 1. Podejdź do telefonu 2. Podnieś słuchawkę 3. Sprawdź, czy jest sygnał... 4. ... Zapewne domyślasz się – jest to początek algorytmu wykonania telefonu podany w postaci listy kroków Pamiętaj by w jednym punkcie (kroku) opisać t y l k o j e d n ą o p e r a c j ę.
Lista kroków algorytmu - przykład
Lista kroków algorytmu - przykład
SCHEMAT BLOKOWY Schemat blokowy – graficzny zapis algorytmu rozwiązania zadania, przedstawiający opis i kolejność wykonywania czynności realizujących dany algorytm. Schemat blokowy składa się z bloków (skrzynek) przedstawionych w postaci symboli graficznych, których kształt określa rodzaj czynności, a umieszczone w nich napisy precyzują tę czynność. Skrzynki mają kształt figur geometrycznych. Kolejność wykonywania czynności jest ustalona za pomocą łączących je linii i strzałek. Ta forma zapisu algorytmu jest często wykorzystywana ze względu na dużą czytelność oraz łatwość przeniesienia na dowolny język programowania.
SCHEMAT BLOKOWY START STOP Bloki graniczne START i STOP mają kształt owalu - wskazują początek i koniec wykonywania schematu blokowego. START Blok początkowy (start) rozpoczyna algorytm. Ma tylko jedno połączenie wychodzące. STOP Blok końcowy (koniec) kończy działanie algorytmu. Z niej nie wychodzą żadne połączenia.
SCHEMAT BLOKOWY Blok WE/WY (wejścia/wyjścia) jest równoległobokiem, w którym umieszcza się dane lub wyniki. Wprowadź (a,b) wprowadzanie danych wejściowych Wyprowadź x wyprowadzanie (podawanie) wyników
SCHEMAT BLOKOWY S:= a + b Blok operacyjny (instrukcji) ma kształt prostokąta, w którym umieszcza się instrukcje. Blok operacyjny (wykonywanie operacji, czyli konkretnych działań). Można w nim wpisać więcej niż jedno wyrażenie. S:= a + b W skrzynce zamiast znaku = stosujemy oznaczenie := Jest to instrukcja, zgodnie z którą zmiennej po lewej stronie nadajemy wartość identyczną z wartością wyrażenia po prawej stronie.
SCHEMAT BLOKOWY S > 10 Tak Nie Blok warunkowy (decyzyjny) jest rombem, w którym umieszcza się warunek decydujący o dalszej kolejności wykonywania operacji. Ze skrzynki wychodzą dwa połączenia: jedno oznaczone „Tak”, jeśli warunek jest spełniony drugie oznaczone „Nie”, jeśli warunek nie jest spełniony S > 10 Tak Nie Blok decyzyjny (warunkowy)
Obliczanie sumy 3 liczb start podaj a: podaj b: podaj c: stop podaj a: suma := a + b + c podaj b: podaj c: wypisz suma
Algorytm obliczania pola trójkąta
JĘZYK PROGRAMOWANIA Program komputerowy – algorytm zapisany w odpowiednim języku programowania zrozumiałym przez komputer (np. w języku maszynowym procesora – ciąg liczb stanowiących rozkazy i dane dla procesora). Język programowania to sztuczny język służący do zapisywania programów oraz przekazywania komputerowi poleceń do wykonania.
RODZAJE ALGORYTMÓW ALGORYTMY LINIOWE INACZEJ SEKWENCYJNE ALGORYTMY WARUNKOWE ALGORYTMY ITERACYJNE ALGORYTMY REKURENCYJNE ALGORYTMY PORZĄDKUJĄCE
ALGORYTMY LINIOWE (SEKWENCYJNE) (łac. sequentia – następstwo) Algorytm ten ma bardzo prostą strukturę. Składa się z ciągu instrukcji, które są wykonywane jedna po drugiej w kolejności, jaka wynika z ich następstwa w zapisie algorytmu.
ALGORYTM LINIOWY
Działa ona według jednego z dwóch schematów: ALGORYTMY WARUNKOWE Często w algorytmach występują instrukcje, których wykonanie uzależnione jest od spełnienia pewnego warunku lub też spełnienie pewnego warunku powoduje wykonanie jednej instrukcji, a niespełnienie go – innej. Taką instrukcję nazywamy instrukcją warunkową. Działa ona według jednego z dwóch schematów:
Jeśli spełniony jest warunek W, to wykonaj instrukcję A. lub Jeśli spełniony jest warunek W, to wykonaj instrukcję A; w przeciwnym przypadku wykonaj instrukcję B. Instrukcja A i B opisuje jedną instrukcję składającą się z ciągu pojedynczych instrukcji wykonywanych sekwencyjnie. Instrukcja warunkowa pozwala dokonać wyboru jednej z dwóch dalszych dróg wykonania algorytmu.
ALGORYTMY WARUNKOWE
ALGORYTMY WARUNKOWE
ALGORYTMY ITERACYJNE Cechą charakterystyczną wielu algorytmów jest wielokrotne powtarzanie niektórych instrukcji. Nie zawsze liczbę powtórzeń możemy określić dokładnie, niekiedy bowiem zależy ona od spełnienia pewnych warunków. Wielokrotne powtarzanie instrukcji umożliwiają instrukcje iteracyjne (łac. iteratio – powtarzanie) nazywane krótko PĘTLAMI. Działa według schematu: Wykonaj instrukcję A dokładnie n razy.
ALGORYTMY REKURENCYJNE Algorytm rekurencyjny to taki, który wywołuje sam siebie, czasami wielokrotnie, do rozwiązania problemu. Kolejne wywołania trwają aż do osiągnięcia oczekiwanego wyniku albo przekroczenia rozmiaru zbioru. Rekurencja to odwoływanie się np. funkcji lub definicji do samej siebie.