380 likes | 518 Views
PROGRAMOWANIE STRUKTURALNE. Wprowadzenie do programowania w TP. część 3. Temat:. Tablice. Tablica. Tablica to struktura będąca uporządkowanym zbiorem elementów. Każdy element posiada własny niepowtarzalny numer pozwalający go szybko odnaleźć.
E N D
PROGRAMOWANIE STRUKTURALNE Wprowadzenie do programowania w TP. część 3
Temat: Tablice.
Tablica • Tablica to struktura będąca uporządkowanym zbiorem elementów. • Każdy element posiada własny niepowtarzalny numer pozwalający go szybko odnaleźć. • Tablicę można porównać do ponumerowanych wieszaków w szatni: • każdemu numerowi odpowiada dokładnie jedna zawieszona kurtka lub płaszcz - okrycie, • aby odnaleźć kurtkę wystarczy znać przypisany jej numer.
Tablica jednowymiarowa • Deklaracja tablicy var tablica = array[1..N] of typ; • gdzie • tablica – nazwa tablicy • [1..N] - rozmiar tablicy od 1 do N • typ - typ tablicy (np. integer)
Temat Zbiory
Zbiory (sets) • Zbiory wykorzystuje się do przechowywania kolekcji elementów porządkowych. TYPE zbior = SET OF typ_podstawowy; (w Pascalu liczba elementów do 256)
Przykłady TYPE tydzien = (po, wt, sr, cz, pi, so, ni); zbiorliczb = SET OF 0..47; zbiorliter = SET OF 'A'..'Z'; dni_wolne = SET OF pi..ni; Tznakow = SET OF char; Tliczb = SET OF byte;
Przykłady var zbiorA, zbiorB, zbiorC: SET OF byte; begin zbiorA := [1,2,5,7]; zbiorB := [3,4,5,6]; zbiorC := zbiorA + zbiorB - [5]; if 5 in zbiorC then writeln (‘OK’); if 1 in zbiorC then writeln (‘Jest 1’); end.
Temat Rekordy
Rekordy – własne typy danych • Czasami zachodzi potrzeba utworzenia własnego typu - rekordu, który będzie przechowywał wymyślone przez nas dane. • Przypuśćmy że chciałbyś zbudować prostą bazę danych zawierającą imiona, nazwiska i inne dane swoich klientów. Zamiast przechowywać wszelkie dane w różnych osobnych tablicach, to tworzymy rekord.
Przykład type ksiazka=record autor:string[40]; nazwa:string[80]; rokwyd:integer; end; var biblioteka:array[1..50] of ksiazka; // … odwołanie do zawartości rekordu writeln(‘Autor: ’,biblioteka[2].autor);
Temat Wskaźniki
Wskaźniki • Wskaźniki to adresy pamięci, które pokazują komputerowi miejsce gdzie znajdują się jakieś dane. Pamięć do której odnoszą się wskaźniki można w każdej chwili zwalniać, deklarować i zmieniać.
Wskaźniki – uwagi praktyczne • Bez wskaźników nie byłoby możliwe nieograniczone tworzenie nowych danych, np. w słowniku. • Gdyby nie wskaźniki mielibyśmy z góry określoną liczbę słów, które słownik byłby w stanie zapamiętać, oraz nie moglibyśmy w systemie uruchomić większej liczby programów niż w nim zaplanowano.
Przykład var wsk_na_liczbe:^integer; begin clrscr; new(wsk_na_liczbe); wsk_na_liczbe^:=5; writeln('liczba=',wsk_na_liczbe^); dispose(wsk_na_liczbe); end.
Typ pointer • Typ wskaźników nazywa się pointer. Gdy jakąś zmienną zadeklarujesz jako poiner, będzie ona wskaźnikiem. Wskaźniki mogą adresować różne typy zmiennych. Mogą adresować liczby, napisy, tablice, itd. • Znacznik @ oznacza pobranie adresu zmiennej. • Typ pointer należy rzutować (unikniemy błędu kompilacji) w określony typ.
Przykład var wskaznik:pointer; //tworzenie wskaźnika tekst:string; begin clrscr; tekst:=‘Zwykły tekst'; wskaznik:=@tekst; //pobranie adresu writeln(string(wskaznik^)); //rzutowanie end.
Temat Posługiwanie się wskaźnikami i zmiennymi dynamicznymi
Temat Funkcje i procedury dynamicznego przydziału pamięci
Wprowadzenie • Dynamiczne struktury danych to takie, w których pamięć może być przydzielana w trakcie wykonywania programu, do tej operacji służą zmienne typu wskaźnikowego i zmienne wskazywane.
Wprowadzenie • Struktury te mogą być proste i złożone. Za ich pomocą można tworzyć np. dynamiczne struktury listowe, tj. uporządkowane zbiory składników, niekoniecznie o jednakowych typach. Składniki te mogą być elementami prostymi (liczbami, czy pojedynczymi znakami) lub elementami złożonymi (tabliczmi, rkordami, obiektami, listami).
Typy struktur listowych • stosy • kolejki • listy • jednokierunkowe • dwukierunkowe • cykliczne • drzewa
Temat Tworzenie i przetwarzanie dynamicznych struktur danych- stos
Stos • Stos (stack) jest to struktura danych składająca się z liniowo uporządkowanych zbiorów składników, z których tylko „najwyższy” jest niejako dostępny. Miejsce dostępu to wierzchołek stosu. Jest to jedyne miejsce, do którego można dołączyć lub z którego można usunąć elementy.
wierzchołek Stos • Każdy składnik stosu posiada wyróżniony element (wskaźnik), który wskazuje na następujący po nim (aders) składnik • Wskaźnik ostatniego składnika stosu wskazuje na pusty adres nil. • Wierzchołek stosu to miejsce wstawiania i usuwania danych. DANE DANE DANE DANE wskaźnik wskaźnik wskaźnik wskaźnik nil
Temat Tworzenie i przetwarzanie dynamicznych struktur danych- kolejka
Kolejki • Kolejka (queue) jest strukturą składającą się z liniowo uporządkowanych zbiorów składników, do której można dołączyć składnik tylko w jednym końcu (na końcu kolejki), a usunąć tylko na drugim końcu (na początku).
Kolejki • Powiązanie między składnikami kolejki jest podobne do powiązań między składnikami stosu. • Natomiast usuwamy składniki tylko na początku kolejki, zaś dodajemy na końcu kolejki. DANE DANE DANE DANE wskaźnik wskaźnik wskaźnik wskaźnik wierzchołek początek kolejki koniec kolejki nil
Temat Tworzenie i przetwarzanie dynamicznych struktur danych- listy
Listy • Listą (liniową) nazywamy liniowo uporządkowany zbiór składników, z którego w dowolnym miejscu można usunąć składnik, jak również dodać. • Wyróżniamy: • listy jednokierunkowe, • listy dwukierunkowe, • listy cykliczne.
Listy jednokierunkowe • Organizacja listy jednokierunkowej jest podobna do organizacji stosu bądź kolejki.
Listy dwukierunkowe • Listą dwukierunkową nazywamy liniowo uporządkowany zbiór składników, w którym dla każdego składnika, poza pierwszym i ostatnim, jest określony składnik poprzedni i następny. wierzchołek wskaźnik 1 wskaźnik 1 wskaźnik 1 wskaźnik 1 DANE DANE DANE DANE wskaźnik 2 wskaźnik 2 wskaźnik 2 wskaźnik 2 nil
Listy cykliczne • Lista cykliczna powstaje z listy jedno- lub dwukierunkowej przez powiązanie ostatniego składnika listy z jej pierwszym składnikiem. W wyniku takiego powiązania wyróżnione składniki (pierwszy i ostatni) przestają pełnić swoje funkcje. • W liście cyklicznej żaden ze składników nie jest wyróżniony.
Listy cykliczne wskaźnik 1 DANE wskaźnik 2 wskaźnik 1 wskaźnik 1 wskaźnik 1 wskaźnik 1 DANE DANE DANE DANE wskaźnik 2 wskaźnik 2 wskaźnik 2 wskaźnik 2
Temat Tworzenie i przetwarzanie dynamicznych struktur danych- drzewa
korzeń Drzewobinarne DANE DANE DANE DANE DANE DANE DANE DANE wskaźnik 0 wskaźnik 0 wskaźnik 0 wskaźnik 0 wskaźnik 0 wskaźnik 0 wskaźnik 0 wskaźnik 0 wskaźnik 1 wskaźnik 1 wskaźnik 1 wskaźnik 1 wskaźnik 1 wskaźnik 1 wskaźnik 1 wskaźnik 1 liść nil nil nil nil nil