Tablica (informatyka)
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
edytujPascal
edytujTablice 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++
edytujTablice 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#
edytujTablice 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
edytujTablice 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
edytujW 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
edytujTablice w Ruby są obiektami i są dynamiczne[10].
tablica = [1, 2, 3]
Zobacz też
edytujPrzypisy
edytuj- ↑ a b c Markowski, Rydzewski i Kruszyński 1989 ↓, s. 74.
- ↑ a b c d Grębosz 2000 ↓, s. 127.
- ↑ a b c d 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] .
- ↑ a b 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.).
- ↑ a b c d 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
edytuj- 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 .