INFORMATYKA DANE.

Podobne dokumenty
Podstawy Informatyki. Wykład 6. Struktury danych

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

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

Abstrakcyjne struktury danych - stos, lista, drzewo

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

Struktury danych: stos, kolejka, lista, drzewo

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

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:

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

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

Listy, kolejki, stosy

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:

Rekurencja. Przygotowała: Agnieszka Reiter

Algorytmy i Struktury Danych

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

Wstęp do programowania


Tablice. Jones Stygar na tropie zmiennych

Matematyczne Podstawy Informatyki

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

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

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

Podstawy Programowania C++

Programowanie obiektowe

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

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

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

Definicje. Algorytm to:

WSTĘP DO INFORMATYKI. Struktury liniowe

Programowanie obiektowe

Podstawowe struktury danych

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

Lista, Stos, Kolejka, Tablica Asocjacyjna

Teoretyczne podstawy informatyki

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

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

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

Przykładowe B+ drzewo

Pole wielokąta. Wejście. Wyjście. Przykład

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

Algorytmy i. Wykład 3: Stosy, kolejki i listy. Dr inż. Paweł Kasprowski. FIFO First In First Out (kolejka) LIFO Last In First Out (stos)

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

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

Programowanie obiektowe

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

Algorytm. Krótka historia algorytmów

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

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Kompletna dokumentacja kontenera C++ vector w -

Lab 9 Podstawy Programowania

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

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

Matematyczne Podstawy Informatyki

Przedmiotowe zasady oceniania i wymagania edukacyjne z matematyki dla klasy drugiej gimnazjum

Struktury Danych i Złożoność Obliczeniowa

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

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

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

Podstawy Informatyki. Wykład 4. Struktury danych

ZESPÓŁ SZKÓŁ W OBRZYCKU

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

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

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

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

Struktury danych (I): kolejka, stos itp.

Składnia rachunku predykatów pierwszego rzędu

Notacja RPN. 28 kwietnia wyliczanie i transformacja wyrażeń. Opis został przygotowany przez: Bogdana Kreczmera.

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Algorytmy i struktury danych. wykład 5

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

Odwrotna Notacja Polska

Generacja kodu docelowego

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

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

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

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

1. Kalkulator czterech działań. 2. Konwersja ciągu znaków do tablicy.

Indukowane Reguły Decyzyjne I. Wykład 3

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

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

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

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

a) 7 b) 19 c) 21 d) 34

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Matematyka dyskretna - 7.Drzewa

Teoria grafów podstawy. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Algorytmy i Struktury Danych.

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

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

Bazy danych TERMINOLOGIA

Temat: Algorytm kompresji plików metodą Huffmana

Podstawy i języki programowania

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

Zaawansowane algorytmy i struktury danych

Wymagania na poszczególne oceny w klasie II gimnazjum do programu nauczania MATEMATYKA NA CZASIE

Algorytmy i Struktury Danych.

Teoretyczne podstawy informatyki

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

Transkrypt:

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 z pojęciem przetwarzania danych. Przetwarzanie danych oznacza przekształcanie danych wejściowych w ściśle określony sposób w celu uzyskania wyników w z góry określonej postaci. Różne dane mogą dostarczać tę samą informację, ale jednocześnie te same dane mogą też dostarczać różnych informacji. Z drugiej strony, np. zbiory liczb czy wyrazów mogą być danymi, o ile znane jest ich znaczenie. W przeciwnym przypadku nie są informacjami.

KIPU przykład zbioru danych nie będących dla nas informacją

Typy danych Typ danych to opis rodzaju, struktury i zakresu wartości, jakie mogą przyjmować dane. Każda stała, zmienna, wyrażenie, funkcja jest daną pewnego typu. Typ danych określa zbiór wartości do którego należy stała które może przyjmować zmienna i wyrażenie które może zwracać funkcja lub operator Podział typów danych proste arytmetyczne (całkowite, rzeczywiste) znakowe złożone tablice struktury

PRZYKŁADOWE TYPY DANYCH typ całkowity typ reprezentujący liczby całkowite z określonego zakresu typ zmiennoprzecinkowy typ reprezentujący przybliżoną wartość liczby rzeczywistej typ stałopozycyjny typ reprezentujący liczbę wymierną o stałym mianowniku. typ znakowy typ reprezentujący pojedynczy znak (ASCII lub Unicode) typ tekstowy typ reprezentujący cały tekst. typ wyliczeniowy typ mogący przyjmować jedną z zadanych symbolicznych wartości, np. (czerwony, zielony, niebieski) typ tablicowy ciąg zmiennych zadanego typu, indeksowanych liczbą naturalną lub dowolnym unikalnym kluczem który może być zarówno liczbą jak i ciągiem znaków typ logiczny typ przyjmujący wartości logiczne 1 (true, t) lub 0 (false, nil) typ bitowy typ reprezentujący ciąg bitów typ zespolony reprezentujący liczby zespolone. typ etykietowy reprezentujący wartości będące etykietami instrukcji, wskazaniami instrukcji.

Typy danych Typy danych należą do pojęć logicznych, same nie stanowią obiektu, który można wykorzystać w programie. Reprezentantami typów w programach są zmienne, czyli obiekty posiadające trzy podstawowe atrybuty: symboliczną nazwę (identyfikator), miejsce przechowywania i wartość oraz czasami dodatkowy atrybut, tj. typ. Zmienne zajmują pewien obszar w pamięci operacyjnej komputera, którego rozmiar i sposób interpretacji określony jest przez typ zmiennej.

Zmienne Zmienne - służą do przechowywania w pamięci pojedynczych obiektów 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

STRUKTURA DANYCH Struktura danych to sposób uporządkowania informacji/danych. Podstawowe struktury danych: stos kolejka lista drzewo graf tablica rekord lub struktura Wybór odpowiedniej dla danego przypadku struktury danych może zmniejszyć złożoność obliczeniową rozwiązywanego problemu, z drugiej jednak strony może prowadzić do wzrostu trudności z implementacją.

STOS Jest to liniowa struktura danych, w której dane dokładane są na wierzch stosu i z wierzchołka stosu są pobierane (bufor typu LIFO, Last In, First Out; ostatni na wejściu, pierwszy na wyjściu). Do elementu stosu znajdującego się poniżej wierzchołka jest dostęp tylko po zdjęciu elementów znajdujących się między nim a wierzchołkiem Ideę stosu danych można zilustrować jako stos położonych jeden na drugim talerzy nowy talerz kładzie się na wierzch stosu i z wierzchu stosu zdejmuje się kolejne egzemplarze.

STOS Możliwe są następujące operacje na elementach stosu: odłożenie na stos jednego elementu pobranie ze stosu jednego elementu sprawdzenie, czy stos pusty

STOS dno stosu Stos jest pusty

STOS dno stosu Stos jest pusty

STOS dno stosu

STOS dno stosu

STOS dno stosu

STOS dno stosu

STOS dno stosu

STOS dno stosu

STOS dno stosu Stos jest pełny

STOS dno stosu Stos jest pełny

STOS dno stosu

STOS dno stosu

STOS dno stosu

STOS dno stosu

STOS dno stosu

STOS dno stosu

STOS dno stosu Stos jest pusty

PRZYKŁAD STOSU - WIEŻE HANOI Ułóż stos na trzecim patyku przestrzegając następujących reguł: - przesuwaj jeden krążek z wierzchu stosu, - nie kładź większego krążka na mniejszym

PRZYKŁAD STOSU - WIEŻE HANOI Rozwiązaniem zagadki jest ustawienie wieży na słupku 'C' w jak najmniejszej liczbie ruchów, gdzie ruchem jest przeniesienie pojedynczego krążka ze słupka na słupek, z ograniczeniem że nie można kłaść większego krążka na mniejszy.

PRZYKŁAD STOSU - WIEŻE HANOI Rozwiązanie. Niech A B oznacza przeniesienie szczytowego krążka z kołka A na B. Ciąg: A B, A C, B C, A B, C A, C B, A B A C, B C, B A, C A, B C, A B, A C, B C jest rozwiązaniem zadania.

PRZYKŁAD STOSU - WIEŻE HANOI A B C 1 2 3 4 2 3 4 1 3 4 1 2 3 4 1 2 4 3 1 2 1 4 3 2 1 4 2 3 4 1 2 3 1 2 3 4 2 3 1 4 2 3 1 4 1 2 3 4 1 2 3 4 2 1 3 4 1 2 3 4 1 2 3 4 Rozwiązanie: A B, A C, B C, A B, C A, C B, A B A C, B C, B A, C A, B C, A B, A C, B C

PRZYKŁAD STOSU - WIEŻE HANOI Rozwiązanie rekurencyjne (B. Wierzba): 1. Zidentyfikuj największy krążek na nie swoim miejscu (=krążek N) 2. If daje się go przenieść na docelowy słupek Then przenieś Else 3. Pod zadanie: ustaw (N 1)-krążkową wieżę na niedocelowym słupku. 4. Skocz do punktu 1....

PRZYKŁAD STOSU - WIEŻE HANOI procedura przenieś(n,a,b,c){ //przenieś N z A na B używając C if(n==1) wypisz(a," ", B); else{ przenieś(n-1,a,c,b); //przenieś N-1 z A na C używając B wypisz(a," ",B); przenieś(n-1,c,b,a); //przenieś N-1 z C na B używając A } }

ODWROTNA NOTACJA POLSKA Stos znajduje zastosowanie m.in. przy obliczaniu wyrażeń zapisanych za pomocą tzw. odwrotnej notacji polskiej (ONP). ONP jest sposobem zapisu wyrażeń arytmetycznych, w którym znak wykonywanej operacji umieszczony jest po zmiennych, a nie pomiędzy nimi jak w konwencjonalnym zapisie algebraicznym. Algorytm obliczeń: Wyzeruj stos. Dla wszystkich symboli z wyrażenia RPN wykonuj: jeśli i-ty symbol jest liczbą, to odłóż go na stos, jeśli i-ty symbol jest operatorem to: zdejmij ze stosu jeden element (ozn. a), zdejmij ze stosu kolejny element (ozn. b), odłóż na stos wartość b operator a. Zdejmij ze stosu wynik.

ODWROTNA NOTACJA POLSKA Zapis ten pozwala na całkowitą rezygnację z użycia nawiasów w wyrażeniach, jako że jednoznacznie określa kolejność wykonywanych działań. ONP bardzo ułatwia wykonywanie na komputerze obliczeń z nawiasami i zachowaniem kolejności działań. Przykład 1 Zapis konwencjonalny: (3+4)*5 zapis w ONP: 3 4 + 5 * Przykład 2 Zapis konwencjonalny: ((2+3)/5+(10-5)*4)/2 zapis w ONP: 2 3 + 5 / 10 5-4 * + 2 /

ODWROTNA NOTACJA POLSKA Przykład: Gdy wczytany element jest liczbą, to zapisujemy ją na stos. W przeciwnym wypadku należy wykonać działanie arytmetyczne na 2 ostatnich liczbach na stosie. Wartość wyrażenia znajduje się na stosie. Wyrażenie 12+2*[(3*4)+(10/5)] ONP: 12 2 3 4 * 10 5 / + * +

KOLEJKA Jest to liniowa struktura danych, w której nowe dane dopisywane są na końcu kolejki, a z początku kolejki pobierane są dane do dalszego przetwarzania (bufor typu FIFO, First In, First Out; pierwszy na wejściu, pierwszy na wyjściu). Dostęp do danych jest w takiej kolejności, w jakiej zostały zapisane.

KOLEJKA Proces dopisywania nowych danych. początek kolejki koniec kolejki

KOLEJKA Proces odczytywania danych. A B C D początek kolejki koniec kolejki

RODZAJE KOLEJEK Kolejka, spotykana jest przede wszystkim w sytuacjach związanych z obsługą zdarzeń. Kolejka priorytetowa, w której danym dodatkowo przypisywany jest priorytet, modyfikujący kolejność późniejszego wykonania, co oznacza iż dane pierwsze na wyjściu nie zawsze odczytane będą w pierwszej kolejności, lecz te o największym priorytecie. Kolejkę priorytetową stosuje się m.in. w systemach operacyjnych, gdzie przydzielane są zasoby sprzętowe uruchomionym procesom. Kolejka cykliczna, w której pierwszy element uważa się za następny w stosunku do ostatniego.

LISTA Lista, to liniowa struktura danych tworząca zbiór, z którego w dowolnym miejscu można usunąć element, jak również dołączyć w dowolne miejsce. Podstawowe rodzaje list: jednokierunkowa dwukierunkowa Każdy element listy składa się z przynajmniej dwóch pól: tzw. klucza oraz pola wskazującego na następny element listy. W przypadku list dwukierunkowych każdy element listy zawiera także pole wskazujące na poprzedni element listy.

LISTA Proces dopisywania nowych danych. A B D

LISTA Proces dopisywania nowych danych. C A B D

LISTA Proces usuwania danych. A B C D

DRZEWO Jest to struktura danych o ułożeniu hierarchicznym. Reprezentując w naturalny sposób hierarchię danych ułatwia i przyspiesza wyszukiwanie, a także pozwala w łatwy sposób operować na posortowanych danych. Drzewa są stosowane praktycznie w każdej dziedzinie informatyki (bazy danych, grafika komputerowa, przetwarzanie tekstu, telekomunikacja, itp.). Drzewa składają się z węzłów (wierzchołków) oraz łączących je krawędzi. Jeden z wierzchołków jest wyróżniony i nazywany korzeniem drzewa, natomiast ciąg krawędzi łączących węzły określa się terminem ścieżka. Istnieje dokładnie jedna ścieżka łącząca korzeń z wszystkimi pozostałymi węzłami. Liczba krawędzi w ścieżce od korzenia do węzła jest nazywana długością i określa poziom węzła. Wysokością drzewa jest największy poziom istniejący w drzewie. Wszystkie wierzchołki połączone z danym wierzchołkiem, a leżące na następnym poziomie są nazywane jego dziećmi. Wierzchołek może mieć dowolną liczbę dzieci, jeśli nie ma ich wcale nazywany jest liściem. Wierzchołek jest rodzicem dla każdego swojego dziecka. Każdy węzeł ma dokładnie jednego rodzica, wyjątkiem jest korzeń drzewa, który nie ma rodzica. Specjalne znaczenie w informatyce mają drzewa binarne, w których liczba dzieci ograniczona jest do dwóch. Drzewa które posiadają więcej niż dwoje dzieci są nazywane drzewami wyższych rzędów.

PRZYKŁADOWE DRZEWO BINARNE A poziom 0 B C poziom 1 D E F G poziom 2 H I J K poziom 3 L M N O poziom 4 P Q R Legenda: poziom 5 A korzeń = wysokość E, J, N, O, P, Q, R liście B, C, D, F, G, H, I, K, L, M węzły wewnętrzne

DRZEWO GENEALOGICZNE http://pl.wikipedia.org/wiki/drzewo_genealogiczne

WYWÓD GENEALOGICZNY układ kołowy http://pl.wikipedia.org/wiki/tablica_przodków

GRAF Jest to zbiór wierzchołków, które mogą być połączone krawędziami, w taki sposób, że każda krawędź kończy się i zaczyna w którymś z wierzchołków. Grafy to podstawowy obiekt rozważań teorii grafów. Twórcą teoretykiem grafów był Leonarda Eulera, który rozstrzygnął zagadnienie mostów królewieckich. Wierzchołki grafu zwykle są numerowane i czasem stanowią reprezentację jakichś obiektów, natomiast krawędzie mogą wówczas obrazować relacje między takimi obiektami. Krawędzie mogą mieć wyznaczony kierunek, a graf zawierający takie krawędzie jest grafem skierowanym. Krawędź może posiadać także wagę, to znaczy przypisaną liczbę. Grafy stosowane są m.in. do oznaczenia odległości na mapach pomiędzy dwoma dowolnymi miejscami lub czasu potrzebnego do przebycia tej odległości. W grafie skierowanym wagi mogą być zależne od kierunku przechodzenia przez krawędź, co stosuje się np. na mapach terenów górskich, na którym czas marszu pod górę jest inny niż z góry). Specyficznym typem grafu jest drzewo.

GRAF prezentacja graficzna

TABLICA Jest to struktura danych, w której poszczególne dane są dostępne dzięki tzw. kluczom (indeksom), przyjmującym najczęściej wartości numeryczne. Rozmiar tablicy jest albo ustalony z góry (tablice statyczne), albo może się zmieniać w trakcie wykonywania programu (tablice dynamiczne). Praktycznie wszystkie języki programowania obsługują tablice. W matematyce odpowiednikiem tablicy jednowymiarowej jest ciąg, a tablicy dwuwymiarowej - macierz.

Tablica jednowymiarowa (wektor) Służy 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 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

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 Odwołanie się do elementu o indeksie i oraz j tablicy M: M[i][j], np. wypisz(m[i][j]); //wypisz wartość i-tego elementu tablicy M 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ą.

STRUKTURA LUB REKORD Jest to złożony typ danych, grupujący logicznie powiązane ze sobą dane różnego typu w jednym obszarze pamięci. Składowe struktury - pola - są etykietowane, tj. mają swoje unikatowe nazwy; poprzez podanie nazwy otrzymuje się dostęp do danego pola. Struktury są powszechnie stosowane w programowaniu, pozwalając w przejrzysty sposób opisywać złożone obiekty. Przykładem struktury może być informacja o książce, której pola będą zawierały: imię i nazwisko autora (typ łańcuchowy), tytuł (typ łańcuchowy), rok wydania (liczba całkowita), liczba stron (liczba całkowita), nazwa wydawnictwa, numer ISBN itp.

KONIEC