Rekordy w języku Pascal.

Rekordy to kolejny złożony typ danych jaki poznajemy. Służą one do wygodnego przechowywania kilku zmiennych związanych ze sobą w ścisły sposób (np. opisujących stan jakiegoś obiektu). Rekord, tak jak i tablicę możemy traktować jako ciąg elementów. W tablicy wszystkie elementy są tego samego typu, zaś elementy rekordu mogą być różnych typów. Elementy rekordu nazywamy polami. Do pola rekordu odwołujemy się podając nazwę zmiennej rekordowej i po kropce nazwę pola. Rekordy deklarujemy tak, jak w poniższym przykładzie:

Type

identyfikator_rekordu = record

   pole : typ;
   pole : typ;
   pole : typ;

END;

Poniżej zaprezentowany jest przykład zastosowania rekordów w praktyce. Spróbujmy wyjaśnić sobie możliwość użycia rekordu i tablicy na przykładzie. Spróbujmy napisać program, który będzie nam wypisywał markę, symbol i predkosc maksymalną 3 motorów. Użyjemy w tym programie i tablic i rekordów. Zaczynamy od deklaracji rekordu:

Type

motocykl = record

   marka : string;
   symbol : string[10];
   predkoscmax : integer;

END;

Tłumacząc to co zadeklarowaliśmy wyżej. W powyższych wierszach motocykl stał się identyfikatorem rekorku o polach: marka, symbol, predkoscmax. W odniesieniu do każdego pola rekordu jest podany typ wartości, jaki będzie w nim przechowywany.

Następnie deklarujemy tablicę 3 elementową, która będzie przechowywała nasze rekordy

Type

motocykl = record

   marka : string;
   symbol : string[10];
   predkoscmax : integer;

END;
var
garaz : array[1..3] of motocykl;
a : integer;

Teraz mamy zadeklarowaną tablicę, w której bedziemy przechowywać rekordy. Czyli tak naprawdę w każdej komórce tablicy mamy 3 pola w których będziemy przechowywać różne typy danych.

Odwołanie do odpowiedniej komórki uzyskamy wpisaując identyfikator garaz[a]. Aby natomiast uzyskać dostęp do wybranego przez nas pola w konkretnej komórce uzyskujemy wpisując identyfikator komórki i po kropce nazwę pola w naszym rekordzie garaz[a].marka. Do obsługi tablicy wykorzystamy pętle for, która będzie przyjmowała wartości od 1 do 3.

begin
writeln('Wprowadz dane trzech motocykli');
   for a:=1 to 3 do
     begin
          writeln('Marka motocykla nr: ', a ,' to: ');
          readln(garaz[a].marka);
          writeln('Symbol motocykla nr: ', a ,' to: ');
          readln(garaz[a].symbol);
          writeln('Predkosc max motocykla nr: ', a ,' [km/h] ');
          readln(garaz[a].predkoscmax);
     end;

Następnym elementem tego zadania jest napisanie pętli, która będzie sterowała danymi i wypisze nam wszystkie elementy z tablicy w ładnie uporządkowanym szyku. Ta część należy wykonać już samodzielnie.

Podczas pracy z rekordami przydatna jest instrukcja with, która działa we fragmencie programu ograniczonym słowami begin oraz end. W jego ramach możemy odwoływać się do pól rekordu bez podawania przedrostków, czyli zamiast konstrukcji readln(garaz[a].marka); używamy readln(marka);.

Konstrukcja instrukcji wiążącej with jest następująca:

with rekord_lista_nazw do

begin

   {operacje na polach
   rekordu wskazanego
   przez with}

END;

Poniżej można zobaczyć fragment programu z zastosowaniem with ma postać:

writeln('Wprowadz dane trzech motocykli');
   for a:=1 to 3 do
with garaz[a] do

     begin
          writeln('Marka motocykla nr: ', a ,' to: ');
          readln(marka);
          writeln('Symbol motocykla nr: ', a ,' to: ');
          readln(symbol);
          writeln('Predkosc max motocykla nr: ', a ,' [km/h] ');
          readln(predkoscmax);
     end;

Instrukcję wiążącą with do można używać do każdego BlokoKodu (begin ... end). Aby używać tej instrukcji należy przed blokiem rozpoczynającym się (begin) wstawić komende with nazwa_rekordu do, które będzie obowiązywało do end, które będzie kończyło ten blok.

powrót