Algorytmika, podstawowe pojęcia
Transkrypt
Algorytmika, podstawowe pojęcia
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