- •Массивы
- •Массивы
- •Одномерные массивы
- •Использование одномерных массивов в программах
- •Пример 1: фрагмент программы заполнения массива значениями функции sin(x) на отрезке [-3, 3]
- •Компоненты Delphi для работы с одномерными массивами
- •Основные свойства компонентов класса TListBox
- •Основные методы класса TListBox
- •Пример 1: заполнение списка значениями функции
- •Пример 2: копирование выделенных строк из одного списка в другой
- •Пример 3: подсчет количества элементов списка, больших заданного числа m (числа в списке
- •Пример 4: нахождение наибольшего элемента списка
- •Класс TComboBox
- •Пример 1: пополнение списка элементом, введенным пользователем
- •Двумерные и многомерные массивы
- •Двумерные массивы
- •Многомерные массивы
- •Компоненты Delphi для работы с двумерными массивами
- •Основные свойства компонентов класса TStringGrid
- •Пример 1: заполнение таблицы случайными числами в интервале от 0 до 20
Пример 3: подсчет количества элементов списка, больших заданного числа m (числа в списке целые)
var
…
i,k,m : integer;
. . .
m:=StrToFloat(Edit1.Text);
k:=0;
for i := 0 to ListBox1.Count-1 do begin
if StrToFloat(ListBox1.Items[i]) > m then begin
k := k + 1; end;
end;
Edit2.Text:= IntToStr(k); {вывод результата на экран}
А если нужно подсчитать не количество, а сумму таких элементов, тогда…
11
Пример 4: нахождение наибольшего элемента списка
var
…
i, nmax : integer; max : real;
. . .
max:=ListBox1.Items[i];
for i := 0 to ListBox1.Count-1 do begin
if StrToFloat(ListBox1.Items[i]) > max then begin
max := StrToFloat(ListBox1.Items[i]); n_max := i;
end;
end;
Edit1.Text:= FloatToStr (max); {наибольшее значение}
Edit2.Text:= IntToStr (n_max); {и его номер в списке}
12
Класс TComboBox
(вкладка Standard)
Компоненты этого класса представляют собой выпадающий список
Имеют свойства Items и Count как у класса TListBbox
Имеют все методы класса TListBox
Свойства, отсутствующие у класса TListBox:
|
Свойство |
Тип |
Пояснение |
Text |
String |
Текст, видимый в окне нераскрытого списка |
|
|
Integer |
Номер видимой строки или -1, если введена |
|
|
ItemIndex |
||
|
|||
|
|
|
отсутствующая в списке строка |
13
Пример 1: пополнение списка элементом, введенным пользователем
ComboBox1.Items.Add(ComboBox1.Text));
Пример 2: пополнение списка элементом, введенным пользователем, если этот элемент отсутствует в списке
if ComboBox1. ItemIndex = -1 then ComboBox1.Items.Add(ComboBox1.Text));
Пример 3: подсчет количества элементов равных нулю в списке
k:=0;
for i := 0 to ComboBox1.Count-1 do begin
if ComboBox1.Items[i] = ‘0’ then k := k + 1;
end;
Edit2.Text:= IntToStr(k); {вывод результата на экран}
14
Двумерные и многомерные массивы
Множество практических задач требует хранения информации в виде прямоугольных таблиц.
Если вся таблица содержит однотипные данные, то такая таблица может быть представлена как двумерный массив.
15
Двумерные массивы
Oбъявление массива в разделе var
имя: array [нач_индекс1 .. кон_индекс1, нач_индекс2 .. конечный_индекс2] of тип
Пример объявления двумерного массива:
var |
|
table |
: array[0..99,1..12] of integer; |
Пример обращения к отдельному элементу двумерного массива: table[0,5] := table[99,5];
Для последовательной обработки всех элементов массива чаще всего используется вложенный цикл с параметром.
Пример: фрагмент программы суммирования элементов массива
sum :=0;
for i := 0 to 99 do for j := 1 to 12 do
sum := sum + table[i,j];
16
Многомерные массивы
Нередко на практике требуются трехмерные массивы, а иногда даже четырех- и более мерные массивы.
Пример объявления четырехмерного массива:
table4 : array[1..200,1..2,1..5,1..6] of integer; {данные о числе пропущенных занятий для 200 студентов за 2 семестра 5 курсов 6 факультетов}
Пример: фрагмент программы суммирования элементов массива
sum :=0;
for i := 1 to 200 do for j := 1 to 2 do
for k := 1 to 5 do for n := 1 to 6 do
sum := sum + table4[i,j,k,n];
17
Компоненты Delphi для работы с двумерными массивами
Класс TStringGrid (вкладка Additional)
Объекты этого класса предназначены для работы с двумерным массивом (таблицей) строковых данных
Нумерация строк и столбцов таблицы начинается с нуля
18
Основные свойства компонентов класса TStringGrid
|
Свойство |
Тип |
Пояснение |
Примечание |
|
Cells |
Array [0..n, 0..m] of |
Двумерный массив строк, |
Первый индекс – |
|
|
String |
пронумерованный с нуля |
столбец, второй – |
|
|
|
|
строка |
|
FixedCols |
Integer |
Количество фиксированных |
|
|
|
|
(серых) столбцов |
Редко |
|
FixedRows |
Integer |
Количество фиксированных строк |
используются в |
|
программах, |
|||
|
|
|
|
обычно задаются с |
|
Options. |
Boolean |
Возможность редактирования |
помощью |
|
инспектора |
|||
|
goEditing |
|
содержимого таблицы |
|
|
|
объектов |
||
|
|
|
пользователем |
|
|
|
|
|
|
|
ColCount |
Integer |
Количество столбцов |
|
|
RowCount |
Integer |
Количество строк |
|
|
|
|
|
|
|
|
|
|
|
Пример 1: заполнение таблицы случайными числами в интервале от 0 до 20
for i:=0 to StringGrid1.ColCount-1 do
for j:=0 to StringGrid1.RowCount-1 do StringGrid1.Cells[i,j]:=IntToStr(random(21)); 
Пример 2: вычисление суммы третьего столбца таблицы
sum :=0;
for i := 0 to StringGrid1.RowCount-1 do sum := sum + StringGrid1.Cells[3,i];
Пример 3: вычисление наибольшего элемента седьмой строки таблицы
max:= StrToInt(StringGrid1.Cells[0,j]); for i:=1 to StringGrid1.ColCount-1 do
if StrToInt(StringGrid1.Cells[i,j])>max
then max:= StrToInt(StringGrid1.Cells[i,7]);
20
