Tablica – kontener uporządkowanych danych zazwyczaj takiego samego typu, w którym poszczególne elementy dostępne są za pomocą kluczy (indeksu). 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. W tablicach wielowymiarowych poszczególne elementy są adresowane przez ciąg indeksów.
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, będącym zbiorem elementów adresowanych typem prostym porządkowym.
{ 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 obiektów, które zajmują ciągły obszar pamięci. Indeksowanie elementów zawsze zaczyna się od zera.
/* 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. Wyróżnia się tablice jednowymiarowe, wielowymiarowe i nieregularne (poszarpane) czyli tablice tablic. Indeksowanie tablic zawsze zaczyna się od zera. Dopuszczalne są tablice bezelementowe.
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. Można zdefiniować tylko tablice jednowymiarowe. Tablice wielowymiarowe można symulować przez definiowanie tablicy tablic. Indeksowanie tablic zawsze zaczyna się od zera.
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.
tablica = [1, 2, 3]
Zobacz też
Przypisy
- 1 2 3 Markowski, Rydzewski i Kruszyński 1989 ↓, s. 74.
- 1 2 3 4 Grębosz 2000 ↓, s. 127.
- 1 2 3 4 Marciniak 1991 ↓, s. 111.
- ↑ Grębosz 2000 ↓, s. 143.
- ↑ Marciniak 1991 ↓, s. 110.
- ↑ Tablice jako obiekty (Przewodnik programowania w języku C#) [online], msdn.microsoft.com [dostęp 2016-07-12].
- 1 2 Tablice (Przewodnik programowania w języku C#) [online] [dostęp 2016-07-12].
- ↑ Array.Empty<T> Method () [online], msdn.microsoft.com [dostęp 2016-07-12] (ang.).
- 1 2 3 4 Arrays (The Java™ Tutorials > Learning the Java Language > Language Basics) [online], docs.oracle.com [dostęp 2016-07-13] (ang.).
- ↑ Dokumentacja Ruby 2.3.3. [dostęp 2019-01-12]. (ang.).
Bibliografia
- Jerzy Grębosz, Symfonia C++. Programowanie w języku C++ orientowane obiektowo, t. I,II,III, Oficyna Kallimach, 2000.
- Andrzej Marciniak, Tutbo Pascal 5.5, wyd. drugie, Poznań: Wydawnictwo NAKOM, 1991, ISBN 83-85060-20-0, ISSN 0867-6011.
- Andrzej Markowski, Andrzej Rydzewski, Henryk Kruszyński, Leksykon techniki mikrokomputerowej, seria: Mikrokomputery, Warszawa: Wydawnictwo Czasopism i Książek Technicznych NOT-SIGMA, 1989, ISBN 83-85001-28-X.