Тема. Програмування масивів.
1. Поняття масиву.
До цих під для опрацювання даних використовувались скалярні типи. Однак при обробці великих наборів даних використання скалярних величин стає громіздким. Тому для вирішення таких завдань використовуються структуровані величини. Одним зі структурованих типів є регулярний тип даних, або масив
.
Масив -
це впорядкований набір однотипових елементів. Впорядкованість означає, що елементи масиву розташовані в певному порядку, тобто, проіндексовані. Одно типовість означає належність елементів масиву одному типу даних. Це дозволяє використовувати опрацювання масивів за допомогою операторів циклу. Розглянемо опрацювання масивів на прикладі одновимірного масиву.
Масив визначається наступним чином:
ім’я типу = array
[тип індексу] of
тип компонентів
Визначення масиву починається зарезервованим словом array
(масив), за яким слідує тип індексу, укладений у квадратні дужки. Після типу індексу іде зарезервоване слово of
, за яким указується тип компонентів масиву. В ролі типу індексу може виступати будь-який скалярний обмежений тип, окрім real та integer. Разом з тим типом індексу може виступати діапазон типу integer. В ролі типу компонентів може виступати довільний тип, крім файлового. Розглянемо спочатку одновимірні масиви, тобто масиви, в яких типом компонентів є скалярний тип даних.
ПРИКЛАД:
type
massiv = array[1..10] of integer;
period = array[14..20] of real;
letters = array[char] of boolean;
Змінні структурованого типу вводяться звичайним шляхом в розділі опису змінних:
var
a:massiv;
t:period;
k:letters;
При цьому існує також можливість використання структурованих змінних безіменних типів:
var
b : array[1..10] of integer;
f : array[14..20] of real;
s : array[char] of boolean;
Однак при цьому змінні a
і b
несумісні (тобто мають різний тип), хоча фактично являють собою однакові масиви з однаковим типом індексу та типом компонентів. Тому відповідний тип доцільно оголосити у розділі опису типів програми і не використовувати змінні безіменних типів. Тоді дані такого типу простіше опрацьовувати.
Для масивів, як єдиного цілого, існує лише одна операція – операція присвоювання. В усіх інших випадках масиви опрацьовуються поелементно. Як правило, для цього використовуються цикли. Це можливо завдяки впорядкованості та однотиповості його елементів. В більшості випадків це цикл з параметром.
Для опрацювання елементу масиву необхідно вказати ім’я масиву та індекс його елементу. Так, запис a[1] означає, що опрацьовується перший елемент масиву а; a[k] – опрацьовується k-тий елемент масиву а; a[2*k-1] – опрацьовується той елемент, індекс якого дорівнює виразу 2*k-1.
Забиваем Сайты В ТОП КУВАЛДОЙ - Уникальные возможности от SeoHammer
Каждая ссылка анализируется по трем пакетам оценки: SEO, Трафик и SMM.
SeoHammer делает продвижение сайта прозрачным и простым занятием.
Ссылки, вечные ссылки, статьи, упоминания, пресс-релизы - используйте по максимуму потенциал SeoHammer для продвижения вашего сайта.
Что умеет делать SeoHammer
— Продвижение в один клик, интеллектуальный подбор запросов, покупка самых лучших ссылок с высокой степенью качества у лучших бирж ссылок.
— Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта.
— Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы).
— SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание.
SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз,
а первые результаты появляются уже в течение первых 7 дней.
Зарегистрироваться и Начать продвижение
ПРИКЛАД:
const n=10;
type
massiv = array[1..n] of integer;
var
a,b,massiv;
i:integer;
begin
…
a:=b; {правильний оператор}
read(a); {неправильний оператор -
недопустима операція }
for i:=1 to n do read(a[i]); {правильний оператор}
write(b); { неправильний оператор -
недопустима операція }
for i:=1 to n do write(a[i]); {правильний оператор}
…
end.
При обробці масивів його елементам потрібно спочатку надати значення, наприклад, ввести їх з клавіатури ( в противному випадку він буде заповнений нулями).
Як уже відмічалось, базовим типом масиву може бути будь-який тип даних, у тому числі і масив. Структура, елементами якої є масиви, називається багатовимірним масивом. Такі масиви об’являються аналогічно одновимірним. Розглянемо порядок визначення та опрацювання багатовимірних масивів на прикладі двовимірних числових масивів.
ПРИКЛАД:
type
massiv = array[1..n] of integer;
matr = array[1..m, 1..n] of integer;
tabl = array[1..m] of massiv;
Помітимо, що типи matr і tabl – це різні типи, хоча вони визначають практично однакові масиви. В більшості випадків використовується опис масиву аналогічний типу matr, хоча в деяких ситуаціях більш доцільним є опис типу tabl.
Як і для випадку одновимірних масивів, для багатовимірних масивів, як єдиного цілого, використовується лише операція присвоювання. Для решти операцій необхідно опрацьовувати масиви покомпонентно, причому тип компонентів може бути лише скалярним. Для опрацювання компонентів масиву необхідно вказати ім’я масиву та індекси цих компонентів.
ПРИКЛАД:
var
c, d :matr;
i,j;integer;
begin
…
c:=d; { правильний оператор }
c[1]:=d[2]; { правильний оператор }
d[1,4]:=10; { правильний оператор }
read(c); { неправильний оператор - недопустима операція }
read(d[1]); {неправильний оператор - недопустима операція }
for i:=1 to n do
for j:=1 to n do read(d[i,j]); { правильний оператор }
…
end.
Аналогічно задаються та опрацьовуються масиви інших розмірностей та з іншим типом індексів або компонентів.
2. Основні алгоритми опрацювання масивів.
При опрацюванні масивів важливими є операції вводу значень масиву та виводу їх на екран. . Розглянемо виконання цих операцій. При цьому вважатимемо, що діє такий опис:
const n=...;
type massiv=array[1..n] of integer;
var
a:massiv;
i:integer;
2.1. Введення елементів масиву з клавіатури на екрані.
for i:=1 to n do
Сервис онлайн-записи на собственном Telegram-боте
Попробуйте сервис онлайн-записи VisitTime на основе вашего собственного Telegram-бота:
— Разгрузит мастера, специалиста или компанию;
— Позволит гибко управлять расписанием и загрузкой;
— Разошлет оповещения о новых услугах или акциях;
— Позволит принять оплату на карту/кошелек/счет;
— Позволит записываться на групповые и персональные посещения;
— Поможет получить от клиента отзывы о визите к вам;
— Включает в себя сервис чаевых.
Для новых пользователей первый месяц бесплатно.
Зарегистрироваться в сервисе
begin
write(‘Введіть¢,i,’-й елемент масиву:’);
read(a[i]);
end;
2.2. Заповнення елементів масиву випадковими цілими числами. Числа беруться з діапазону [0, 99].
randomize;
for i:=1 to n do a[i]:=random(100);
2.3. Форматний друк елементів масиву .
for i:=1 to n do write(a[i]:4);
writeln
Далі розглянемо типові алгоритми опрацювання масивів.
2.4. Пошук найменшого елемента масиву
Program pr1;
Uses crt;
const n=20;
type massiv=array[1..n] of integer;
var
a:massiv;
i:integer;
min:integer;
begin
clrscr;
randomize;
for i:=1 to n do a[i]:=random(100);
writeln(‘Вихідні дані’);
for i:=1 to n do write(a[i]:4);
writeln;
min:=a[1];
for i:=2 to n do if a[i]<min then min:=a[i];
writeln(‘Результат’);
writeln(‘Найменший елемент min=’, min:4);
end.
2.5. Обчислення суми елементів масиву
Program pr2;
Uses сrt;
const n=20;
type massiv=array[1..n] of integer;
var
a:massiv;
i:integer;
s:integer;
begin
clrscr;
randomize;
for i:=1 to n do a[i]:=random(100);
writeln(‘Вихідні дані’);
for i:=1 to n do write(a[i]:4);
writeln;
s:=0;
for i:=1 to n do s:=s+a[i];
writeln(‘Результат’);
writeln(‘Сума s=’, s:4);
end.
2.6. Обчислення добутку елементів масиву з парними номерами.
Program pr3;
Uses crt;
const n=20;
type massiv=array[1..n] of integer;
var
a:massiv;
i:integer;
p:longint;
begin
clrscr;
randomize;
for i:=1 to n do a[i]:=random(10)+1;
writeln(‘Вихідні дані’);
for i:=1 to n do write(a[i]:4);
writeln;
p:=1;
i:=2;
repeat
p:=p*a[i];
i:=i+2;
until i>n
writeln(‘Результат’);
writeln(‘Добуток елементів з парними номерами p=’, p:4)
end.
Узагальнення по темі.
Масив -
це впорядкований набір однотипових елементів. Впорядкованість означає, що елементи масиву розташовані в певному порядку, тобто, проіндексовані. Одно типовість означає належність елементів масиву одному типу даних. Це дозволяє використовувати опрацювання масивів за допомогою операторів циклу.
Для визначення масиву потрібно задати тип індексу та тип елементів. . В ролі типу індексу може виступати будь-який скалярний обмежений тип, окрім real та integer. Разом з тим типом індексу може виступати діапазон типу integer. В ролі типу компонентів може виступати довільний тип, крім файлового.
Для масивів, як єдиного цілого, існує лише одна операція – операція присвоювання. В усіх інших випадках масиви опрацьовуються поелементно. В більшості випадків опрацювання здійснюється за допомогою оператору циклу з параметром.
Як уже відмічалось, базовим типом масиву може бути будь-який тип даних, у тому числі і масив. Структура, елементами якої є масиви, називається багатовимірним масивом. Такі масиви об’являються аналогічно одновимірним. Розглянемо порядок визначення та опрацювання багатовимірних масивів на прикладі двовимірних числових масивів.
|