Лабораторна робота №6 Тема роботи: Обробка масивів.
Мета роботи: вивчити властивості компонента TStringGrid. Написати програму, що передбачає обробку масивів.
Рекомендована література:
-
Бобровский С. И. Delphi 7. Учебный курс. - С.Пб. Питер, 2004. – 735 с.
-
Я. М. Глинский Інформатика. Алгоритмізація і програмування. Книжка 1. - Львів, 2003. – 198 с.
-
Симонович С.В., Евсеев Г.А. Занимательное программирование:Delphi. – М.: АСТ-Пресс Книга; Издательство «Развитие», 2003. – 368 с.
-
Кен Хендерсон. Руководство Разработчика баз данных в Delphi 2. – К. Диалектика, 1997, - 543 с.
Контрольні запитання:
-
Які оператори мови Pascal описують процеси з розгалуженням?
-
В яких випадках доцільно викоритовувати оператор case?
-
Що називають кнопками-перемикачами?
-
Які види кнопок-перемикачів Ви знаєте?
-
За що відповдає компонент TcheckBox?
-
За що відповдає компонент TRadiogroup?
-
Що називають оброблювачем подій та як його створюють?
Теоретичні відомості. Компонент tStringGrid
При роботі з масивами введення і виведення інформації на екран зручно організовувати у виді таблиць, використовуючи компонент TStringGrid. Останній призначений для відображення інформації у виді двовимірної таблиці, кожена комірчина якої являє собою вікно однорядкового редактора (аналогічно вікну TEdit).
Доступ до інформації здійснюється за допомогою властивості:
Cells[ACol, Arow : Integer] : string;
де ACol, Arow - індекси елементів двовимірного масиву.
Властивості ColCount і RowCount установлюють кількість рядків і стовпчиків у таблиці, а властивості FixedCols і FixedRows задають кількість рядків і стовпчиків фіксованої зони. Фіксована зона виділена іншим кольором, і в неї заборонене введення інформації з клавіатури.
Хід виконання роботи.
Завдання: створити програму для визначення вектора:
,
де А – квадратна матриця; а Y, B – одномірні масиви.
Елементи вектора Y визначаються по формулі;
.
Значення N вводити в компонент Tedit, А и В – у компонент TStringGrid. Результат, після натискання кнопки типу TButton, вивести в компонент TStringGrid.
Панель діалогу приведена на рис.1
Рис. 1.
Настроювання компонента tSstringGrid
Для установки компонента TStringGrid на форму, необхідно на сторінці Additional меню компонентів клацнути мишею по піктограмі. Після цього клацніть мишею в потрібному місці форми. Захоплюючи краї компонента, відрегулюйте його розмір. В інспекторі об'єктів значення властивостей ColCount і RowCount встановіть 2, а FixedCols і FixedRows встановіть 1. Тому що компоненти StringGrid2 і StringGrid3 мають тільки один стовпчик, то в них: ColCount=1, RowCount=2, FixedCols=0 і FixedRows=1. За замовчуванням у компонент TStringGrid заборонене введення інформації з клавіатури, тому необхідно властивість Options goEditing для компонентів StringGrid1 і StringGrid2 встановити в положення True.
Текст програми приведений нижче.
Unit Lab4;
Interface
Uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Grids;
type
TInputForm = class(TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Procedure FormCreate(Sender: TObject);
Procedure Button1Click(Sender: TObject);
Procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
Nmax = 10; // Максимальна розмірність масиву
type
Mas1 = array[1..Nmax] of Extended;
//Оголошення типу одномірного масиву
Mas2 = array[1..Nmax, 1..Nmax] of Extended; //Оголошення типу двовимірного масиву
var
InputForm: TInputForm;
A : Mas2; // Оголошення двовимірного масиву
B, Y : Mas1; // Оголошення одномірних масивів
N, i, j : integer;
Implementation
{$R *.DFM}
Procedure TInputForm.FormCreate(Sender: TObject);
begin
N := 3; //Розмірність масиву
Edit1.Text := FloatToStr(N);
//Завдання числа рядків і стовпчиків
StringGrid1.ColCount := N + 1;
StringGrid1.RowCount := N + 1;
StringGrid2.RowCount := N + 1;
StringGrid3.RowCount := N + 1;
//Введення в ліву верхню комірчину таблиці назви масиву
StringGrid1.Cells[0, 0] := 'Масив А';
StringGrid2.Cells[0, 0] := 'Масив В';
StringGrid3.Cells[0, 0] := 'Масив У';
//Заповнення верхнього і лівого стовпчиків підписами, що пояснюють
for i:=1 to N do
begin
StringGrid1.Cells[0, i] := 'i='+ IntToStr(i);
StringGrid1.Cells[i, 0] := 'j='+ IntToStr(i);
end;
end;
Procedure TInputForm.Button1Click(Sender: TObject);
begin
N := StrToInt(Edit1.Text);
//Завдання числа рядків і стовпчиків у таблицях
StringGrid1.ColCount := N + 1;
StringGrid1.RowCount := N + 1;
StringGrid2.RowCount := N + 1;
StringGrid3.RowCount := N + 1;
//Заповнення верхнього і лівого стовпчиків підписами, що пояснюють
for i:=1 to N do
begin
StringGrid1.Cells[0, i] := 'i=' + IntToStr(i);
StringGrid1.Cells[i, 0] := 'j=' + IntToStr(i);
end;
end;
Procedure TInputForm.Button2Click(Sender: TObject);
var
s : extended;
begin
//Заповнення масиву A елементами з тавлиці StringGrid1
for i:=1 to N do
for j:=1 to N do
A[i, j] := StrToFloat(StringGrid1.Cells[j, i]);
//Заповнення масиву B елементами з тавлиці StringGrid2
for і:=1 to N do
B[і] := StrToFloat(StringGrid2.Cells[0, і]);
// Множення масиву A на масив B
for i:=1 to N do
begin
s := 0;
for j:=1 to N do
s := s + A[i, j]*B[j];
Y[i] := s;
//Виведення результату в таблицю StringGrid3
StringGrid3.Cells[0, i] := FloatToStrF(Y[i], ffFixed,6,2);
end;
end;
end.