Tablica (informatyka)

Ten artykuł dotyczy informatyki. Zobacz też: inne znaczenia tego słowa.
Ten artykuł wymaga uzupełnienia informacji.
Artykuł należy uzupełnić o istotne informacje: Hasło należy zdecydowanie rozszerzyć, opisać dokładnie reprezentacje tablic, użycie w popularnych językach programowania itd. Chyba rozsądnie byłoby wzorować się na en-wiki..
Po wyeliminowaniu niedoskonałości należy usunąć szablon {{Dopracować}} z tego artykułu.

Tablica – kontener uporządkowanych danych[1] zazwyczaj takiego samego typu[2][3], w którym poszczególne elementy dostępne są za pomocą kluczy (indeksu)[1][3]. Indeks najczęściej przyjmuje wartości numeryczne. Rozmiar tablicy jest albo ustalony z góry (tablice statyczne), albo może się zmieniać w trakcie wykonywania programu (tablice dynamiczne). Tablice jednowymiarowe mogą przechowywać inne tablice, dzięki czemu uzyskuje się tablice wielowymiarowe[1][4]. W tablicach wielowymiarowych poszczególne elementy są adresowane przez ciąg indeksów[3].

Praktycznie wszystkie języki programowania obsługują tablice – jedynie w niektórych językach funkcyjnych zamiast tablic używane są listy (choć tablice zwykle też są dostępne). W matematyce odpowiednikiem tablicy jednowymiarowej jest ciąg, a tablicy dwuwymiarowej – macierz.

Tablice w popularnych językach programowania

Pascal

Tablice w Pascalu są typem strukturalnym[5], będącym zbiorem elementów adresowanych typem prostym porządkowym[3].

{ jednowymiarowa tablica 16 liczb całkowitych indeksowana wartościami od 1 do 16 }
var tablica : array [1..16] of Integer;

C/C++

Tablice w C/C++ są typem pochodnym[2] obiektów, które zajmują ciągły obszar pamięci[2]. Indeksowanie elementów zawsze zaczyna się od zera[2].

/* jednowymiarowa tablica 6 liczb całkowitych */
int tablica[6];

int tablica2[6][6]; //tablica dwuwymiarowa
int tablica3[7][7][7]; //tablica trójwymiarowa

Przy deklaracji wielkości tablicy użyte mogą zostać tylko liczby naturalne (bez zera).

C#

Tablice w C# są obiektami[6]. Wyróżnia się tablice jednowymiarowe, wielowymiarowe i nieregularne (poszarpane) czyli tablice tablic[7]. Indeksowanie tablic zawsze zaczyna się od zera[7]. Dopuszczalne są tablice bezelementowe[8].

int[] tablica = new int[6]; // jednowymiarowa tablica 6 liczb całkowitych

int[,] tablica2 = new int[6,6]; //tablica dwuwymiarowa
int[,,] tablica3 = new int[7,7,7]; //tablica trójwymiarowa

// tablica nieregularna
int[][] tablicaX = new int[3][]; // jednowymiarowa tablica na trzy różne jednowymiarowe tablice

Java

Tablice w Javie są obiektami[9]. Można zdefiniować tylko tablice jednowymiarowe[9]. Tablice wielowymiarowe można symulować przez definiowanie tablicy tablic[9]. Indeksowanie tablic zawsze zaczyna się od zera[9].

int[] tablica = new int[6]; // deklaracja tablicy liczb całkowitych z jednoczesną alokacją na 6 elementów

JavaScript

W języku tym tablice tworzy się tak:

var tablica =[1, 2, 3];
var tablicaPusta=[];

lub

var tablica=new Array(1,2,3);
var tablicaPusta=new Array();

Tablice w JavaScripcie są dynamiczne, co oznacza, że nie trzeba deklarować ich wielkości. Tablica powiększa się automatycznie.

var tablica=[1,2,3];
tablica[4]=5;

jest równoważne

var tablica=[1,2,3,undefined,5];

Tablice nie są osobnym typem danych w języku JavaScript. Mają osobną składnie deklaracji, ale są to obiekty, których kluczami są indeksy (zamieniane na ciągi znaków). Obiekty te posiadają specjalną właściwość length. W nowej odsłonie języka (ES6/ES2015) tablice są także iteratorami.

Ruby

Tablice w Ruby są obiektami i są dynamiczne[10].

tablica = [1, 2, 3]

Zobacz też

  • tablica asocjacyjna
  • tabela

Przypisy

  1. a b c Markowski, Rydzewski i Kruszyński 1989 ↓, s. 74.
  2. a b c d Grębosz 2000 ↓, s. 127.
  3. a b c d Marciniak 1991 ↓, s. 111.
  4. Grębosz 2000 ↓, s. 143.
  5. Marciniak 1991 ↓, s. 110.
  6. Tablice jako obiekty (Przewodnik programowania w języku C#) [online], msdn.microsoft.com [dostęp 2016-07-12] .
  7. a b Tablice (Przewodnik programowania w języku C#) [online] [dostęp 2016-07-12] .
  8. Array.Empty<T> Method () [online], msdn.microsoft.com [dostęp 2016-07-12]  (ang.).
  9. a b c d Arrays (The Java™ Tutorials > Learning the Java Language > Language Basics) [online], docs.oracle.com [dostęp 2016-07-13]  (ang.).
  10. Dokumentacja Ruby 2.3.3. [dostęp 2019-01-12]. (ang.).

Bibliografia

  • JerzyJ. Grębosz JerzyJ., Symfonia C++. Programowanie w języku C++ orientowane obiektowo, t. I,II,III, Oficyna Kallimach, 2000 .
  • AndrzejA. Marciniak AndrzejA., Tutbo Pascal 5.5, wyd. drugie, Poznań: Wydawnictwo NAKOM, 1991, ISBN 83-85060-20-0, ISSN 0867-6011 .
  • AndrzejA. Markowski AndrzejA., AndrzejA. Rydzewski AndrzejA., HenrykH. Kruszyński HenrykH., Leksykon techniki mikrokomputerowej, seria: Mikrokomputery, Warszawa: Wydawnictwo Czasopism i Książek Technicznych NOT-SIGMA, 1989, ISBN 83-85001-28-X .