Algorytmy i struktury danych



Podobne dokumenty
Przepis na rozwiązanie określonego problemu za pomocą prostych czynności wykonywanych w ściśle określonej kolejności.

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

Definicje. Algorytm to:

1 Wprowadzenie do algorytmiki

Technologie informacyjne - wykład 12 -

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

Wykład z Technologii Informacyjnych. Piotr Mika

Algorytm. Krótka historia algorytmów

Algorytmy. Programowanie Proceduralne 1

Algorytmy i struktury danych

Programowanie komputerów

Wprowadzenie do algorytmiki

Wstęp do informatyki. Algorytm. Innymi słowy, czym jest algorytm?

Algorytm. Krótka historia algorytmów

Algorytmy. Programowanie Proceduralne 1

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

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

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

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

Algorytm. a programowanie -

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

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Metodyki i techniki programowania

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

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

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

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

ALGORYTMY I PROGRAMY

Algorytmika i pseudoprogramowanie

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Algorytmy i schematy blokowe

Podstawy programowania

POLITECHNIKA OPOLSKA

ECDL Podstawy programowania Sylabus - wersja 1.0

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy

START. Wprowadź (v, t) S:=v*t. Wyprowadź (S) KONIEC

POLITECHNIKA OPOLSKA

Definicja algorytmu brzmi:

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

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

Programowanie w języku Python. Grażyna Koba

Języki i metodyka programowania

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

Algorytmy. dr Dariusz Banaś (UJK) Seminarium w ramach projektu Fascynujący Świat Nauki dla uczniów gimnazjów. wersja 0.9. Start.

Zapisywanie algorytmów w języku programowania

Programowanie strukturalne

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania

Język ludzki kod maszynowy

Metodyki i techniki programowania

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

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Podstawy i języki programowania

2. Graficzna prezentacja algorytmów

Algorytm. Algorytmy Marek Pudełko

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Podstawy Informatyki. Algorytmy i ich poprawność

Algorytmy, reprezentacja algorytmów.

Metody Programowania

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Podstawy Programowania Algorytmy i programowanie

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Temat 20. Techniki algorytmiczne

Algorytmy i struktury danych. wykład 2

Technologia informacyjna Algorytm Janusz Uriasz

Laboratorium 1: Wprowadzenie do środowiska programowego. oraz podstawowe operacje na rejestrach i komórkach pamięci

Podstawy Informatyki Systemy sterowane przepływem argumentów

Podstawy Informatyki. Inżynieria Ciepła, I rok. Iteracja warunkowadopóki(while) Blok instrukcji. Pascal: begin instrukcja1; C: { end;

Podstawy Informatyki. Programowanie. Inżynieria Ciepła, I rok. Co to jest algorytm? Istotne cechy algorytmu

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

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

PRZEDMIOTOWY SYSTEM OCENIANIA. z przedmiotu. Programowanie strukturalne i obiektowe. dla technikum informatycznego

Algorytmy i struktury danych - opis przedmiotu

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

Programowanie i techniki algorytmiczne

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

Programowanie współbieżne Wykład 2. Iwona Kochańska

Poprawność algorytmów

Podstawy Informatyki. Metalurgia, I rok niestacjonarne. Wykład 2 Algorytmy

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Język programowania PASCAL

Wstęp do programowania

O LICZBACH NIEOBLICZALNYCH I ICH ZWIĄZKACH Z INFORMATYKĄ

Podstawy Programowania

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Podstawy programowania

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

Uwaga: Akceptowane są wszystkie odpowiedzi merytorycznie poprawne i spełniające warunki zadania.

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

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

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

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Sposoby przedstawiania algorytmów

Transkrypt:

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, W, Warszawa 1999 2. David Harel, Rzecz o istocie informatyki - Algorytmika, W, Warszawa 2000 2 1

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. 3 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: 3 5 7 9 x x x x sinx = 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ść. 4 2

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

erminologia 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.) 7 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. 8 4

Problem Program Algorytm Problem Struktury danych Program Algorytmizacja Kodowanie Programowanie 9 Zapis algorytmu 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. iezaleŝ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ń! 10 5

operacja Sieć działań 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 11 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 stopu dokładnie jedno wejście oznaczenia końca algorytmu 12 6

Przykład A Znajdowanie największej z trzech liczb: max(a,b,c) Start a,b,c a>b a>c c>b drukuj a drukuj c drukuj b Stop 13 Przykład B Start a,b,c m a Znajdowanie największej z trzech liczb: max(a,b,c) m<b m<c drukuj m Stop m b m c 14 7

A max(a,b,c) rozmiar: Sieci A vs B? 4 we/wy 3 dec. 0 op. szybkość: 2 we/wy 2 dec. 0 op. rozbudowa: trudna B max(a,b,c) rozmiar: 2 we/wy 2 dec. 3 op. szybkość: 2 we/wy 2 dec. 1..3 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. 15 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 echniki konstrukcji sieci wspomagające analizę poprawności to: podział na moduły (podprogramy) tworzenie sieci strukturalnych (programowanie strukturalne) 16 8

Sieci strukturalne Podstawowe rodzaje konstrukcji strukturalnych: sekwencja selekcja s1 c s2 s1 s2 sn c selekcja wielokrotna s1 s2 sn 17 Sieci strukturalne Podstawowe rodzaje konstrukcji strukturalnych: cykl (pętla) s c s c pre-check 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. 18 9

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óra 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) 19 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. 20 10

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 21 Programowanie strukturalne Języki strukturalne Pascal, C, Java... Języki niestrukturalne Fortran, Basic... (goto) siec strukturalna siec niestrukturalna (spaghetti programing) 22 11