Difference between revisions of "Array/fi"

From Lazarus wiki
Jump to navigationJump to search
(eliminate level one heading)
m (bypass redirects, make targets language-sensitive)
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
 
{{Array}}
 
{{Array}}
{{DISPLAYTITLE:Taulukko}}
 
  
 
Taulukko on rakenteellisen [[data type|data tyypin]] käsite.Se ryhmittelee saman tyyppisiä elementtejä.
 
Taulukko on rakenteellisen [[data type|data tyypin]] käsite.Se ryhmittelee saman tyyppisiä elementtejä.
 
Ryhmä tarjoaa satunnaisen pääsyn jokaiseen sen elementtiin tai komponenttiin, lineaarisella indeksillä.
 
Ryhmä tarjoaa satunnaisen pääsyn jokaiseen sen elementtiin tai komponenttiin, lineaarisella indeksillä.
  
Taulukkoa tarkoittava sana <syntaxhighlight lang="pascal" enclose="none">array</syntaxhighlight> on [[Reserved word/fi|varattu sana]].
+
Taulukkoa tarkoittava sana <syntaxhighlight lang="pascal" inline>array</syntaxhighlight> on [[Reserved word/fi|varattu sana]].
Sana array on varattu sana. Se esiintyy aina yhdessä sanan [[Of/fi|<syntaxhighlight lang="pascal" enclose="none">of</syntaxhighlight>]] kanssa.
+
Sana array on varattu sana. Se esiintyy aina yhdessä sanan [[Of/fi|<syntaxhighlight lang="pascal" inline>of</syntaxhighlight>]] kanssa.
  
 
== Käsite ==
 
== Käsite ==
Taulukko eli <syntaxhighlight lang="pascal" enclose="none">array</syntaxhighlight> on rajoitettu ja järjestetty elementtiyhdistelmä, joilla kaikilla on sama tietotyyppi, jota kutsutaan "perustyypiksi".
+
 
 +
Taulukko eli <syntaxhighlight lang="pascal" inline>array</syntaxhighlight> on rajoitettu ja järjestetty elementtiyhdistelmä, joilla kaikilla on sama tietotyyppi, jota kutsutaan "perustyypiksi".
 
Sillä on ainakin yksi erillinen, rajattu ulottuvuus, jossa luetellaan peräkkäin kaikki sen elementit.
 
Sillä on ainakin yksi erillinen, rajattu ulottuvuus, jossa luetellaan peräkkäin kaikki sen elementit.
 
Kukin elementti voidaan yksilöidä yksilöllisesti yhdellä tai useammalla skalaariarvolla, joita kutsutaan indekseiksi, näiden ulottuvuuksien mukaisesti.  
 
Kukin elementti voidaan yksilöidä yksilöllisesti yhdellä tai useammalla skalaariarvolla, joita kutsutaan indekseiksi, näiden ulottuvuuksien mukaisesti.  
  
Yksiulotteinen taulukko (<syntaxhighlight lang="pascal" enclose="none">array</syntaxhighlight>) muistuttaa '''n-tuple'''a, kuten matematiikasta tiedetään, mutta sillä on rajoitus olla homogeeninen (kaikki elementit pitää olla saman tyyppisiä).
+
Yksiulotteinen taulukko (<syntaxhighlight lang="pascal" inline>array</syntaxhighlight>) muistuttaa '''n-tuple'''a, kuten matematiikasta tiedetään, mutta sillä on rajoitus olla homogeeninen (kaikki elementit pitää olla saman tyyppisiä).
 
Kaikkien mahdollisten arvojen, joita tällainen ryhmä voi sisältää, on valikoima homogeeninen peruskartaninen tuote, joka on perustyyppi.
 
Kaikkien mahdollisten arvojen, joita tällainen ryhmä voi sisältää, on valikoima homogeeninen peruskartaninen tuote, joka on perustyyppi.
  
Line 19: Line 19:
  
 
== Käyttö ==
 
== Käyttö ==
 +
 
=== Pituus ===
 
=== Pituus ===
 +
 
Alun perin Pascal:ssa oli vain kiinteän pituuden mukainen taulukko ([[Standard Pascal/fi|Standard Pascal]]).  
 
Alun perin Pascal:ssa oli vain kiinteän pituuden mukainen taulukko ([[Standard Pascal/fi|Standard Pascal]]).  
 
Kuinka monesta elementistä taulukko koostui, oli tiedettävä [[Compile time/fi|käännösaikana]]. Koska tämä osoittautui suureksi rajoitukseksi ja puhumattakaan muutoksista tietokoneiden laitteistoissa, sen jälkeen on perusteltua ottaa askel eteenpäin, vaihtelevan pituinen taulukko esiteltiin.
 
Kuinka monesta elementistä taulukko koostui, oli tiedettävä [[Compile time/fi|käännösaikana]]. Koska tämä osoittautui suureksi rajoitukseksi ja puhumattakaan muutoksista tietokoneiden laitteistoissa, sen jälkeen on perusteltua ottaa askel eteenpäin, vaihtelevan pituinen taulukko esiteltiin.
Line 27: Line 29:
  
 
Riippuen siitä, onko taulukon tarkoitus pystyä muuttamaan sen kokoa, sen määritelmä vaihtelee, mutta vain marginaalisesti. Yksiulotteinen staattinen taulukko tyypin määritelmä näyttää tältä:
 
Riippuen siitä, onko taulukon tarkoitus pystyä muuttamaan sen kokoa, sen määritelmä vaihtelee, mutta vain marginaalisesti. Yksiulotteinen staattinen taulukko tyypin määritelmä näyttää tältä:
 +
 
<syntaxhighlight lang="pascal">
 
<syntaxhighlight lang="pascal">
 
array[indexType] of baseType
 
array[indexType] of baseType
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
Dynaamisen taulukkotyypin määritelmä on yksinkertaisesti vapautettu ulottuvuuden määrityksestä:
 
Dynaamisen taulukkotyypin määritelmä on yksinkertaisesti vapautettu ulottuvuuden määrityksestä:
 +
 
<syntaxhighlight lang="pascal">
 
<syntaxhighlight lang="pascal">
 
array of baseType
 
array of baseType
Line 37: Line 42:
 
==== Staattinen taulukko ====
 
==== Staattinen taulukko ====
  
Staattisissa taulukoissa kaikki mitta-alueet tunnetaan etukäteen. Kaikkien ulottuvuuksien on oltava peräkkäisiä. Seuraava koodi näyttää voimassa olevat taulukon määritykset, jotka kaikki ovat staattisia
+
Staattisissa taulukoissa kaikki mitta-alueet tunnetaan etukäteen. Kaikkien ulottuvuuksien on oltava peräkkäisiä. Seuraava koodi näyttää voimassa olevat taulukon määritykset, jotka kaikki ovat staattisia.
.
 
 
<syntaxhighlight lang="pascal" line highlight="8,15,17,21,22,23">
 
<syntaxhighlight lang="pascal" line highlight="8,15,17,21,22,23">
 
program staticArrayDemo(input, output, stderr);
 
program staticArrayDemo(input, output, stderr);
Line 67: Line 71:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Koska kaikkien taulukon elementtien täytyy olla osoitettavissa, on olemassa elementtien maksimiraja, jota taulukko voi pitää. Jokaisen taulukon koon ([[SizeOf|<syntaxhighlight lang="pascal" enclose="none">sizeOf</syntaxhighlight>]]) on oltava pienempi kuin {{Doc|package=RTL|unit=system|identifier=ptrint|text=<syntaxhighlight lang="pascal" enclose="none">ptrInt</syntaxhighlight>}}n maksimiarvo.
+
Koska kaikkien taulukon elementtien täytyy olla osoitettavissa, on olemassa elementtien maksimiraja, jota taulukko voi pitää. Jokaisen taulukon koon ([[SizeOf/fi|<syntaxhighlight lang="pascal" inline>sizeOf</syntaxhighlight>]]) on oltava pienempi kuin {{Doc|package=RTL|unit=system|identifier=ptrint|text=<syntaxhighlight lang="pascal" inline>ptrInt</syntaxhighlight>}}n maksimiarvo.
  
 
==== Dynaamiset taulukot ====
 
==== Dynaamiset taulukot ====
[[Dynamic array|Dynaaminen taulukko]] on lähestymistapa, jolla voittaa etukäteen kaikkien ulottuvuuksien tuntemisen rajoitukset. Katso lisätietoja sen omilta sivuilta.  
+
 
 +
[[Dynamic array/fi|Dynaaminen taulukko]] on lähestymistapa, jolla voittaa etukäteen kaikkien ulottuvuuksien tuntemisen rajoitukset. Katso lisätietoja sen omilta sivuilta.  
  
 
=== Elementtien osoittaminen ===
 
=== Elementtien osoittaminen ===
 +
 
Taulukon yksittäinen elementti on osoitettu nimeämällä taulukon muuttujan tunniste seuraten kelvoitelukujen sisältämää kelvollista indeksiä joka on hakasulkujen sisällä.
 
Taulukon yksittäinen elementti on osoitettu nimeämällä taulukon muuttujan tunniste seuraten kelvoitelukujen sisältämää kelvollista indeksiä joka on hakasulkujen sisällä.
 
<syntaxhighlight lang="pascal" line highlight="5-7">
 
<syntaxhighlight lang="pascal" line highlight="5-7">
Line 86: Line 92:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Moniulotteisten taulukoiden elementtejä voidaan käsitellä kahdella tavalla:  
 
Moniulotteisten taulukoiden elementtejä voidaan käsitellä kahdella tavalla:  
joko [[Comma|pilkulla]] erotettavilla indekseillä:
+
joko [[Comma/fi|pilkulla]] erotettavilla indekseillä:
 +
 
 
<syntaxhighlight lang="pascal">
 
<syntaxhighlight lang="pascal">
 
arrayVariable[firstDimensionIndex, secondDimensionIndex, thirdDimensionIndex]
 
arrayVariable[firstDimensionIndex, secondDimensionIndex, thirdDimensionIndex]
Line 94: Line 101:
 
arrayVariable[firstDimensionIndex][secondDimensionIndex][thirdDimensionIndex]
 
arrayVariable[firstDimensionIndex][secondDimensionIndex][thirdDimensionIndex]
 
</syntaxhighlight>
 
</syntaxhighlight>
Kolmas syntaksellisesti kelvollinen vaihtoehto olisi sekoittaa molemmat tyylit, mutta sitä pidetään huonona tyylinä, ehkä jos ei ole merkkejä ryhmähakemistoille (esim. <syntaxhighlight lang="pascal" enclose="none">x</syntaxhighlight>, <syntaxhighlight lang="pascal" enclose="none">y</syntaxhighlight> ja <syntaxhighlight lang="pascal" enclose="none">z</syntaxhighlight>-koordinaatit verrattuna muihin indekseihin) on OK. Siitä huolimatta vain ensimmäinen mainittu merkintä on voimassa, kun määritetään taulukon tyyppejä.
+
 
 +
Kolmas syntaksellisesti kelvollinen vaihtoehto olisi sekoittaa molemmat tyylit, mutta sitä pidetään huonona tyylinä, ehkä jos ei ole merkkejä ryhmähakemistoille (esim. <syntaxhighlight lang="pascal" inline>x</syntaxhighlight>, <syntaxhighlight lang="pascal" inline>y</syntaxhighlight> ja <syntaxhighlight lang="pascal" inline>z</syntaxhighlight>-koordinaatit verrattuna muihin indekseihin) on OK. Siitä huolimatta vain ensimmäinen mainittu merkintä on voimassa, kun määritetään taulukon tyyppejä.
  
 
Huomaa, että on erittäin tärkeää määritellä indeksejä määritetyssä järjestyksessä kunkin ulottuvuuden alueella. Mieti seuraavaa ohjelmaa. Se kääntyy, mutta epäonnistuu ajon aikana
 
Huomaa, että on erittäin tärkeää määritellä indeksejä määritetyssä järjestyksessä kunkin ulottuvuuden alueella. Mieti seuraavaa ohjelmaa. Se kääntyy, mutta epäonnistuu ajon aikana
<syntaxhighlight lang="pascal" enclose="none">{$rangeChecks on}</syntaxhighlight>:
+
<syntaxhighlight lang="pascal" inline>{$rangeChecks on}</syntaxhighlight>:
 +
 
 
<syntaxhighlight lang="pascal">
 
<syntaxhighlight lang="pascal">
 
program arrayAddressOrderDemo(input, output, stderr);
 
program arrayAddressOrderDemo(input, output, stderr);
Line 113: Line 122:
  
 
Vaikka ohjelma todellakin iteroidaan jokaisen taulukon elementin yli, se ei tee sitä suunnitellulla tavalla, mutta hyödyntää sitä, että taulukon sisäinen muistin rakenne, on vain jatkuva muistilohko. Tämä on huonoa tyyliä. Korkean tason kielen ohjelmoijan ei tarvitse huolehtia tietyistä muistin asetteluista.  
 
Vaikka ohjelma todellakin iteroidaan jokaisen taulukon elementin yli, se ei tee sitä suunnitellulla tavalla, mutta hyödyntää sitä, että taulukon sisäinen muistin rakenne, on vain jatkuva muistilohko. Tämä on huonoa tyyliä. Korkean tason kielen ohjelmoijan ei tarvitse huolehtia tietyistä muistin asetteluista.  
Luola: Tällä tavoin voidaan muokata muita muuttujia. Joka tapauksessa esiintyy [[runtime error|ajonaikainen virhe]], nimittäin ”RTE 216 general protection fault”, jos yritetään päästä muistiin, joka ei kuulu ohjelmoijan toimivaltaan.
+
Luola: Tällä tavoin voidaan muokata muita muuttujia. Joka tapauksessa esiintyy [[runtime error/fi|ajonaikainen virhe]], nimittäin ”RTE 216 general protection fault”, jos yritetään päästä muistiin, joka ei kuulu ohjelmoijan toimivaltaan.
  
Kun taulukoiden arvoja luetaan niin ettei tarvita sen indeksiä niin voidaan [[for-in loop|<syntaxhighlight lang="pascal" enclose="none">for … in</syntaxhighlight> luupilla]] (silmukalla) käydä taulukko läpi.
+
Kun taulukoiden arvoja luetaan niin ettei tarvita sen indeksiä niin voidaan [[for-in loop|<syntaxhighlight lang="pascal" inline>for … in</syntaxhighlight> luupilla]] (silmukalla) käydä taulukko läpi.
  
  
 
== Sovellukset ==
 
== Sovellukset ==
 +
 
Katso esimerkiksi:
 
Katso esimerkiksi:
 
* [[Array sort|array sort]]
 
* [[Array sort|array sort]]
 
* [[15-puzzle/fi|15.peli]] tai [[Peg Solitaire tutorial/fi|Peg]]:n pelilaudan tilat tallennetaan taulukkona
 
* [[15-puzzle/fi|15.peli]] tai [[Peg Solitaire tutorial/fi|Peg]]:n pelilaudan tilat tallennetaan taulukkona
  
Oletus [[RTL/fi|RTL]]: n system käännösyksikön funktio {{Doc|package=RTL|unit=system|identifier=slice|text=<syntaxhighlight lang="pascal" enclose="none">system.slice</syntaxhighlight>}} palauttaa taulukon alkuosan,  
+
Oletus [[RTL/fi|RTL]]: n system käännösyksikön funktio {{Doc|package=RTL|unit=system|identifier=slice|text=<syntaxhighlight lang="pascal" inline>system.slice</syntaxhighlight>}} palauttaa taulukon alkuosan,  
joka on samanlainen kuin Rubyn notation a<syntaxhighlight lang="ruby" enclose="none">arrayVariable[0, n]</syntaxhighlight>. Lisäksi on {{Doc|package=RTL|unit=system|identifier=arraystringtoppchar|text=<syntaxhighlight lang="pascal" enclose="none">system.arrayStringToPPchar</syntaxhighlight>}}.
+
joka on samanlainen kuin Rubyn notation a<syntaxhighlight lang="ruby" inline>arrayVariable[0, n]</syntaxhighlight>. Lisäksi on {{Doc|package=RTL|unit=system|identifier=arraystringtoppchar|text=<syntaxhighlight lang="pascal" inline>system.arrayStringToPPchar</syntaxhighlight>}}.
 
Useimmat RTL:n matematiikkayksikön [[Functions for descriptive statistics/fi|tilastolliset rutiinit]] hyväksyvät taulukon parametreiksi niinkuin jotkut muutkin rutiinit.
 
Useimmat RTL:n matematiikkayksikön [[Functions for descriptive statistics/fi|tilastolliset rutiinit]] hyväksyvät taulukon parametreiksi niinkuin jotkut muutkin rutiinit.
  
 
== Katso myös ==
 
== Katso myös ==
 +
 
* [[Type information]]
 
* [[Type information]]
* Opas: [[1-dimensional arrays]]
+
* Opas: [[Basic Pascal Tutorial/Chapter 5/1-dimensional arrays/fi|1-dimensional arrays]]
* Opas: [[Multidimensional arrays|multidimensional arrays]]
+
* Opas: [[Basic Pascal Tutorial/Chapter 5/Multidimensional arrays/fi|multidimensional arrays]]
 
* [[Example: Multidimensional dynamic array|example: multidimensional dynamic array]]
 
* [[Example: Multidimensional dynamic array|example: multidimensional dynamic array]]
 
* [[Why Pascal is Not My Favorite Programming Language#The size of an array is part of its type|Why Pascal is not my favorite programming language § “the size of an array is part of its type”]]
 
* [[Why Pascal is Not My Favorite Programming Language#The size of an array is part of its type|Why Pascal is not my favorite programming language § “the size of an array is part of its type”]]
 
* [[Defensive programming techniques|defensive programming techniques]]
 
* [[Defensive programming techniques|defensive programming techniques]]
 
* [[Vectorization|vectorization]]
 
* [[Vectorization|vectorization]]
* {{Doc|package=RTL|unit=matrix|text=<syntaxhighlight lang="pascal" enclose="none">matrix</syntaxhighlight> unit}}
+
* {{Doc|package=RTL|unit=matrix|text=<syntaxhighlight lang="pascal" inline>matrix</syntaxhighlight> unit}}
 
{{Data types}}
 
{{Data types}}

Latest revision as of 04:12, 25 January 2023

Deutsch (de) English (en) español (es) suomi (fi) français (fr) Bahasa Indonesia (id) 日本語 (ja) русский (ru) 中文(中国大陆)‎ (zh_CN)

Taulukko on rakenteellisen data tyypin käsite.Se ryhmittelee saman tyyppisiä elementtejä. Ryhmä tarjoaa satunnaisen pääsyn jokaiseen sen elementtiin tai komponenttiin, lineaarisella indeksillä.

Taulukkoa tarkoittava sana array on varattu sana. Sana array on varattu sana. Se esiintyy aina yhdessä sanan of kanssa.

Käsite

Taulukko eli array on rajoitettu ja järjestetty elementtiyhdistelmä, joilla kaikilla on sama tietotyyppi, jota kutsutaan "perustyypiksi". Sillä on ainakin yksi erillinen, rajattu ulottuvuus, jossa luetellaan peräkkäin kaikki sen elementit. Kukin elementti voidaan yksilöidä yksilöllisesti yhdellä tai useammalla skalaariarvolla, joita kutsutaan indekseiksi, näiden ulottuvuuksien mukaisesti.

Yksiulotteinen taulukko (array) muistuttaa n-tuplea, kuten matematiikasta tiedetään, mutta sillä on rajoitus olla homogeeninen (kaikki elementit pitää olla saman tyyppisiä). Kaikkien mahdollisten arvojen, joita tällainen ryhmä voi sisältää, on valikoima homogeeninen peruskartaninen tuote, joka on perustyyppi.

Kaksiulotteinen taulukko muistuttaa matemaattista konseptia nimeltä matriisi, paitsi homogeenisuusrajoituksella.

Käyttö

Pituus

Alun perin Pascal:ssa oli vain kiinteän pituuden mukainen taulukko (Standard Pascal). Kuinka monesta elementistä taulukko koostui, oli tiedettävä käännösaikana. Koska tämä osoittautui suureksi rajoitukseksi ja puhumattakaan muutoksista tietokoneiden laitteistoissa, sen jälkeen on perusteltua ottaa askel eteenpäin, vaihtelevan pituinen taulukko esiteltiin.

Extended Pascal määritteli tähän käsitteen "schemata". Delphi esitteli “dynamic arrays”. Vuonna 2018 FPC tukee viimeksi mainittuja vain pituudeltaan vaihtelevia taulukkoja, kun taas "schemata" -tuki on vasta suunnitteluvaiheessa.

Riippuen siitä, onko taulukon tarkoitus pystyä muuttamaan sen kokoa, sen määritelmä vaihtelee, mutta vain marginaalisesti. Yksiulotteinen staattinen taulukko tyypin määritelmä näyttää tältä:

array[indexType] of baseType

Dynaamisen taulukkotyypin määritelmä on yksinkertaisesti vapautettu ulottuvuuden määrityksestä:

array of baseType

Staattinen taulukko

Staattisissa taulukoissa kaikki mitta-alueet tunnetaan etukäteen. Kaikkien ulottuvuuksien on oltava peräkkäisiä. Seuraava koodi näyttää voimassa olevat taulukon määritykset, jotka kaikki ovat staattisia.

 1program staticArrayDemo(input, output, stderr);
 2
 3type
 4	// specifying ordinal types as index directly
 5	
 6	/// allows selection of a character
 7	/// based on a Boolean value
 8	characterChoice = array[boolean] of UCS4char;
 9	
10	// enumerations
11	
12	/// enumerates Cartesian axes
13	spaceAxis = (xAxis, yAxis, zAxis);
14	/// a point in three-dimensional Euclidean space
15	locus = array[spaceAxis] of valReal;
16	/// a point in a two-dimensional Euclidean plane
17	point = array[xAxis..yAxis] of valReal;
18	
19	// integer subranges
20	
21	level = array[-24..24] of longint;
22	box = array[-1..1, -1..1, -1..1] of boolean;
23	transformationMatrix = array[0..1, 0..1] of valReal;
24begin
25end.

Koska kaikkien taulukon elementtien täytyy olla osoitettavissa, on olemassa elementtien maksimiraja, jota taulukko voi pitää. Jokaisen taulukon koon (sizeOf) on oltava pienempi kuin ptrIntn maksimiarvo.

Dynaamiset taulukot

Dynaaminen taulukko on lähestymistapa, jolla voittaa etukäteen kaikkien ulottuvuuksien tuntemisen rajoitukset. Katso lisätietoja sen omilta sivuilta.

Elementtien osoittaminen

Taulukon yksittäinen elementti on osoitettu nimeämällä taulukon muuttujan tunniste seuraten kelvoitelukujen sisältämää kelvollista indeksiä joka on hakasulkujen sisällä.

1program arrayAddressDemo(input, output, stderr);
2var
3	msg: array[0..2] of char;
4begin
5	msg[0] := 'H';
6	msg[1] := 'i';
7	msg[2] := '!';
8	writeLn(msg);
9end.

Moniulotteisten taulukoiden elementtejä voidaan käsitellä kahdella tavalla: joko pilkulla erotettavilla indekseillä:

arrayVariable[firstDimensionIndex, secondDimensionIndex, thirdDimensionIndex]

Tai sijoittamalla indeksejä omiin hakasulkeisiin:

arrayVariable[firstDimensionIndex][secondDimensionIndex][thirdDimensionIndex]

Kolmas syntaksellisesti kelvollinen vaihtoehto olisi sekoittaa molemmat tyylit, mutta sitä pidetään huonona tyylinä, ehkä jos ei ole merkkejä ryhmähakemistoille (esim. x, y ja z-koordinaatit verrattuna muihin indekseihin) on OK. Siitä huolimatta vain ensimmäinen mainittu merkintä on voimassa, kun määritetään taulukon tyyppejä.

Huomaa, että on erittäin tärkeää määritellä indeksejä määritetyssä järjestyksessä kunkin ulottuvuuden alueella. Mieti seuraavaa ohjelmaa. Se kääntyy, mutta epäonnistuu ajon aikana {$rangeChecks on}:

program arrayAddressOrderDemo(input, output, stderr);
{$rangeChecks on}
var
	i: integer;
	f: array[0..1, 0..3] of boolean;
begin
	for i := 0 to 7 do
	begin
		f[0, i] := true;
	end;
end.

Vaikka ohjelma todellakin iteroidaan jokaisen taulukon elementin yli, se ei tee sitä suunnitellulla tavalla, mutta hyödyntää sitä, että taulukon sisäinen muistin rakenne, on vain jatkuva muistilohko. Tämä on huonoa tyyliä. Korkean tason kielen ohjelmoijan ei tarvitse huolehtia tietyistä muistin asetteluista. Luola: Tällä tavoin voidaan muokata muita muuttujia. Joka tapauksessa esiintyy ajonaikainen virhe, nimittäin ”RTE 216 general protection fault”, jos yritetään päästä muistiin, joka ei kuulu ohjelmoijan toimivaltaan.

Kun taulukoiden arvoja luetaan niin ettei tarvita sen indeksiä niin voidaan for in luupilla (silmukalla) käydä taulukko läpi.


Sovellukset

Katso esimerkiksi:

Oletus RTL: n system käännösyksikön funktio system.slice palauttaa taulukon alkuosan, joka on samanlainen kuin Rubyn notation aarrayVariable[0, n]. Lisäksi on system.arrayStringToPPchar. Useimmat RTL:n matematiikkayksikön tilastolliset rutiinit hyväksyvät taulukon parametreiksi niinkuin jotkut muutkin rutiinit.

Katso myös


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