Объявление массива
Имя: array [нижний_индекс..верхний_индекс] of тип
где:
- имя — имя массива;
- array — зарезервированное слово языка Delphi, обозначающее, что объявляемое имя является именем массива;
- нижний_индекс и верхний _ индекс — целые константы, определяющие диапазон изменения индекса элементов массива и, неявно, количество элементов (размер) массива;
- тип — тип элементов массива.
Примеры объявления массивов:
temper: array [1..31] of real;
коef :array [0..2] of integer;
name: array [1..30] of string [25];
Const
NT = 18; // число команд
SN = 25; // предельная длина названия команды
Var
team: array[1..NT] of string[SN];
team [1]:= 'Зенит';
d:= koef[1]*koef[1]-4*koef[2]*koef[1];
ShowMessage(name[n+1]);
temper[i]:= StrToFloat(Edit1.text);
Имя: array [нижний_индекс..верхний_индекс] of тип = (список);
где список — разделенные запятыми значения элементов массива. Например:
a: array[10] of integer = (0,0,0,0,0,0,0,0,0,0);
Team: array[1..5] of String[10]=
('Зенит','Динамо','Спартак','Ротор','СКА');
for i:= 1 to 10 do
a[i]:= 0;
Операции с массивами
Типичными операциями при работе с массивами являются:
- вывод массива;
- ввод массива;
- поиск максимального или минимального элемента массива;
- поиск заданного элемента массива;
- сортировка массива.
Вывод массива
Рис. 5.1. Форма и диалоговое окно приложения Вывод массива
Листинг 5.1. Инициализация и вывод массива
unit outar_;
Interface
Uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,Dialogs, StdCtrls;
Type
Tform1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
Var
Form1: TForm1;
Implementation
{$R *.dfm}
Const
NT = 5;
Var
team: array[1..NT] of string[10] =
('Зенит','Динамо','Ротор','Спартак','СКА');
procedure Tform1.Button1Click(Sender: TObject);
Var
st :string; // список команд
i: integer; // индекс, номер элемента массива
Begin
// формирование списка для отображения в форме
for i:=1 to NT do st:= st + IntToStr(i)+ ' '+ team[i] + #13;
// вывод списка
Label1.Caption:= st;
end;
End.
Ввод массива
Использование компонента StringGrid
Для ввода массива удобно использовать компонент StringGrid. Значок компонента StringGrid находится на вкладке Additional (рис. 5.2).
Рис. 5.2. Компонент StringGrid
Компонент StringGrid представляет собой таблицу, ячейки которой содержат строки символов. В табл. 5.1 перечислены некоторые свойства компонента StringGrid.
Таблица 5.1. Свойства компонента StringGrid
Свойство | Определяет | ||
Name | Имя компонента. Используется в программе для доступа к свойствам компонента | ||
ColCount | Количество колонок таблицы | ||
RowCount | Количество строк таблицы | ||
Cells | Соответствующий таблице двумерный массив. Ячейка таблицы, находящаяся на пересечении столбца номер col и строки номер row определяется элементом cells [col, row] | ||
FixedCols | Количество зафиксированных слева колонок таблицы. Зафиксированные колонки выделяются цветом и при горизонтальной прокрутке таблицы остаются на месте | ||
FixedRows | Количество зафиксированных сверху строк таблицы. Зафиксированные строки выделяются цветом и при вертикальной прокрутке таблицы остаются на месте | ||
Options.goEditing | Признак допустимости редактирования содержимого ячеек таблицы. True — редактирование разрешено, False — запрещено | ||
Options.goTab | Разрешает (True) или запрещает (False) использование клавиши <ТаЬ> для перемещения курсора в следующую ячейку таблицы | ||
Options.GoAlways-ShowEditor | Признак нахождения компонента в режиме редактирования. Если значение свойства False, то для того, чтобы в ячейке появился курсор, надо начать набирать текст, нажать клавишу <F2> или сделать щелчок мышью | ||
DefaultColWidth | Ширину колонок таблицы | ||
DefaultRowHeight | Высоту строк таблицы | ||
GridLineWidth | Ширину линий, ограничивающих ячейки таблицы | ||
Left | Расстояние от левой границы поля таблицы до левой границы формы | ||
Top | Расстояние от верхней границы поля таблицы до верхней границы формы | ||
Height | Высоту поля таблицы | ||
Width | Ширину поля таблицы | ||
Font | Шрифт, используемый для отображения содержимого ячеек таблицы | ||
ParentFont | Признак наследования характеристик шрифта формы | ||
Рис. 5.3. Диалоговое окно программы Ввод и обработка массива
Таблица 5.2. Значения свойств компонента StringGrid1
Свойство | Значение | ||
ColCount | |||
FixedCols | |||
RowCount | |||
DefaultRowHeight | |||
Height | |||
DefaultColWidth | |||
Width | |||
Options.goEditing | True | ||
Options.AlwaysShowEditing | True | ||
Options.goTabs | True | ||
Листинг 5.2. Ввод и обработка массива целых чисел
unit getar_;
Interface
uses Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, Grids, StdCtrls;
Type
TForm1 = class(TForm)
Label1: TLabel;
StringGrid1: TStringGrid;
Button1: TButton;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
Var
Form1: TForml;
Implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
Var
a: array [1..5] of integer; // массив
summ: integer; // сумма элементов
sr: real; // среднее арифметическое
i: integer; // индекс
Begin
// ввод массива
// считаем, что если ячейка пустая, то соответствующий
// ей элемент массива равен нулю
for i:= 1 to 5 do
if Length(StringGrid1.Cells[i-1, 0]) <>0
then a[i]:= StrToInt(StringGridl.Cells[i-1,0])
else a[i]:= 0;
// обработка массива
summ:= 0;
for i:=1 to 5 do summ:= summ + a[i];
sr:= summ / 5;
// вывод результата
Label2.Caption:='Сумма элементов: ' + IntToStr(summ)
+ #13+ 'Среднее арифметическое: ' + FloatToStr(sr);
end;
End.