Podstawy Informatyki. Wykład 4. Struktury danych

Wielkość: px
Rozpocząć pokaz od strony:

Download "Podstawy Informatyki. Wykład 4. Struktury danych"

Transkrypt

1 Podstawy Informatyki Wykład 4 Struktury danych

2 Języki programowania Kompilacja proces, w którym program w języku wysokiego poziomu jest tłumaczony na język adresów symbolicznych (asembler). Program realizujący ten proces nazywany jest kompilatorem. Interpreter program tłumaczący każdą instrukcję na instrukcje poziomu maszyny i natychmiast ją wykonujący. Fortran Cobol Pascal, C++ Snobol Prolog Lisp Delphi Java do obliczeń numerycznych. język dla przedsiębiorstw i handlu (mechanizmy definiowania struktury pliku) języki uniwersalne manipulowanie tekstami i napisami oparty na logice faktów przetwarzanie list, obliczenia symboliczne

3 Początek deklaracje komentarze instrukcje Koniec Przykład: Pascal: Program nazwa; begin... end. Struktura programu

4 Stałe i zmienne Podstawowymi obiektami występującymi w programie są stałe i zmienne. Ich znaczenie jest takie samo jak w matematyce. Stałe i zmienne muszą posiadać nazwę i posiadają przypisaną wartość. Nazwa jest ciągiem znaków, z których pierwszy musi być literą, np.: x, alfa1, pierwiastek1, Obowiązują tylko znaki ASCII (abc...z, ABC...XYZ). Nie ma polskich liter ani greckich. Charakter zmiennych jest deklarowany we wstępnej części programu (zazwyczaj zaraz na początku, przed instrukcjami właściwymi programu)

5 Zmienne są różnych typów: całkowite (integer): 1, 2, 128 rzeczywiste (real): 0.456, logiczne (logical): true, false znakowe (character): imie, adres itp.

6 Tablice Tablica jest to struktura danych zawierająca uporządkowany zbiór obiektów tego samego typu i odpowiada matematycznemu pojęciu wektora, macierzy, zmiennych indeksowych, itp a S = a a 2... a n

7 Dlaczego tablice? Jeśli n=3, to nie tak ważne. A jeśli n=100? - deklarujemy jedną zmienną tablicową a nie 100 zwykłych. - w programie można łatwo odwołać się do elementu, którego numer jest wyliczany, np.: k=2*i-1 Dla i=5 mamy k=9 Do zmiennej tablicowej A odwołujemy się: x:=a[9], lub x:=a[k], a nawet x:=a[2*i-1] Proste? A gdyby nie było zmiennych tablicowych?

8 Dlaczego tablice, cd. Przykład programu: k=2*i-1 wybierz k z: 1: x:=a1 2: x:=a2 3: x:=a3... 9: x:=a : x:=a100 Bez sensu!

9 Wyrażenia Wyrażenia są zapisem operacji, które wykonywane są na zmiennych i stałych. Wyrażenie składa się ze stałych, zmiennych i łączących je operatorów. Operatory: +, -, *, / Kolejność wykonywania działań określają nawiasy i priorytet operatorów. Np.: x1 = 2.5 a - x y x1 = 2.5*a - x*y y = (a+b)*(x-2*y)+2.5/(x-5) W poszczególnych językach mogą występować różnice w operatorach.

10 Instrukcje wejścia/wyjścia Umożliwiają komunikowanie się programu z użytkownikiem. Umożliwiają czytanie danych jak również wypisywanie komunikatów i wyników prowadzonych obliczeń. Np.: Pascal - read(a,b); { z klawiatury wprowadzamy : np } writeln(a); {drukujemy na ekranie wartość a (np. 12 }

11 Podprogram fragment programu wykonujący te same działania dla różnych argumentów. Podprogramy mogą być wywoływane z argumentami (parametrami): podprogram (argument_1, argument_2,..., argument_3) Procedura podprogram, który nie zwraca wartości procedura(lista_argumentów){... } Funkcja podprogram, który zwraca wartość typ_wartości_zwracanej funkcja(lista_argumentów){ typ_wartości_zwracanej wynik;... return wynik; //zwróć wynik }

12 Przykład wykorzystania podprogramu. Program (analizator tekstu) przetwarza i analizuje tekst pod kątem wyszukiwania określonego ciągu znaków. program analizator{ otwórz_plik_do_analizy(p,"nazwa"); int licznik_1, licznik_2=0; //zmienne typu całkowitego do //przechowywania liczby wystąpień szukanych ciągów znaków licznik_1=szukaj(p,"wektor"); //WYWOŁANIE PODPROGRAMU licznik_2=szukaj(p,"."); wypisz("w pliku ",p," słowo wektor występuje ",licznik_1,"razy. ", "W pliku jest ", licznik_2," zdań"); } //koniec programu int szukaj(plik, ciąg_znaków){ int licznik=0; wskaźnik=0; //wskazuje początek słowa w pliku słowo zmienna typu ciąg znaków while( koniec_pliku(plik) ){ //dopóki nie ma końca pliku słowo=weź_słowo(plik,wskaźnik); //funkcja zwraca słowo wskazywane przez wskaźnik w pliku if(słowo == ciąg_znaków) licznik=licznik+1; przesuń_wskaźnik(plik,wskaźnik); //funkcja przesuwa wskaźnik w pliku na następne słowo } return licznik; //zwróć licznik } //koniec funkcji szukaj

13 Zalety podprogramów zmniejszenie rozmiaru algorytmu dobrze napisany i przemyślany podprogram stanowi kolejną elementarną instrukcję zwiększenie czytelności i przejrzystości algorytmu Stosowanie podprogramów daje możliwość budowy złożonego algorytmu stopniowo, a nie stosując od razu wyłącznie dozwolone instrukcje elementarne: w pierwszym etapie tworzony jest algorytm wysokiego poziomu, zawierający nie tylko instrukcje elementarne, ale także instrukcje, których szczegółowe realizacje zostaną napisane później. Kolejny krok to uszczegółowienie tych instrukcji. instrukcja wp I instrukcja wp II instrukcja wp II... instrukcja wp III... instrukcja wp III instrukcja elementarna instrukcja elementarna... instrukcja elementarna instrukcja wp II Metoda zstępująca (analityczna) Metoda wstępująca (syntetyczna) przeciwieństwo metody zstępującej

14 Typy danych Typ danych określa zbiór wartości, do którego należy obiekt Typy proste: liczbowe: całkowite, zmiennoprzecinkowe, w formacie dziesiętnym, dwójkowym, itp. znakowe: słowa zapisane w różnych alfabetach logiczne: prawda/fałsz Zmienne Służą do przechowywania w pamięci pojedynczych obiektów Odwoływanie się do zmiennych. Przykład: Niech X będzie zmienną całkowitą. wypisz(x); //wypisz wartość zmiennej X X -2; //przypisz zmiennej X wartość 2 X X + 5; //zwiększ wartość X o 5

15 Struktury danych W programowaniu struktura danych jest sposobem składowania danych na komputerze tak, by mogły być efektywnie wykorzystane. Często staranne dobranie struktury danych pozwala na zastosowanie wydajniejszego algorytmu. Przykładowe struktury danych to: rekord, zwany w niektórych językach po prostu strukturą tablica lista stos kolejka drzewo i jego liczne odmiany (np. drzewo binarne) graf

16 Struktury danych Struktura danych zbiór elementów. Każdy element składa się z jednego lub więcej części (słów maszynowych), zwanych polami. Przykład elementu struktury danych p1 p2 p3 p4 Pole p1 jest wskaźnikiem (dowiązaniem) Pola p2, p3, p4 dowolnego typu

17 Struktury danych TOP p2 p2 p2 p2 p3 p3 p3 p3 p4 p4 p4 p4 Wskaźnik (dowiązanie) podstawowy sposób reprezentowania złożonych struktur danych. Dowiązanie puste symbol Λ, symbol uziemienia Na pierwszą wartość wskazuje wartość zapisana w zmiennej TOP TOP to zmienna wskaźnikowa zmienna, której wartościami są wskaźniki (dowiązania). Wszystkie odwołania do elementów struktury odbywają się bezpośrednio przez zmienne (lub stałe) wskaźnikowe pośrednio przez pola elementów struktury zawierające wskaźniki

18 Listy liniowe Projekt reprezentacji struktury danych: zdefiniowanie informacji (danych), które będą przechowywane zdefiniowanie operacji wykonywanych na danych Wybór struktury danych zależy od powyższych czynników i determinuje funkcjonalność struktury. Lista liniowa ciąg n 0 elementów X[1], X[2],.., X[n], w którym względna pozycja elementu zdefiniowana jest w porządku liniowym. Dla n > 0 X[1] jest pierwszym elementem, X[n] ostatnim i jeśli 1 < k < n, to k-ty element X[k] leży za elementem X[k-1] i przed elementem X[k+1].

19 Listy Podstawowe operacje na liście: dostęp do k-tego elementu listy. Cel: odczyt lub modyfikacja zawartości pól elementu wstawianie nowego elementu przed lub po k-tym elemencie usuwanie k-tego elementu wyznaczenie liczby elementów listy znajdowanie elementu listy o zadanej wartości jednego z pól

20 Stos (ang. LIFO) lista liniowa, dla której operacje wstawiania i usuwania (oraz odczytu) elementu dotyczą tylko jednego końca listy Kolejka (ang. FIFO) lista liniowa, dla której operacje wstawiania dotyczą jednego końca, a operacje usuwania (i odczytu) drugiego końca Kolejka dwustronna lista liniowa, dla której wszystkie operacje wstawiania i usuwania (i odczytu) dotyczą dowolnego końca listy Wstawianie lub zdejmowanie wierzchołek Usuwanie pierwszy Kolejka Wstawianie ostatni Stos dno Wstawianie lub usuwanie lewy Wstawianie lub usuwanie prawy Kolejka dwustronna

21 Tablice jednowymiarowe (wektory) Służą do przechowywania w pamięci określonej (skończonej) liczby obiektów tego samego typu Przykład: 10-cio elementowa tablica liczb całkowitych o nazwie T indeks elementu w tablicy T element tablicy T Odwołanie się do i-tego elementu tablicy T: T[i], np. wypisz(t[i]); //wypisz wartość i-tego elementu tablicy T T[i] 8; //i-temu elementowi tablicy T przypisz wartość 8

22 Tablice dwuwymiarowe (macierze) Służą do przechowywania w pamięci określonej (skończonej) liczby obiektów tego samego typu Przykład: Tablica o nazwie M, o 5-ciu wierszach i 10-ciu kolumnach i elementach całkowitych wiersz kolumna element M[4][3] Odwołanie się do elementu o indeksie i i j tablicy M: M[i][j], np. wypisz(m[i][j]); //wypisz wartość elementu z wiersza i i kolumny j tablicy T M[i][j] 27; //elementowi tablicy M o indeksie i i j przypisz //wartość 27 Jeżeli n = m, gdzie n liczba wierszy, m liczba kolumn tablicy dwuwymiarowej, to tablicę nazywamy kwadratową. Przekątna główna tablicy kwadratowej: indeksy wiersza i kolumny są równe (i=j)

23 Tablice dwuwymiarowe cd. Każdą tablicę dwuwymiarową można przekształcić w tablicę jednowymiarową: Niech M tablica dwuwymiarowa o n wierszach i m kolumnach, T tablica jednowymiarowa o k = n*m elementach Wtedy i=1..n, j=1..m M[i][j] = T[m*(i-1)+j] Tablice wielowymiarowe Niech wymiar tablicy X będzie równy 3. Tablica tworzy wtedy prostopadłościan, a element jest wskazywany przez 3 indeksy: X[i][j][k] Wektor wektorów struktura złożona z wektora, którego elementy wskazują na wektory różnej długości. wskaźnik element element element... element element wskaźnik... wskaźnik element element element element element... element

24 Realizacja listy liniowej tablice (1) Metoda najprostsza: umieszczenie elementów listy liniowej w kolejnych komórkach (lokacjach) pamięci: Add(X[i+1]) = Add(X[i]) + c Add funkcja zwracająca adres początku elementu listy c liczba słów na jeden element listy Jeśli L 0 adres bazowy hipotetycznego elementu X[0], to Add(X[i]) = L 0 + ci Najczęściej za pomocą tablicy realizowany jest stos. Zmienna T nazywana jest wskaźnikiem stosu. Operacje na stosie: T=0 stos pusty T T + 1; X[T] Y wkładanie elementu Y na stos Y X[T]; T T 1 zdejmowanie elementu ze stosu, gdy stos jest niepusty

25 Realizacja listy liniowej tablice (2) Realizacja kolejki lub kolejki dwustronnej. Przechowywane są dwa wskaźniki: F (front) i R (rear). Operacje na kolejce dwustronnej: F=R=0 kolejka pusta R R + 1; X[R] Y wkładanie elementu Y na koniec kolejki Y X[F]; F F + 1 usuwanie elementu z początku kolejki Usprawnienie reprezentacji kolejki dwustronnej (lepsze wykorzystanie pamięci, problem przetaczającej się kolejki): X[1],.., X[M] elementy ustawione w cykl, tak, że po X[M] następuje element X[1]. Wtedy operacje mają postać: jeśli R=M, to R 1, wpp R R + 1; X[R] Y Y X[F]; jeśli F=M, to F 1, wpp F F + 1;

26 Realizacja listy liniowej tablice (3) Problem przepełnienia (overflow, nadmiar elementów) Problem niedomiaru (underflow, brak elementów) Postać operacji dla stosu i kolejki dwustronnej: X Y (włóż na stos) T T+1; jeśli T > M, to przepełnienie; X[T] Y; Y X (usuń ze stosu) jeśli T=0, to niedomiar; Y X[T]; T T 1; X Y (wstaw do kolejki) Y X (usuń z kolejki) jeśli R=M, to R 1, wpp R R+1; jeśli F=R, to przepełnienie; X[R] Y; jeśli F=R, to niedomiar; Y X[F]; jeśli F=M, to F 1, wpp F F+1;

27 Lista realizacja wskaźnikowa First p2 p2 p2 p2 p3 p3 p3 p3 p4 p4 p4 p4 Program wykorzystujący listę wskaźnikową musi pamiętać wskaźnik do pierwszego elementu listfirst.

28 Porównanie realizacji listy liniowej z wykorzystaniem tablicy i wskaźników Struktura ze wskaźnikami wymaga dodatkowego pola na przechowywanie wskaźnika. Operacja usunięcia elementu z listy jest prosta wymaga jedynie zmiany wskaźnika w odpowiednim elemencie. W przypadku sekwencyjnego przydziału pamięci operacja ta wymaga przemieszczenia całego fragmentu listy do innych lokacji pamięci. First p2 p3 p4 p2 p3 p4 p2 p3 p4 p2 p3 p4 p2 p3 p4 Wstawianie elementu w środek listy wskaźnikowej jest prostą operacją. Wymaga zmiany wskaźników w dwóch elementach. p2 p3 p4 First p2 p3 p4 p2 p3 p4 p2 p3 p4 p2 p3 p4 p2 p3 p4

29 Porównanie realizacji listy liniowej z wykorzystaniem tablicy i wskaźników cd. Odwołania do dowolnego elementu listy jest szybsze w przypadku tablic. Dostęp do k-tego elementu listy w postaci tablicy jest stały, dla listy wskaźnikowej wymaga k przejść po wskaźnikach. Operacja łączenia list wskaźnikowych jest prostsza niż list przy użyciu tablic. Lista wskaźnikowa umożliwia budowę skomplikowanych struktur, np. zmienna liczba list o zmiennej długości: element listy głównej jest wskaźnikiem do listy podrzędnej, lub elementy struktury mają wiele dowiązań i połączone są równocześnie w różnych porządkach, odpowiadając różnym listom. Operacje przeglądania kolejnych elementów listy są szybsze dla list sekwencyjnych. Do tworzenia listy wskaźnikowej niezbędny jest mechanizm przydzielania, zwalniania, sprawdzania, czy można pamięć przydzielić, czyli gospodarowania pamięcią. Sterta zbiór wszystkich elementów przeznaczonych do dynamicznego przydzielania. Uwaga: Zakłada się, że element listy ma postać: info link

30 Stos realizacja poprzez listę wskaźnikową. Zmienna wskaźnikowa T wskazuje na wierzchołek stosu. T=Λ stos pusty Włożenie informacji Y na stos T (wykorzystanie dodatkowej zmiennej wskaźnikowej P): P new (element); info(p) Y; link(p) T; T P; T Przypisanie informacji do Y z wierzchołka stosu i zdjęcie ze stosu tej informacji: jeśli T =Λ to niedomiar; wpp{ P T; T link(p); Y info(p); delete(p); }

31 Kolejka realizacja poprzez listę wskaźnikową. Kolejka pusta: F=Λ i R=Add(F); F R Operacja wstawiania nowego elementu do kolejki: P new(element); info(p) Y; F link(p) Λ; link(r) P; R P; Operacja usuwania elementu z kolejki: jeśli F=Λ to niedomiar; wpp{ P F; F link(p); Y info(p); delete(p); F jeśli F=Λ to R=Add(F);} P, nowy element R R

32 Lista cykliczna ostatni element listy wskazuje na pierwszy element. PTR Podstawowe operacje na listach cyklicznych: PTR = Λ lista pusta Wstaw element Y z lewej strony: P new(element); info(p) Y; jeśli PTR=Λ to PTR link(p) P; wpp{ link(p) link(ptr); link(ptr) P; } Usuń z listy lewy element: jeśli PTR=Λ to niedomiar wpp{ P link(ptr); Y info(p); link(ptr) link(p); jeśli PTR=P to PTR Λ; delete(p); Wstaw element Y z prawej strony: Wstaw Y z lewej strony; PTR P;

33 Drzewa Drzewo jest hierarchicznym ułożeniem danych. DEF. Drzewo jest to zbiór T jednego lub więcej elementów zwanych węzłami, takich że: 1. istnieje jeden wyróżniony węzeł zwany korzeniem drzewa 2. pozostałe węzły (bez korzenia) są podzielone na m 0 rozłącznych zbiorów T 1,.., T m, z których każdy jest drzewem. Drzewa T 1,.., T m są nazywane poddrzewami korzenia. Pierwszy obiekt zwany jest korzeniem, kolejne obiekty traktowane są jako jego potomstwo: węzły, liście węzły nie mające potomstwa. Droga w drzewie sekwencja węzłów w drzewie odpowiadających przejściu w kierunku od korzenia do liścia. węzeł korzeń Pojęcia: rodzic liść przodek potomek rodzeństwo (dwa węzły są rodzeństwem, gdy mają tego samego ojca) droga

34 Drzewa binarne Drzewo binarne jest skończonym zbiorem węzłów, który jest albo pusty, albo zawiera korzeń oraz dwa drzewa binarne. A T B C A B C D E D E F F Każdy węzeł przechowuje dwa wskaźniki: do lewego poddrzewa LLINK i prawego poddrzewa RLINK T jest wskaźnikiem do drzewa Jeśli T = Λ - drzewo puste Wpp T jest adresem korzenia drzewa, a LLINK(T) wskazuje lewe poddrzewo, RLINK(T) wskazuje prawe poddrzewo.

35 Przechodzenie drzewa Jest to systematyczne przeglądanie węzłów w taki sposób, ze każdy węzeł jest odwiedzony dokładnie jeden raz. Przejście drzewa wyznacza porządek liniowy w drzewie. Sposoby przechodzenia drzewa binarnego: preorder (porządek przedrostkowy) inorder (porządek wrostkowy) postorder (porządek przyrostkowy) Rekurencyjna definicja porządków przechodzenia drzewa binarnego: Jeśli drzewo jest puste, stop Wpp wykonaj: Przechodzenie preorder Przechodzenie inorder Odwiedź korzeń Przejdź lewe poddrzewo Przejdź lewe poddrzewo Przejdź prawe poddrzewo Odwiedź korzeń Przejdź prawe poddrzewo Przechodzenie postorder Przejdź lewe poddrzewo Przejdź prawe poddrzewo Odwiedź korzeń

36 Przykład: A B C D E F G H I Porządek preorder: A B D C E G F H I Porządek inorder: D B A E G C H F I Porządek postorder: D B G E H I F C A

37 Algorytm: przechodzenie drzewa binarnego w porządku inorder Niech T będzie wskazuje na drzewo binarne. Algorytm korzysta z pomocniczego stosu S. K1. Inicjalizowanie. Utwórz stos pusty S; P T (P jest pomocniczą zmienną wskaźnikową). K2. Sprawdzenie, czy P = Λ? Jeśli P = Λ, to K4. K3. S P (włóż P na stos S); Niech P LLINK(P); A Idź do K2. K4. Jeśli stos S = Λ, koniec algorytmu; B C Wpp P S; K5. Odwiedzenie P. Odwiedź NODE(P); D E F P RLINK(P); Idź do K2. G H I

38 Przykłady wykorzystania drzew: drzewiasta struktura algorytmów diagramy organizacyjne przedsiębiorstw, drzewa gry Sortowanie drzewiaste Rozważamy drzewo binarne każdy węzeł ma co najwyżej dwóch potomków, zwanych lewostronnym i prawostronnym. Algorytm sortowania drzewiastego: 1. przekształć listę wejściową w binarne drzewo poszukiwań T 2. obejdź drzewo T w porządku inorder i wypisz każdy element przy okazji drugich odwiedzin. Binarne drzewo poszukiwań T: każdy element binarnego drzewa poszukiwań ma tę własność, że jego lewostronne potomstwo jest mniejsze co do wartości od tego elementu, a prawostronne potomstwo jest większe. procedura obejdz_drzewo(t){ if(t==0) koniec; //jeśli drzewo T jest puste else{ obejdz_drzewo(lewe(t)); wypisz(korzen(t)); //wpisz element danych znajdujący się w korzeniu obejdz_drzewo(prawe(t)); } }

39 Przykład sortowania drzewiastego (etap 1) Budowa binarnego drzewa poszukiwań T

40 Przykład sortowania drzewiastego (2) Procedura obejdz_drzewo(t)

41 Bazy danych i bazy wiedzy Przykłady baz danych: dane finansowe i osobowe przedsiębiorstwa dane katalogowe biblioteki rezerwacja biletów lotniczych Podstawowe modele baz danych relacyjny organizacja danych w postaci tabel hierarchiczny organizacja danych w postaci drzew lub sieci (realizacja obiektowa) Rozwinięciem baz danych są bazy wiedzy

Podstawy Informatyki. Wykład 6. Struktury danych

Podstawy Informatyki. Wykład 6. Struktury danych Podstawy Informatyki Wykład 6 Struktury danych Stałe i zmienne Podstawowymi obiektami występującymi w programie są stałe i zmienne. Ich znaczenie jest takie samo jak w matematyce. Stałe i zmienne muszą

Bardziej szczegółowo

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

Podstawy Informatyki. Struktura programu Stałe i zmienne. Wykład 4. Struktury danych Podstawy Informatyki Wykład 4 Języki programowania Kompilacja proces, w którym program w języku wysokiego poziomu jest tłumaczony na język adresów symbolicznych (asembler). Program realizujący ten proces

Bardziej szczegółowo

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

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy) Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013

Bardziej szczegółowo

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

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA 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

Bardziej szczegółowo

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:

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: Strona 1 z 17 Typy danych 1. Dane tekstowe rozmaite słowa zapisane w różnych alfabetach: Rozwój metod badawczych pozwala na przesunięcie granicy poznawania otaczającego coraz dalej w głąb materii: 2. Dane

Bardziej szczegółowo

INFORMATYKA DANE.

INFORMATYKA DANE. INFORMATYKA DANE http://www.infoceram.agh.edu.pl DANE Dane to zbiory liczb, znaków, sygnałów, wykresów, tekstów, itp., które mogą być przetwarzane. Pojęcie danych jest relatywne i istnieje tylko razem

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH ALGORYTMY I STRUKTURY DANYCH Temat 4: Realizacje dynamicznych struktur danych. Wykładowca: dr inż. Zbigniew TARAPATA e-mail: Zbigniew.Tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/

Bardziej szczegółowo

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

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują

Bardziej szczegółowo

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

Wysokość drzewa Głębokość węzła Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

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

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne Sortowanie Dane wejściowe : trzy liczby w dowolnym porządku Dane wyjściowe: trzy liczby

Bardziej szczegółowo

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze Podstawy Informatyki Metalurgia, I rok Wykład 3 Liczby w komputerze Jednostki informacji Bit (ang. bit) (Shannon, 1948) Najmniejsza ilość informacji potrzebna do określenia, który z dwóch równie prawdopodobnych

Bardziej szczegółowo

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne

Bardziej szczegółowo

Struktury danych: stos, kolejka, lista, drzewo

Struktury danych: stos, kolejka, lista, drzewo Struktury danych: stos, kolejka, lista, drzewo Wykład: dane w strukturze, funkcje i rodzaje struktur, LIFO, last in first out, kolejka FIFO, first in first out, push, pop, size, empty, głowa, ogon, implementacja

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Kopce Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 11 1 / 69 Plan wykładu

Bardziej szczegółowo

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

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Drzewa poszukiwań binarnych

Drzewa poszukiwań binarnych 1 Cel ćwiczenia Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet ielonogórski Drzewa poszukiwań binarnych Ćwiczenie

Bardziej szczegółowo

Lista liniowa dwukierunkowa

Lista liniowa dwukierunkowa 53 Lista liniowa dwukierunkowa Jest to lista złożona z elementów, z których każdy posiada, oprócz wskaźnika na element następny, również wskaźnik na element poprzedni. Zdefiniujmy element listy dwukierunkowej

Bardziej szczegółowo

Listy, kolejki, stosy

Listy, kolejki, stosy Listy, kolejki, stosy abc Lista O Struktura danych składa się z węzłów, gdzie mamy informacje (dane) i wskaźniki do następnych węzłów. Zajmuje tyle miejsca w pamięci ile mamy węzłów O Gdzie można wykorzystać:

Bardziej szczegółowo

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

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Algorytmy i struktury danych Laboratorium Drzewa poszukiwań binarnych 1 Cel ćwiczenia Ćwiczenie ma na celu zapoznanie studentów

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Stosy, kolejki, drzewa Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. VII Jesień 2013 1 / 25 Listy Lista jest uporządkowanym zbiorem elementów. W Pythonie

Bardziej szczegółowo

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

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski Algorytmy i struktury danych Wykład 5: Drzewa Dr inż. Paweł Kasprowski pawel@kasprowski.pl Drzewa Struktury przechowywania danych podobne do list ale z innymi zasadami wskazywania następników Szczególny

Bardziej szczegółowo

Przykładowe B+ drzewo

Przykładowe B+ drzewo Przykładowe B+ drzewo 3 8 1 3 7 8 12 Jak obliczyć rząd indeksu p Dane: rozmiar klucza V, rozmiar wskaźnika do bloku P, rozmiar bloku B, liczba rekordów w indeksowanym pliku danych r i liczba bloków pliku

Bardziej szczegółowo

Algorytmy i struktury danych. wykład 5

Algorytmy i struktury danych. wykład 5 Plan wykładu: Wskaźniki. : listy, drzewa, kopce. Wskaźniki - wskaźniki Wskaźnik jest to liczba lub symbol który w ogólności wskazuje adres komórki pamięci. W językach wysokiego poziomu wskaźniki mogą również

Bardziej szczegółowo

Lab 9 Podstawy Programowania

Lab 9 Podstawy Programowania Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany

Bardziej szczegółowo

Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski

Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski : idea Indeksowanie: Drzewo decyzyjne, przeszukiwania binarnego: F = {5, 7, 10, 12, 13, 15, 17, 30, 34, 35, 37, 40, 45, 50, 60} 30 12 40 7 15 35 50 Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH LGORTM I STRUKTUR DNH Temat 6: Drzewa ST, VL Wykładowca: dr inż. bigniew TRPT e-mail: bigniew.tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/ Współautorami wykładu

Bardziej szczegółowo

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

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce. POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 204/205 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 2 : Drzewa BST c.d., równoważenie

Bardziej szczegółowo

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

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 > Typy indeksów Indeks jest zakładany na atrybucie relacji atrybucie indeksowym (ang. indexing field). Indeks zawiera wartości atrybutu indeksowego wraz ze wskaźnikami do wszystkich bloków dyskowych zawierających

Bardziej szczegółowo

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

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

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

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania 1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Sieci powiązań Paweł Daniluk Wydział Fizyki Jesień 2015 P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2015 1 / 21 Sieci powiązań Można (bardzo zgrubnie) wyróżnić dwa rodzaje powiązań

Bardziej szczegółowo

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane

Bardziej szczegółowo

Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem.

Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem. Podstawy programowania Wykład PASCAL Zmienne wskaźnikowe i dynamiczne 1 dr Artur Bartoszewski - Podstawy prograowania, sem. 1- WYKŁAD Rodzaje zmiennych Zmienne dzielą się na statyczne i dynamiczne. Zmienna

Bardziej szczegółowo

Dynamiczne struktury danych

Dynamiczne struktury danych Dynamiczne struktury danych 391 Dynamiczne struktury danych Przez dynamiczne struktury danych rozumiemy proste i złożone struktury danych, którym pamięć jest przydzielana i zwalniana na żądanie w trakcie

Bardziej szczegółowo

Algorytm. Krótka historia algorytmów

Algorytm. Krótka historia algorytmów Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

Podstawy Informatyki. Metody dostępu do danych

Podstawy Informatyki. Metody dostępu do danych Podstawy Informatyki c.d. alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej 2 Sformułowanie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Sieci powiązań Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 1 / 24 Sieci powiązań Można (bardzo zgrubnie) wyróżnić dwa rodzaje powiązań

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 6a Model danych oparty na drzewach 1 Model danych oparty na drzewach Istnieje wiele sytuacji w których przetwarzane informacje mają strukturę hierarchiczną lub zagnieżdżoną,

Bardziej szczegółowo

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

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne. Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

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

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Abstrakcyjne struktury danych - stos, lista, drzewo

Abstrakcyjne struktury danych - stos, lista, drzewo Sprawozdanie Podstawy Informatyki Laboratoria Abstrakcyjne struktury danych - stos, lista, drzewo Maciej Tarkowski maciek@akom.pl grupa VII 1/8 1. Stos Stos (ang. Stack) jest podstawową liniową strukturą

Bardziej szczegółowo

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

2012-01-16 PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew 0-0-6 PLAN WYKŁADU Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew BAZY DANYCH Wykład 9 dr inż. Agnieszka Bołtuć INDEKSY - DEFINICJE Indeksy to pomocnicze struktury

Bardziej szczegółowo

Definicja pliku kratowego

Definicja pliku kratowego Pliki kratowe Definicja pliku kratowego Plik kratowy (ang grid file) jest strukturą wspierająca realizację zapytań wielowymiarowych Uporządkowanie rekordów, zawierających dane wielowymiarowe w pliku kratowym,

Bardziej szczegółowo

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik Wykład X Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2016 c Copyright 2016 Janusz Słupik Drzewa binarne Drzewa binarne Drzewo binarne - to drzewo (graf spójny bez cykli) z korzeniem (wyróżnionym

Bardziej szczegółowo

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych: Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym

Bardziej szczegółowo

Porządek symetryczny: right(x)

Porządek symetryczny: right(x) Porządek symetryczny: x lef t(x) right(x) Własność drzewa BST: W drzewach BST mamy porządek symetryczny. Dla każdego węzła x spełniony jest warunek: jeżeli węzeł y leży w lewym poddrzewie x, to key(y)

Bardziej szczegółowo

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych kolekcji. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych

Bardziej szczegółowo

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

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne 2 Algorytmy Nazwa algorytm wywodzi się od nazwiska perskiego matematyka Muhamed ibn

Bardziej szczegółowo

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to

Bardziej szczegółowo

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu

Bardziej szczegółowo

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

INFORMATYKA. Podstawy programowania w języku C. (Wykład) Copyright (C) 2005 by Sergiusz Sienkowski IME Zielona Góra INFORMATYKA Podstawy programowania w języku C (Wykład) Copyright (C) 2005 by Sergiusz Sienkowski IME Zielona Góra INFORMATYKA Temat: Struktury dynamiczne Wykład 7 Struktury dynamiczne lista jednokierunkowa,

Bardziej szczegółowo

Wykład 14. Środowisko przetwarzania

Wykład 14. Środowisko przetwarzania Wykład 14 Środowisko przetwarzania Środowisko przetwarzania Przed generacją kodu, musimy umieć powiązać statyczny kod źródłowy programu z akcjami, wykonywanymi w trakcie działania i implementującymi program;

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Drzewa poszukiwań binarnych dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych

Bardziej szczegółowo

Metody getter https://www.python-course.eu/python3_object_oriented_programming.php 0_class http://interactivepython.org/runestone/static/pythonds/index.html https://www.cs.auckland.ac.nz/compsci105s1c/lectures/

Bardziej szczegółowo

Informatyka I. Wykład 4. Tablice. Dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Wykład 4. Tablice. Dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Wykład 4. Tablice. Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Tablice Tablica uporządkowany zbiór elementów określonego typu Każdy element tablicy posiada

Bardziej szczegółowo

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

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 Wykład 9 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 stos i operacje na stosie odwrotna notacja polska języki oparte na ONP przykłady programów J. Cichoń, P. Kobylański Wstęp

Bardziej szczegółowo

Matematyka dyskretna - 7.Drzewa

Matematyka dyskretna - 7.Drzewa Matematyka dyskretna - 7.Drzewa W tym rozdziale zajmiemy się drzewami: specjalnym przypadkiem grafów. Są one szczególnie przydatne do przechowywania informacji, umożliwiającego szybki dostęp do nich. Definicja

Bardziej szczegółowo

Struktury Danych i Złożoność Obliczeniowa

Struktury Danych i Złożoność Obliczeniowa Struktury Danych i Złożoność Obliczeniowa Zajęcia 1 Podstawowe struktury danych Tablica Najprostsza metoda przechowywania serii danych, zalety: prostota, wady: musimy wiedzieć, ile elementów chcemy przechowywać

Bardziej szczegółowo

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę. Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji

Bardziej szczegółowo

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:

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 Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.

Bardziej szczegółowo

Podstawy Programowania

Podstawy Programowania Podstawy Programowania Monika Wrzosek Instytut Matematyki Uniwersytet Gdański Matematyka 2017/18 Monika Wrzosek (IM UG) Podstawy Programowania 1 / 119 Sprawy organizacyjne E-mail: mwrzosek@mat.ug.edu.pl

Bardziej szczegółowo

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

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO Rozdział 1. Wybór i instalacja kompilatora języka Pascal 1.1. Współczesne wersje kompilatorów Pascala 1.2. Jak zainstalować

Bardziej szczegółowo

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

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++ Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu

Bardziej szczegółowo

Definicje. Algorytm to:

Definicje. Algorytm to: 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

Bardziej szczegółowo

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku Matematyka Dyskretna Andrzej Szepietowski 25 czerwca 2002 roku Rozdział 1 Struktury danych 1.1 Listy, stosy i kolejki Lista to uporz adkowany ci ag elementów. Przykładami list s a wektory lub tablice

Bardziej szczegółowo

. Podstawy Programowania 2. Drzewa bst - część pierwsza. Arkadiusz Chrobot. 22 maja 2016

. Podstawy Programowania 2. Drzewa bst - część pierwsza. Arkadiusz Chrobot. 22 maja 2016 .. Podstawy Programowania 2 Drzewa bst - część pierwsza Arkadiusz Chrobot Zakład Informatyki 22 maja 2016 1 / 55 Plan.1 Wstęp.2 Definicje.3 Implementacja Typ bazowy i wskaźnik na korzeń Dodawanie elementu

Bardziej szczegółowo

Ogólne wiadomości o grafach

Ogólne wiadomości o grafach Ogólne wiadomości o grafach Algorytmy i struktury danych Wykład 5. Rok akademicki: / Pojęcie grafu Graf zbiór wierzchołków połączonych za pomocą krawędzi. Podstawowe rodzaje grafów: grafy nieskierowane,

Bardziej szczegółowo

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem

Bardziej szczegółowo

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

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny Klasa 2 INFORMATYKA dla szkół ponadgimnazjalnych zakres rozszerzony Założone osiągnięcia ucznia wymagania edukacyjne na poszczególne oceny Algorytmy 2 3 4 5 6 Wie, co to jest algorytm. Wymienia przykłady

Bardziej szczegółowo

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

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Załóżmy, że uprawiamy jogging i chcemy monitorować swoje postępy. W tym celu napiszemy program, który zlicza, ile czasu

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST) Drzewa ST i VL Drzewa poszukiwań binarnych (ST) Drzewo ST to dynamiczna struktura danych (w formie drzewa binarnego), która ma tą właściwość, że dla każdego elementu wszystkie elementy w jego prawym poddrzewie

Bardziej szczegółowo

Algorytmy sortujące i wyszukujące

Algorytmy sortujące i wyszukujące Algorytmy sortujące i wyszukujące Zadaniem algorytmów sortujących jest ułożenie elementów danego zbioru w ściśle określonej kolejności. Najczęściej wykorzystywany jest porządek numeryczny lub leksykograficzny.

Bardziej szczegółowo

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup Baltie 3 Podręcznik do nauki programowania dla klas I III gimnazjum Tadeusz Sołtys, Bohumír Soukup Czytanie klawisza lub przycisku myszy Czytaj klawisz lub przycisk myszy - czekaj na naciśnięcie Polecenie

Bardziej szczegółowo

Wykład 1: Wskaźniki i zmienne dynamiczne

Wykład 1: Wskaźniki i zmienne dynamiczne Programowanie obiektowe Wykład 1: Wskaźniki i zmienne dynamiczne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Podstawy programowania w C++ Wskaźniki 2 dr Artur Bartoszewski - Programowanie

Bardziej szczegółowo

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 WYKŁAD 10 Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 Tomasz Zieliński ZMIENNE O ZŁOŻONEJ BUDOWIE (1) Zmienne

Bardziej szczegółowo

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Wykład 2. Drzewa zbalansowane AVL i 2-3-4 Wykład Drzewa zbalansowane AVL i -3-4 Drzewa AVL Wprowadzenie Drzewa AVL Definicja drzewa AVL Operacje wstawiania i usuwania Złożoność obliczeniowa Drzewa -3-4 Definicja drzewa -3-4 Operacje wstawiania

Bardziej szczegółowo

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz Grafy (3): drzewa Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków UTP Bydgoszcz 13 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 1 / 107 Drzewo Definicja. Drzewo to graf acykliczny

Bardziej szczegółowo

Języki programowania obiektowego Nieobiektowe elementy języka C++

Języki programowania obiektowego Nieobiektowe elementy języka C++ Języki programowania obiektowego Nieobiektowe elementy języka C++ Roman Simiński roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Przetwarzanie tablic znaków Łańcuchy znakowe jako tablice znaków

Bardziej szczegółowo

Wstęp do informatyki

Wstęp do informatyki Wstęp do informatyki Algorytmy i struktury danych Piotr Fulmański Wydział Matematyki i Informatyki, Uniwersytet Łódzki, Polska 30 października 2009 Spis treści 1 Algorytm 2 Przetwarzane informacje 3 Struktury

Bardziej szczegółowo

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

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np. Drzewa binarne Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0 i T 1 są drzewami binarnymi to T 0 T 1 jest drzewem binarnym Np. ( ) ( ( )) Wielkość drzewa

Bardziej szczegółowo

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

dodatkowe operacje dla kopca binarnego: typu min oraz typu max: ASD - ćwiczenia IX Kopce binarne własność porządku kopca gdzie dla każdej trójki wierzchołków kopca (X, Y, Z) porządek etykiet elem jest następujący X.elem Y.elem oraz Z.elem Y.elem w przypadku kopca typu

Bardziej szczegółowo

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

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 2 Podstawy programowania 2 Temat: Zmienne dynamiczne tablica wskaźników i stos dynamiczny Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny 1.1 Tablice wskaźników Tablice

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Konwersje liczba napis Ćwiczenia 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12,

Bardziej szczegółowo

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu. Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą

Bardziej szczegółowo

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

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop. 2010 Spis treści Wstęp 11 Część I PASCAL - wprowadzenie do programowania strukturalnego

Bardziej szczegółowo

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

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Drzewa: BST, kopce Letnie Warsztaty Matematyczno-Informatyczne Drzewa: BST, kopce Definicja drzewa Drzewo (ang. tree) to nieskierowany, acykliczny, spójny graf. Drzewo może

Bardziej szczegółowo

Wstęp. #define include include include include include include

Wstęp. #define include include include include include include 1 FW WSTĘP 1 1. Wstęp. Przedstawiany tu program po wczytaniu tekstu ze standardowego wejścia wypisuje uporządkowaną alfabetycznie listę słów wraz z liczbą ich wystąpień w podanym tekście. Przez słowo rozumiemy

Bardziej szczegółowo

Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel Wstęp do programowania Drzewa podstawowe techniki Piotr Chrząstowski-Wachtel Drzewa wyszukiwań Drzewa często służą do przechowywania informacji. Jeśli uda sie nam stworzyć drzewo o niewielkiej wysokości

Bardziej szczegółowo

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

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy Wykład 3 Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy Dynamiczne struktury danych Lista jest to liniowo uporządkowany zbiór elementów, z których dowolny element

Bardziej szczegółowo

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.) Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.) Kontenery - - wektor vector - - lista list - - kolejka queue - - stos stack Kontener asocjacyjny map 2016-01-08 Bazy danych-1 W5 1 Kontenery W programowaniu

Bardziej szczegółowo

Wykład 3 Składnia języka C# (cz. 2)

Wykład 3 Składnia języka C# (cz. 2) Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest

Bardziej szczegółowo

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

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne 2 Algorytmy Nazwa algorytm wywodzi się od nazwiska perskiego matematyka Muhamed ibn

Bardziej szczegółowo

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki Typy wyliczeniowe Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Typy wyliczeniowe Służą do łatwiejszej kontroli nad stałymi Ustawianie parametrów o ściśle określonym zbiorze wartości

Bardziej szczegółowo

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

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne. Algorytm znaczenie informatyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

prowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325

prowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325 PODSTAWY INFORMATYKI WYKŁAD 8. prowadzący dr ADRIAN HORZYK http://home home.agh.edu.pl/~ /~horzyk e-mail: horzyk@agh agh.edu.pl tel.: 012-617 617-4319 Konsultacje paw. D-13/325 DRZEWA Drzewa to rodzaj

Bardziej szczegółowo