Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Масив. Опис типу





Масив – це користувацький структурований тип даних, що складається з фіксованого числа елементів, які мають один і той же базовий тип. Тому повністю правомірно існування масиву цілих чисел, масиву дійсних чисел, масиву символів, масиву масивів і т.д.

Доступ до кожного окремого елемента здійснюється шляхом індексації елементів масиву. Індекси є виразами будь-якого простого типу, який можна перераховувати. Для опису масиву використовуються зарезервовані слова:: tуре < ім'я типу > = array [ тип індексу ] < тип елементу>;

var < ідентифікатор,... >: < ім'я типу >;

Тип елементу - будь-який тип мови Pascal, окрім object та файлового.

 

Масив може бути описаний і без попереднього опису типу:

var < ідентифікатор,...>: array [ тип індексу ] of < тип компоненти >;

Приклад.

tуре tmas1 = array [1..255] of char;

var

mas1: tmas1; {тип tmas1 заздалегідь описаний в розділі типів}

mas2: array [1..26] integer; { прямий опис масиву mas2 }

Якщо задано один індекс, масив називається одновимірним, якщо два індекси - двомірним, якщо n індексів - n-мірним. Одновимірні масиви звичайно використовуються для представлення векторів, а двомірні - для представлення матриць.

Приклад.

var

mas3: array [l..40] real; { Одномірний масив представляє вектор з 40 елементів типу real }

mas4: array [1..2, 1..3] byte; { Двомірний масив представляє матрицю з 2 рядків і 3 стовпців з елементами байтового типу.

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

А[1,1] А[1,2] А[1,3] А[2,1] А[2,2] А[2,3]

Контроль правильності значень індексів масиву може проводитися за допомогою директиви компілятора R. По умовчанню директива R знаходиться в пасивному стані {$R-}. Перехід в активний стан викликає перевірку всіх індексних виразів на відповідність їх значень діапазону типу індексу.

4.2. Дії над елементами масиву

 

Після визначення масиву, кожний його елемент можна обробити, вказавши ідентифікатор (ім'я) масиву і індекс в квадратних дужках. Наприклад, запис mas2[2], mas3[10], mas4[3,4] дозволяє звернутися до другого елемента масиву mas2, до десятого елемента масиву mas3 і до елемента, що знаходиться в третьому рядку четвертого стовпця масиву mas4.

Елементи масиву називаються індексованими змінними і можуть бути використані так само, як і прості змінні.

Розглянемо типові ситуації, що виникають при роботі з даними типу array. Для цього опишемо три масиви і чотири допоміжні змінні:

var A, B: array [1..4] of real;

C: array [1..10, 1..15] of integer;

i, j, k: integer;

s: real;

Ініціалізація масиву полягає в присвоєні кожному елементу масиву одного і того ж значення, відповідного базовому типу. Найбільш ефективно ця операція виконується за допомогою оператора for: for i:=1 to 4 do A[i]:=0;

Для ініціалізації двомірного масиву звичайно використовуються утрішній оператор циклу з параметром:

for i:= 1 to 10 do

for j:= 1 to 15 do

C[i,j]:= 0;

Паскаль не має засобів введення - виводу елементів масиву відразу, тому введення і вивод значень проводиться поелементно.

Інформація має бути занесена в масив з клавіатури з використанням звернення до підпрограм

read(список вводу);

readln(список вводу);

де список вводу включає імена змінних (елементів масиву) через кому.

Для друку використовується звернення до підпрограмми

write();

або

writeln();

При цьому треба зазначити, що список вводу може включати в себе окрім імен зміннх константи (числові та текстові) і вирази

for i:=1 to 4 do

begin

write(‘A[‘, i, ‘]=‘); { підказка }

readln (A[i]);

end;

Значення двомірного масиву вводяться за допомогою вкладеного оператора for:

for i:= 1 to 10 do

for j:= 1 to 15 do

begin

write(‘C[‘, i, ‘,‘, j, ‘]=‘); { підказка }

readln (C[i,j]);

end;

Вивод значень елементів масиву виконується аналогічним чином, але використовуються підпрограми write або writeln.

for i:=1 to 4 do writeln(‘A[‘,i, ‘]=‘,A[i]); {для одномірного масиву}

або

for i:= 1 to 10 do {для двомірного масиву}

for j:= 1 to 15 do

write(‘C[‘, i, ‘,‘, j, ‘]=‘, C[i,j]);

 

Копіюванням масивів називається присвоєння значень всіх елементів одного масиву відповідним елементам іншого масиву. Копіювання можна виконати одним оператором присвоєння, наприклад A:= B; або за допомогою оператора for: for i:= 1 to 4 do A[i]:= B[i];

Слід зауважити, що у першому випадку змінні А і В повинні бути задекларовані за допомогою одного і тогож імені типу.


 

Приклад:

Const n =10;

Type

Vect = array[1..n] of real;

Var

A, B: Vect

C = array[1..n] of real;

Begin

A:=B;{присвоєння виконано корректно коректно}

C:=B{помилка виконання}

У другому випадкузмінні А і В можуть визначатись окремо, але мати однакові базові типи і ідеентичні типи індексів.

Приклад:

Const

n=10;

M=7;

Var

A:array [1..n] of real;

B:array [1..m] of real;

I:integer;

Begin

For i:=1 to m do

A[i]:=B[i];

End.

У цьому прикладі перші m елементівмасиву А будуть мати значення, які зберігаються в масиві В.

Останні n-m значень масиву будуть не визначені.

 

Іноді вимагається здійснити пошук в масиві елементів, що задоволь-няють деяким відомим умовам. Хай, наприклад, треба з'ясувати, скільки елементів масиву A мають нульове значення, а також знайти максимальний елемент масиву (його значення і індекс). Для відповіді на це питання введемо додаткові змінні k, max, imax і скористаємося операторами for і if:

k:= 0;

max:= A[1];imax:= 1;

for i:= 1 to 4 do

begin

if A[i] = 0 then k:= k + 1;

if max < A[i]

then begin max:= A[i]; imax:=i; end;

end;

Після виконання циклу змінна k міститиме кількість елементів масиву A з нульовим значенням, а змінні max і imax містять відповідно максимальне значення елемента масиву і його індекс.

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

rab:= A[1]; { rab - допоміжна змінна)

A[1]:= A[4];

A[4]:= rab;

Date: 2015-09-18; view: 547; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию