Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2_teoria+zavd_masiv+pidprogram.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
391.68 Кб
Скачать

Програми циклічної структури з використанням

одновимірних та двовимірних масивів

Масивом називається впорядкована послідовність величин, яка позначається одним іменем. Впорядкованість полягає в тому, що значення елементів масиву займають послідовні комірки пам'яті.

Масиви бувають одновимірними і багатовимірними.

Описуючи одновимірний масив, необхідно вказувати загальну кількість тих елементів, що входять в масив і тип цих елементів. При цьому використовуються зарезервовані слова array і of (масив, з).

Наприклад,

var

a: array [1 . . 10] of real;

b: array [0 . . 50] of сhar;

c: array [1 . . 4] of boolean.

За словом array в квадратних дужках вказуються межі зміни індексу (порядкового номера) елементів масиву. Так, масив a складається з 10 елементів, масив b – з 51, а масив c – з 4 елементів. За словом of вказується тип елементів, з яких складається масив. Тут a – масив дійсних чисел, – масив символів, c – масив змінних логічного типу.

Доступ до кожного елемента одновимірного масиву в програмі здійснюється з допомогою індексу – цілого числа. При звертанні в програмі до довільного елемента масиву зразу за іменем масиву повинен записуватись індекс елемента в квадратних дужках.

Описати масив можна і так:

type <ім'я типу> = array <список інд.типів> of <тип>

Тут <ім'я типу> – ідентифікатор (довільна TP-змінна);

<список інд.типів> - список з одного або кількох індексних типів;

<тип> – довільний тип ТР.

У системі програмування TurboPascal можна одним оператором присвоєння передати всі елементи масиву іншому масиву того ж типу.

Наприклад,

type

vect= array[1..5] of integer;

var a,b:vect;

begin

........

a:= b;

.......

end;

Після цього присвоєння всі п'ять елементів масиву а отримають відповідно ті ж значення, що і в масиві b. Проте не можна записати: if a=b then ...

Порівняти два масиви можна поелементно, наприклад:

type

vect=array[1..n] of integer;

var a,b: vect;

i:integer;

eq:boolean;

begin

.......

for i:=1 to 5 do

if a[i]<>b[i] then

eq:=false;

.......

end.

У двовимірному масиві кожний елемент ідентифікується номером рядка і номером стовпця, на перетині яких він знаходиться.

Матрицю дійсних чисел а, яка складається з 10 рядків і 15 стовпців і матрицю символьних даних b, яка складається з 51 рядка і 10 стовпців можна описати, наприклад, так

var

a: array [ 1 . . 10, 1..15 ] of real;

b: array [0 . . 50, 1.. 10] of сhar;

Елементи двовимірного масиву – це змінні з двома індексами, і тому, щоб перебрати всі його елементи необхідно змінювати два параметри: і – номер рядка; j – номер стовпця.

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

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

var a,b,c: array[1..10, 1..15] of real;

Великі одновимірні, а також двовимірні масиви, що складаються з m рядків та n стовпців зручно описувати через імена констант, наприклад:

const m=20; n=30;

type matr=array[1..m,1..n] of integer;

Тоді при зміні кількості рядків і стовпців матриці в програмі доведеться змінити лише значення констант.

Уведення та виведення значень елементів масивів здійснюється в циклі поелементно.

Наприклад, фрагмент програми

const n=25;

var a:array [1..n] of integer;

i:integer;

begin

for i:=1 to 25 do read(a[i]);{уведення ел.масиву}

for i:=1 to 25 do write(' ',a[i]);{виведення ел.масиву}

end.

здійснює уведення елементів одновимірного масиву з клавіатури і їх виведення на екран.

При уведенні та виведенні значень елементів двовимірного масиву (матриці) використовуються вкладені цикли, тобто цикли, які включають в себе один або більше інших циклів. Цикл, що містить в собі інші цикли, називається зовнішнім, а вкладені в нього цикли – внутрішніми. Дія вкладеного циклу не повинна виходити за область дії зовнішнього. Перехресні цикли не допускаються.

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

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

Фрагмент програми

const n=2; m=2;

var A: array[1..n,1..m] of integer;

i,j: integer;

begin

for i:=1 to n do {зовнішній цикл}

for j:=1 to m do {внутрішній цикл}

read(a[i,j]); readln;

end;

здійснює уведення значень елементів двовимірного масиву, а фрагмент програми

const n=2; m=2;

var A: array[1..n,1..m] of integer;

i,j: integer;

begin

for i:=1 to n do {зовнішній цикл}

begin

for j:=1 to m do {внутрішній цикл}

write(a[i,j]); writeln;

end;

end;

здійснює їх виведення на екран.

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