logo
методичка_1_05_ВНУ

Поняття масиву. Одномірний масив та його опис в програмі

Потреба в масивах виникає тоді, коли є велика кількість однотипних упорядкованих даних. У цьому випадку можна було б ці дані розглядати як сукупність непов'язаних величин, надавши кожній з них своє ім'я. Однак такий підхід неефек­тивний. Зручніше ці дані вважати масивом, надаючи їм одне ім'я, а окремим компонентам поставити у відповідність кон­кретні номери, за аналогією з вектором, кожна компонента яко­го позначена іменем, праворуч від якого в нижній позиції за­значено номер компонента.

Масив - це впорядкований набір даних однакового типу. Приклади масивів: рядок тексту, компонентами якого є окремі символи; вектор, що є масивом дійсних чисел; матриця, як масив векторів.

Кожному простому значенню, що є в масиві, тобто кожному компонентові відповідає сукупність номерів, які визначають місце його в загальній послідовності. Ці номери називають індексами. Головні характеристики сукупності значень, що утворюють масив, такі: ім'я, розмірність (тобто кількість ком­понентів), тип компонентів і тип індексів, ім'я - це повна змінна типу масив, її значенням є весь масив. Загальна форма опису масиву така:

type

<ім'я>=аrrау [<тип_індексів>] of <тип_елементів>;

Тип індексів може бути довільним простим типом, крім real. Найчастіше це діапазон і перелічуваний тип. (У Турбо Паскалі - крім longint і діапазону від нього). Тип integer теж не використовують, бо тоді компонентів буде забагато. Тип ком­понентів може бути довільний. Важливо, що час доступу до будь-якого компонента масиву не залежить від значення індексу. Тому масив вважають структурою прямого доступу.

Приклад опису масиву:

type

vector=array[1..10] of real;

Тоді деякі змінні можна описати так:

var

х,у,v:vector;

Можна також об'єднати ці описи й обійтися без опису типу:

var

х,у,v:array[1..10] of real;

Можливий і такий опис:

s:array[1147.. 1999] of integer;

r:array[-754..-1] of integer;

тобто від'ємні числа обмежують діапазон.

Приклад випадку, коли індексом є перелічуваний тип, такий:

type

day=(pn, vt, sr, ct, pt, sb, nd);

b=array[day] of boolean;

var z,c:b;

або

var z,c:array[day] of boolean;

У другому випадку описані вже змінні с і z, що мають такий самий тип, як b, однак без імені (так зване неявне задання типу).

Як тип індексу, крім діапазону integer і перелічуваного типу, можна використовувати типи boolean і char, як упорядко­вані.

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

і:=5; j:=2;

c[sr]:=false;

z[pred(nd)]:=c[sb];

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

Приклади часткових змінних (компонентів) з постійними значеннями індексів такі: k[true]; k[false];

Розглянемо типові приклади програм роботи з масивами.

Ввід та вивід значень елементів одномірного масиву

Програма вводу значень елементів одномірного масиву

Program VvOdnMas;

Uses Crt;

Var

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

i,n:integer;

Begin

Writeln(‘Введіть довжину N масиву А:’);

Readln(n);

Writeln(‘Введіть елементи масиву А:’);

For i:=1 to n do read(A[i]);

Readln

End.

Програма виводу значень елементів одномірного масиву

Program VuOdnMas;

Uses Crt;

Var

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

i,n:integer;

Begin

{..........................}

Writeln(‘Одномірний масив А:’);

For i:=1 to n do Writeln(A[i]);

Writeln;

{..........................}

End.

Задачі обчислювального характеру

Табулювання функції, аргумент якої заданий масивом

Обчислити всі значення функції , аргумент якої набуває значень {-2; 3; 12.2; 5.4; 6.7; 1.4; 2.8; 7.5; 3.14; 2.85}. Розв’язати задачу для випадку, коли масив містить не 10, а N значень.

Програма табулювання даної функції матиме такий вигляд.

program TabFunc;

uses

Crt;

var

x,y:array[1..20] of real;

N,i:integer;

begin

ClrScr;

Writeln('Введіть кількість елементів масиву N<=20');

Readln(n);

Writeln('Введіть поелементно масив x:');

For i:=1 to N do Read(x[i]);

Readln;

Writeln('Аргумент функції x Значення функції y');

For i:=1 to N do

Begin

y[i]:=Sqr(sin(3*x[i]));

Writeln(x[i]:9:2,' ',y[i]:9:2);

end;

Readln;

end.