1 / 35

Podstawowe struktury danych. Typy danych.

Podstawowe struktury danych. Typy danych. AiSD_W3. Opracowali Anna Adrian i Kustra Piotr. d r inż. Kustra Piotr. Dane w matematyce i dane w programach komputerowych. W matematyce dane mogą być kwalifikowane według różnych kluczy i tak rozróżnia się np dane

kyrie
Download Presentation

Podstawowe struktury danych. Typy danych.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Podstawowe struktury danych. Typy danych. AiSD_W3 Opracowali Anna Adrian i Kustra Piotr dr inż. Kustra Piotr

  2. Dane w matematyce i dane w programach komputerowych W matematyce dane mogą być kwalifikowane według różnych kluczy i tak rozróżnia się np dane • rzeczywiste, zespolone, logiczne..... • pojedyncze, ciągi wartości, zbiory wartości, zbiory zbiorów..... • funkcje, funkcjonały, zbiory funkcji..... .itp W komputerowym przetwarzaniu danych obowiązują następujące zasady • każda stała, zmienna, wyrażenie, czy funkcja jest określonego typu • typ podaje się explicitew części deklaracyjnej programu, poprzedzającej użycie konkretnej danej (stałej, zmiennej) w części wykonawczej • kompilator dokonuje wyboru reprezentacji obiektów wewnątrz pamięci maszyny, co skutkuje przydziałem obszaru pamięci odpowiedniej wielkości (w zależności od typu).

  3. Rezerwacja pamięci komputerowej potrzebnej do realizacji algorytmu W JĘZYKU PASCAL CZĘŚĆ OPISOWA/DEKLARACYJNA Rezerwacja pamięci komputerowej deklaracje typów danych CZĘŚĆ WYKONAWCZA Algorytm

  4. Dane • Dane wejściowe (w programie komputerowym) – stanowią surowiec, który będzie przetworzony (według pewnego algorytmu) w produkt czyli w dane wynikowe. • Zbiór danych (model), mający reprezentować rzeczywistą sytuację, określa człowiek na podstawie przekonania, iż pewne cechy (własności) badanych obiektów są istotne dla rozwiązania rozważanego problemu i będzie można z nich uzyskać oczekiwane wyniki - wybór danych jest więc podporządkowany rozwiązywanemu problemowi. • Wybór formy reprezentacji danych w systemie powinien uwzględniać możliwości komputera (narzędzia użytego do rozwiązania problemu).

  5. Typy danych Typ danej dokładnie określa zbiór wartości do którego należy stała, jakie może przyjmować zmienna czy wyrażenie, bądź jakie mogą być generowane przez operator lub funkcję. • Typ wartości oznaczonej przez stałą, zmienną lub wyrażenie można określić na podstawie ich postaci bądź deklaracji, bez konieczności wykonywania procesu obliczeniowego. • Każdy operator lub funkcja ma argumenty określonego typu, jak również daje wynik ustalonego typu ( typ wyniku określany jest regułami specyficznymi dla danego języka). function suma(x:integer, y: integer) :integer; • Kompilator może korzystać z informacji o typach w celu sprawdzenia poprawności konstrukcji językowych np. przypisanie wartości logicznej zmiennej rzeczywistej zostanie wykryte bez wykonywania programufunction suma(x:real, y: integer) :??????;

  6. Definiowanie typu danych Programista ma możliwość definiowania typów danych • Najczęściej typy danych definiuje się za pomocą typów danych zdefiniowanych wcześniej. • Wartości typu złożonego są zwykle konglomeratami wartości składowych o wcześniej zdefiniowanych typach składowych (constituent types); - są to tzw. wartości ustrukturowane. • Jeśli wszystkie wartości składowe są tego samego typu, to nazywa się on typem podstawowym (base type) • Jeśli wartości typu są uporządkowane, to typ nazywa się uporządkowany (ordered) albo skalarny (scalar) • Liczbę różnych wartości należących do typu T nazywa się mocą typu (cardinality) • Moc typu pozwala określić wielkość pamięci potrzebnej do reprezentowania zmiennej typu T type sekwencja definicji typów Identyfikator_typu = opis_typu;

  7. Proste typy danych-typ wyliczeniowy type T= (c1,c2,....,cn) Moc (T)= n Przykłady type płeć = (mężczyzna, kobieta) – uwaga tak nie można pisać w Pascalu type dzientygodnia = (poniedzialek, wtorek,... ,niedziela) type Boolean = ( false, true) Identyfikatory typów np. kolor, płeć.. Mogą zostać użyte w programie jako stałe oznaczające zbiory wartości definiowanego typu. Wprowadźmy zmienne var p: płeć var d: dzientygodnia var b: Boolean Możliwe są wtedy następujące instrukcje przypisania p:=mężczyzna; d:=niedziela; b:=true

  8. Przykład typów wyliczeniowych w Turbo Pascal program TypyDanych; type Miesiace = (Styczen , Luty , Marzec); var Aktualny_miesiac : Miesiace ; begin Aktualny_miesiac := Luty ; Writeln(Aktualny_miesiac); Aktualny_miesiac := Kwiecien ; // błąd przypisania !!! Readln; end.

  9. Standardowe typy proste -STP Istnieją pewne typy standardowe ( standardtypes), na ogół zawierają one liczby i wartości logiczne, które w większości maszyn cyfrowych występują jako „możliwości wbudowane”. Należą do nich : • Zbiór liczb całkowitych integer • Zbiór wartości logicznych Boolenan • Zbiór znaków drukarki char • Liczby rzeczywiste real

  10. STP: liczby całkowite ShortInt [-128..127] zajmuje 1 bajt pamięci Byte [0..255] zajmuje 1 bajt pamięci Integer [-32 768..32768] zajmuje 2 bajty pamięci Word [0..65 535] zajmuje 2 bajty pamięci LongInt [-2 147 483 648.. 2 147 483 648] zajmuje 4 bajty pamięci Zakłada się, że wszystkie operacje wykonywane na danych tego typu • są dokładne, • odpowiadają podstawowym prawom arytmetyki, • wykonanie programu zostanie przerwane, gdy wynik obliczeń znajdzie się poza reprezentowanym podzbiorem • standardowe operatory zachowujące typ +, -,*, div (dzielenie całkowite), mod

  11. Przykład zmiennych w Turbo Pascal program project1; var sum: word; size: integer; i: integer; begin size:=10; sum:=0; for i:=1 to size do begin sum:=sum+1; end; end.

  12. STP- liczby rzeczywiste Real (2.9e-39, 1.7e38)zajmuje 6 bajtów pamięci Single (1,5e-45,3.4e38)zajmuje 4 bajty pamięci Double (5.0e-324,1.7e308) zajmuje 8 bajtów pamięci Extended (3.4e-4932,1.1e4932) zajmuje10 bajtów pamięci Comp (--9.2e18,9.2e18)zajmuje 8 bajtów pamięci, są to liczby całkowite zapisane jako rzeczywiste(zmiennoprzecinkowe) Wymienione tu typy oznaczają podzbiory zbioru liczb rzeczywistych.. Podstawowe operatory arytmetyczne to +,-,*,/ Arytmetyka liczb rzeczywistych dopuszcza wyniki niedokładne, spowodowane błędami zaokrągleń powstających w rezultacie wykonywania obliczeń na skończonej liczbie cyfr

  13. Typy logiczne Boolean zajmuje 1 bajt pamięci ByteBoolzajmuje 1 bajt pamięci WordBool zajmuje 2 bajty pamięci LongBool zajmuje 4 bajty pamięci Podstawowym typem logicznym w programach Pascalowych jest typ Boolean, pozostałe typy stosuje się dla zapewnienia zgodności programów pascalowych z programami (bibliotekami) napisanymi w innych językach oraz ze środowiskiem Windows.

  14. Typ znakowy Do oznaczenia typu znakowego służy predefiniowany identyfikator Char Elementami typu znakowego są znaki ASCII, zawiera 95 znaków drukowanych (graficznych i 33 znaki sterujące. Zbiór zawierający 64 znaki drukarki ( bez małych liter jest znany jako ograniczony zbiór znaków ASCII Po wczytaniu zmiennej typu Char, wprowadzany jest deklarowany znak i przypisywany zmiennej. string Wprowadzany jest ciąg znaków o długości nie większej od długości łańcucha i nie większej niż liczba znaków bieżącego wiersza ( tj do znaku CR ale bez niego) po czym ciąg jest przypisywany zmiennej.

  15. Typ Char Do oznaczenia typu znakowego służy predefiniowany identyfikator Char Przy konstruowaniu algorytmów w których korzysta się ze znaków (wartości typu char) należy pamiętać o tym, że: • typ char zawiera 26 liter łacińskich, 10 cyfr arabskich i pewną liczbę innych znaków graficznych w tym np znaków przystankowych; • Podzbiory liter i cyfr są uporządkowane i spójne, tzn: ( ‘A’<=x) i (x<=‘Z’) oznacza, że x jest literą ( ‘0’<=x) i (x<=‘9’) oznacza, że x jest cyfrą • Typ char zawiera znak pusty (spację), którego można używać jako separatora • Istneje możliwość stosowania dwóch funkcji konwersji pomiędzy typami char i integer. • char (i) oznacza i-ty znak ze zbioru char char(ord(c))=c • ord (c) oznacza liczbę porządkową znaku c w zbiorze char ord(char(i))=i • Funkcje konwersji mają zastosowanie do przekształceń liczb na ciągi cyfr i odwrotnie: np. • f(c)-ord(c)- ord (‘0’) tj pozycja c wśród cyfr f(‘3’)=3 • g(i) = char (i) + ord(‘0’) i-ta cyfra, g(5)=‘5’

  16. Char w Turbo Pascal program znaki; var imie: array[1..10] of char; nazwisko: array[1..10] of char; ImieNazwisko: array[1..15] of char; begin imie:=' Jan'; nazwisko:='Kowalski'; ImieNazwisko:=imie + nazwisko; ImieNazwisko[10]:='X'; writeln(ImieNazwisko); readln; end.

  17. String w Turbo Pascal program CiagiZnakow; var imie: string; nazwisko: string; ImieNazwisko: string; begin write('Podaj imie'); readln(imie); nazwisko:=' Kowalski'; ImieNazwisko:=imie + nazwisko; writeln(ImieNazwisko); readln; end.

  18. Typy okrojone Type T= min..max Przykłady type rok= 1900..1999 type litera=‘A’..’Z’ type cyfra=‘0’..’9’ Dla zmiennych Var y:rok Var L:litera Dozwolone są przypisania y:=1973 i L=‘K’

  19. Definiowanie typów złożonych • Metoda polegająca na wyliczaniu wartości tworzących typ, wymaga by składowe były „atomowe” np. type kształt= (prostokąt, kwadrat, koło, elipsa) typ o nazwie kształt ma jedynie składowe: prostokąt, kwadrat, okrąg elipsa i żadnych innych • Definiowanie typów złożonych (ustrukturowanych) polega na tworzeniu konglomeratów wartości składowych o pierwotnie zdefiniowanych typach składowych • Typ składowy także może być typem złożonym, o dowolnym stopniu zagnieżdżenia. np • type pociąg = ( lokalny, dalekobieżny, międzynarodowy) • type środeklokomocji= (pociąg, samochód, autobus, statek, samolot) • type struktura = (plik, tablica, rekord, zbiór)

  20. Struktury danychTypy złożone danych Podstawowe statyczne struktury danych to: • Tablica, rekord, zbiór i ciąg (plik) Dynamiczne struktury informacyjne to: • Listy, pierścienie, drzewa, grafy skończone

  21. Podstawowe struktury danych Statyczne struktury danych to takie, dla których poprzez zdefiniowanie typu danych ustalono raz na zawsze: • Zakres przyjmowanych wartości • Wzorzec pamięciowy (określono potrzebne zasoby pamięci) Rozmiar statycznych struktur danych nie ulega zmianie w trakcie działania programu!!! Podstawowymi strukturami statycznymi są: tablica, rekord i zbiór, plik, które: • najczęściej występują w praktyce • stanowią elementy do budowy struktur bardziej złożonych, w tym również struktur dynamicznych.

  22. Tablice statyczne name: array[1..10] of type; -> tab: array[1..10] of integer; Tablica jest strukturą jednorodną, o dostępie swobodnym, złożoną ze składowych tego samego typu (integer, real, char ), zwanego typem podstawowym. tab[5]:=10; tab[2]:=-6; tab[9]:=tab[5]+tab[2] Indeks, służący do wybierania (identyfikowania) pojedynczej składowej tablicy jest również wartością pewnego typu indeksującego I(integer).

  23. Tablice statyczne Zmienna tablicowa traktowana jako tablica zmiennych składowych, umożliwia selektywne aktualizowanie poszczególnych składowych. Indeksy tablicy (nazwy zmiennych składowych) muszą być elementami zdefiniowanego typu skalarnego. Indeksy mogą być obliczane tzn. stała indeksowa może być zastąpiona wyrażeniem indeksowym. Indeksem staje się obliczona wartość i tu uwzględnić należy, że wartość wynikowa może znaleźć się poza dopuszczalnym zakresem indeksów tablicy. Co wtedy? i:=4; tab[i]:=20; i:=i+8; tab[i]:=-22; i=12?? tab[12?]:=-22;

  24. Tablice złożone z tablic - macierze Składowe typów mogą być również złożone. Tablica, której składowe są tablicami, nazywana jest macierzą (matrix), np. tablica M jest macierzą 53, o 5 składowych W, z których każda jest tablicą o 3 składowych typu real M: array [1..5] of W Type W = array[1..3] of real inaczej M: array [1..5] of array [1..3] of real; M: array [1..5,1..3] of real;

  25. Wektory statyczne w Turbo Pascal begin for i:=1 to 10 do begin tab[i]:=i*5; write(tab[i],' '); end; writeln; readln; end. program wektor; var imie: array[1..10] of char; tab: array [1..10] of integer; i: integer;

  26. Macierze statyczne w Turbo Pascal begin for i:=1 to 10 do begin for j:=1 to 5 do begin M[i,j]:=i*j; write(M[i , j],' '); end; end; writeln; readln; end. program macierz; var M: array [1..10] of array [1..5] of integer; M2: array [1..10,1..5] of real; i: integer; j: integer; tab: array[1..5,1..5,1..5] of integer; tab[1,4,2]:=33;

  27. Program na obliczanie iloczynu macierzy A(m,n) i B(n,p), której wynikiem jest macierz C(m,p) cik= aij* bjk , i=1,2....,m k=1,2......,p program ilmacierzy; var i,j,k,m,n,p : Integer; suma : Real; a, b, c :array [1..20, 1..20] of Real; begin .... for i:=1 to m do for k:=1 to p do begin suma :=0; for j:=1 to n do suma:=suma +a[i,j]*b[j,k]; c[i,k]:=suma end ; ..... end.

  28. Przykład typów w Turbo Pascal typekomputer=record • nCPU: integer; • nazwa: string; • dlugosc: real; • wysokosc: real; • RamGB: integer; end; var komp1: komputer; komp2: komputer; komp: array [1..10] of komputer; begin komp1.nCPU:=4; komp2.RamGB:=8; komp[1].nCPU:=5; end.

  29. Przykład rekordu w Turbo Pascal program ComplexData; type complex = record re, im: Real; end; var cmp: complex; begin cmp.re:=1; cmp.im:=1; writeln(cmp.im); readln; end.

  30. Konstrukcja typu rekordowego var os1: osoba; begin os1.imie:='Jan'; os1.nazwisko:='Kowalski'; os1.plec:=mezczyzna; os1.dataur.dzien:=4; os1.dataur.miesiac:=9; readln; end. program person; type data = record dzien: 1..31; miesiac: 1..12; rok: 1..2100; end; type Osoba = record nazwisko, imie: string; dataur: Data; case plec: (mezczyzna, kobieta) of mezczyzna: (waga: real; brodaty: boolean;); kobieta: (wymiary: array [1..3] of integer) end;

  31. Rekordy z wariantami type wspolrzędne= recordcase rodzaj (kartezjanskie, biegunowe) of kartezjanskie : (x,y: real); biegunowe: (r: real; : real) end Nazwą pola znacznikowego jest tu rodzaj współrzędnych Zbiór wartości typu (T) wspolrzedne jest sumą dwóch typów: T1 = (x,y: real) T2 = (r: real; : real) Moc (T) = moc (T1) + moc (T2)

  32. Struktura zbioru type T = set of T Przykład typezbiorcalk = set of 0..30 typezbiorznakow = set of char type stanwiedzy = set of stan type stan= (niezadawalający, dostateczny, dobry, bardzodobry)

  33. Fizyczne zbiory danych Do wprowadzania danych i wyprowadzania wyników służą urządzenia zewnętrzne komputera: klawiatura i ekran monitora - to standard, • ale także drukarka, • dyski elastyczne (dyskietki), • dyski stałe optyczne-CD itp. Dane wprowadzane z tych urządzeń lub wyprowadzane poprzez te urządzenia nazywamy "fizycznymi zbiorami danych" , a ich logicznymi modelami są "pliki ".

  34. Przetwarzanie plików Opis zmiennej plikowe( w części opisowej) Skojarzenie pliku z fizycznym zbiorem danych Assign( identyfikator pliku, wyrażenie łańcuchowe) Otwarcie pliku Rewrite(zmienna -plikowa) Reset(zmienna -plikowa) Append( zmienna plikowa) Wykonanie operacji na pliku Zamknięcie pliku Close(zmienna plikowa)

  35. Operacje wykonywane na pliku -zakładanie pliku, -wprowadzanie elementów do założonego pliku, -dodawanie elementów do już istniejącego pliku, -przeszukiwanie i odnajdywanie określonych elementów w pliku, -wyprowadzanie elementów z pliku, -wymiana elementów pliku,

More Related