52841.fb2
Мета уроку: дати поняття табличних величин та їх опису мовою програмування. Поняття лінійних таблиць, введення елементів таблиць та виведення їх на екран.
Теоретичний матеріал
Поняття таблиці було введене програмістами для запам’ятовування та обробки великих наборів однотипних даних. Наприклад, якщо ми хочемо знайти середній бал кожного учня класу з інформатики за чверть, нам слід знайти суму дуже великої кількості оцінок. Як зберігати всі ці оцінки? Зарезервувати для цього 40 (а може і більше змінних)? Це дуже незручно. Ось тут і знадобиться такий структурований тип даних, як таблиця, або інакше — масив.
Масив — це структура даних, що являє собою однорідну (за типом), фіксовану (за розміром і конфігурацією) сукупність елементів, упорядкованих за номерами.
Таблиця визначається ім’ям (ідентифікатором) і кількістю індексів (номерів), що потрібні для визначення місцезнаходження необхідного елементу масиву. Ім’я масиву є єдиним для всіх його елементів.
У програмуванні кількість індексів таблиці називають розмірністю, кількість дозволених значень кожного індексу — діапазоном, а сукупність розмірності та діапазону — формою масиву.
Оскільки конфігурація елементів масиву фіксована, то до окремого елементу можна звертатися за допомогою одного або кількох індексів. У якості індексів можуть використовуватися константи або змінні порядкових типів. Елементами можуть бути як прості змінні будь-яких типів, так і змінні складених типів (масивів, рядків і т.д.), тобто може існувати масив масивів, масив рядків тощо. Глибина вкладеності цих типів — довільна, тому кількість індексів не обмежена, але сумарна довжина структури не повинна перевищувати дозволені мовою Паскаль 64 Кбайти. В пам’яті ПК всі елементи масиву зберігаються послідовно, тому при переході від молодших до старших адрес першим змінюється самий правий індекс. Порядок роботи з масивом:
1) оголосити масив у розділі описів, вказавши його розмір і тип елементів, що в нього входять (тобто приготувати місце в пам’яті, де будуть зберігатися значення елементів);
2) заповнити необхідними значеннями масив для розв’язування задачі;
3) вивести масив на екран для контролю правильності роботи з ним;
4) робота з даним масивом;
5) виведення результатів роботи.
У розв’язуванні задач використовуються одновимірні та двовимірні масиви. Масиви більшої розмірності на практиці майже не зустрічаються.
Одновимірний масив. Одновимірний масив інакше ще називають лінійним масивом або вектором. Кожному його елементу ставиться у відповідність один індекс. Для початку роботи з масивом готуємо місце в пам’яті, для чого описуємо його в розділі оголошень.
Масив 1
Формат опису (1 варіант):
Var
<ім’я> : array [<розмірність>] of <базовий тип елементів>;
Для опису масиву можна використовувати попередньо визначену константу:
Const Gl=40;
Var
<ім’я> : array[1..G1] of <6азовий тип елемеятів>;
Приклади описів:
Const n = 100;
Var A:array[1..n] of real; В:array[1..100] of integer;
Першим описаний масив, до складу якого входять 100 дійсних чисел, а другим — масив із 100 цілих чисел. Крім того, масив можна описати за допомогою опису відповідного типу.
Формат опису (2 варіант):
Туре
<ім’я типу> = array [<розмірність>] of <базовий тип елементів>;
Var
<ім’я масиву> : <ім’я типу>;
Приклад:
Туре
Massiv = array [1..20] of longint;
Var M: Massiv;
Зверніть увагу на те, що значень елементів у масиві не обов’язково буде стільки, скільки ми їх оголосили, але запам’ятайте, що значень не може бути більше. Звертання до елементу масиву:
[<ім’я масиву> <йоію_індекс>]
наприклад:
М[6] — шостий елемент масиву М;
А[10] — десятий елемент масиву А;
В[і] — і-тий елемент масиву В.
Для роботи з масивом необхідно використовувати будь-який оператор повторення, тому що кожна дія з його елементами виконується однаково. Мова Паскаль не має засобів введення-виведення усіх елементів масиву водночас, тому введення і виведення значень робиться послідовно.
Методи заповнення одновимірного масиву:
1) за формулою:
for i:=1 to n do M[i] :=і*і-10 {або будь-яка інша формула};
2) з клавіатури:
for i:=1 to n do
begin
write (‘ Введіть М[‘і,’] : ‘); readln(M[i]); end;
3) випадково (генератором випадкових чисел) із проміжку [А, В]:
for i:=1 to n do M[i]:=random(B-A)+A;
Методи виведення елементів одновимірного масиву на екран
1) виведення у стовпчик:
for i:=1 to n do writeln(M[i]);
2) виведення у рядок:
for i:=1 to n do write(M[i]:5);
При виведенні елементів масиву у рядок бажано зазначити формат виведення, наприклад, write(М[і] : 10:3) — для дійсних чисел або write(М[і] : 5) —для цілих.
Можна об’єднувати в одному циклі кілька етапів розв’язування задачі. Наприклад, заповнення масиву та виведення елементів масиву для контролю на екран.
Розглянемо типові завдання з одновимірними таблиць.
ЗАДАЧА № 293 (1)
Умова: Записати наведені нижче послідовності змінних з індексами у вигляді послідовностей елементів масивів: (сj), де (j =-3, -2,..., 3).
Очікувана відповідь: с[-3], с[-2], с[-1], с[0], с[1], с[2], с[3].
ЗАДАЧА №293 (4)
Умова: Записати наведені нижче послідовності змінних з індексами у вигляді послідовностей елементів масивів: (Qj), де (1 = n +1, n + 2,..., n + 5).
Очікувана відповідь: Q[n + 1], Q[n + 2], Q[n + 3], Q[n + 4], Q[n + 5].
ЗАДАЧА № 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
Умова: Нехай елементи одновимірного масиву А[1..1О] набувають відповідно значень -5, -3, -1, 1, 3, 5, 7, 9, 11, 13. Які значення буде надруковано в результаті виконання таких операторів:
№ варіанта
Завдання
Відповідь
Примітка
3
For i:=l to 5 do
Writeln(A[i+5])
5
7
9
13
Друкується тільки п’ять останніх елементів масиву, тому що змінна циклу змінюється від 1 до 5, а індекс елементів масиву від 6 (1+5) до 10 (5+5)
5
i:=l;
While A[i]<0 do
Begin
i:=i+l;
Writeln(A[i])
End;
-5
-3
-1
Друкуються тільки від’ємні елементи масиву, тому що умова виходу з циклу така, що коли А[і]<=0, він припинить свою роботу.
7
i:=l;
repeat
i:=i+l;
Writeln(A[i])
until A[i]>=0;
-3
-1
1
Елементи масиву друкуються до першого додатного значення зліва направо. 1-й елемент масиву не друкується тому, що в тілі циклу спочатку змінюється індекс, і виконується друк.
ЗАДАЧА № 311 (2)
Умова: Дано одновимірний масив цілих чисел А[і], де і = 1, 2, ...n. Вивести елементи масиву з парними індексами.
Разв’язання: В даному випадку незручно користуватися для виведення на екран елементів з парними індексами циклом з параметром, тому що він дозволяє зміну індексу тільки на одиницю. Тому пропонуємо скористатися циклом з перед — або післяумовою.
Program Example_311_2;
Uses crt;
Var N,і:word; {N — кількість елементів масиву, і — змінна циклу)
A:array[1..100] of longint; {A — заданий масив}
Begin
Clrscr;
Write(‘Введіть кількість елементів масиву (<100):’);
Readln(N);
For i:=1 to N do
Begin
А[і] :=random(300) ; {Заповнення масиву випадковими числами}
{Виведення масиву на ехран для контролю правильності роботи програми}
Write(A[i]:5);
End;
Writeln; {Переведення курсору на наступний рядок}
і:=2;
while i<=N do
Begin
Write(A[i]:5);
i:=i+2; {Змінна циклу змінюється на 2, щоб вибрати тільки парні елементи}
End;
Readkey; {Затримка зображення на екрані}
End.
Домашнє завдання
• Прочитати сторінки 117—119 запропонованого підручника.Задачі № 292, № 293 (останні), № 295 (останні), № 297, № 299 (останні), № 310, № 311(3).