Методичка
.pdfобработки события, а в разделе переменных модуля, то одновременно с объявлением массива можно выполнить его инициализацию, т. е. присвоить начальные значения элементам массива. Инструкция объявления массива с одновременной его инициализацией в общем виде выглядит так:
Имя:array [нижний_индекс..верхний_индекс] of тип = (список);
список – разделенные запятыми значения элементов массива. Например,
a: array[10] of integer = (0,0,0,0,0,0,0,0,0,0); Team: array[1..5] of
String=('Зенит','Динамо','Спартак','Ротор','СКА');
Так как индексы массивов – целые числа, то для обработки, ввода и вывода массивов удобно использовать оператор цикла for. Например, для вывода значений двумерного массива размерности 10х15 с именем a и типом данных Real в таблицу с именем Stringgrid1 используется следующая конструкция
for i:=1 to 10 do for j=1 to 15 do
stringgrid1.cells[i,j]:=floattostr(a[i,j]);
Необходимо отметить, что для ячеек таблицы сначала указывается номер столбца, а затем номер строки, тогда как порядок объявления массива определяется пользователем.
Случайные числа. Функция Random.
Function Random (Range: Integer);
Функция Random генерирует последовательность целых или действительных случайных чисел. Параметр Range не является обязательным. Если этот параметр не задан, то функция возвращает случайные числа X, в интервале 0<=X<=1.
Например:
var A:array[1..10] of real;
…
for i:=1 to 10 do A[i]:=Random;
В примере заполняется массив A равномерно распределенными действительными числами.
Если в функции Random задан параметр Range, то функция возвращает случайные целые числа в диапазоне от 0 do (Range-1). Например, оператор
a:=random(50);
Присвоит переменной а случайное целое число в диапазоне от 0 до 49, а код
a:=random(50)+1;
присвоит переменной а случайное целое число в диапазоне от 1 до 50, а код
31
Пример программы для перемножения матриц с помощью массивов и компонента Stringgrid приведен ниже.
Пусть даны две прямоугольные матрицы A и B размерности m n и n q соответственно:
Тогда матрица C размерностью m x q называется их произведением:
Операция умножения двух матриц выполнима только в том случае, если число столбцов в первом сомножителе равно числу строк во втором; в этом случае говорят, что форма матриц согласована. В частности, умножение всегда выполнимо, если оба сомножителя — квадратные матрицы одного и того же порядка.
На форме расположим три компонента Stringgrid, четыре компонента Edit, которые отвечают за количество строк и столбцов каждой из двух исходных матриц, и кнопку, по нажатию на которую, происходят вычисления. Поставим в свойстве Text компонентов Edit необходимые значения.
Рис. 6.1. Форма программы
32
В свойствах компонентов Edit в объектном инспекторе установим значение True для свойства NumbersOnly, которое разрешает вводить только числа. В обработчике события OnChange компонентов Edit, которое отвечает за действия, выполняемые при изменении текста, пропишем изменение количество строк и столбцов в компоненте stringgrid.
Рис. 6.2. Код программы
Добавим эти процедуры в событие OnCreate формы Form1, указав в скобках параметр посылающий сигал на выполнение (form1). Таким образом, при запуске программы, размерность таблиц подстроится под значения, указанные по умолчанию.
Рис. 6.3. Код процедуры
И не забудем в объектном инспекторе stringgrid в раскрывающемся списке Options присвоить значение True свойству goEditing. Это позволит заполнять таблицы данными введенными с клавиатуры.Объявим матрицы А В и С как двумерные массивы в разделе var.
Рис. 6.4. Раздел var
33
Зададим нижние и верхние индексы массивов, например, 1 и 10 соответственно. Размер массивов 10 х 10 берем с запасом, а обрабатывать будем только нужные строки и столбцы. Вышеприведенный алгоритм реализуем в обработчике события нажатия на кнопку.
Рис. 6.5. Код программы
Результат работы программы приведен на рис. 6.6.
Рис. 6.6. Окно программы
34
Лабораторная работа № 5 Работа с массивами в среде Delphi
Цель: Научиться использовать массивы при разработке приложений в среде Delphi.
Задание: Заполнить двухмерный массив случайными числами с помощью функции Random. Определить наибольший элемент массива и вывести его значение и координаты на форму.
35
