- •Основи об’єктно-орієнтованого програмування
- •Факультету комп’ютерних наук та інформаційних технологій
- •Луцьк 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
Лабораторна робота №6 Програмування алгоритмів з використанням записів
Мета лабораторної роботи: створити застосування, в якому використовуються дані типу запис.
6.1. Приклад створення застосування
Завдання: створити Windows-додаток для обробки відомості про успішність учнів в кількості 9 чоловік. Кожен запис повинен містити прізвище, ініціали, а також оцінки з фізики, математики і твору. Вивести список учнів, відсортований в порядку зменшення їх середнього балу.
Один з можливих варіантів панелі інтерфейсу створюваного застосування показаний на рис.6.1.
6.1.1. Розміщення компонентів на Формі
При
роботі із записами введення і виведення
інформації на екран зручно організовувати
за допомогою компонента StringGrid.
Рис. 6.1
У цьому завданні для нанесення відповідних написів в колонках і рядках використовується фіксована зона компонента StringGrid, тому в Інспекторові Об'єктів значення властивостей FixedCols і FixedRows встановите рівними 1. Відповідно до завдання встановите значення властивості ColCount=6, а значення властивості RowCount=10. Для можливості перегляду всього списку що вчаться в компоненті StringGrid зручно використовувати вертикальну лінійку прокрутки, тому встановите властивість ScrollBars в стан ssVertical. Відкрийте список опцій властивості +Options і встановите значення goEditing в True – це дасть можливість редагувати інформацію в компоненті StringGrid за допомогою клавіатури і “миші”.
6.1.2. Створення процедур обробки подій FormCreate і Button1Click
Подвійним натисненням клавіші “миші” на Формі і кнопці Button1 створіть відповідні процедури обробки подій. Використовуючи текст модуля UnZap, уважно наберіть операторів цих процедур.
6.1.3. Текст модуля UnZap
Unit UnZap;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs
StdCtrls, Buttons, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(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;
srbal :extended
end;
var
MZap:array[1..9] of zap; // оголошення масиву записів
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
with StringGrid1 do
begin // занесення інформації в осередки StringGrid1
Cells[0,0]:='№пп’;
Cells[1,0]:='Прізвище, ініціали';
Cells[2,0]:='Математика';
Cells[3,0]:='Фізика';
Cells[4,0]:='Твір';
Cells[5,0]:='Ср.бал';
for i:=1 to 9 do
Cells[0,i]:=IntToStr(i);
Cells[1,1]:='Перший'; Cells[2,1]:='3'; Cells[3,1]:='3'; Cells[4,1]:='3';
Cells[1,2]:='Другий'; Cells[2,2]:='3'; Cells[3,2]:='3'; Cells[4,2]:='4';
Cells[1,3]:='Третій'; Cells[2,3]:='3'; Cells[3,3]:='4'; Cells[4,3]:='4';
Cells[1,4]:='Четвертий'; Cells[2,4]:='4'; Cells[3,4]:='4'; Cells[4,4]:='4';
Cells[1,5]:='П’ятий'; Cells[2,5]:='3'; Cells[3,5]:='4'; Cells[4,5]:='5';
Cells[1,6]:='Шостий'; Cells[2,6]:='5'; Cells[3,6]:='4'; Cells[4,6]:='4';
Cells[1,7]:='Сьомий'; Cells[2,7]:='5'; Cells[3,7]:='5'; Cells[4,7]:='4';
Cells[1,8]:='Восьмий'; Cells[2,8]:='5'; Cells[3,8]:='5'; Cells[4,8]:='5';
Cells[1,9]:='Дев’ятий'; Cells[2,9]:='3'; Cells[3,9]:='5'; Cells[4,9]:='5';
for i:=1 to 9 do
with MZap[i] do
begin // формування полів масиву записів
fio:=Cells[1,i];
mat:=StrToInt(Cells[2,i]);
fiz:=StrToInt(Cells[3,i]);
soch:=StrToInt(Cells[4,i]);
srbal:=(mat+fiz+soch) /3; // обчислення значення ср. балу
Cells[5,i]:=FloatToStrF(srbal,ffFixed,5,2); // виведення значення ср.балла
end; // в останню колонку StringGrid1
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j :integer;
vper:zap;
begin
for i:=1 to 9 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]);
srbal:=(mat+fiz+soch) /3;
Cells[5,i]:=FloatToStrF(srbal,ffFixed,5,2);
end;
for i:=2 to 9 do // сортування методом "бульбашки"
for j:=9 downto i do
if MZap[j-1].srbal<MZap[j].srbal then
begin
vper:=MZap[j-1];
MZap[j-1]:=MZap[j];
MZap[j]:=vper;
end;
for i:=1 to 9 do // заповнення комірок StringGrid1 полями масиву записів
with StringGrid1,MZap[i] do
begin
Cells[1,i]:=fio;
Cells[2,i]:=IntToStr(mat);
Cells[3,i]:=IntToStr(fiz);
Cells[4,i]:=IntToStr(soch);
Cells[5,i]:=FloatToStrF(srbal,ffFixed,5,2);
end;
end;
end.
