- •Основи об’єктно-орієнтованого програмування
- •Факультету комп’ютерних наук та інформаційних технологій
- •Луцьк 2009
- •Факультету комп’ютерних наук та інформаційних технологій 1 Лабораторна робота №1 5 Програмування лінійних алгоритмів 5
- •2.1. Приклад створення додатка 14
- •9.3. Виконання індивідуального завдання 61
- •Програмування лінійних алгоритмів
- •1.1. Візуальне середовище delphi
- •1.2. Приклад створення додатка
- •1.2.1. Збереження проекта
- •1.2.2. Настройка вікон
- •1.2.3. Зміна заголовка Форми
- •1.2.4. Розміщення компонентів на Формі
- •1.2.5. Написання процедури обробки події створення Форми (FormCreate)
- •1.2.6. Написання процедури обробки події натиснення кнопки Button1 (Button1Click)
- •1.2.7. Текст модуля UnLinAlg
- •X,y,z,a,b,c,u : extended; // оголошення локальних змінних
- •1.2.8. Робота з додатком
- •1.3. Виконання індивідуального завдання
- •Індивідуальні завдання
- •Лабораторна робота №2 Програмування алгоритмів, що розгалужуються
- •2.1. Приклад створення додатка
- •2.1.1. Розміщення компонентів на Формі
- •2.1.2. Створення процедур обробки подій FormСreate і Button1Сlick
- •2.1.3. Текст модуля UnRazvAlg
- •2.1.4. Робота з додатком
- •2.2. Виконання індивідуального завдання
- •Індивідуальні завдання
- •Лабораторна робота №3 Програмування циклічних алгоритмів
- •3.1. Відладка модулів проекта
- •3.1.1. Відладка синтаксичних помилок
- •3.1.2. Відладка логічних помилок
- •3.2. Приклад створення додатка
- •3.2.1. Розміщення компонентів на Формі
- •3.2.2. Текст модуля UnCiklAlg
- •3.3. Виконання індивідуального завдання
- •Індивідуальні завдання
- •Лабораторна робота №4 Програмування алгоритмів з використанням масивів
- •4.1. Приклад створення додатка
- •4.1.1. Розміщення компонентів на Формі
- •4.1.2. Створення процедур обробки подій SpinEdit1Change і SpinEdit2Change
- •4.1.3. Текст модуля UnMas
- •4.1.4. Робота з додатком
- •4.2. Виконання індивідуального завдання
- •Індивідуальні завдання
- •Лабораторна робота №5 програмування Алгоритмів з використанням рядків
- •5.1. Приклад створення додатка
- •5.1.1. Розміщення компонентів на Формі
- •5.1.2. Створення процедур обробки подій
- •5.1.3. Текст модуля UnStr
- •Індивідуальні завдання
- •Лабораторна робота №6 Програмування алгоритмів з використанням записів
- •6.1. Приклад створення застосування
- •6.1.1. Розміщення компонентів на Формі
- •6.1.2. Створення процедур обробки подій FormCreate і Button1Click
- •6.1.3. Текст модуля UnZap
- •6.2. Виконання індивідуального завдання
- •Індивідуальні завдання
- •Лабораторна робота №7 Програмування алгоритмів з використанням файлів
- •7.1. Приклад створення застосування
- •7.1.1. Розміщення компонентів на Формі
- •7.1.2. Створення процедур обробки подій
- •7.1.3. Текст модуля UnFile
- •7.1.4. Робота із застосуванням
- •7.2. Індивідуальні завдання
- •Лабораторна робота №8 Програмування алгоритмів з використанням функцій і процедур. Створення модулів
- •8.1. Приклад створення додатка
- •8.1.1. Розміщення компонентів на Формі
- •8.1.2. Створення модуля і підключення його до проекта
- •8.1.3. Текст модуля UnFuncProc
- •8.1.4. Текст модуля UnModul
- •8.2. Виконання індивідуального завдання
- •Індивідуальні завдання
- •Лабораторна робота №9 Програмування алгоритмів з використанням динамічних структур даних
- •Приклади створення застосувань
- •9.1. Використання динамічних масивів
- •9.1.1. Розміщення компонентів на Формі
- •9.1.2. Створення процедур обробки подій FormCreate і Button1Click
- •9.1.3. Текст модуля UnDinMas
- •9.2. Використання динамічних списків
- •9.2.1. Розміщення компонентів на Формі
- •9.2.2. Створення процедур обробки подій FormCreate і Button1Click
- •9.2.3. Текст модуля UnStek
- •9.3. Виконання індивідуального завдання
- •Навчально-методичне видання
- •43018, М. Луцьк, вул. Львівська, 75
4.1.2. Створення процедур обробки подій SpinEdit1Change і SpinEdit2Change
Події SpinEdit1Change і SpinEdit2Change виникають при будь-якій зміні значення в полі редактора SpinEdit1 і SpinEdit2 відповідно. Створимо процедури обробки цих подій, в яких привласнимо значення n і m, отримані з полів редакторів SpinEdit, властивостям ColCount і RowCount компонентів StringGrid. Це дозволить управляти розмірами таблиць StringGrid за допомогою компонентів SpinEdit без додаткових кнопок, оскільки зміна значень в полі редактора SpinEdit відразу приведе до зміни розміру таблиць StringGrid. Двічі клацніть “мишею” на компоненті SpinEdit1 – курсор встановиться в тексті процедури-обробника події SpinEdit1Change: procedure TForm1.SpinEdit1Change(Sender: TObject). Уважно наберіть операторів цієї процедури, використовуючи текст модуля UnMas(див. п.4.1.3). Аналогічним чином створіть процедуру-обработчик події SpinEdit2Change: procedure TForm1.SpinEdit2Change(Sender: TObject).
4.1.3. Текст модуля UnMas
Unit UnMas;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs
StdCtrls, Spin, Grids;
type
TForm1 = class(TForm)
Label1: TLabel;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
Label8: TLabel;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
SpinEdit3: TSpinEdit;
SpinEdit4: TSpinEdit;
Label6: TLabel;
Label7: TLabel;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
var
A:array[1..6,1..8] of extended;// оголошення двовимірного масиву A
X:array[1..8] of extended; // оголошення одновимірного масиву X
Y:array[1..6] of extended; // оголошення одновимірного масиву Y
n,m,p,q:integer; // оголошення глобальних змінних
procedure TForm1.FormCreate(Sender: TObject);
begin
SpinEdit1.Text:='4'; // початкове значення n
SpinEdit2.Text:='6'; // початкове значення m
SpinEdit3.Text:='2'; // початкове значення p
SpinEdit4.Text:='3'; // початкове значення q
StringGrid1.RowCount:=4; // кількість рядків масиву A
StringGrid1.ColCount:=6; // кількість стовпців масиву A
StringGrid2.RowCount:=6; // кількість рядків масиву X
StringGrid3.RowCount:=4; // кількість рядків масиву Y
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
n:=StrToInt(SpinEdit1.Text);// n привласнюється вміст поля редактора
StringGrid1.RowCount:=n; // встановлюється кількість рядків масиву A
StringGrid3.RowCount:=n; // встановлюється кількість рядків масиву Y
end;
procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
m:=StrToInt(SpinEdit2.Text);// m привласнюється вміст поля редактора
StringGrid1.ColCount:=m; // встановлюється кількість стовпців масиву A
StringGrid2.RowCount:=m; // встановлюється кількість рядків масиву X
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer; // оголошення локальних змінних
begin
n:=StrToInt(SpinEdit1.Text);
StringGrid1.RowCount:=n;
StringGrid3.RowCount:=n;
m:=StrToInt(SpinEdit2.Text);
StringGrid1.ColCount:=m;
StringGrid2.RowCount:=m;
p:=StrToInt(SpinEdit3.Text);
q:=StrToInt(SpinEdit4.Text);
// Введення значень з таблиці в масив A
for i:=1 to n do
for j:=1 to m do
A[i,j]:=StrToFloat(StringGrid1.Cells[j-1,i-1]);
for j:=1 to m do // формування масиву X і виведення його значень в таблицю
begin
X[j]:=A[p,j];
StringGrid2.Cells[0,j-1]:=FloatToStrF(X[j],ffFixed,3,1);
end;
for i:=1 to n do // формування масиву Y і виведення його значень в таблицю
begin
Y[i]:=A[i,q];
StringGrid3.Cells[0,i-1]:=FloatToStrF(Y[i],ffFixed,3,1);
end;
end;
end.