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

Podobne dokumenty
Typy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne:

Podstawy Informatyki. Wykład 6. Struktury danych

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

Listy, kolejki, stosy

INFORMATYKA DANE.

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

Struktury danych: stos, kolejka, lista, drzewo

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

Złożoność algorytmów. Wstęp do Informatyki

Wysokość drzewa Głębokość węzła

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

Przeglad podstawowych pojęć (3) Podstawy informatyki (3) dr inż. Sebastian Pluta. Instytut Informatyki Teoretycznej i Stosowanej

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

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

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

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

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:

Algorytmy i Struktury Danych

Poprawność algorytmów

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

Podstawy Informatyki. Metody dostępu do danych


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

Programowanie obiektowe

ALGORYTMY I STRUKTURY DANYCH

Podstawy Informatyki. Wykład 4. Struktury danych

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 9 Rekurencja

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Teoretyczne podstawy informatyki

wagi cyfry pozycje

Sortowanie - wybrane algorytmy

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

Abstrakcyjne struktury danych - stos, lista, drzewo

Podstawy programowania skrót z wykładów:

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

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

Podstawowe struktury danych

Lab 9 Podstawy Programowania

Algorytmy sortujące i wyszukujące

INFORMATYKA. Podstawy programowania w języku C. (Wykład) Copyright (C) 2005 by Sergiusz Sienkowski IME Zielona Góra

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Sortowanie danych. Jolanta Bachan. Podstawy programowania

dr inż. Paweł Myszkowski Wykład nr 11 ( )

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

Złożoność obliczeniowa zadania, zestaw 2

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

Teoretyczne podstawy informatyki

Dynamiczne struktury danych

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

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Podstawy Informatyki. Struktura programu Stałe i zmienne. Wykład 4. Struktury danych

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

Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:

Drzewa poszukiwań binarnych

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

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

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

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

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Dynamiczne struktury danych

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

ZASADY PROGRAMOWANIA KOMPUTERÓW

Algorytmy i struktury danych. wykład 5

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Jednym z najprostszych sposobów porządkowania jest technika stosowana przy sortowaniu listów:

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

Algorytmika i pseudoprogramowanie

Plan wykładu. Klucz wyszukiwania. Pojęcie indeksu BAZY DANYCH. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów.

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:

Sortowanie przez wstawianie Insertion Sort

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

Tadeusz Pankowski

PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

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

Podstawy Programowania

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

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

Wstęp do programowania

TEORETYCZNE PODSTAWY INFORMATYKI

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

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

TEORETYCZNE PODSTAWY INFORMATYKI

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

WSTĘP DO INFORMATYKI. Struktury liniowe

liniowa - elementy następują jeden za drugim. Graficznie możemy przedstawić to tak:

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

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

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

Zmienne i struktury dynamiczne

ALGORYTMY I STRUKTURY DANYCH

Podstawy programowania w języku C++

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

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

Zapisywanie algorytmów w języku programowania

Transkrypt:

Rekurencja - zdolność podprogramu (procedury) do wywoływania samego (samej) siebie Wieże Hanoi dane wejściowe - trzy kołki i N krążków o różniących się średnicach wynik - sekwencja ruchów przenosząca krążki z kołka na kołek zgodnie z zadanymi regułami Zacznijmy od przypadku szczególnego dla N = 3: A B C X Y oznacza przeniesienie szczytowego krążka z kołka X na Y Rozwiązanie dla N = 3: ; A C; B C; ; C A; C B; Idea rozwiązania rekurencyjnego dla N krążków: 1. 2. T i 1 1 3. 4. T i 1 procedura przenieś N z X na Y używając Z; 1. jeśli N = 1, to wypisz X Y ; 2. w przeciwnym razie (tj. jeśli N > 1) wykonaj co następuje: 2.1. wywołaj przenieś N - 1 z X na Z używając Y; 2.2. wypisz X Y ; 2.3. wywołaj przenieś N -1 z Z na Y używając X; 3. wróć do poziomu wywołania. Rozwiązanie dla N = 3: wywołaj przenieś 3 z A na B używając C; WSTĘP DO INFORMATYKI (2) J.Sikorski Strona 1 / 8

Start Stop Przenieś 3 z A na B używając C Przenieś 2 z A na C używając B Przenieś 2 z C na B używając A Przenieś 1 z A na B używając C A C Przenieś 1 z B na C używając A Przenieś 1 z C na A używając B C B Przenieś 1 z A na B używając C B C C A A C B C C A C B 1 2 3 4 5 6 7 wywołanie powrót proste następstwo Minimalny zbiór struktur sterujących: następstwo (a-potem) wybór warunkowy (jeśli-to) jeden z rodzajów iteracji nieograniczonej (np. dopóki-wykonuj) Instrukcja skoku może być usunięta z każdego algorytmu! Podprogramy rekurencyjne są przy pewnych założeniach silniejsze niż iteracje, ale z większości algorytmów rekurencję można usunąć i zastąpić iteracjami. Typy danych: liczby (całkowite, dziesiętne, dwójkowe itp.) znaki (układy liter z różnych alfabetów) wskaźniki (dane tego typu należy traktować jako adresy obiektów w pamięci operacyjnej - wymagają one specjalnego traktowania) Dane liczbowe: liczba dwójkowa: 11001101 = 1 2 7 +1 2 6 +0 2 5 +0 2 4 +1 2 3 +1 2 2 +0 2 1 +1 2 0 liczba dziesiętna: 205 = 2 10 2 +0 10 1 +5 10 0 liczba heksadecymalna: 1CD = 1 16 2 +12 16 1 +13 16 0 A ~ 0 1 0 0 0 0 0 1 B ~ 0 1 0 0 0 0 1 0 ~ 2 6 +2 0 = 65 ~ 2 6 +2 1 = 66 Dane znakowe: Tablica kodów ASCII (z ang. American Standard Code for Information Interchange) Kod Znak Kod Znak Kod Znak Kod Znak Kod Znak Kod Znak Kod Znak Kod Znak 0 16 32 SP 48 0 64 @ 80 P 96 ` 112 p 1 17 33! 49 1 65 A 81 Q 97 a 113 q 2 18 34 " 50 2 66 B 82 R 98 b 114 r 3 19 35 # 51 3 67 C 83 S 99 c 115 s 4 20 36 $ 52 4 68 D 84 T 100 d 116 t 5 21 37 % 53 5 69 E 85 U 101 e 117 u 6 22 38 & 54 6 70 F 86 V 102 f 118 v 7 23 39 ' 55 7 71 G 87 W 103 g 119 w 8 24 40 ( 56 8 72 H 88 X 104 h 120 x 9 25 41 ) 57 9 73 I 89 Y 105 i 121 y 10 LF 26 42 * 58 : 74 J 90 Z 106 j 122 z 11 27 ESC 43 + 59 ; 75 K 91 [ 107 k 123 { 12 28 44, 60 < 76 L 92 \ 108 l 124 13 CR 29 45-61 = 77 M 93 ] 109 m 125 } 14 30 46. 62 > 78 N 94 ^ 110 n 126 15 31 47 / 63? 79 O 95 _ 111 o 127 WSTĘP DO INFORMATYKI (2) J.Sikorski Strona 2 / 8

Struktury danych: organizują obiekty w pamięci służące do przechowywania elementów zbioru danych, którymi manipulują algorytmy: struktury statyczne struktury dynamiczne ZMIENNE (podstawowe obiekty w pamięci) - mają nadaną nazwę i zdolność przechowywania pojedynczego elementu zbioru danych - są obiektami wykreowanymi w pamięci (operacyjnej) dla potrzeb algorytmu X 0 oznacza nadanie zmiennej X wartości 0 (tj. określenie zawartości pewnego obiektu w pamięci) X X + 1 oznacza odczytanie aktualnej wartości zmiennej X, dodanie do niej jedności i zapisanie wyniku w tym samym obiekcie (miejscu) w pamięci, które symbolizuje nazwa zmiennej X STRUKTURY STATYCZNE Tablice jednowymiarowe (wektory) - są zespołem określonej liczby zmiennych o wspólnej nazwie, które ponumerowano liczbami naturalnymi każda z nich ma przypisany na stałe tzw. indeks, - mogą przechowywać nie większą od ich długości liczbę elementów zbioru danych jednakowego typu. Tablica T : Τ 15 11 24 36 17 15 51 1 2 3 4 5 6 7 nazwa wartości indeksy W zapisie symbolicznym T(6) oznacza 6 zmienną w tablicy T Indeks może być określony przez bezpośrednie podanie wartości w odwołaniu do elementu tablicy, np. T(6), lub użycie nazwy zmiennej o typie zgodnym z indeksem, np. T(X). Zmienną X nazywamy wtedy zmienną indeksową i wskazanie elementu tablicy wymaga odczytania jej aktualnej wartości. Przykłady zastosowania statycznych struktur danych Algorytm sumowania N liczb zapamiętanych w tablicy T 1. S 0 (ustalenie początkowej wartości sumy); 2. K 1 (ustalenie początkowej wartości zmiennej indeksowej); 3. wykonaj co następuje N razy: 3.1. S S + T(K); 3.2. K K + 1. (po zakończeniu zmienna S ma wartość sumy liczb z tablicy T) start S 0 K 1 S S + T(K) K K + 1 NIE K=N TAK stop W algorytmie sortowania bąbelkowego dla listy N liczb rzeczywistych (porównania decydujące o kolejności elementów wykonywane będą w oparciu o relację <) możemy użyć: tablicy T o długości co najmniej N, zmiennych K i L do sterowania iteracjami wewnętrzną i zewnętrzna oraz pomocniczej zmiennej U. WSTĘP DO INFORMATYKI (2) J.Sikorski Strona 3 / 8

Zapis algorytmu: Schemat blokowy: 1. K 1 (ustalenie początkowej wartości zmiennej indeksowej); 2. wykonaj co następuje N 1 razy: 2.1. L 1; 2.2. wykonaj co następuje N 1 razy: 2.2.1. jeśli T(L + 1) < T(L) to: U T(L); T(L) T(L + 1); T(L + 1) U; 2.2.2. L L + 1; 2.3. K K + 1. (iteracja zewnętrzna) start K 1 T 1 2 3 4 N (iteracja wewnętrzna) L 1 T(L) > T(L + 1) TAK K K + 1 L L + 1 NIE U T(L); T(L) T(L + 1); T(L + 1) U NIE L = N 1 TAK NIE K = N 1 TAK stop Tablice dwu i więcej wymiarowe (macierze) - są zespołem określonej liczby zmiennych o wspólnej nazwie, które oznaczono dwoma lub więcej indeksami, - mogą przechowywać nie większą od ich rozmiaru liczbę elementów zbioru danych jednakowego typu. Tablica W : nazwa - W 1 2 3 1 2 3 4 5 6 7 15 11 24 36 17 15 51 14 32 28 26 19 20 43 11 16 13 31 10 15 41 indeksy wierszy - indeksy kolumn W zapisie symbolicznym W(3, 5) oznacza zmienną w tablicy W położoną umownie na przecięciu 3. wiersza i 5. kolumny. wartości Algorytm sumowania N x M liczb zapamiętanych w tablicy W 1. S 0 (ustalenie początkowej wartości sumy); 2. K 1 (ustalenie początkowej wartości 1. zmiennej indeksowej); 3. wykonaj co następuje N razy: 3.1. L 1 (ustalenie początkowej wartości 2. zm. indeksowej); 3.2. wykonaj co następuje M razy: 3.2.1. S S + W(K, L); 3.2.2. L L + 1. 3.3. K K + 1. (po zakończeniu zmienna S ma wartość sumy liczb z tablicy W) WSTĘP DO INFORMATYKI (2) J.Sikorski Strona 4 / 8

Statyczne struktury danych i związane z nimi struktury sterujące zmienna X tablica V tablica W element X element element... element V(1) V(2)... V(N) W(1,1) W(1,2)... W(1,M) element element... element element element... element............ element element... element W(N,1) W(N,2)... W(N,M) T N N T N T instrukcja iteracja iteracje zagnieżdżone STRUKTURY DYNAMICZNE (WSKAŹNIKOWE) wskaźnik pole kluczowe 11 pole dodatkowe ala NIL 8 ma 5 kota NIL obiekt 1 obiekt 2 obiekt 3 Odwołania do pól obiektów za pomocą wskaźników: X A[P[P[X]]] 21 21 A[X] P[X] A[P[X]] P[P[X]] A[P[P[X]] P[P[P[X]] A - pole kluczowe P - X - zmienna wskaźnikowa Podstawowe operacje modyfikujące struktury dynamiczne: DODAJ (ang. INSERT), czyli dołącz we wskazanym miejscu nowy obiekt do struktury (wcześniej trzeba zainicjować ten nowy obiekt w pamięci) USUŃ (ang. DELETE), czyli odłącz od struktury wskazany obiekt (i zwolnij zajmowane przez niego miejsce w pamięci) LISTY (dynamiczne struktury liniowe) listy z dowiązaniami jednokierunkowymi listy z dowiązaniami dwukierunkowymi listy z wartownikiem pole kluczowe głowa pole kluczowe następny głowa poprzedni następny LISTA JEDNOKIERUNKOWA LISTA DWUKIERUNKOWA WSTĘP DO INFORMATYKI (2) J.Sikorski Strona 5 / 8

pole kluczowe głowa poprzedni następny wartownik LISTA Z WARTOWNIKIEM Przykład zastosowania dynamicznej struktury danych (listy) W algorytmie sumowania płac pracowników możemy użyć: rekordu (zespołu zmiennych) do przechowywania danych pojedynczego pracownika: pole liczbowe PŁACA - pole znakowe IMIĘ - pole znakowe NAZWISKO - NASTĘPNY - 2700 Jan Dynamiczny listy do przechowywania danych o wszystkich pracownikach firmy PIERWSZY (zmienna wskaźnikowa) 1750 3000 2100 2500 zmiennej wskaźnikowej X do wskazywania rekordu z danymi kolejnego pracownika zmiennej S do kumulowania wyniku. Zapis algorytmu: 1. S 0 ; 2. X PIERWSZY ; 3. dopóki X NIL, wykonuj co następuje: 3.1. S S + PŁACA[X] ; 3.2. X NASTĘPNY [X] ; 4. podaj wartość S jako wynik.... NIL KOLEJKI I STOSY (struktury dynamiczne o ograniczonych możliwościach modyfikacji) kolejka - struktura FIFO (First-In-First-Out) stos - struktura LIFO (Last-In-First-Out) położenie zdjęcie dołączenie KOLEJKA obsłużenie STOS głowa USUŃ ogon DODAJ KOLEJKA ZREALIZOWANA NA LIŚCIE JEDNOKIERUNK. WSTĘP DO INFORMATYKI (2) J.Sikorski Strona 6 / 8

DRZEWA (rozgałęzione struktury dynamiczne) drzewa binarne drzewa o dowolnym stopniu rozgałęzień drzewa BST (ang. Binary Search Tree) - poszukiwań binarnych korzeń lewy potomek rodzic pole kluczowe prawy potomek DRZEWO BINARNE Drzewo binarne - drzewo, w którym rząd wyjściowy wierzchołków ograniczony jest przez 2 Drzewo pełne - drzewo, w którym wszystkie wierzchołki poza liśćmi mają jednakową liczbę potomków i wszystkie liście są na tym samym poziomie Podstawowe elementy drzew: korzeń Poziom 1 wierzchołki liście gałęzie potomstwo Poziom 2 Poziom 3 Poziom 4 korzeń wierzchołek bez rodziców; liść wierzchołek bez potomstwa Sortowanie drzewiaste Dwa etapy algorytmu sortowania drzewiastego: 1. przekształć nieuporządkowaną listę wejściową w binarne drzewo poszukiwań T; 2. obejdź drzewo T w kolejności najpierw w lewo i wypisz elementy danych umieszczone w wierzchołkach przy ich powtórnych odwiedzinach. 128 76 106 402 100 46 354 987 112 28 396 35 krok 2. pierwszy krok 1. ostatni początek 128 koniec 128 76 402 76 402 46 106 354 987 46 106 354 987 28 100 112 396 28 35 100 112 396 Drzewo poszukiwań 35 Lewostronne obejście drzewa 28 35 46 76 100 106 112 128 354 396 402 987 WSTĘP DO INFORMATYKI (2) J.Sikorski Strona 7 / 8

poddrzewo L(T) drzewo T poddrzewo P(T) procedura rekurencyjna realizująca 2 krok sortowania drzewiastego: procedura obejdź T: 1. jeśli T jest puste, to wróć; 2. w przeciwnym razie wykonaj co następuje: 2.1. wywołaj obejdź L(T); 2.2. wypisz element danych umieszczony w korzeniu T; 2.3. wywołaj obejdź P(T); 3. wróć. Rekurencja jest strukturą sterującą najczęściej związaną z drzewem jako strukturą danych. Bazy danych Duże zbiory danych różnych typów uporządkowane według modelu relacyjnego, hierarchicznego lub innego. Zapytania (kwerendy) służą do wydobycia potrzebnej informacji. Bazy wiedzy Duże zbiory zdań orzekających lub implikacji wyrażonych w języku naturalnym. WSTĘP DO INFORMATYKI (2) J.Sikorski Strona 8 / 8