End;
{властивість Handle вікна доступно лише під час роботи роботи програми}/
13. Розроблений проект Delphi, файл – rtf і файл довідки.hlp повинні знаходиться в одній папці.
Література до курсу алгоритмічних мов та програмування:
Література
1. Архангельский А.Я. Программирование в Delphi 6.-
М.: ЗАО “Изд-80 БИНОМ”,2002г.-1120с.:ил.
2. Бобровский С. Delphi 5:Учебный курс-С-П:Питер, 2001.-640 c.: ил.
3 Глинский Я.Н., Анохин В. Е., Ряжская В. А. TurboPascal 7.0 и Delphi.
Учебное пособие .-СПб: ООО “ДиаСофтЮП” 2001.-208 c.
4. Культин Н.Б. Программирование на ObgectPASCAL в Delphi 5.
-СПБ.: БХВ-С.-П.,2000,-464 с.:ил.
5. Фаронов В. В. Delphi5. Учебный курс.-М.:’’Нолидж”, 2001.-608c.,ил.
6. Черняхівський В.В.Delphi-4: сучасна технологія візуального програмування.-
Львів: БаК, 1999. – 196 с.
7. Фаронов В.В. TurboPascal 7.0 Научный курс. Учебное пособие,
изд.- 7-е М.: „ Нолидж” , 2001, -576 с., ил.
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИКІСІТКНЕУ імені Вадима Гетьмана Лабораторна робота №12 з предмету: "Алгоритмічні мови та програмування". Тема:” Робота з двовимірним масивом” Фах 5.080.405.027 ПЗ |
Мета: Освоїти методи обробки масиву.
Постановка задачі: Порахувати середній бал студентів за підсумками сесії. По запиту розрахувати і вивести середній бал по всій групі.
Хід роботи:
VI. Відкрити новий додаток. Дати заголовок Form1.Caption ― 'Підсумки сесії':
Розмістити на формі:
6) Зі сторінки Standard- мітку Label1; властивість Caption ― 'Підсумки сесії по групі 37_';
7) Зі сторінки Additional- таблицю рядків StringGrid1; встановити властивості:
ColCount ― 5 {Кількість стовпців};
RowCount ― 5 {Кількість рядків};
FixedCols ― 0 {Кількість фіксованих стовпців};
FixedRows ― 1 {Кількість фіксованих рядків};
Name ― StringGrid1;
Options.goEditing ― True {Редагування осередків таблиці};
Options.goTab ― True;
8) Зі сторінки Standard- прапорець CheckBox; установити його властивість Caption ― 'Середній бал по групі';
9) Зі сторінки Standard- кнопку Button1; установити властивість Caption ― 'Пуск';
10) Зі сторінки Standard для висновку середнього бала по групі -Label2 (чи Panel1); Caption ― ' ' (очистити).
VII. Для початкового програмного заповнення заголовка таблиці обробити подія активації форми:
procedure TForm1.FormActivate(Sender: TObject);
begin
StringGrid1.Cells[0,0] := 'Ф И О';
StringGrid1.Cells[1,0] := 'Програм.';
StringGrid1.Cells[2,0] := 'Мат.Ан.';
StringGrid1.Cells[3,0] := 'Диф.Ур.';
StringGrid1.Cells[4,0] := 'Ср.Бал';
end;
VIII. Основну обробку і введення елементів масиву (при заповненні таблиці) оформляти у виді процедури обробки події натискання клавіші "Пуск":
procedure TForm1.Button1Click(Sender: TObject);
var
a : array [1..5,1..10] of integer; {робочиймасив}
S, {середній бал студента}
SR : real; {середній бал по групі}
i, {лічильник стовпців}
j : integer; {лічильник рядків}
begin
SR := 0;
For j := 1 to StringGrid1.RowCount-1 do{цикл по рядках}
begin
S := 0;
For і := 1 to 3 do {цикл по стовпцях}
begin
a[i,j] := StrToInt(StringGrid1.Cells[i,j]);
S := S+a[i,j];
end; {For і}
S := S/3; {ви числение середнього бала студента}
SR := SR+S;
end; {For j}
{аналіз значення прапорця - обчислення середнього бала по групі}
If CheckBox1.State=cbChecked then
begin
SR := SR/(StringGrid1.RowCount-1);
Label2.Caption := FloatToStr(SR);
end; {Then}
end; {Proc}
IV Виконати перевірку коректності введення даних процедурою OnKeyPressed. У випадку помилки вивести повідомлення "Дані не входять у діапазон [1..5]" і повторити введення.
VПеревірити, чи введеноі дані в осередок, якщо немає ― повідомлення на екран і коректування таблиці.
Контрольні питання:
5. Компонент StringGrid, його властивості і події.
6. Компонент CheckBox, його властивості і події.
7. Методи введення й обробки елементів масиву.
8. Перевірка коректності введення даних.
Протокол роботи:
unitlr12;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
Label1: TLabel;
StringGrid1: TStringGrid;
CheckBox1: TCheckBox;
Button1: TButton;
Label2: TLabel;
Button2: TButton;
procedure FormActivate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject);
begin
StringGrid1.Cells[0,0] := 'ФИО';
StringGrid1.Cells[1,0] := 'Програм.';
StringGrid1.Cells[2,0] := 'Мат.ан.';
StringGrid1.Cells[5,0] := ‘Стипендия';
end;
procedure TForm1.Button2Click(Sender: TObject); {Процедура виходу з програми}
begin
form1.Close;
end;
procedure TForm1.Button1Click(Sender: TObject);{ Процедура обробкиButton }
var
S,Sr:real;
i,j:integer;begin
Sr := 0;
for j := 1 to StringGrid1.RowCount do
begin
S := 0;
for i := 1 to 3 do
beginif StringGrid1.cells[i,j]<>''
then S := S+StrToInt(StringGrid1.Cells[i,j])
else StringGrid1.Cells[i,j] := '0';
end; //end i
S := S/3;
StringGrid1.Cells[4,j] := FloatToStrF(s,ffFixed,4,2);
if s=5 then StringGrid1.Cells[5,j] := '40.00'
elseif (S<5)and(s>=4) then StringGrid1.Cells[5,j] := '32.50'
else StringGrid1.Cells[5,j] := 'неполучает';
sr := Sr+s;
end; //end i
if CheckBox1.State=cbChecked then
begin
Sr := sr/(stringGrid1.RowCount-1);
label2.Caption := 'Среднийбалл ='+FloatToStrF(Sr,ffFixed,4,2);
end; //end check
end; //end proc
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
case key of
#8,'2'..'5':;
elsebegin
MessageDlg('Оценкапо 5-ойсмистеме(2..5)',mtError,[mbOk,MbCancel],0);
Key:=chr(0);
end;
end;
end;
end. //end program
Форми: