Sign in Join
Wiki copytemporary

Record/fi

Deutsch · English · Español · Français · Magyar · Polski · Português · Suomi · Русский

Record eli tietue on hyvin jäsennelty tietotyyppi. Niitä käytetään laajalti Pascal:ssa. Niillä kootaan tiedot yhteen loogisesti eli se on loogisesti yhteenkuuluvien tietoalkioiden muodostama kokonaisuus.

Monet yksinkertaiset tietorakenteet, kuten taulukot tai joukot koostuvat osista (tietoalkioista) jotka kaikki ovat samaa tyyppiä. Tietue eli Record voi koostua monista eri osista, ne voi olla eri tyyppiä ja ne voivat olla valtavan monimutkaisia. Tietueen osia kutsutaan kentiksi.

Record on Pascalin varattu sana.

Määrittely

Vakiorakenne

pascal
type
    TMember = record
        firstname, surname : string;
        address: array [1..3] of string;
        phone: string;
        birthdate: TDateTime;
        paidCurrentSubscription: boolean
    end;

Muuttuva rakenne

Vieläkin monimutkaisempia rakenteita voi olla, esim:

pascal
type
    maritalStates = (unmarried, married, widowed, divorced);
    TPerson = record
        (* CONSTANT PART *)
        (* of course records may be nested *)
        name: record
            first, middle, last: string;
        end;
        sex: (male, female);
        (* date of birth *)
        dob: TDateTime;
        (* VARIABLE PART *)
        case maritalStatus: maritalStates of
            unmarried: ( );
            married, widowed: (marriageDate: TDateTime);
            divorced: (marriageDate, divorceDate: TDateTime;
                isFirstDivorce: boolean)            
    end;

Muuttuvan osan kentät ovat käytettävissä vain jälkeen tehtävän riippuen muuttujan. Se ei vahingoita onko kenttä marriageDate määritetty monta kertaa.

Osoittaminen

Kentät

Yksittäisiä kenttiä osoitetaan laittamalla piste tietueen nimen ja kentän nimen väliin.

pascal
    a.firstname := 'George';
    a.surname := 'Petersen';
    a.phone := '789534';
    a.paidCurrentSubscription := true;

Vaihtoehtoisesti kokonaista sarjaa kenttiä voidaan osoittaa käyttämällä With-rakennetta:

pascal
with a do
    begin
        firstname := 'George';
        surname := 'Petersen';
        phone := '789534';
        paidCurrentSubscription := true
    end;

Ilmentymä

A tietuetta käsitellään ohjelmassa yhtenä kokonaisuutena. Esimerkiksi koko tietue voidaan kopioida (jos kopio on samaa tyyppiä) näin:.

pascal
var
    a, b: TMember;

(* main program *)
begin
    { ... assign values to the fields in record a .. }
    b := a
    { now b holds a copy of a }
    { don't get confused with references: }
    { a and b still point to different entities of TMember }
end.

Vakiotietueet

pascal

type
  //tietueen määrittely
  TSpecialDay = record
    DayName : string;
    month : integer;
    day : integer;
  end;

const

  // TSpecialDay vakiomäärittely
  ChristmasDay : TSpecialDay = 
  (
    DayName : 'Christmas Day';
    month : 12;
    day : 25;
  );

Katso myös


From the Free Pascal wiki, page "Record/fi", as it stood on 2023-01-25 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 1, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.