Difference between revisions of "Set/fi"
(Created page with "{{Set}} =Joukko = == Johdanto == Joukko (Set) koodaa monia arvoja luetelluista tyypeistä (enumeration) järjestyksen (ordinal) omaaviin tyyppeihin. Tarkastellaan esimerki...") |
|||
Line 1: | Line 1: | ||
{{Set}} | {{Set}} | ||
− | |||
− | |||
== Johdanto == | == Johdanto == | ||
Line 9: | Line 7: | ||
Tarkastellaan esimerkiksi tätä lueteltua tyyppiä: | Tarkastellaan esimerkiksi tätä lueteltua tyyppiä: | ||
− | < | + | <syntaxhighlight lang="pascal"> |
TSpeed = (spVerySlow,spSlow,spAVerage,spFast,spVeryFast); | TSpeed = (spVerySlow,spSlow,spAVerage,spFast,spVeryFast); | ||
− | </ | + | </syntaxhighlight> |
Ja tämä joukko: | Ja tämä joukko: | ||
− | < | + | <syntaxhighlight lang="pascal"> |
TPossibleSpeeds = set of TSpeed; | TPossibleSpeeds = set of TSpeed; | ||
− | </ | + | </syntaxhighlight> |
− | TPossibleSpeedsin kiinteät vakiojoukot määritellään niin että annetaan hakasulkujen sisällä joukkoon kuuluvat alkiot: | + | TPossibleSpeedsin [[Constant/fi|kiinteät]] vakiojoukot määritellään niin että annetaan [[square brackets/fi|hakasulkujen]] sisällä joukkoon kuuluvat alkiot: |
− | < | + | <syntaxhighlight lang="pascal"> |
const | const | ||
RatherSlow = [spVerySlow,spSlow]; | RatherSlow = [spVerySlow,spSlow]; | ||
RatherFast = [spFast,spVeryFast]; | RatherFast = [spFast,spVeryFast]; | ||
− | </ | + | </syntaxhighlight> |
RatherSlow ja RatherFast ovat joitakin TSpeed:n osajoukkoja. | RatherSlow ja RatherFast ovat joitakin TSpeed:n osajoukkoja. | ||
Line 31: | Line 29: | ||
== Joukkojen käsittely == | == Joukkojen käsittely == | ||
− | Kaksi funktiota on määritelty [[RTL]]:n [[System unit]] joita käytetään joukkojen käsittelemiseen [[Include]](ASet,AValue) ja [[Exclude]](ASet,AValue). | + | Kaksi [[Function/fi|funktiota]] on määritelty [[RTL/fi|RTL]]:n [[System unit]] joita käytetään joukkojen käsittelemiseen [[Include]](ASet,AValue) ja [[Exclude]](ASet,AValue). |
− | < | + | <syntaxhighlight lang="pascal"> |
var | var | ||
SomeSpeeds: TPossibleSpeeds; | SomeSpeeds: TPossibleSpeeds; | ||
Line 41: | Line 39: | ||
Include(SomeSpeeds,spVeryFast); | Include(SomeSpeeds,spVeryFast); | ||
end; | end; | ||
− | </ | + | </syntaxhighlight> |
Joukkoja ei voida suoraan käsitellä, jos ne on julkaistu. Vaan on yleensä tehtävä paikallinen kopio, muutokset paikalliskopioon ja kutsutaan asettaja. | Joukkoja ei voida suoraan käsitellä, jos ne on julkaistu. Vaan on yleensä tehtävä paikallinen kopio, muutokset paikalliskopioon ja kutsutaan asettaja. | ||
− | < | + | <syntaxhighlight lang="pascal"> |
procedure TSomething.DoSomething(Sender: TFarObject); | procedure TSomething.DoSomething(Sender: TFarObject); | ||
var | var | ||
Line 54: | Line 52: | ||
Sender.PossibleSpeeds := LocalCopy; // local to setter. | Sender.PossibleSpeeds := LocalCopy; // local to setter. | ||
end; | end; | ||
− | </ | + | </syntaxhighlight> |
− | + | [[Reserved_word/fi|Varattua sanaa]] [[In/fi|<syntaxhighlight lang="pascal" inline>in</syntaxhighlight>]] käytetään testaukseen, onko arvo joukossa. Sitä käytetään esimerkiksi tällä tavalla: | |
− | < | + | <syntaxhighlight lang="pascal"> |
var | var | ||
CanBeSlow: Boolean; | CanBeSlow: Boolean; | ||
Line 66: | Line 64: | ||
CanBeSlow := (spVerySlow in SomeSpeeds) or (spSlow in SomeSpeeds); | CanBeSlow := (spVerySlow in SomeSpeeds) or (spSlow in SomeSpeeds); | ||
end; | end; | ||
− | </ | + | </syntaxhighlight> |
== Bittimaskit == | == Bittimaskit == | ||
Line 72: | Line 70: | ||
Joukkoja voidaan käyttää luomaan bittimaskeja kuten on esitetty esimerkissä. | Joukkoja voidaan käyttää luomaan bittimaskeja kuten on esitetty esimerkissä. | ||
− | < | + | <syntaxhighlight lang="pascal"> |
(* | (* | ||
FLAG_A = 1; // 1 shl 0 | FLAG_A = 1; // 1 shl 0 | ||
Line 89: | Line 87: | ||
Flags:= [FLAG_A, FLAG_C]; | Flags:= [FLAG_A, FLAG_C]; | ||
if FLAG_A in Flags then .. // check FLAG_A is set in flags variable | if FLAG_A in Flags then .. // check FLAG_A is set in flags variable | ||
− | </ | + | </syntaxhighlight> |
{{Data types}} | {{Data types}} |
Latest revision as of 18:44, 16 November 2019
│
Deutsch (de) │
English (en) │
suomi (fi) │
français (fr) │
русский (ru) │
Johdanto
Joukko (Set) koodaa monia arvoja luetelluista tyypeistä (enumeration) järjestyksen (ordinal) omaaviin tyyppeihin.
Tarkastellaan esimerkiksi tätä lueteltua tyyppiä:
TSpeed = (spVerySlow,spSlow,spAVerage,spFast,spVeryFast);
Ja tämä joukko:
TPossibleSpeeds = set of TSpeed;
TPossibleSpeedsin kiinteät vakiojoukot määritellään niin että annetaan hakasulkujen sisällä joukkoon kuuluvat alkiot:
const
RatherSlow = [spVerySlow,spSlow];
RatherFast = [spFast,spVeryFast];
RatherSlow ja RatherFast ovat joitakin TSpeed:n osajoukkoja.
Joukkojen käsittely
Kaksi funktiota on määritelty RTL:n System unit joita käytetään joukkojen käsittelemiseen Include(ASet,AValue) ja Exclude(ASet,AValue).
var
SomeSpeeds: TPossibleSpeeds;
begin
SomeSpeeds := [];
Include(SomeSpeeds,spVerySlow);
Include(SomeSpeeds,spVeryFast);
end;
Joukkoja ei voida suoraan käsitellä, jos ne on julkaistu. Vaan on yleensä tehtävä paikallinen kopio, muutokset paikalliskopioon ja kutsutaan asettaja.
procedure TSomething.DoSomething(Sender: TFarObject);
var
LocalCopy: TPossibleSpeeds;
begin
LocalCopy := Sender.PossibleSpeeds; // getter to local
Include(LocalCopy,spVerySlow);
Sender.PossibleSpeeds := LocalCopy; // local to setter.
end;
Varattua sanaa in
käytetään testaukseen, onko arvo joukossa. Sitä käytetään esimerkiksi tällä tavalla:
var
CanBeSlow: Boolean;
const
SomeSpeeds = [Low(TSpeed)..High(TSpeed)];
begin
CanBeSlow := (spVerySlow in SomeSpeeds) or (spSlow in SomeSpeeds);
end;
Bittimaskit
Joukkoja voidaan käyttää luomaan bittimaskeja kuten on esitetty esimerkissä.
(*
FLAG_A = 1; // 1 shl 0
FLAG_B = 2; // 1 shl 1
FLAG_C = 4; // 1 shl 2
*)
type
TFlag = (FLAG_A, FLAG_B, FLAG_C);
TFlags = set of TFlag;
var
Flags: TFlags;
[..]
Flags:= [FLAG_A, FLAG_C];
if FLAG_A in Flags then .. // check FLAG_A is set in flags variable
Yksinkertaiset datatyypit |
|
---|---|
Monimutkaiset datatyypit |