Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 (7).doc
Скачиваний:
23
Добавлен:
12.05.2015
Размер:
376.32 Кб
Скачать

Оголошення масиву

Незважаючи на те, що синтаксис оголошення масиву є різним для різних мов програмування, для коректного опису масиву у будь-якому випадку необхідно задати:

  • базовий тип елементів,

  • розмірність масиву;

  • його розмір (для багатовимірних масивів – по кожній розмірності);

  • "спосіб" нумерування елементів (не у всіх мовах програмування).

Так РБНФ-нотація оголошення масиву у мові Pascal має вигляд:

оголошення_масиву = array “[“ тип_індекса {, тип_індекса} “]” of базовий_тип,

де тип_індекса є певним допустимим порядковим типом. Характерною особливістю типу індекса у Pascal є те, що він опосередковано задає кількість елементів певної розмірності масиву (як кількість можливих значень цього типу) і "спосіб" їх нумерування (як відповідне значення типу індекса, а не порядковий номер елемента в масиві). Такий спосіб задання типу індекса дає змогу наочно і зрозуміло інтерпретувати окремі елементи масиву. Наприклад,

Type

day = (mon, tues, wen, th, fri, sat, sun) ;

Var

workday : array [1 .. 5] of day ; { робочі дні тижня окремого працівника }

k_ill : array [day] of byte ; { кількість захворілих протягом тижня }

kol: array [1950 .. 1996] of longint; { кількість населення у визначені роки }

m : array [1 .. 20, 1..10] of real ;

У загальному випадку індекси багатовимірних масивів не обов'язково повинні мати однаковий тип. Наприклад, структураPascal, що містить інформацію про чисельність населення окремої соціальної групи в декількох містах за певний період часу:

Type

town = ( Moscow, Kiev, Minsk );

group = ( worker, office_worker, peasant );

Var

kol: array (town, group, 1960..2011) of longint.

Тут має місце тривимірний масив, причому кожна з його розмірностей визначається своїм типом.

РБНФ-нотація оголошення масиву у С/С++ має наступний вид:

оголошення_масиву = базовий_тип ім'я”[“розмір”]” { ”[ “розмір”]”}

розмір = цілочисельна_константа | константна_змінна.

Особливістю оголошення масиву у С/С++ є стандартна індексація його елементів: перший елемент завжди має індекс 0. Наприклад,

int a[3]; // a[0], a[1], a[2], a[3]

int d[2][3]; // d[0][0] d[0][1] d[0][2] d[1][0] d[1][1] d[1][2]

Введення такого обмеження має свою логіку, оскільки тут широко використовується адресна арифметика.

Для задання розмірностей масиву у С/С++ широко використовуються константні змінні. Константна змінна – це змінна, яка ініціалізується початковим значенням при оголошенні і не може змінювати це своє значення у процесі виконання програми. Оголошуються такі змінні з використанням специфікатора типу даних const. Наприклад,

const int n = 5, m = 7;

double b[n][m]; // масив розміру 5х7

Слід зазначити, що у С/С++ при оголошенні масиву не тільки виділяється пам'ять для його елементів, але й формується покажчик, який співпадає з ім'ям масиву і значення якого дорівнює адресі першого (нульового) елемента масиву. Тобто, ім’я масиву є і постійним вказівником(адресною константою) на цей масив (на його перший елемент). З точки зору синтаксису мови С/С++ цей покажчик є константою, значення якої можна використовувати у виразах, але змінити це значення не можна.

Як і змінні, масиви можуть визначатися. РБНФ-нотація визначення масиву у С/С++:

визначення_масиву = базовий_тип ім'я”[“розмір”]” { ”[ “розмір”]”} ”= {”список_значень”}”

Наприклад,

char c[3] = {'a', 'k', 'c'};

float b[5] = {5.7, 0.4, 3.9, 2.7, 1.8};

int d[2][3] = {{3, 5, 7}, {4, 3, 1}}.

Особливостівизначення:

  • кількість елементів масиву при оголошенні може бути опущена (визначається кількістю елементів в списку початкових значень), наприклад,

char a[ ] = {'a', 'b', 'c'};

int m[ ][2] = {3, 5, 7, 1};

  • якщо початкових значень менше, ніж елементів в масиві, всі інші елементи автоматично ініціалізуються 0, наприклад,

int d[10] = {5, 8, 19, 34};  5, 8, 19 , 34 , 0 , 0 , 0 , 0 , 0 , 0

int m[3][2] = {3, 5, 7}  3 5

7 0

0 0

int m[2][3] = {{3}, {5, 7}};  3 0 0

5 7 0

  • для недопущення подальшої зміни значень елементів масиву треба визначити його з ключовим словом const, наприклад,

const int m[ ] = {3, 5, 7, 1};

У мовах програмування, які допускають оголошення програмістом власних типів, як правило, існує можливість створення власного регулярного типу (типу масива). У визначенні такого типу може вказуватися розмір, тип елемента, діапазон значень і типи індексів. Надалі можливе визначення змінних створеного типу. Всі такі змінні-масиви мають одну структуру.

У С/С++ власний регулярний тип (тип масива) можна задати за допомогою директиви typedef:

typedef базовий_тип ім’я_типу[розмір];

typedef базовий_тип ім’я_типу[розмір_1] [розмір_2].

Змінна, що матиме такий тип, оголошується наступним чином:

ім’я_типу ім’я_масиву.

Наприклад,

typedef int Matrix[10][15];

Matrix m;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]