Podstawowe struktury danych. Typy danych.

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Katarzyna Szafrańska kl. II ti
Język C/C++ Funkcje.
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Zmienne i Typy.
PASCAL (3) dr Anna Kwiatkowska.
Języki programowania C++
PROGRAMOWANIE STRUKTURALNE
Metody numeryczne Wykład no 1.
OBJECT PASCAL Marzena Szałas.
ZŁOŻONOŚĆ OBLICZENIOWA
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 3: Podstawowe elementy języka.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 6: Tablice, rekordy, zbiory.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 5: Typy porządkowe, wyliczeniowe i okrojone. Definiowanie.
Rekurencja Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Rekurencja Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Katarzyna Szafrańska kl. II TI
Tablice.
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
Dynamiczne struktury danych 1
Tablice jednowymiarowe 1
Typy danych – podstawy 1 W Adzie wszystkie dane muszą być określonego typu. Definicja Typ danych (data type) jest to zbiór wartości i operacji, które można.
Wykład 2 struktura programu elementy języka typy zmienne
Wstęp do programowania obiektowego
Wstęp do interpretacji algorytmów
PASCAL Dr Anna Kwiatkowska.
Wprowadzenie do programowania w języku Turbo Pascal
Typy wyrażenia, schematy blokowe, writeln, readln, if, pętle
Podprogramy.
Typy złożone, case, stałe. Typ zbiorowy type typ_zb = set of typ_podstawowy; Typem podstawowym może być tylko typ porządkowy. Typem podstawowym może być
Polsko – Japońska Wyższa Szkoła Technik Komputerowych
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE WYKŁAD 2
Programowanie w języku Fortran 95
Podstawy programowania
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Podstawy programowania
Programowanie w języku Matlab
Programowanie strukturalne i obiektowe
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
Algorytmy z przykładami w Turbo Pascal 7.0
20 września 2003r. Centrum Kształcenia Ustawicznego im. St. Staszica w Koszalinie Wstęp do algorytmiki Autor: Marek Magiera.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Wyrażenia w Turbo Pascalu.
Procedury i funkcje.
Pliki Pojęcie i rodzaje plików Definicja typu plikowego Operacje wykonywane na plikach elementowych.
Informatyka I Wykład 4 Stałe Stałe liczbowe Stałe znakowe Stałe tekstowe Jerzy Kotowski Politechnika Wroclawska var = 5L - 0xA; -5.
Zbiory i rekordy mgr inż. Agata Pacek. Deklaracja typu zbiorowego (określa ilość elementów w zbiorze) type biegi=set of 0..6; Definiowanie zmiennej typu.
Visual Basic for Applications Poziom podstawowy Zajęcia 2
Wykład 10 typ zbiorowy rekurencja.
Podstawy języka Instrukcje - wprowadzenie
Algorytmika.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Temat 4: Typy danych.
Zmienne i typy danych w C#
Typy liczbowe, zmienne, operatory Zajęcia 4. Zmienne Zmienna – to w programowaniu element programu, który może mieć przypisaną pewną wartość (wartość.
Wprowadzenie do programowania w Pascalu mgr inż. Agata Pacek.
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Wstęp do interpretacji algorytmów
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
P ASCAL Definicje, deklaracje, podstawowe instrukcje 1.
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Zmienne typy danych w VBA. MS Excel – typy danych w języku programowania VBA.
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

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

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).

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

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).

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) :??????;

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;

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

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.

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

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

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.

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

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.  

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.

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’

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.

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.

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’

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)

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

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.

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 0   4

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 0   4

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

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;

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;

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 suma :=0; for j:=1 to n do suma:=suma +a[i,j]*b[j,k]; c[i,k]:=suma end ; ..... end.

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.

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.

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)

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)

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)

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 ".

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)

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,