Tabelo (datumstrukturo)

El Vikipedio, la libera enciklopedio
Jump to navigation Jump to search
Temas pri... Ĉi tiu artikolo temas pri specifa datumstrukturo (regulpaŝa tabelo). Por informoj pri abstrakta tipo, kies realigo ĝi estas, vidu la paĝon Tabelo (datumtipo).

En komputado, la datumstrukturo tabelo estas la plej simpla kaj la plej kutima maniero realigi abstraktan tabelon, t.e. kolekton da komponantoj, aŭ elementoj, indikataj per numero aŭ pluropo da numeroj, kiujn oni nomas indicoj. Tia tabelo estas lokita en la komputila memoro tiel, ke la pozicion (la adreson) de ĉiu elemento oni povas komputi el la indica opo per simpla aritmetika formulo.

Realigo[redakti | redakti fonton]

Simpla ekzemplo pri tabela datumstrukturo estas tabelo el 10 32-bitaj reelaj elementoj, havantaj la indicojn 0≤i≤9; tian tabelon kreas la C-deklaro

float T[10];

Supozu ke rultempe la tabelo iĝos lokita (ekz-e) ekde la adreso 2000; tiam la elementoj havos la adresojn

2000, 2004, 2008, 2012, 2016, 2020, 2024, 2028, 2032, 2036

do la elemento T[i] havos la adreson 2000+4×i.

Limigoj de la datumstrukturo[redakti | redakti fonton]

La skizita realigo klarigas kelkajn ĝiajn limigojn kompare kun la abstrakta tabelo en ties plej ĝenerala formo (la asociaj tabeloj tiajn limigojn ne bezonas):

  1. La indicoj devas esti entjeroj aŭ konverteblaj al entjeroj — ili estas uzataj en aritmetika formulo.
  2. La elementoj devas esti samtipaj (aŭ almenaŭ samlongaj), ĉar la longo de la elemento aperas en la adreskalula formulo kiel paŝo de aritmetika progresio.
  3. La memoro estas rezervata por la tuta indicvariejo, t.e. se oni uzas la elementojn T[i] kaj T[j], i<j, tiam ankaŭ ĉiuj interaj elementoj T[k], i<l<j, estas kreataj.

Programlingva prezento de tabeloj[redakti | redakti fonton]

En kelkaj programlingvoj la unua elemento en iu tabelo havas indicon 0, la dua havas indicon 1, kiel tiel plu. En aliaj lingvoj la unua elemento havas indicon 1, (kaj sekve 2, 3, ktp). Plej multaj programlingvoj havas tabelon kiel antaŭdifinitan datumtipon.

En kelkaj lingvoj, kiam la programisto kreas tabelon, tiu devas deklari la grandecon de la tabelo. Tio estas la nombro de elementoj, kiujn la tabelo povos enhavi, kaj ne estas ŝanĝebla post la deklaro -- do se la tabelo ne estus sufiĉe granda por enhavi ĉiom da la necesaj datumoj, la programisto devus krei alian tabelon. Tabelon, kies grando estas fiksita antaŭ la plenumo de la programo, oni nomas statika tabelo. Kelkaj lingvoj disponigas dinamikajn tabelojn, kies grandon la programo povas kalkuli dum sia plenumo, kaj fiksi ĉe prilabolo de la deklaro. Plue, en iuj lingvoj disponeblas tablejoj kapablaj kreski kaj ŝrinki post sia kreo, kiuj povas sin etendi laŭbezone. Tiajn tabelojn oni nomas flekseblajvarilongaj.

Ekzistas ankaŭ plurdimensiaj tabeloj — ĉiu elemento de tia tabelo havas pli ol unu indicojn. Ekz-e dudimensian tabelon oni povas uzi por prezenti matricon kun vertikaloj kaj horizontaloj.

Tabeloj en Ĝavo[redakti | redakti fonton]

En la programlingvo Ĝavo, tabelojn oni povas krei ĉi tiel:

 int[] miaTabelo = new int[5];

Tio kreas tabelon da entjeroj, kaj tiu tabelo povas enteni kvin entjerojn. La programisto nun povas enmeti entjerojn en la tabelon ĉi tiel:

miaTabelo[0] = 1;
miaTabelo[1] = 18;
miaTabelo[2] = 5;
miaTabelo[3] = 33;
miaTabelo[4] = 50;

La programisto povas uzi la datumojn en la tabelo ĉi tiel:

int k = 3 + miaTabelo[3]; // k nun egalas 3 + 33 = 36
miaTabelo[4] = k - miaTabelo[2]; // miaTabelo[4] nun egalas 31

Vidu ankaŭ[redakti | redakti fonton]