
- •1 Виділення слів у текстових файлах
- •1.1 Підготовка до лабораторної роботи
- •Теоретичні відомості
- •Варіанти завдань
- •1.4 Контрольні питання
- •2 Комбінований тип даних
- •2.1 Підготовка до лабораторної роботи
- •2.2 Теоретичні відомості
- •2.3 Варіанти завдань
- •2.4 Контрольні питання
- •3 Сортування масивів комбінованого типу даних
- •3.1 Підготовка до лабораторної роботи
- •3.2 Теоретичні відомості
- •3.3 Варіанти завдань
- •3.4 Контрольні питання
- •4 Підпрограми-процедури
- •4.1 Підготовка до лабораторної роботи
- •4.2 Теоретичні відомості
- •4.3 Варіанти завдань
- •4.4 Контрольні питання
- •5 Підпрограми-функції
- •5.1 Підготовка до лабораторної роботи
- •5.2 Теоретичні відомості
- •5.3 Варіанти завдань
- •Контрольні питання
- •6 Організація односпрямованого списку
- •6.1 Підготовка до лабораторної роботи
- •6.2 Теоретичні відомості
- •6.3 Варіанти завдань
- •6.4 Контрольні питання
- •7 Обробка матриць у середовищі lazarus
- •7.1 Теоретичні відомості
- •7.2 Варіанти завдань
- •7.3 Контрольні питання
- •Перелік посилань
7.1 Теоретичні відомості
Створення проекту в середовищі Lazarus починається зі створення форми. За замовчуванням їй присвоюється ім'я Form1 (рисунок 7.1). Компоненти Edit1 і Label1, представлені на даній формі, знаходяться на сторінці Standard палітри компонентів (рисунок 7.2) і поміщаються на форму перетягуванням за допомогою мишки.
Edit1 - це рядок введення. За замовчуванням її властивість text має значення, що збігається з ім'ям компонента, і відображається в ній. Якщо в Інспекторові об'єктів очистити відповідне поле, то рядок буде порожній.
Рисунок 7.1 - Вікно програми Lazarus
Рисунок 7.2 - Розташування компоненти TEdit на сторінці Standard
З рядка введення Edit програма може отримувати вихідні дані. Введені значення заносяться у властивість text. Ця властивість має рядковий тип. Отже, після введення даних Edit1.text зберігає в строковому поданні те, що було введено в рядок. Для перетворення рядка в число використовуються функції Free Pascal - StrToFloat і StrToInt.
Наприклад,
a: = StrToFloat (Edit1.text), де а - змінна дійсного типу,
b: = StrToInt (Edit1.text), де b - змінна цілого типу.
Мітки Label призначені для розміщення на екрані текстової інформації. Зокрема, їх можна використовувати для виведення результатів роботи програми.
Label1.caption:=’Результат= ‘+FloatToStr(S).
Так як властивість caption має рядковий тип, то необхідно для виведення чисел перетворити їх в змінну строкового типу.
Функції FloatToStr (a) і IntToStr (c) призначені для перетворення в рядок, відповідно, дійсного або цілого числа.
Саме по собі внесення даних у рядок введення не призведе до їх обробки. Для того, щоб це сталося, потрібно використовувати компонент Button - кнопку. Цей компонент призначений для формування події при натисненні на цю кнопку.
Зберегти проект можна так: Файл--- >Сохранить все.
Таблиця StringGrid (таблиця рядків) призначена для відображення двовимірної інформації. Кожна клітинка таблиці містить у собі символьний рядок. Значок таблиці знаходиться на додатковій (Additional) сторінці палітри компонент. Якщо компонент не відображається у палітрі компонентів, то його можна вибрати за допомогою контекстного меню цієї сторінки.
Нумерація рядків і стовпців таблиці починається з 0. Координати кожної клітинки таблиці задаються парою чисел. Перше число - номер стовпця, друге - номер рядка. Наприклад, клітинка з номером (3,5) розташована в четвертому стовпці і шостому рядку.
Основні властивості таблиці:
Name –ім'я компонента. Використовується в програмі для доступу до властивостей компонента.
Cells - відповідний таблиці двовимірний рядковий масив. Ця властивість використовується разом з індексами, як звичайна матриця. Cells [i, j] - елемент, який знаходиться в стовпчику i та в рядку j.
ColCount – число стовпців в таблиці.
RowCount - число рядків в таблиці.
FixedCols – число фіксованих стовпців. За замовчуванням дорівнює 1.
FixedRows - число фіксованих рядків. За замовчуванням дорівнює 1.
На рисунку 7.3 наведена таблиця, для якої в Інспектора Об'єктів встановлені наступні властивості:
ColCount =3
RowCount =4
FixedCols.=0
FixedRows =0
Рисунок 7.3-Таблиця StringGrid
Заповнити таблицю можна за допомогою генератора випадкових чисел: procedure TForm1.Button1Click (Sender: TObject);
VAR i,j:integer;
begin
randomize;
for i:=0 to 3 do
for j:=0 to 2 do
StringGrid1.Cells[j,i]:=inttostr((random(10));
end;
Наведений фрагмент програми дозволяє заповнити таблицю з 3 стовпців і 4 рядків цілими числами в діапазоні 0-9.
Для визначення поведінки таблиці використовується властивість Options в Інспекторі Об'єктів. Це складна властивість. Вона містить у собі різні установки логічного типу. Наприклад, якщо встановити goEditing = true, це дозволить редагувати клітинки таблиці на етапі виконання програми.
Так як клітинки таблиці мають рядковий тип, то зручно для обробки числових значень використовувати звичайну матрицю. Описати її потрібно як глобальну змінну, щоб використовувати в різних процедурах, а заповнювати одночасно із заповненням StringGrid.
type
TForm1 = class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
M:array[1..4,1..3] of integer;
var i,j:integer;
implementation
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
randomize;
for i:=1 to 4 do
for j:= 1 to 3 do
begin
m[i,j]:= random(10);
StringGrid1.Cells[j-1,i-1]:=IntToStr(m[i,j]);
end;
end;
initialization
{$I unit1.lrs}
end.
У подальшому можна використовувати цю матрицю у інших процедурах обробниках подій.
Рисунок 7.4 - Результат роботи програми
Слід зауважити на те, що при встановленні властивості StringGrid1.Options.goEditing = true зміна значень клітинок StringGrid1не призводить до автоматичної зміни елементів матриці М.
Для відображення на екрані списку значень у Lazarus призначений компонент ListBox. Цей компонент має у своєму складі об'єкт-список, що містить набір рядків з асоційованими з ними довільними об'єктами. Для того, щоб відобразити послідовно на екрані дані, які вводяться в рядок введення, можна виконати оператор ListBox1.Items.Add (Edit1.Text).
Якщо потрібно вивести в ListBox елементи масиву, то в циклі використовують оператор ListBox1.Items.Add (IntToStr (a [i])).
У наведеній нижче процедурі обробки подій елементи другого стовпця матриці переписуються в ListBox.
procedure TForm1.Button2Click(Sender: TObject);
begin
for i:=1 to 4 do
ListBox1.Items.Add(IntToStr(m[i,2]));
end;
Результат роботи представлений на рисунку 7.5
Рисунок 7.5 - Запис 2 колонки матриці в ListBox
Установку початкових значень можна задати в обробнику події OnCreate для форми. Ця подія виникає в момент створення форми. Розміщення операторів у цьому обробнику в багатьох випадках еквівалентно розміщенню операторів в секції ініціалізації модуля. Опис обробника цієї події створюється при виконанні подвійного натискання на формі Form1. Оператори ListBox1.Clear і Edit1.Clear дозволяють очистити відповідні компоненти.