3387


TYPY PROSTE

Typy proste są podstawowymi predefiniowanymi typami Pascala dzielą się na porządkowe i rzeczywiste. Składają się ze skończonego i uporządkowanego typu wartości (można je porównywać).

Typy porządkowe to wszystkie typy proste z wyjątkiem typów rzeczywistych. Należą tu: typ wyliczeniowy, logiczny, typy całkowite, znakowe i okrojone. Dla wartości każdego z nich są określone wartości poprzednie i następne (z wyjątkiem wartości skrajnych).

Typ wyliczeniowy stosuje się do zbiorów o niewielkiej liczbie elementów, na których nie wykonuje się operacji arytmetycznych. Definicja ma postać: type id_typu=lista-identyfikatorów); W liście specyfikuje się nazwy tworzące zbiór wartości typu. Elementy są uporządkowane i mają liczby porządkowe 0,1,2,... .

type tydzien=(pon, wto, sro, czw, pia, sob, nie);

Typy całkowite:

Typ zakres format

Shortint -128..12 8-bit ze znakiem

Integer -32768..32767 16-bit ze znakiem

Longint -2147483648..2147483647 32-bit ze znakiem

Byte 0..255 8-bit bez znaku

Word 0..65535 16-bit bez znaku

Wszystkie typy całkowite są typami porządkowymi. Typ logiczny omówiono poprzednio (ma 2 predefiniowane stałe: FALSE{=0} i TRUE{=1}). Typ znakowy składa się ze znaków kodu ASCII, każdy pamiętany w 1 bajcie pamięci.

Typ okrojony służy do ograniczania zakresu wartości dowolnego typu porządkowego. Definicja: type id_typu=stała..stała; Np.:

type litera='A'..'Z';

dni_robocze=pon..pia;

zakresX=0..100;

Typy rzeczywiste

Typ zakres cyfry znaczące bajty pamięci

real 2.9e-39..1.7e38 11-12 6

single 1.5e-45..3.4e38 7-8 4

double 5.0e-324..1.7e308 15-16 8

extended 3.4e-4932..1.1e4932 19-20 10

comp -9.2e18..9.2e18 19-20 8

Uwaga: typ comp jest typem całkowitym 64-bitowym. Ma wartości tylko całkowite z zakresu (-2^63+1) do (2^ 63-1).

Typ łańcuchowy - służy do reprezentowania znaków. Elementami są łańcuchy o długości od 0 do podanej w definicji, która ma postać: type id_typu=String[rozmiar]; id_typu=String; Rozmiar może być liczbą z zakresu 0..255, brak specyfikacji rozmiaru powoduje przyjęcie rozmiaru domyślnego 255. Każdy znak zajmuje 1 bajt, a cała zmienna tyle bajtów jaka liczba znaków + 1 na rozmiar łańcucha.

TYPY STRUKTURALNE

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



Wyszukiwarka

Podobne podstrony:
200401 3387
3387
3387
3387
200401 3387

więcej podobnych podstron