Difference between revisions of "Record/fi"
m (bypass redirect to Basic Pascal Tutorial/Chapter 5/Records) |
|||
(2 intermediate revisions by one other user not shown) | |||
Line 13: | Line 13: | ||
=== Vakiorakenne === | === Vakiorakenne === | ||
− | <syntaxhighlight> | + | |
+ | <syntaxhighlight lang=pascal> | ||
type | type | ||
TMember = record | TMember = record | ||
Line 27: | Line 28: | ||
Vieläkin monimutkaisempia rakenteita voi olla, esim: | Vieläkin monimutkaisempia rakenteita voi olla, esim: | ||
− | <syntaxhighlight> | + | |
+ | <syntaxhighlight lang=pascal> | ||
type | type | ||
− | maritalStates = ( | + | maritalStates = (unmarried, married, widowed, divorced); |
TPerson = record | TPerson = record | ||
(* CONSTANT PART *) | (* CONSTANT PART *) | ||
Line 41: | Line 43: | ||
(* VARIABLE PART *) | (* VARIABLE PART *) | ||
case maritalStatus: maritalStates of | case maritalStatus: maritalStates of | ||
− | + | unmarried: ( ); | |
married, widowed: (marriageDate: TDateTime); | married, widowed: (marriageDate: TDateTime); | ||
divorced: (marriageDate, divorceDate: TDateTime; | divorced: (marriageDate, divorceDate: TDateTime; | ||
Line 54: | Line 56: | ||
Yksittäisiä kenttiä osoitetaan laittamalla piste tietueen nimen ja kentän nimen väliin. | Yksittäisiä kenttiä osoitetaan laittamalla piste tietueen nimen ja kentän nimen väliin. | ||
− | <syntaxhighlight> | + | |
+ | <syntaxhighlight lang=pascal> | ||
a.firstname := 'George'; | a.firstname := 'George'; | ||
a.surname := 'Petersen'; | a.surname := 'Petersen'; | ||
Line 62: | Line 65: | ||
Vaihtoehtoisesti kokonaista sarjaa kenttiä voidaan osoittaa käyttämällä [[With]]-rakennetta: | Vaihtoehtoisesti kokonaista sarjaa kenttiä voidaan osoittaa käyttämällä [[With]]-rakennetta: | ||
− | <syntaxhighlight> | + | |
+ | <syntaxhighlight lang=pascal> | ||
with a do | with a do | ||
begin | begin | ||
Line 75: | Line 79: | ||
A tietuetta käsitellään ohjelmassa yhtenä kokonaisuutena. Esimerkiksi koko tietue voidaan kopioida (jos kopio on samaa tyyppiä) näin:. | A tietuetta käsitellään ohjelmassa yhtenä kokonaisuutena. Esimerkiksi koko tietue voidaan kopioida (jos kopio on samaa tyyppiä) näin:. | ||
− | <syntaxhighlight> | + | |
+ | <syntaxhighlight lang=pascal> | ||
var | var | ||
a, b: TMember; | a, b: TMember; | ||
Line 92: | Line 97: | ||
== Vakiotietueet == | == Vakiotietueet == | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
type | type | ||
Line 115: | Line 120: | ||
== Katso myös == | == Katso myös == | ||
− | * [[Records]], tutorial that covers records | + | * [[Basic Pascal Tutorial/Chapter 5/Records|Records]], tutorial that covers records |
{{Data types}} | {{Data types}} |
Latest revision as of 04:25, 25 January 2023
│
Deutsch (de) │
English (en) │
español (es) │
suomi (fi) │
français (fr) │
magyar (hu) │
polski (pl) │
português (pt) │
русский (ru) │
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
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:
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.
a.firstname := 'George';
a.surname := 'Petersen';
a.phone := '789534';
a.paidCurrentSubscription := true;
Vaihtoehtoisesti kokonaista sarjaa kenttiä voidaan osoittaa käyttämällä With-rakennetta:
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:.
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
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
- Records, tutorial that covers records
Yksinkertaiset datatyypit |
|
---|---|
Monimutkaiset datatyypit |