Typy strukturalne w Turbo Pascalu 2.doc

(34 KB) Pobierz
TYPY STRUKTURALNE

TYPY STRUKTURALNE  W PASCALU

 

Typy strukturalne w Pascalu reprezentują 4 rodzaje struktur: tablice, rekordy, zbiory i pliki. Ograniczeniem rozmiaru jest ok. 64 kB pamięci (65520 B).

             

Typ tablicowy składa się z ustalonej liczby elementów tego samego typu składowego (prosty lub łańcuchowy) albo strukturalny. Za pomocą tablic przedstawia się regularne struktury danych np. wektory czy macierze. Dostęp do elementów uzyskuje się za pomocą indeksowania, wyrażeniem zgodnym i będącym w zakresie zdefiniowanego typu tablicowego. Np.:

 

Type wektor  =Array [0..100] Of Integer;

macierz2=Array [1..20] Of Array [1..50] Of Real;

macierz3=Array [1..10,1..20,1..30] Of Real;

tablica =Array [Boolean, 1..20,znak] Of Char; {=Array [Boolean] Of Array[1..20] Of Array [znak] Of Char;}

 

Typ rekordowy - rekordem w Pascalu nazywamy złożoną strukturę danych, której składowe, nazywane polami, mogą być różnych typów. Poszczególne pola mogą same być strukturami złożonymi. Definicja typu rekordowego określa dla każdego pola jego typ i identyfikator. Rozpoczyna się słowem kluczowym record, po którym następują deklaracje pól, kończy się słowem kluczowym end; Kolejne deklaracje oddziela się średnikami. Ostatnia z nich może być wariantowa (składa się z kluczowego słowa case wyróżnik of wykaz-wariantów). Przykłady zmiennych rekordowych:

Type data=Record

rok     : Integer;

miesiac : 1..12; {9typy okrojone}

dzien   : 1..31

end;{data}

posiadanie={posiada,nie_posiada};{typ porządkowy}

dana=Record

              nazwisko:String [20];

              imie    :String [15];

              data_ur :data;

              adres   :String[30];

              Case dzieci:posiadanie Of

              posiada    :(data_ur_dziecka:Array[1..10] Of data;

              nie_posiada:(znak:Char)

End;{dana}

 

              Typ zbiorowy jest zbiorem potęgowym danego typu rzeczywistego, tzn. jest zbiorem wszystkich podzbiorów tego typu w tym także typu pustego. Definicja ma postać: type identyfikator-typu = Set Of typ-porządkowy;  Liczba elementów typu porządkowego, będącego typem bazowym w takiej definicji nie może przekraczać 256, przy czym ich liczby porządkowe  muszą należeć do przedziału 0..255. Wartości typu zbiorowego podaje się przez wypisanie listy elementów danego zbioru oddzielonych przecinkami w nawiasach kwadratowych. Zapis [] oznacza zbiór pusty. Np.:

type             

dzien_pracy=Set Of [poniedzialek, wtorek, sroda, czwartek, piatek];

znaki      =Set Of Char;

male_litery=Set Of 'a'..'z';

miesiac    =[sty, lut, mar, kwi, maj, cze, lip, sie, wrz,

              paz, lis, gru];

              z_mies     =Set Of miesiac;

Var              nazwa_mies : miesiac;

              z_nazw     : z_mies;

 

              Typ plikowy jest ciągiem elementów tego samego typu, liczba jego składowych jest zmienna. Reprezentuje fizyczny zbiór danych o dostępie sekwencyjnym. Oznacza to, że aktualnie mamy dostęp do 1 elementu, a do innych można dotrzeć po wykonaniu odpowiednich operacji. Zależy od przebiegu programu, skojarzenia pliku z fizycznym zbiorem danych (na dysku, wyprowadzanych na drukarkę itp). Definicja:

type id_pliku = File Of typ-elementow; id_pliku = File;

typ-elementów oznacza identyfikator dowolnego typu prostego, opis typu porządkowego, strukturalnego lub wskaźnikowego. Istnieje predefiniowany plik tekstowy o nazwie Text, którego elementami są wiersze podzielone na znaki. Na końcu wiersza wstawiona jest para znaków CR/LF (carriage return, line feed = powrót karetki, zmiana linii), koniec pliku znaczy znak ^Z.  Pliki tekstowe służą do obsługi dostępnych zbiorów fizycznych przy pomocy klawiatury, monitora, drukarki. Np.:

type dane   =File Of Integer;

              wyniki =File Of Real;

              complex=Record

                       re, im : Real

                      End;

var daty : File Of data; {patrz wcześniej}

    zesp : File Of complex;

 

Typy wskaźnikowe - w przeciwieństwie do wcześniej omówionych typów prostych i strukturalnych, które istnieją przez cały czas wykonywania tej części programu, gdzie zostały zadeklarowane (zmienne statyczne) - istnieją zmienne dynamiczne reprezentujące obiekty, dla których pamięć jest przydzielana i zwalniana na wyraźne żądanie. Zmienne te nie posiadają identyfikatorów, a odwołanie do nich następuje przy pomocy wskaźnika. Wartościami wskaźników są elementy typu wskaźnikowego, określające adresy zmiennych dynamicznych. Definicja: Type id_typu=^id_typu_bazowego; gdzie ostatnia nazwa określa typ, którego dane będą wskazywane przez zmienne definiowanego typu wskaźnikowego. Np.:

Type wskaznik=^zapis;

              zapis=Rekord

     naglowek:Char; tekst:String[30]; numer:Integer

    End;{zapis}

Var karta:zapis; {zmienna, która mo)e przybierać wartości typu zapis}

Istnieje predefiniowany typ Pointer, którego zmienne nie wskazują konkretnego typu, są jednak zgodne z dowolnym innym typem wskaźnikowym. Słowo kluczowe nil - oznacza stałą tego typu nie określającą żadnego adresu (adres pusty).

 

1

 

Zgłoś jeśli naruszono regulamin