Algorytmy. Paweł Dudzik, Adrian Guzik. Kraków, 6 lipca AGH Kraków. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca / 37

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

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

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

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

Podstawy Informatyki. Programowanie. Metalurgia, I rok. Co to jest algorytm? Istotne cechy algorytmu

Definicje. Algorytm to:

Algorytm. Krótka historia algorytmów

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

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

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

Algorytmy. Programowanie Proceduralne 1

Algorytm. a programowanie -

1 Wprowadzenie do algorytmiki

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

POLITECHNIKA OPOLSKA

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

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

Algorytmy. Programowanie Proceduralne 1

POLITECHNIKA OPOLSKA

Algorytm. Krótka historia algorytmów

Algorytmika i pseudoprogramowanie

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

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

Algorytmy i Struktury Danych

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

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Zapis algorytmów: schematy blokowe i pseudokod 1

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

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

Wykład z Technologii Informacyjnych. Piotr Mika

Język ludzki kod maszynowy

Podstawy programowania

Algorytmy i struktury danych. wykład 5

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

Efektywność algorytmów

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

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

Wstęp do informatyki

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

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

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Algorytmy i struktury danych, C3

Algorytmy i schematy blokowe

INFORMATYKA DANE.

Technologie informacyjne - wykład 12 -

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

Wprowadzenie do algorytmiki

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Definicja algorytmu brzmi:

Dynamiczne struktury danych

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

Język programowania PASCAL

Pascal - wprowadzenie

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

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

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Algorytmy i struktury danych. wykład 2

Języki programowania zasady ich tworzenia

ECDL Podstawy programowania Sylabus - wersja 1.0

Abstrakcyjne struktury danych - stos, lista, drzewo

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)

Metodyki i techniki programowania

Podstawy Programowania C++

Wstęp do programowania

Sortowanie - wybrane algorytmy

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Podstawy programowania w języku C

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

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

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Technologia informacyjna Algorytm Janusz Uriasz

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques

Algorytm. Algorytmy Marek Pudełko

Podstawy Programowania

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Algorytmy i struktury danych - opis przedmiotu

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

KARTA PRZEDMIOTU. Algorytmy i struktury danych, C4

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

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Wstęp do Programowania Lista 1

dodatkowe operacje dla kopca binarnego: typu min oraz typu max:

Podstawy Programowania Algorytmy i programowanie

Architektura komputerów

Zaawansowane algorytmy. Wojciech Horzelski

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

Struktury danych: stos, kolejka, lista, drzewo

Zapisywanie w wybranej notacji algorytmów z warunkami i iteracyjnych

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Teoria obliczeń i złożoność obliczeniowa

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I

E S - uniwersum struktury stosu


Transkrypt:

Algorytmy Paweł Dudzik, Adrian Guzik AGH Kraków Kraków, 6 lipca 2011 Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 1 / 37

Plan wykładu 1 Czym jest algorytm? 2 Budowa algorytmu 3 Schemat blokowy 4 Podprogramy - procedury, funkcje 5 Struktura danych 6 Popularne struktury danych Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 2 / 37

Plan wykładu 1 Czym jest algorytm? 2 Budowa algorytmu 3 Schemat blokowy 4 Podprogramy - procedury, funkcje 5 Struktura danych 6 Popularne struktury danych Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 2 / 37

1.1. Co to jest algorytm? (1/2) Jeżeli mamy do wykonania jakieś zadanie, budujemy sposób, przepis realizacji tego zadania. Taki przepis to algorytm. Przykłady: przepis kucharski, instrukcja składania mebli,urządzeń itp., zapis nutowy, wykonywanie pisemne dodawania, mnożenia, dzielenia itp. Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności do wykonania, ze wskazaniem ich następstwa. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 3 / 37

1.1. Co to jest algorytm? (2/2) Nazwa pochodzi od nazwiska w wersji łacińskiej Algorithmus, Algorismus, perskiego matematyka Muhammeda ibn Musy zwanego al Chuwarismi, żyjącego w IX w, podał on algorytmy wykonywania działań arytmetycznych na liczbach dziesiętnych. Dział wiedzy zajmujący się badaniem algorytmów to algorytmika. Istnieją różne sposoby zapisu algorytmu: słowami, za pomocą schematu blokowego, w pseudokodzie, w jednym z języków programowania. Formalnie spisana wersja algorytmu to program. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 4 / 37

1.2. Istotne cechy algorytmu Definicja zadania - co algorytm ma zrobić, Opis ciągu czynności, które po kolei mają być wykonane. Czynności te muszą być na tyle proste (i możliwe do wykonania), aby wykonawca algorytmu mógł je bez dodatkowego tłumaczenia, wykonać ) - operacje elementarne; odpowiednio dobrany poziom szczegółowości. Skończona ilość operacji elementarnych - skończony czas działania. Algorytm dostaje pewne informacje (dane wejściowe) i zwraca jakieś (oczekiwane) wyniki dane wyjściowe, Może istnieć kilka przepisów, które dają na wyjściu te same wyniki. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 5 / 37

1.3. Ścisła definicja algorytmu Algorytm to ściśle określony ciąg kroków obliczeniowych, prowadzący do przekształcenia danych wejściowych w wyjściowe. Cechy dobrego algorytmu: Definicja problemu określa dane wejściowe (pochodzące z dokładnie określonego zbioru wartości dozwolonych) i dane wyjściowe, Precyzyjnie zdefiniowany każdy jego krok jest jednoznacznie określony i obejmuje wyłącznie operacje elementarne, Skończony wyprodukuje wynik w skończonej ilości kroków, Jednoznaczny (powtarzalny) jego wielokrotne wykonywanie dla identycznych danych wejściowych daje zawsze taki sam wynik, Kompletny uwzględnia wszystkie możliwe przypadki, jakie mogą wystąpić podczas jego wykonywania. Uniwersalny umożliwia rozwiązanie całej klasy zadań, a nie tylko pojedynczego, ustalonego zadania. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 6 / 37

1.4. Zadanie algorytmiczne Zadanie algorytmiczne Postawienie problemu (specyfikacja zadania algorytmicznego): Dane wejściowe poprawność i zakres danych wejściowych, Dane wyjściowe (wyniki) charakterystyka oczekiwanych wyników jako funkcji danych wejściowych. Celem zadania algorytmicznego jest znalezienie algorytmu przekształcającego dane wejściowe w wyjściowe, zgodnie z zadanymi założeniami. Algorytm = rozwiązanie zadania algorytmicznego Algorytm ma działać dla dowolnego zestawu danych ze zbioru poprawnych danych wejściowych. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 7 / 37

1.5. Przykłady prostych algorytmów ze świata realnego (1/3) Przepis kuchenny: przygotuj pół kilograma ziemniaków obierz je oraz ugotuj, po ostygnięciu utłucz je, podaj do dowolnego przygotowanego wcześniej mięsa Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 8 / 37

1.5. Przykłady prostych algorytmów ze świata realnego (2/3) Znalezienie sali na uczelni: wejdź do budynku w którym znajduje się szukana sala, z trzycyfrowego numeru sali wybierz pierwszą cyfrę, znajdź schody i udaj się na piętro wskazane przez cyfrę, przeczytaj numer sali na pierwszych napotkanych drzwiach, jeżeli pasuje dotarłeś do celu, jeżeli nie, podejdź do kolejnych drzwi i sprawdź ich numer, - czynność powtarzaj aż do osiągnięcia celu. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 9 / 37

1.5. Przykłady prostych algorytmów ze świata realnego (3/3) Składanie stołu z Ikea: wyjmij wszystkie części z pudełka, rozłóż je na podłodze, blat połóż górną częścią do dołu, weź pierwszą nogę i umiejsców ją w otworze na rogu blatu, przykręć trzema śrubami w wyznaczonym miejscu, powtórz czynność z pozostałymi trzema nogami. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 10 / 37

Plan wykładu 1 Czym jest algorytm? 2 Budowa algorytmu 3 Schemat blokowy 4 Podprogramy - procedury, funkcje 5 Struktura danych 6 Popularne struktury danych Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 11 / 37

2.1. Tworzenie algorytmu 1 Definicja problemu (najlepiej w postaci modelu matematycznego). 2 Koncepcja rozwiązania i wybór struktur danych. 3 Zapis algorytmu (stopniowe precyzowanie od koncepcji do pseudo-kodu lub kodu). 4 Dowód poprawności i analiza złożoności obliczeniowej. 5 Implementacja w wybranym języku programowania. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 12 / 37

2.2. Instrukcje sterujące Instrukcje sterujące określa kolejność wykonywania akcji podstawowych. Są cztery rodzaje instrukcji sterujących: bezpośrednie następstwo - po wykonaniu instrukcji A wykonaj instrukcję B, wybór warunkowy - jeżeli zachodzi W to wykonaj instrukcję A, w przeciwnym razie wykonaj instrukcję B, iteracja (pętla): ograniczona (wykonaj instrukcję A dokładnie n razy), warunkowa (dopóki zachodzi W wykonuj instrukcję A), skok do instrukcji. Algorytm może zawierać: wiele instrukcji sterujących w niebanalnych kombinacjach, instrukcje sterujące wzajemnie zagnieżdżone. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 13 / 37

2.3. Rekurencja Rekurencja Jednym z ciekawszych zagadnień z dziedziny algorytmów jest rekurencja. Krótko mówiąc polega ona na tym, że procedura (podprogram) wywołuje sama siebie. Przykład - Wieża Hanoi. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 14 / 37

2.4. Przykład rekurencji - wieża Hanoi (1/3) Starożytna łamigłówka, w której mamy dane trzy kołki, i na pierwszym z nich znajdują się pierścienie ułożone jeden na drugim, tak że każdy z nich leży na pierścieniu o większym promieniu. Łamigłówka polega na tym, żeby przełożyć wszystkie pierścienie na drugi kołek stosując się do następujących reguł: jednocześnie można przenieść tylko jeden pierścień, pierścień nie może nigdy leżeć na pierścieniu o mniejszym promieniu. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 15 / 37

2.4. Przykład rekurencji - wieża Hanoi (2/3) Rozwiązanie: Przyjmując oznaczenia jak na rysunku, rozwiązanie przedstawiono w postaci poniższego schematu gdzie, X-Y oznacza przełożenie pierścienia z kołka X na kołek Y. I tak: A-B, A-C, B-C, A-B, C-A, C-B, A-B. Jak to się ma do rekurencji? Przy przykładzie z niewielką ilością pierścieni utworzenie rozwiązania nie stanowi większego problemu. Kłopot zaczyna się w momencie w którym chcielibyśmy stworzyć algorytm rozwiązywania łamigłówki dla dowolnej ilości pierścieni. Okazuje się, że idealnym narzędziem jest rekurencja. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 16 / 37

2.4. Przykład rekurencji - wieża Hanoi (3/3) [pseudokod] p r o c e d u r a P r z e n i e s N z X na Y k o r z y s t a j ą c z Z : j e ś l i N=1, to p i s z : X Y ; w przeciwnym wypadku wykonaj : wykonaj P r z e n i e s N 1 z X na Z k o r z y s t a j ą c z Y p i s z X Z wykonaj P r z e n i e s N 1 z Z na Y k o r z y s t a j ą c z X wróć ; [/pseudokod] Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 17 / 37

Plan wykładu 1 Czym jest algorytm? 2 Budowa algorytmu 3 Schemat blokowy 4 Podprogramy - procedury, funkcje 5 Struktura danych 6 Popularne struktury danych Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 18 / 37

3.1. Schemat blokowy - definicja Schemat blokowy to diagram, na którym algorytm jest reprezentowany przez opisane figury geometryczne, połączone liniami zgodnie z kolejnością wykonywania czynności wynikających z przyjętego algorytmu rozwiązania zadania. Pozwala dostrzec istotne etapy algorytmu i logiczne zależności między nimi. strzałka wskazuje kierunek przebiegu sterowania programem, łączy inne bloki, operand (prostokąt) wszystkie operacje z wyjątkiem instrukcji wyboru, predykat (romb) instrukcja wyboru, etykieta (owal) początek lub koniec sekwencji schematu, wejście/wyjście (równoległobok). Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 19 / 37

3.2. Instrukcje sterujące na schematach blokowych Bezpośrednie następstwo Wybór warunkowy Iteracja warunkowa - while Iteracja warunkowa - do..while Iteracja ograniczona - for Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 20 / 37

3.3. Wybór warunkowy if Pascal i f a > b then a := b ; i f a > b then a := b e l s e i f a = b then a := 0 e l s e b := a ; C/C++ i f ( a > b ) a = b ; i f ( a > b ) a = b ; e l s e i f ( a == b ) a = 0 ; e l s e b = a ; Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 21 / 37

3.4, Pętla while Pascal while i f i <> 0 do i mod 2=0 then i := i div 2 e l s e i := 3 i + 1 ; C/C++ while ( i!= 0) i f ( i % 2) i = 3 i +1; e l s e i = i / 2 ; Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 22 / 37

3.3. Pętla for Pascal f o r i :=0 to 10 do begin x := i 2 ; y := i + 3 ; end ; f o r i :=10 downto 0 do begin x := i 2 ; y := i + 3 ; end ; C/C++ f o r ( i =0; i <=10; ++i ) { x = i 2 ; y = i + 3 ; } f o r ( i =10; i >=0; i ) { x = i 2 ; y = i + 3 ; } Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 23 / 37

Plan wykładu 1 Czym jest algorytm? 2 Budowa algorytmu 3 Schemat blokowy 4 Podprogramy - procedury, funkcje 5 Struktura danych 6 Popularne struktury danych Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 24 / 37

4. Podprogram Często algorytm wykonuje kilka razy podobne (w zależności od jakiegoś parametru) lub te same czynności. Warto dla takiej czynności (także pewnego algorytmu) zdefiniować podprogram. Podprogram (inaczej funkcja lub procedura) to wydzielona część programu wykonująca jakieś operacje. Zyskujemy: Oszczędność miejsca (rozmiar algorytmu), Większa przejrzystość algorytmu poprzez jego strukturalizację, Łatwiejsze wyłapywanie błędów. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 25 / 37

Plan wykładu 1 Czym jest algorytm? 2 Budowa algorytmu 3 Schemat blokowy 4 Podprogramy - procedury, funkcje 5 Struktura danych 6 Popularne struktury danych Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 26 / 37

5.1. Definicje zmienna - symbol, który może być utożsamiany z różnymi wartościami; obiekt w pamięci komputera, gdzie można taką wartość przechowywać; typ zmiennej - zbiór wartości, które mogą być przyjmowane przez zmienne danego typu; typ określa sposób kodowania danej zmiennej; struktura danych - zbiór zmiennych określonych typów, posiadający swoistą organizację i związany z nią sposób wykorzystania; Statyczna struktura danych nie zmienia swojego rozmiaru. Dynamiczna struktura danych może zmieniać swój rozmiar w czasie. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 27 / 37

5.2. Typy struktur danych Liniowe struktury danych: lista/wektor: tablica (statyczna, dynamiczna, rzadka, macierz), lista (jedno- i dwukierunkowa), stos kolejka (jedno- i dwukierunkowa, priorytetowa). tablica asocjacyjna/słownik/mapa Nieliniowe struktury danych grafowe struktura danych: macierz sąsiedztwa, listy sąsiedztwa, stos o strukturze grafowej, baza danych, drzewiaste struktura danych: B-drzewa, drzewa binarne (BST, AVL, Red-black) kopce Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 28 / 37

Plan wykładu 1 Czym jest algorytm? 2 Budowa algorytmu 3 Schemat blokowy 4 Podprogramy - procedury, funkcje 5 Struktura danych 6 Popularne struktury danych Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 29 / 37

6.1. Tablica (array) Tablica jest struktura danych składającą się z grupy elementów jednakowego typu, które są dostepne przez indeksowanie. W większości języków programowania tablica zajmuje ciągły obszar pamięci, a mechanizm obsługi tablic jest wbudowany w język. Tablica zapewnia swobodny dostęp (random access) do jej elementów. Pascal x [ 1 0 ] : r e a l ; y [ 5, 5 ] : r e a l ; z = x [ 3 ] + y [ 1, 5 ] ; C/C++ f l o a t x [ 1 0 ] ; f l o a t y [ 5 ] [ 5 ] ; z = x [ 3 ] + y [ 0 ] [ 4 ] ; Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 30 / 37

6.2. Rekord (record, structure) Rekord jest strukturą danych grupującą kilka powiązanych logicznie ze sobą danych, które mogą być różnych typów. Pascal type PERSON = record name : s t r i n g [ 3 0 ] ; age : 0.. 1 2 0 ; end ; J a r e k : PERSON; J a r e k. age := 1 0 ; C/C++ s t r u c t PERSON { char name [ 3 0 ] ; short age ; } J a r e k ; J a r e k. age = 1 0 ; Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 31 / 37

6.3. Stos (stack) Stos = Last In First Out to liniowa struktura danych, w której dane dokładane są na wierzchołek stosu (operacja push) oraz są pobierane (operacja pop) również z wierzchołka stosu. Elementy stosu poniżej wierzchołka stosu można wyłącznie obejrzeć, aby je ściągnąć, trzeba najpierw po kolei ściągnąć to, co jest nad nimi, Zastosowania: Obliczenia odwrotna notacja polska (RPN), Pamięć programu (zmienne automatyczne, wywołania funkcji), Algorytmy parsingu, grafowe itp. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 32 / 37

6.4. Kolejka (queue) Kolejka = Fast In First Out to liniowa struktura danych, w której dane dokładane są na końcu (tail) kolejki (operacja enqueue), a są pobierane (operacja dequeue) z początku (head) kolejki. Elementy kolejki wewnątrz można wyłącznie obejrzeć, Zastosowania: Obsługa zdarzeń, Procesy kolejkowe, Algorytmy grafowe itp. Wariant: kolejka dwustronna (dequeue), kolejka priorytetowa (priority queue). Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 33 / 37

6.5. Lista (list) Lista to liniowa struktura danych, zbudowana z węzłów (nodes), które zawierają dane oraz co najmniej jeden odnośnik (link) do kolejnego węzła (lista jednokierunkowa). Węzeł może zawierać również odnośnik do elementu poprzedniego (lista dwukierunkowa) W porównaniu do tablicy, logiczna kolejność elementów listy może być inna od kolejności fizycznej (w pamięci), Lista nie zapewnia swobodnego dostępu do jej elementów (z wyjątkiem pierwszego (head)), Implementacja: tablicowa lub wskaźnikowa. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 34 / 37

6.6. Drzewo (tree) Drzewo to struktura danych, zbudowana z węzłów (nodes), które zawierają dane oraz co najmniej jeden odnośnik (link) do węzła syna oraz dokładnie jeden do węzła rodzica. Węzeł nieposiadający dzieci to liść; drzewo może mieć wiele liści, Węzeł nieposiadający przodka to korzeń ; drzewo ma dokładnie jeden korzeń. Zastosowania: znaczenie drzew jest bardzo duże i ze względu na swoje własności drzewa są stosowane praktycznie w każdej dziedzinie informatyki, Warianty: drzewa AVL, drzewa czerwono-czarne, BST itd. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 35 / 37

6.7. Graf (graph) Drzewo to struktura danych, zbudowana z: wierzchołków (vertices) krawędzi (edges) = odnośników do innych węzłów grafu. Krawędzie mogą byc skierowane (graf skierowany) lub etykietowane wagami (graf etykietowany, z wagami). Implementacja: macierz sąsiedztwa, macierz incydencji, listy sąsiedztwa, Bardzo wiele ró znorodnych zastosowań. Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 36 / 37

Bibliografia David Harel, Rzecz o istocie infromatyki, Algorytmika, Warszawa, 2000 Strona Uniwersytetu Adama Mickiewicza w Poznania, Dostępna w Internecie: http://www.staff.amu.edu.pl/~psi/informatyka/ kluczew/i2_algorithms.htm Wykład Warunkowe instrukcje sterujące if, else, switch, Dostępny w Internecie: http://www.kssiz.freehost.pl/zsz/id23_psio.pdf Strona Studia Informatyczne Beta, Dostępna w Internecie: http://wazniak.mimuw.edu.pl/index.php?title=wst%c4%99p_ do_programowania_w_j%c4%99zyku_c/zadanie_algorytmiczne Encyklopedia Wikipedia, Dostępna w Internecie: http://pl.wikipedia.org/wiki/algorytm http://pl.wikipedia.org/wiki/schemat_blokowy http://pl.wikipedia.org/wiki/podprogram http://pl.wikipedia.org/wiki/struktura_danych Paweł Dudzik, Adrian Guzik (AGH Kraków) Algorytmy Kraków, 6 lipca 2011 37 / 37