Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Podstawowe struktury danych. Typy danych.

Podobne prezentacje


Prezentacja na temat: "Podstawowe struktury danych. Typy danych."— Zapis prezentacji:

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

2 Dane w matematyce i dane w programach komputerowych
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ę explicite w 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 programu function 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 ( standard types), 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 [ ] zajmuje 2 bajty pamięci Word [ ] zajmuje 2 bajty pamięci LongInt [ ] 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 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
ByteBool zajmuje 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 danych Typy 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). 1 2 3 4 5 6 7 8 9 10  integer integer  1 2 3 4 5 6 7 8 9 10  0 -6  10  4

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; 1 2 3 4 5 6 7 8 9 10  0 -6  20  10  4

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; 1 2 3 4 5 1 2 3 4 5 1,1 0,5 2,1 3,66 5,56 6 9 12 15 3,3 18,9 43,9 83,4

25 Wektory statyczne w Turbo Pascal
begin for i:=1 to 10 do 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
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; begin for i:=1 to 10 do for j:=1 to 5 do M[i,j]:=i*j; write(M[i , j],' '); end; writeln; readln; end. 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, ,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 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
type komputer=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: ; 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)

31 Rekordy z wariantami type wspolrzędne=
record case 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 type zbiorznakow = set of char
Przykład type zbiorcalk = set of 0..30 type zbiorznakow = 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,


Pobierz ppt "Podstawowe struktury danych. Typy danych."

Podobne prezentacje


Reklamy Google