Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_pr_ta / Лаб_та_пр_6.doc
Скачиваний:
15
Добавлен:
07.02.2016
Размер:
89.09 Кб
Скачать

Лабораторна робота №6 Тема роботи: Обробка масивів.

Мета роботи: вивчити властивості компонента TStringGrid. Написати програму, що передбачає обробку масивів.

Рекомендована література:

  1. Бобровский С. И. Delphi 7. Учебный курс. - С.Пб. Питер, 2004. – 735 с.

  2. Я. М. Глинский Інформатика. Алгоритмізація і програмування. Книжка 1. - Львів, 2003. – 198 с.

  3. Симонович С.В., Евсеев Г.А. Занимательное программирование:Delphi. – М.: АСТ-Пресс Книга; Издательство «Развитие», 2003. – 368 с.

  4. Кен Хендерсон. Руководство Разработчика баз данных в Delphi 2. – К. Диалектика, 1997, - 543 с.

Контрольні запитання:

  1. Які оператори мови Pascal описують процеси з розгалуженням?

  2. В яких випадках доцільно викоритовувати оператор case?

  3. Що називають кнопками-перемикачами?

  4. Які види кнопок-перемикачів Ви знаєте?

  5. За що відповдає компонент TcheckBox?

  6. За що відповдає компонент TRadiogroup?

  7. Що називають оброблювачем подій та як його створюють?

Теоретичні відомості. Компонент 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.

Соседние файлы в папке lab_pr_ta