7
9
11
13
Дати поняття табличних величин та їх опису мовою програмування. Поняття лінійних таблиць, введення елементів таблиць та виведення їх на екран.
Лекційний.
Поняття таблиці виникло тоді, коли програмістам знадобилося запам'ятати та обробити
великий набір однотипних даних. Наприклад, якщо ми хочемо знайти середній бал
кожного учня класу з інформатики за чверть, нам необхідно знайти суму дуже великої
кількості оцінок. Як зберігати всі ці оцінки? Зарезервувати для цього 40 (а
може і більше змінних? Це дуже незручно. Ось тут і приходить на допомогу такий
структурований тип даних, як таблиця або інакше масив.
Масив - це структура даних, що являє собою однорідну (за типом),
фіксовану (за розміром і конфігурацією) сукупність елементів, упорядкованих
за номерами.
Таблиця визначається ім'ям (ідентифікатором) і кількістю індексів (номерів),
що потрібні для визначення місцезнаходження необхідного елементу масиву. Ім'я
масиву є єдиним для всіх його елементів.
В програмуванні кількість індексів таблиі називають його розмірністю, кількість
дозволених значень кожного індексу - його діапазоном, а сукупність розмірності
та діапазону - формою масиву.
Оскільки конфігурація елементів масиву фіксована, то до окремого елементу можна
звертатися за допомогою одного або кількох індексів. У якості індексів можуть
використовуватися константи або змінні порядкових типів. Елементами можуть бути
як прості змінні будь-яких типів, так і змінні складених типів (масивів, рядків,
тощо), тобто може існувати масив масивів, масив рядків і т.і. Глибина вкладеності
цих типів - довільна, тому кількість індексів не обмежена, але сумарна довжина
структури не повинна перевищувати дозволені Паскалем 64 Кбайти. В пам'яті ПК
всі елементи масиву зберігаються послідовно, тому при переході від молодших
до старших адрес першим змінюється самий правий індекс.
Порядок роботи з масивом:
1) оголосити про масив у розділі описів, вказавши його розмір і тип елементів,
що в нього входять (тобто приготувати місце в пам'яті, де будуть зберігатися
значення елементів);
2) заповнити необхідними значеннями масив для розв'язування задачі;
3) якщо треба, вивести масив на екран для зорової перевірки роботи з ним;
4) робота з даним масивом;
5) виведення отриманих результатів.
Під час розв'язування задач, як правило, використовуються одновимірні та двовимірні
масиви. Масиви більшої розмірності на практиці майже не зустрічаються.
Одновимірний масив
Одновимірний масив інакше ще називають лінійним масивом або вектором. Кожному
його елементу ставиться у відповідність один індекс.
Масив А
A[6] або A[i], якщо i=6
Для початку роботи з масивом готуємо місце в пам'яті, для чого описуємо його
в розділі оголошень.
Формат опису (1 варіант):
Var
<ім'я масиву> : array [<розмірність>] of <базовий
тип елементів>;
Для опису масиву можна використовувати попередньо визначену константу:
Const
G1=40;
Var
Mas:array[1..G1] of real;
Приклади опису:
Const n = 100;
Var А: аrrау[1..n] оf real;
В: аrrау[1..100] of integer;
Першим описаний масив, до складу якого входить 100 дійсних чисел, а другим -
масив з 100 цілих чисел.
Крім того масив можна описати за допомогою опису відповідного типу.
Формат опису (2 варіант):
Type
< ім'я типу > = array [<розмірність>] of <
базовий тип елементів>;
Var
<ім'я масиву> : <ім'я типу>;
Приклад:
Type
Massiv = array [1..20] of longint;
Var
M : Massiv;
Зверніть увагу на те, що значень елементів у масиві не обов'язково буде
стільки, скільки ми їх оголосили, але не може бути більше.
Звертання до елементу масиву:
<ІМ'Я_масиву>[<його_індекс>]
Приклад:
M[6] - шостий елемент масиву М;
A[10] - десятий елемент масиву А;
B[i] - і-тий елемент масиву В.
Для роботи з масивом необхідно використовувати будь-який оператор повторення,
тому що кожна дія з його елементами виконується однаково.
Паскаль не має засобів введення-виведення усіх елементів масиву водночас, тому
введення і виведення значень робиться послідовно окремо кожен елемент.
Методи заповнення одновимірного масиву:
1) за формулою:
for і:=1 to n do
М[і]:=i*i-10 {або будь-яка формула};
2) з клавіатури:
for і:=1 to n do
begin
write('Введіть М[',i,']: ');
readln(М[i]);
end;
3) випадковим чином (генератором випадкових чисел) із проміжку [А, В]:
for і:=1 to n do
М[і]:=random(B-A)+A;
Методи виведення елементів одновимірного масиву на екран
1) виведення у стовпчик:
for і:=1 to n do
writeln(М[i]);
2) виведення у рядок:
for і:=1 to n do
write(М[i]:5);
При виведенні елементів масиву у рядок бажано зазначити формат виведення, наприклад,
write(М[і]:10:3) - для дійсних чисел або write (M[i]:5) - для
цілих.
Дозволяється об'єднувати в одному циклі кілька етапів розв'язування задачі.
Наприклад, очищення, заповнення масиву та виведення елементів масиву для контролю
на екран.
Розглянемо деякі типові завдання з використанням таблиць.
Задача №293(1).
Умова: Записати наведені нижче послідовності змінних з індексами
у вигляді послідовностей елементів масивів:
(mi), де (i = 1, 2, 3, …, 10).
Відповідь: m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10].
Задача №293(4).
Умова: Записати наведені нижче послідовності змінних з індексами
у вигляді послідовностей елементів масивів:
(сj), де (j = -3, -2, …, 3).
Відповідь: c[-3], c[-2], c[-1], c[0], c[1], c[2], c[3].
Задача №293(8).
Умова: Записати наведені нижче послідовності змінних з індексами
у вигляді послідовностей елементів масивів:
(Ql), де (l = n+1, n+2, …, n+5).
Відповідь: Q[n+1], Q[n+2], Q[n+3], Q[n+4], Q[n+5].
Задача №295.
Умова: Нехай нижня та верхня межі індексів одновимірного масиву
В відповідно дорівнюють -5 та 10. Обчислити порядкові номери наступних елементів
масиву:
№ варіанту
|
Завдання
|
Відповідь
|
1
|
B[-5]
|
1
|
2
|
B[8]
|
13
|
8
|
B[7]
|
12
|
9
|
B[-0]
|
6
|
Задача №297.
Умова: Нехай нижня та верхня межі індексів одновимірного масиву
S відповідно дорівнюють -10 та 32. Визначити значення індексів елементів
масиву S, порядковими номерами яких є:
№ варіанту
|
Завдання
|
Відповідь
|
1
|
1
|
S[-10]
|
5
|
3
|
S[-8]
|
10
|
10
|
S[-1]
|
13
|
12
|
S[1]
|
17
|
32
|
S[21]
|
Задача №299.
Умова: Нехай елементи одновимірного масиву A[1..10] набувають
відповідно значень -5, -3, -1, 1, 3, 5, 7, 9, 11, 13. Які значення буде
надруковано в результаті виконання таких операторів:
№ варіанта
|
Завдання
|
Відповідь
|
Примітка
|
3
|
For i:=1 to 5 do Writeln (A[i+5]) |
5
7 9 11 13 |
Друкується тільки п'ять останніх елементів масиву, тому що змінна циклу змінюється від 1 до 5, а індекс елементів масиву від 6 (1+5) до 10 (5+5) |
5
|
i:=1;While A[i]<0 do Begin i:=i+1; Writeln(A[i]) End; |
-5
-3 -1 |
Друкуються тільки від'ємні елементи масиву, тому що умова виходу з циклу така, що коли А[i]<=0, він припинить свою роботу. |
7
|
i:=1;repeat i:=i+1; Writeln(A[i])
until A[i]>=0; |
-3
-11 |
В даному випадку елементи масиву друкуються до першого додатного значення зліва направо. Перший елемент масиву не друкується тому, що в тілі циклу спочатку змінюється індекс, а потім виконується друк. |
9
|
i:=10;While A[i]>0 do i:=i-1; Writeln (A[i]) |
-1
|
Цикл буде виконуватись до першого від'ємного елементу при проході по масиву справа наліво, але друкується тільки один елемент масиву, тому що оператор writeln стоїть зовні тіла циклу. |
Задача №311(1).
Умова: Дано одновимірний масив цілих чисел А[i], де i = 1,2,…n.
Вивести елементи масиву у зворотному порядку.
Program Example_311_1; Uses crt; Var N,i:word; {N - кількість елементів масиву, i - змінна циклу} А:array [1..100] of longint; {A - заданий масив} Begin Clrscr; Write ('Введіть кількість елементів масиву (<100): '); Readln(N); For i:=1 to N do Begin A[i]:=random(300); {Заповнення масиву випадковими числами} Write(А[i]:5); {Виведення масиву на екран для контролю правильності роботи програми} End; Writeln; {Переведення курсору на наступний рядок} For i:=N downto 1 do Begin Write (A[i]:5); End; Readkey; {Затримка зображення на екрані} End.
Задача №311(2).
Умова: Дано одновимірний масив цілих чисел А[i], де
i = 1,2,…n. Вивести елементи масиву з парними індексами.
В даному випадку незручно користуватися для виведення на екран елементів з парними
індексами циклом з параметром, тому що він дозволяє зміну індексу тільки на
одиницю. Тому пропонуємо скористатися циклом з перед або післяумовою.
Program Example_311_2; Uses crt; Var N,i : word; {N - кількість елементів масиву, i - змінна циклу} А : array [1..100] of longint; {A - заданий масив} Begin Clrscr; Write ('Введіть кількість елементів масиву (<100): '); Readln (N); For i:=1 to N do Begin A[i]:=random(300); {Заповнення масиву випадковими числами} Write(А[i]:5); {Виведення масиву на екран для контролю правильності роботи програми} End; Writeln; {Переведення курсору на наступний рядок} i:=2; while i<=N do Begin Write(A[i]:5); i:=i+2; {Змінна циклу змінюється на 2, щоб вибрати тільки парні елементи} End; Readkey; {Затримка зображення на екрані} End.
Домашнє завдання: