1 / 37

PROGRAMOWANIE STRUKTURALNE

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źć.

moses
Download Presentation

PROGRAMOWANIE STRUKTURALNE

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. PROGRAMOWANIE STRUKTURALNE Wprowadzenie do programowania w TP. część 3

  2. Temat: Tablice.

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

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

  5. Temat Zbiory

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

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

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

  9. Temat Rekordy

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

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

  12. Temat Wskaźniki

  13. 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ć.

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

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

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

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

  18. Temat Posługiwanie się wskaźnikami i zmiennymi dynamicznymi

  19. Ćwiczenia praktyczne

  20. Temat Funkcje i procedury dynamicznego przydziału pamięci

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

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

  23. Typy struktur listowych • stosy • kolejki • listy • jednokierunkowe • dwukierunkowe • cykliczne • drzewa

  24. Temat Tworzenie i przetwarzanie dynamicznych struktur danych- stos

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

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

  27. Temat Tworzenie i przetwarzanie dynamicznych struktur danych- kolejka

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

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

  30. Temat Tworzenie i przetwarzanie dynamicznych struktur danych- listy

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

  32. Listy jednokierunkowe • Organizacja listy jednokierunkowej jest podobna do organizacji stosu bądź kolejki.

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

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

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

  36. Temat Tworzenie i przetwarzanie dynamicznych struktur danych- drzewa

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

More Related