Смекни!
smekni.com

Обєктно-орієнтоване програмування МП Delphi (стр. 6 из 6)

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


Форми: