Главная страница
Навигация по странице:

  • Цель лабораторной работы

  • Array

  • 1.2. Компонент

  • 1.3. Пример выполнения задания

  • 1.3.1. Настройка компонента

  • Лабораторная. Лабораторный практикум(часть1) Электронный. Практикум по дисциплине Разработка приложений в визуальных средах для студентов специальностей


    Скачать 3.27 Mb.
    НазваниеПрактикум по дисциплине Разработка приложений в визуальных средах для студентов специальностей
    АнкорЛабораторная
    Дата12.03.2023
    Размер3.27 Mb.
    Формат файлаdoc
    Имя файлаЛабораторный практикум(часть1) Электронный.doc
    ТипПрактикум
    #982312
    страница7 из 24
    1   2   3   4   5   6   7   8   9   10   ...   24

    ЛАБОРАТОРНАЯ РАБОТА 4

    Разработка приложения с использованием массивов




    Цель лабораторной работы: изучить свойства компоненты TStringGrid. Написать программу с использованием массивов.

    1. Краткие сведения



    1.1. Работа с массивами
    Массив есть упорядоченный набор однотипных элементов, объединенных под одним именем. Каждый элемент массива обозначается именем, за которым в квадратных скобках следует один или несколько индексов, разделенных запятыми, например: а[1], bb[I], с12[I, j*2], q[l, 1, I*j-l]. В качестве индекса можно использовать любые порядковые типы за исключением LongInt.

    Тип массива или сам массив определяются соответственно в разделе типов (Type) или переменных (Var) с помощью ключевого слова Array следующим образом:

    Array [описание индексов] of <тип элементов массива >

    Примеры описания массивов:

    Const N=20; // Задание максимального значения индекса;

    Type

    TVector = array [1..N] of real; // Описание типа одномерного массива;

    Var

    A : TVector; //A - массив типа TVector;

    Ss : array[1..10] of integer; //Ss - массив из десяти целых чисел;

    Y : array[1..5, 1..10] of char; //Y -двумерный массив символьного типа.

    Элементы массивов могут использоваться в выражениях так же, как и обычные переменные, например:

    F:= 2*a[3] + a[ss[l] + 1]*3;

    A[n]:= 1+sqrt(abs(a[n-1]));
    1.2. Компонент TStringGrid
    При работе с массивами ввод и вывод информации на экран удобно организовывать в виде таблиц, используя компонент TStringGrid. Последний предназначен для отображения информации в виде двумерной таблицы, каждая ячейка которой представляет собой окно однострочного редактора (аналогично окну TEdit). Доступ к информации осуществляется с помощью свойства
    Cells[ACol, ARow : integer] : string;
    где ACol, ARow - индексы элементов двумерного массива. Свойства ColCount и RowCount устанавливают количество строк и столбцов в таблице, а свойства FixedCols и FixedRows задают количество строк и столбцов фиксированной зоны. Фиксированная зона выделена другим цветом, и в нее запрещен ввод информации с клавиатуры.
    1.3. Пример выполнения задания
    Задание: создать программу для определения вектора:

    ,

    где А – квадратная матрица; а Y, B – одномерные массивы.

    Элементы вектора Y определяются по формуле:

    .

    Значения N вводить в компонент TEdit, А и В – в компонент TStringGrid. Результат, после нажатия кнопки типа TButton, вывести в компонент типа TStringGrid.

    Форма приложения приведена на рисунке 4.1.



    Рисунок 4.1 – Форма приложения
    1.3.1. Настройка компонента TStringGrid
    Для установки компонента TStringGrid на форму необходимо на странице Additional палитры компонентов щелкнуть мышью по пиктограмме .

    Справочно: TStringGrid– таблица строк. Этот компанент обладает мощными возможностями для представления текстовой информации в табличном виде.

    После этого щелкните мышью в нужном месте формы. Захватывая кромки компонента, отрегулируйте его размер. В инспекторе объектов значения свойств ColCount и RowCount (количество столбцов и строк рабочей зоны) установите 2, а FixedCols и FixedRows (количество фиксированных столбцов и строк) установите 1. Так как компоненты StringGrid2 и StringGrid3 имеют только один столбец, то у них: ColCount=1, RowCount=2, FixedCols=0 и FixedRows=1. По умолчанию в компонент TStringGrid запрещен ввод информации с клавиатуры, поэтому необходимо свойство Options goEditing для компонентов StringGrid1 и StringGrid2 установить в положение True.

    Справочно: элемент множества goEditing типа TGridOption компоненты StringGrid – разрешает редактирование ячейки. Редактирование начинается после щелчка мыши или нажания F2 и завершается при щелчке по другой ячейке или нажатии клавиши Enter.

    Текст программы:
    Unit LabRab_4;

    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

    TMas1 = array[1..Nmax] of Extended; // Объявление типа одномерного массива

    TMas2 = array[1..Nmax, 1..Nmax] of Extended; // Объявление типа двумерного массива

    var

    InputForm: TInputForm;

    A : TMas2; // Объявление двумерного массива

    B, Y : TMas1; // Объявление одномерных массивов

    N, i, j : integer;
    Implementation

    {$R *.dfm}
    Procedure TInputForm.FormCreate(Sender: TObject);

    begin

    N := 3; // Размерность массива

    Edit1.Text := IntToStr(N);

    // Задание числа строк и столбцов

    StringGrid1.ColCount := N + 1;

    StringGrid1.RowCount := N + 1;

    StringGrid2.RowCount := N + 1;

    StringGrid3.RowCount := N + 1;

    // Ввод в левую верхнюю ячейку таблицы названия массива

    StringGrid1.Cells[0, 0] := 'Массив A';

    StringGrid2.Cells[0, 0] := 'Массив B';

    StringGrid3.Cells[0, 0] := 'Массив Y';

    // Заполнение верхнего и левого столбцов поясняющими подписями

    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 i:=1 to N do

    B[i] := StrToFloat(StringGrid2.Cells[0, i]);

    // Умножение массива 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.

    1   2   3   4   5   6   7   8   9   10   ...   24


    написать администратору сайта