Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка

.pdf
Скачиваний:
17
Добавлен:
17.02.2016
Размер:
972.86 Кб
Скачать

обработки события, а в разделе переменных модуля, то одновременно с объявлением массива можно выполнить его инициализацию, т. е. присвоить начальные значения элементам массива. Инструкция объявления массива с одновременной его инициализацией в общем виде выглядит так:

Имя: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