- •Основи об’єктно-орієнтованого програмування
- •Факультету комп’ютерних наук та інформаційних технологій
- •Луцьк 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
7.1.2. Створення процедур обробки подій
Для зручності роботи з декількома різними процедурами обробки подій у властивості Name кожного компонента BitBtn заміните програмні імена кнопок: BitBtn1 – на BitBtnNew, BitBtn2 – на BitBtnOpen, BitBtn3 – на BitBtnSort, BitBtn4 – на BitBtnSave. Подвійним натисненням клавіші “миші” на кнопках BitBtn створіть відповідні процедури обробки подій. Користуючись текстом модуля UnFile, уважно наберіть операторів цих процедур.
7.1.3. Текст модуля UnFile
Unit UnFile;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs
StdCtrls, Buttons, Grids, Spin;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
BitBtnNew: TBitBtn;
BitBtnOpen: TBitBtn;
BitBtnSort: TBitBtn;
BitBtnSave: TBitBtn;
SaveDialog1: TSaveDialog;
SpinEdit1: TSpinEdit;
Label1: TLabel;
OpenDialog1: TOpenDialog;
procedure TForm1.FormCreate(Sender: TObject);
procedure BitBtnSortClick(Sender: TObject);
procedure BitBtnNewClick(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure BitBtnOpenClick(Sender: TObject);
procedure BitBtnSaveClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Implementation
{$R *.DFM}
type
zap=record // оголошення запису
fio :string[20];
mat,fiz,soch:integer;
end;
var
MZap:array[1..25] of zap; // оголошення масиву записів
FileZap:file of zap; // оголошення файлу записів
FileText:TextFile; // оголошення текстового файла
FileNameZap,FileNameText:string; // імена файла записів і текстового файла
n:integer; // поточна к-ть елементів масиву записів
{ Обробник події створення Форми }
procedure TForm1.FormCreate(Sender: TObject);
begin
with StringGrid1 do
begin // занесення інформації в осередки StringGrid1
Cells[0,0]:=’№пп’;
Cells[1,0]:=’Прізвище, ініціали’;
Cells[2,0]:=’Математика’;
Cells[3,0]:=’Фізика’;
Cells[4,0]:=’Твір’;
end;
BitBtnSort.Hide; // сховати кнопку ”Sort”
BitBtnSave.Hide; // сховати кнопку “Save”
end;
{ Обробник натиснення кнопки Sort }
procedure TForm1.BitBtnSortClick(Sender: TObject);
var
i,j :integer;
vper:zap;
begin
for i:=1 to n do
with StringGrid1,MZap[i] do
begin
fio:=Cells[1,i];
mat:=StrToInt(Cells[2,i]);
fiz:=StrToInt(Cells[3,i]);
soch:=StrToInt(Cells[4,i]);
end;
{ сортування методом "бульбашки"}
for i:=2 to n do
for j:=n downto i do
if MZap[j-1].fio>MZap[j].fio then
begin
vper:=MZap[j-1];
MZap[j-1]:=MZap[j];
MZap[j]:=vper;
end;
for i:=1 to n do // заповнення комірок StringGrid1 полями масиву записів
with StringGrid1,MZap[i] do
begin
Cells[0,i]:=IntToStr(i);
Cells[1,i]:=fio;
Cells[2,i]:=IntToStr(mat);
Cells[3,i]:=IntToStr(fiz);
Cells[4,i]:=IntToStr(soch);
end;
end;
{ Створення нового файла записів}
procedure TForm1.BitBtnNewClick(Sender: TObject);
var
i:integer;
begin // вивід на екран вікна із застережливим повідомленням
if MessageDlg('Вміст існуючого файла буде знищений. Ви впевнені?',
mtConfirmation, mbYesNoCancel, 0)=mrYes then
begin
for i:=1 to n do
with StringGrid1,MZap[i] do
begin // формування полів масиву записів
fio:=Cells[1,i];
mat:=StrToInt(Cells[2,i]);
fiz:=StrToInt(Cells[3,i]);
soch:=StrToInt(Cells[4,i]);
end;
with OpenDialog1 do
begin
Title:='Создание файла'; // заголовок вікна діалога
if Execute then // виконання стандартного діалога вибору імені файла
begin
FileNameZap:=FileName; // привласнення імені файла
AssignFile(FileZap,FileNameZap); // призначити файла FileZap ім'я FileNameZap
ReWrite(FileZap); // відкрити файл на запис
for i:=1 to n do
write(FileZap,MZap[i]); // запис у файл масиву записів
CloseFile(FileZap); // закриття файла записів
end;
end;
end;
end;
{Обробник кнопки зміни розміру}
procedure TForm1.SpinEdit1Change(Sender: TObject);
var
i,m:integer;
begin
m:=StrToInt(SpinEdit1.Text); // привласнити нове значення розміру
with StringGrid1 do
begin
RowCount:=m+1; // перерахувати кількість рядків
if m>n then // якщо рядки додані те
for i:=n+1 to m do // ініціалізувати нові осередки
begin
Cells[0,i]:=IntToStr(i);
Cells[1,i]:='';
Cells[2,i]:='';
Cells[3,i]:='';
Cells[4,i]:='';
end;
end;
n:=m; // запам'ятати нове значення розміру
end;
{ обробник натиснення кнопки Open }
procedure TForm1.BitBtnOpenClick(Sender: TObject);
var
i:integer;
begin
with OpenDialog1 do
begin
Title:='Відкриття файла'; // заголовок вікна діалога
if Execute then // виконання стандартного діалога вибору імені файла
begin
FileNameZap:=FileName; // привласнення імені файла
AssignFile(FileZap,FileNameZap); // призначити файла FileZap ім'я FileNameZap
ReSet(FileZap); // відкрити файл на читання
n:=0; // ініціалізація лічильника к-ті прочитаних з файла елементів
while not EOF(FileZap) do
begin
n:=n+1; // збільшення лічильника
read(FileZap,MZap[n]); // читання з файла n-го елемента масиву записів
end;
SpinEdit1.Text:=IntToStr(n); // занести к-ть прочитаних записів в SpinEdit
StringGrid1.RowCount:=n+1; // привласнити к-ть рядків
for i:=1 to n do
with StringGrid1,MZap[i] do
begin // заповнення комірок StringGrid1 полями масиву записів
Cells[0,i]:=IntToStr(i);
Cells[1,i]:=fio;
Cells[2,i]:=IntToStr(mat);
Cells[3,i]:=IntToStr(fiz);
Cells[4,i]:=IntToStr(soch);
end;
CloseFile(FileZap); // закриття файла записів
end;
end;
BitBtnSort.Show; // показати кнопку “Sort”
BitBtnSave.Show; // показати кнопку “Save”
end;
{ Збереження даних в текстовому файлі}
procedure TForm1.BitBtnSaveClick(Sender: TObject);
var
i:integer;
begin
with SaveDialog1 do
if Execute then // виконання стандартного діалога вибору імені файла
begin
FileNameText:=FileName; // привласнення імені файла
AssignFile(FileText,FileNameText); // призначити файла FileText ім'я FileNameText
ReWrite(FileText); // відкрити текстовий файл на запис
for i:=1 to n do
with MZap[i] do // запис в текстовий файл
writeln(FileText,i:3,fio:20,mat:5,fiz:5,soch:5);
CloseFile(FileText); // закриття текстового файла після закінчення запису
end;
BitBtnSort.Hide; // сховати кнопку ”Sort”
end;
end.
