1. Табличні величини
1. Що означає тип змінної?
Які типи змінних ви знаєте?
2. Де трапляються
впорядковані набори даних? У чому зручність їх використання?
3. Який загальний вигляд
і як виконується команда циклу з лічильником у мові програмування Object
Pascal?
Поняття табличної величини
У 8-му класі ви розглядали задачі, у яких
використовувалася невелика кількість змінних. Але існує багато задач, у яких
потрібно опрацьовувати значення досить великої кількості змінних одного й того
самого типу. Наприклад, якщо треба скласти програму для обчислення середньої маси
ста учнів 9-х класів, то очевидно потрібно використати 100 змінних типу real,
значенням кожної з яких буде маса відповідного дев’ятикласника з даних ста
учнів 9-х класів, знайти суму значень цих змінних і поділити її на 100. Якщо
використати 100 змінних типу real з довільними іменами, наприклад a, b, c, ...,
z, aa, ab, ac, ..., az, ba, bb, bc, ..., bz, ca, cb, cc, …, cv, то команда
знаходження суми їхніх значень буде містити у правій своїй частині 100 доданків
або потрібно включити до тексту програми такі 100 команд:
sum := a;
sum := sum + b;
sum := sum + c;
...
sum := sum + cv;
Усе це робить текст програми громіздким і
незручним, зважаючи на те, що кількість учнів може бути ще більшою або взагалі
заздалегідь невідомою.
Для розв’язування задач, у яких
опрацьовуються значення змінних одного типу, можна піти таким шляхом:
розглядати всі ці змінні як елементи деякого впорядкованого набору змінних. Цей
набір змінних має ім’я, а ім’я кожної змінної набору складається з імені набору
і порядкового номера цієї змінної в наборі.
Упорядкований набір змінних одного типу
називається табличною величиною, або одновимірним масивом. Кожна змінна, що входить
до табличної величини, називається її елементом. Ім’я елемента табличної
величини складається з імені цієї табличної величини і порядкового номера цього
елемента в табличній величині, який узято у квадратні дужки.
Так, для наведеного вище прикладу варто
розглядати табличну величину, що складається зі 100 елементів. Якщо ім’я цієї
табличної величини a, то імена змінних — елементів цієї табличної величини –
будуть такі: a[1], a[2], a[3], ..., a[100]. Кожна із цих змінних матиме тип
real.
Тоді, щоб знайти суму значень усіх цих 100
змінних, достатньо записати такі команди:
sum := 0;
for i := 1 to 100 do
sum := sum + a[i];
Виконання цього фрагмента програми відбуватиметься так:
У результаті виконання наведеного фрагмента програми
значення змінної sum дорівнюватиме сумі значень усіх 100 змінних — елементів табличної
величини, тобто загальній масі даних 100 учнів. Після цього можна обчислити
шукану середню масу.
У рядку var змінна a типу таблична
величина записується так:
var a: array [1..100] of real (англ. array
— масив).
У квадратних дужках указується діапазон
номерів елементів табличної величини:
від 1 до 100. Після цього зазначається тип елементів табличної величини. За цим
записом компілятор виділяє в пам’яті комп’ютера 100 ділянок під кожну зі 100
змінних — елементів табличної величини. Розмір кожної ділянки залежить від типу
елементів табличної величини.
Звертаємо вашу увагу:
- інколи зручно нумерувати елементи
табличної величини, починаючи не з 1. Так, у деяких задачах (кілька з них
розглянемо нижче) зручно нумерувати елементи табличної величини, починаючи з 0,
наприклад a: array [0..12] of real, а в задачі, у якій використовується щорічна
чисельність населення України в період з 1991 по 2017 рік, зручно використати
табличну величину a: array [1991..2017] of integer;
- номер елемента табличної величини може задаватися як цілим числом, так і значенням виразу, що набуває цілих значень, наприклад a[2 * i – 5], де i — змінна типу integer.
Уведення
та виведення значень елементів табличної величини
Для введення та виведення значень
елементів табличної величини в середовищі Lazarus можна скористатися
багаторядковим текстовим полем (компонент (елемент керування) TMemo на вкладці Standard), яке можна
розмістити на формі так само, як й інші компоненти (мал. 6.1).
Серед властивостей цього компонента є багато вам уже відомих: Name, Color, Font, Enabled, Visible, Height, Width, Top, Left та інші.
Розглянемо ще кілька властивостей
багаторядкового текстового поля:
·
ScrollBars (англ. scroll — прокручування,
bars — прямокутні смуги) — значення цієї властивості визначає наявність чи
відсутність на цьому компоненті смуг прокручування (горизонтальної,
вертикальної, обох) для перегляду тексту, якщо він виходить за межі компонента;
·
ReadOnly (англ. read — читати, only —
тільки) — значення цієї властивості визначає можливість або неможливість
редагування вмісту компонента: False — можна редагувати, True — не можна
(тільки для читання);
· Lines (англ. lines — лінії, рядки) —
значенням цієї властивості є набір значень (текстів), розташованих у рядках
цього компонента; кожен рядок багаторядкового текстового поля має номер,
нумерація яких починається з 0;
·
Lines.Count (англ. count — підрахунок) —
значення цієї властивості дорівнює кількості заповнених даними рядків
компонента; зазначимо, що ця властивість відсутня у списку властивостей на
вкладці
Властивості вікна Інспектор об’єктів.
Розглянемо задачу, у якій продемонструємо,
як увести значення елементів табличної величини з багаторядкового текстового
поля та як вивести значення елементів табличної величини в багаторядкове
текстове поле.
Задача 1. Ввести значення елементів
табличної величини з 10 чисел, що містяться в рядках багаторядкового текстового
поля, піднести ці числа до квадрата і вивести їх в інше багаторядкове текстове
поле.
Розмістимо на формі два багаторядкових
текстових поля з іменами Memo1 і Memo2
та встановимо для них значення властивостей Height = 180, ScrollBars =
ssVertical. Розмістимо на формі також кнопку, установимо для неї Caption = ‘До
квадрата’ і створимо обробник події Click для кнопки.
Нижче наведено текст відповідної процедури
та вікно з результатом виконання проекту (мал. 6.2). У тексті процедури
використано два стандартні методи для багаторядкового текстового поля: Clear
(англ. clear — очищувати), що очищує всі рядки цього компонента, і Lines.Append (англ. append — додавати), що
додає до багаторядкового текстового поля новий рядок і виводить у нього
значення параметра, указаного в дужках.
procedure TForm1.Button1Click(Sender:
TObject);
var a: array [0..9] of real; i: integer;
begin
for i := 0 to 9 do
a[i] := StrToFloat(Memo1.Lines[i]); // дані з рядків першого багаторядкового
текстового поля перевести в числа і присвоїти відповідним елементам табличної
величини
for i := 0 to 9 do
a[i] := a[i] * a[i]; // піднести
значення елементів табличної величини до квадрата
Memo2.Clear; // очистити друге багаторядкове
текстове поле
for
i := 0 to 9 do
Memo2.Lines.Append(FloatToStr(a[i])); // вивести значення елементів табличної
величини в рядки другого багаторядкового текстового поля
end;
Після запуску проекту на виконання у
вікні, що відкрилося, у першому багаторядковому текстовому полі потрібно видалити
текст Memo1, який розміщено там за замовчуванням, і ввести в кожний рядок по
одному числу, які й будуть значеннями відповідних елементів табличної величини.
Після цього треба вибрати кнопку До квадрата і в результаті виконання процедури
значення в рядках першого
багаторядкового текстового поля будуть надані відповідним елементам табличної
величини (одновимірного масиву), потім ці значення буде піднесено до квадрата і
виведено в рядки другого багаторядкового текстового поля.
Поки не закрили вікно проекту, можна
ввести в перше багаторядкове текстове поле інші числа і знову вибрати кнопку До
квадрата. Тоді у другому багаторядковому текстовому полі побачимо квадрати
нових уведених чисел.
У наведеній процедурі використано табличну
величину, елементи якої мають номери від 0 до 9. Це зроблено з урахуванням
того, що номери рядків багаторядкового текстового поля починаються з 0. Тобто
перший по порядку рядок багаторядкового текстового поля має номер не 1, як ми звикли,
а 0. Можна було б розглядати табличну величину, елементи якої мають номери від
1 до 10. У цьому разі процедура виглядатиме так:
procedure TForm1.Button1Click(Sender:
TObject);
var a: array [1..10] of real; i: integer;
begin
for i := 1 to 10 do a[i] := StrToFloat(Memo1.Lines[i-1]);
for i := 1 to 10 do a[i] := a[i] * a[i];
Memo2.Clear;
for i := 1 to 10 do Memo2.Lines.Append(FloatToStr(a[i]));
end;
Якщо закрити вікно виконання проекту і
потім ще раз запустити проект на виконання, то потрібно буде знову вводити
числа в рядки першого багаторядкового текстового поля. Але можна попередньо
ввести числа в багаторядкове текстове поле до запуску проекту на виконання. Для
цього потрібно:
1. Вибрати багаторядкове текстове поле.
2. Вибрати кнопку в кінці
рядка Lines вікна Інспектор
об’єктів (мал. 6.3).
3. У вікні Редактор рядків видалити текст
першого рядка та ввести 10 чисел.
4. Вибрати кнопку ОК.
Тоді під час збереження проекту ці значення також збережуться й автоматично з’являться в багаторядковому текстовому полі після запуску на виконання.




Коментарі
Дописати коментар