APP 07 Tablice Jednowymiarowe

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  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łem, stałą, 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


Wyszukiwarka

Podobne podstrony:
APP Zadania 07 Tablice Jednowymiarowe
APP Zadania 07 Tablice Jednowymiarowe
07 Tablica 5
07-Tablica4
07 Tablica4id 28157
07 TABLICA 5
07 Tablice ADR 2002, SGSP, ADR
[lekcja 19] Przekazywanie tablic jednowymiarowych do funkcji Kurs C++ » Poziom 2
07-Tablica4
07-Tablica4
07 TABLICA 4
07 Tablica4
07-Tablica4
07-Tablica4
[lekcja 18] Tablice jednowymiarowe Kurs C++ » Poziom 2
APP 08 Tablice Wielowymiarowe

więcej podobnych podstron