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 do rozwiązania danego problemu przepis opisujący krok po kroku rozwiązanie problemu lub osiągnięcie jakiegoś celu
Rodzaje algorytmów Algorytm algebraiczny - przepis (zbiór instrukcji przekształcania) przetwarzania tzw. danych wejściowych krok po kroku według wskazanej instrukcji (reguły) przetwarzania w celu uzyskania wyników przetwarzania, tzw. danych wyjściowych. Dane, które uzyskuje się w kolejnych krokach przetwarzania nazywane są danymi pośrednimi.
Rodzaje algorytmów Algorytm niealgebraiczny - ciąg prostych zdań lub pytań uporządkowanych w logicznej kolejności (od najbardziej ogólnych do najbardziej szczegółowych) w taki sposób, aby trzeba było czytać tylko te zdania, które odnoszą się do danego przypadku. [L. Jung, Podstawy użytkowania komputerów - algorytmy i komputery, WAT 1981]
Algorytmika podstawowy dział informatyki poświęcony poszukiwaniom, konstruowaniu i badaniom algorytmów, zwłaszcza w kontekście ich przydatności do rozwiązywania problemów za pomocą komputerów. autorem nazwy dziedziny jest D. Haral (Spirit of Computing).
Algorytmy wokół nas Przykłady z życia codziennego: przepisy kulinarne instrukcje dotyczące podłączeń określonych urządzeń włączanie komputera uruchamianie samochodu
Algorytm w informatyce schemat postępowania podczas rozwiązania zadania określonego typu zbiór reguł postępowania dzięki, któremu na podstawie informacji wejściowych uzyskujemy efekt w postaci wyników sposób rozwiązania zadania z wykorzystaniem narzędzi informatycznych
Algorytm, jako element procesu programowania Programowanie to zespół czynności umożliwiających rozwiązanie określonego problemu przy pomocy komputera. Obejmuje ono: opracowanie algorytmu zapis algorytmu w postaci zrozumiałej dla komputera - w języku programowania kontrolę poprawności działania programu, testowanie i usuwanie błędów problem algorytm program komputer
Język programowania Język przeznaczony do zapisu algorytmów realizowanych przez komputer Języki programowania dzielimy na dwie grupy: niskiego poziomu (asemblerowe) - instrukcje języka maszynowego są zapisywane za pomocą symboli: jednemu rozkazowi odpowiada jeden symbol; programowanie jest żmudne, ale programy są bardzo szybkie wysokiego poziomu - instrukcje zapisywane są w formie zbliżonej do języka naturalnego (znaki matematyczne+ język angielski); jednej instrukcji odpowiada ciąg rozkazów języka maszynowego, np. Pascal, Logo, C++
Cechy algorytmu Poprawność Skończoność Określoność Efektywność Ogólność
Sposoby zapisu algorytmów Każdy algorytm powinien posiadać specyfikację, w której określamy: dane, z których korzysta algorytm, wyniki, które powinien dawać, zmienne pomocnicze niezbędne do realizacji algorytmu Uniwersalny algorytm operuje na zmiennych. Zmienna to pojemnik na dane, może być oznaczana dowolną literą lub łańcuchem znaków, np. a, bok_a Wyrażenia składają się ze stałych, zmiennych, operatorów (+, -, *, /) i funkcji matematycznych. Budując wyrażenie warunkowe korzystamy z operatorów relacyjnych: =, >, <, <=, >=, <> Instrukcja przypisania (:=), np. a:=b+7 oznacza podstawienie pod zmienną a wartości zmiennej b zwiększonej o 7, jeśli b=5, a=12
Rodzaje sieci działań: proste (sekwencyjne) - nie używa się w nich bloków warunkowych. W takiej sieci działań kolejność realizacji poszczególnych operacji jest ściśle określona i żadna z nich nie może być pominięta ani powtórzona z rozwidleniem - zawiera w sobie wybór jednej z kilku możliwych dróg realizacji danego zadania. Istnieje w nim przynajmniej jeden blok warunkowy z pętlą, często w trakcie realizacji danego zadania konieczne jest powtórzenie niektórych operacji różniących się jedynie zestawem danych. Pętla obejmuje tą część bloków, która ma być powtarzana złożone - będące kombinacją powyższych sieci
Sposoby zapisu Algorytmy można przedstawiać stosując: opis słowny (np. przepisy kulinarne w książce kucharskiej) lista kroków pseudokod schemat blokowy (sieć działań, flow chart, flow diagram) umowny język programowania język programowania wysokiego poziomu, np. Pascal lub C++
Opis słowny polega na logicznym i zrozumiałym dla odbiorcy przedstawieniu kolejnych czynności (akcji), jakie należy wykonać, aby osiągnąć zamierzony efekt przykładami takiego opisu algorytmu mogą być: przepis kulinarny, recepta wykonania leku, metoda rozwiązania zadania
Lista kroków Wczytaj wartość pierwszego boku, zmienna a Wczytaj wartość drugiego boku, zmienna b Oblicz p jako iloczyn a*b Wyświetl p
Pseudokod program kwadrat {nagłówek programu} zmienne a, b: rzeczywiste {deklaracje zmiennych} początek {początek programu właściwego} czytaj (a) {wczytanie danych} czytaj (b) p:=a*b {instrukcja przypisania} pisz (p) {wyświetlenie wyniku} koniec {koniec programu właściwego}
Schemat blokowy Początek sieci działań (schematu). W schemacie może występować tylko jeden taki element.
Blok wejścia-wyjścia - oznacza czynność wprowadzania danych i przyporządkowywania ich zmiennym używanym w dalszej części programu albo czynność wyprowadzania wyników obliczeń. Napis wewnątrz określa rodzaj czynności (np. czytaj, pisz) oraz nazwy zmiennych i stałych.
Element (blok) przetwarzania (obliczeniowy) oznacza wykonanie operacji (lub zbioru operacji). Wewnątrz bloku określa się rodzaj czynności przetwarzania i ich argumenty.
Blok decyzyjny (warunkowy, alternatywny, przełącznik) - oznacza element wyboru jednego z dwóch wariantów dalszego wykonywania programu. Wybór jest dokonywany na podstawie wyniku sprawdzenia warunku (będącego wyrażeniem logicznym) umieszczonego wewnątrz. Blok ten powinien zawsze posiadać dwa wyjścia opisane "T" (Tak, True) i "N" (Nie, False).
Łącznik wewnątrzstronicowy służy do łączenia odrębnych części schematu znajdujących się na tym samym arkuszu. Ułatwia zachowanie przejrzystości schematu.
Zakończenie wykonywania czynności.
Reguły, wg których budujemy schematy blokowe Każdy algorytm ma tylko jeden początek Wszystkie drogi muszą kończyć się na bloku Stop (Koniec) Wszystkie bloki muszą mieć zgodną z ich budową liczbę wejść i wyjść Każda linia musi być opatrzona strzałką informacyjną o kierunku przepływu informacji
Przykład 1 Sformułuj algorytm obliczający pole prostokąta o długościach boków podanych przez użytkownika Specyfikacja algorytmu: Dane: a pierwszy bok prostokąta, liczba rzeczywista większa od 0 b drugi bok prostokąta, liczba rzeczywista większa od 0 Wynik: - p- pole prostokąta
start Wczytaj a Wczytaj b P:=a*b Pisz p koniec
Zadania do samodzielnego wykonania Napisz algorytm (opis słowny), wg którego sporządzisz swoją ulubioną potrawę. Napisz algorytm w postaci schematu blokowego i pseudokodu zwracający wartość bezwzględną liczby podanej przez użytkownika. Napisz algorytm w postaci listy kroków i schematu blokowego informujący, czy liczba podana przez użytkownika jest większa, mniejsza czy równa 0