Difference between revisions of "Set/fi"

From Lazarus wiki
Jump to navigationJump to search
(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}}
 
=Joukko =
 
  
 
== Johdanto ==
 
== Johdanto ==
Line 9: Line 7:
 
Tarkastellaan esimerkiksi tätä lueteltua tyyppiä:
 
Tarkastellaan esimerkiksi tätä lueteltua tyyppiä:
  
<source>
+
<syntaxhighlight lang="pascal">
 
   TSpeed = (spVerySlow,spSlow,spAVerage,spFast,spVeryFast);  
 
   TSpeed = (spVerySlow,spSlow,spAVerage,spFast,spVeryFast);  
</source>
+
</syntaxhighlight>
  
 
Ja tämä joukko:
 
Ja tämä joukko:
  
<source>
+
<syntaxhighlight lang="pascal">
 
   TPossibleSpeeds = set of TSpeed;
 
   TPossibleSpeeds = set of TSpeed;
</source>
+
</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:
  
<source>
+
<syntaxhighlight lang="pascal">
 
   const
 
   const
 
     RatherSlow = [spVerySlow,spSlow];
 
     RatherSlow = [spVerySlow,spSlow];
 
     RatherFast = [spFast,spVeryFast];
 
     RatherFast = [spFast,spVeryFast];
</source>
+
</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).
  
<source>
+
<syntaxhighlight lang="pascal">
 
   var
 
   var
 
     SomeSpeeds: TPossibleSpeeds;
 
     SomeSpeeds: TPossibleSpeeds;
Line 41: Line 39:
 
     Include(SomeSpeeds,spVeryFast);
 
     Include(SomeSpeeds,spVeryFast);
 
   end;
 
   end;
</source>
+
</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.
  
<source>
+
<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;
</source>
+
</syntaxhighlight>
  
Varattuasanaa '''[[In]]''' käytetään testaukseen, onko arvo joukossa. Sitä käytetään esimerkiksi tällä tavalla:
+
[[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:
  
<source>
+
<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;
</source>
+
</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ä.
  
<source>
+
<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  
</source>
+
</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


Navikointipalkki: datatyypit
Yksinkertaiset datatyypit

boolean byte cardinal char currency double dword extended int8 int16 int32 int64 integer longint real shortint single smallint pointer qword word

Monimutkaiset datatyypit

array class object record set string shortstring