background image

 

 

Tablice jednowymiarowe 1

Definicja.

 Strukturalnym typem danych nazywamy 

typ danych umożliwiający związanie zespołu danych 

z identyfikatorem.

Definicja.

 Typ strukturalny nazywamy typem 

tablicowym, jeżeli wszystkie składowe struktury są 

tego samego typu i dostęp do składowych odbywa 

się przez mechanizm indeksowania.

Definicja. 

Tablica jednowymiarowa jest skończonym 

ciągiem danych tego samego typu.

Jeżeli zbiór indeksów oznaczymy przez I, a zbiór 

wartości typu elementów tablicy przez A, to zgodnie 

z definicją tablica jednowymiarowa A jest 

odwzorowaniem A : IA. 

Jeżeli  I, to  i - ty element tej tablicy oznaczamy 

przez A(i) i ten sposób zapisu przyjęto w Adzie.

 

i

background image

 

 

Tablice jednowymiarowe 2

W notacji EBNF mamy:

array_type_definition ::= array index_constraint of 

component_subtype_indication

index_constraint ::= (discrete_subtype_indication |

range)

discrete_subtype_indication ::= type_name | 

subtype_name

range ::= simple_expression..simple_expression |

range_attribute

Typ indeksu może więc być typem dyskretnym

podtypem dyskretnym, albo zakresem typu 
dyskretnego
.

background image

 

 

Tablice jednowymiarowe 3

Przykład.

 Niech będzie dana deklaracja

M : array (Positive range 1..10) of Float;

Zmienna M jest typu tablicowego, którego zbiorem 

wartości są dziesięcioelementowe tablice liczb 
rzeczywistych reprezentowanych przez typ 
standardowy Float. 

W tym przypadku I

 

= {1,2,..,10}, A = {Float}, przy 

czym {Float} oznacza zbiór wartości typu Float.

Tablica M jest typu opisanego w deklaracji tej zmiennej. 

Typ ten jest anonimowy (

anonymous type

).

Definicja.

 Typ danych, który nie ma identyfikatora 

typu nazywamy typem anonimowym.

background image

 

 

Tablice jednowymiarowe 4

Należy przypomnieć, ze Ada jest językiem o silnej 

typizacji danych. Z tego wynika, ze jeżeli mamy 
deklaracje

Min : constant Integer := 1;
Max : constant Integer := 10;
M : array (Integer range Min..Max) of Float;
T : array (Integer range Min..Max) of Float;

to tablice M i T są różnych typów, mimo że 

zdefiniowanych identycznie.

W wyniku tego nielegalna jest relacja równości M = 

T i instrukcja podstawienia M := T;

Możemy jednak definiować typy tablicowe, które nie 

są anonimowe, czyli mają nazwę.

background image

 

 

Tablice jednowymiarowe 5

Przykład.

 Niech będą dane deklaracje

Min : constant Integer := 1;
Max : constant Integer := 10;
subtype Index is Positive range Min..Max;
type List is array (Index) of Float;
:
M, L : List;

W tym przypadku zdefiniowano typ indeksów Index, 

następnie typ tablicowy List oraz zmienną M tego 
typu. Rozwiązanie to jest lepsze od tego z 
poprzedniego przykładu, ponieważ możemy 
deklarować inne zmienne typu List w obszarze 
deklaracji tego typu. Legalne są teraz relacja M = 
L i instrukcja podstawienia T := M;

Program.

 Deklaracja_Tablicy_Jednowymiarowej

background image

 

 

Tablice jednowymiarowe 6

W notacji EBNF dostęp do elementu zapisujemy w 

postaci

indexed_component ::= name (expression),

przy czym name jest identyfikatorem zmiennej 

tablicowej, a wyrażenie w nawiasie może być 

literałemstałązmienną, albo kombinacją tych 

obiektów, operatorów i ewentualnie wywołań 

funkcji

Wartość wyrażenia musi być typu zgodnego z typem 

indeksów tablicy.

Element tablicy traktowany jest jak zmienna, co 

oznacza, że można przypisać mu wartość, wczytać 

lub wypisać wartość, użyć jako parametru aktualnego 

podprogramu, lub użyć jako argumentu wyrażenia.

background image

 

 

Tablice jednowymiarowe 7

Przykład.

 Przypuśćmy, że chcemy 

przechowywać dzienne wyniki sprzedaży 
całego tygodnia. W tym celu możemy 
stosować deklaracje:

Program.

 Week_Sales.

Atrybuty tablic jednowymiarowych

Niech będzie dana deklaracja
A : array (Index_Type range 

First..Last) of Component_Type;

Z tablicą tą związane są następujące 

atrybuty:

background image

 

 

Tablice jednowymiarowe 8

A'First – pierwsza wartość indeksu
A‘Last – ostatnia wartość indeksu
A‘Length – liczba wartości indeksu
A‘Range = A'First.. A‘Last 

background image

 

 

Tablice jednowymiarowe 9

Literatura podstawowa

Morawski, M., A. M. Zajączkowski. 

(2003). 
Wstęp do programowania w języku 
Ada’95. Rozdziały 5.1, 5.2.


Document Outline