Массивы в Delphi

Массив— это структура данных, представляющая собой набор переменных одинакового типа, имеющих общее имя. Массивы удобно использовать для хранения однородной по своей природе информации, например, таблиц и списков.

 

Хочешь 106 видеоуроков по Delphi в которых я разжевал подробнейшим образом все тонкости программирования на этом языке?

Тогда тебе нужно кликнуть сюда:

ЗАКАЗАТЬ

Массивы в Delphi


Объявление массива

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

 

Имя: [нижний_индекс..верхний_индекс] of тип

 

где:

  • имя — имя массива;
  • array — зарезервированное слово языка Delphi, обозначающее, что объявляемое имя является именем массива;
  • нижний_индекс и верхний_индекс — целые константы, определяющие диапазон изменения индекса элементов массива и, неявно, количество элементов (размер) массива;
  • тип — тип элементов массива.

Примеры объявления массивов:

 

Специально по теме массивов, чтобы было Вам понятнее я подготовил отдельный видеоурок. Посмотрите его обязательно и сразу поймете как работать с массивами!

 

 Если Вам понравился видеоурок - то обязательно получите остальные видеоуроки - скачать.

При объявлении массива удобно использовать именованные константы. Именованная константа объявляется в разделе объявления констант, который обычно располагают перед разделом объявления переменных. Начинается раздел объявления констант словом const. В инструкции объявления именованной константы указывают имя константы и ее значение, которое отделяется от имени символом "равно". Например, чтобы объявить именованную константу нв, значение которой равно 10, в раздел const надо записать инструкцию: нв=ю. После объявления именованной константы ее можно использовать в программе как обычную числовую или символьную константу. Ниже в качестве примера приведено объявление массива названий команд-участниц чемпионата по футболу, в котором используются именованные константы.

 

Для того чтобы в программе использовать элемент массива, надо указать имя массива и номер элемента (индекс), заключив индекс в квадратные скобки. В качестве индекса можно использовать константу или выражение целого типа, например:


 

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

Имя: array[нижний_индекс. .верхний_индекс] of тип = (список) ; 

где список — разделенные запятыми значения элементов массива.

Например:

 

 

Обратите внимание, что количество элементов списка инициализации должно соответствовать размерности массива. Если это будет не так, то компилятор выведет сообщения об ошибке: Number of elements differs from declaration (количество элементов не соответствует указанному в объявлении).

При попытке инициализировать локальный массив компилятор выводит сообщение об ошибке: Cannot initialize local variables (локальная переменная не может быть инициализирована). Локальный массив можно инициализировать только во время работы программы, например, так: 

for i := 1 to 10 do a:= 0;

Типичными операциями при работе с массивами являются: 

  • вывод массива;
  • ввод массива;
  • поиск максимального или минимального элемента массива;
  • поиск заданного элемента массива;
  • сортировка массива.

Вывод массива

Под выводом массива понимается вывод на экран монитора (в диалоговое окно) значений элементов массива.

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

 

В качестве примера на рис. 5.1 приведено диалоговое окно приложения, которое демонстрирует инициализацию и процесс вывода значений элементов массива в поле метки. Программа выводит пронумерованный список футбольных команд. Следует обратить внимание, что для того чтобы список команд выглядел действительно как список, свойству Label1.AutoSize нужно присвоить значение False (присвойте свойству Label1.Autosize значение True и посмотрите, как будет работать программа). Текст программы приведен в листинге. 

Листинг. Инициализация и вывод массива

 


Ввод массива

 

Под вводом массива понимается процесс получения от пользователя (или из файла) во время работы программы значений элементов массива,
"Лобовое" решение задачи ввода элементов массива — для каждого элемента массива создать поле ввода. Однако если требуется ввести достаточно большой массив, то такое решение неприемлемо. Представьте форму, например, с десятью полями редактирования!
 
Очевидно, что последовательность чисел удобно вводить в строку таблицы, где каждое число находится в отдельной ячейке. Ниже рассматриваются два варианта организации ввода массива с использованием компонентов StringGrid И Memo.
 

Под вводом массива понимается процесс получения от пользователя (или изфайла) во время работы программы значений элементов массива,"Лобовое" решение задачи ввода элементов массива — для каждого элемента массива создать поле ввода. Однако если требуется ввести достаточно большой массив, то такое решение неприемлемо. Представьте форму, например,с десятью полями редактирования! Очевидно, что последовательность чисел удобно вводить в строку таблицы,где каждое число находится в отдельной ячейке. Ниже рассматриваются два варианта организации ввода массива с использованием компонентов StringGrid И Memo.


Использование компонента StringGrid

Для ввода массива удобно использовать компонент StringGrid. Значок компонента StringGrid находится на вкладке Additional (рис. 5.2).

Массивы в Delphi

 

Компонент strinqGrid представляет собой таблицу, ячейки которой содержат строки символов.

В качестве примера использования компонента stringGrid для ввода массива рассмотрим программу, которая вычисляет среднее арифметическое значение элементов массива. Диалоговое окно программы приведено на рис. 5.3. Компонент stringGrid используется для ввода массива, компоненты Label1 и Label2 — для вывода пояснительного текста и результата расчета, Buttoni — для запуска процесса расчета.

 

Добавляется компонент stringGrid в форму точно так же, как и другие компоненты. После добавления компонента к форме нужно выполнить его настройку в соответствии с табл. 5.2. Значения свойств Height и width следует при помощи мыши установить такими, чтобы размер компонента был равен размеру строки.

 

Текст программы приведен в листинге.

Значения свойств компонента StringGrid1

Свойство Значение
ColCount 5
FixedCols 0
RowCount 1
DefaultRowHeight 24
Height 24
DefaultColWidth 64
Width 328
Options.goEditing true
Options.AlwaysShowEditing true
Options.goTabs true

 

 Листинг. Ввод и обработка массива целых чисел

 

После пробных запусков программы возникает желание внести изменения в процесс ввода массива. Так, было бы неплохо, чтобы курсор автоматически переходил в следующую ячейку таблицы, например, в результате нажатия клавиши . Сделать это можно при помощи процедуры обработки события onkeypress. На эту же процедуру можно возложить задачу фильтрации вводимых в ячейку таблицы данных. В нашем случае надо разрешить ввод в ячейку только цифр.

 

Текст процедуры обработки события onkeypress приведен в листинге 5.3. Следует обратить внимание на свойство Col, которое во время работы программы содержит номер колонки таблицы, в которой находится курсор. Это свойство можно также использовать для перемещения курсора в нужную ячейку таблицы. Однако нужно учитывать, что колонки таблицы, впрочем, как и строки, нумеруются с нуля.

 

Листинг 5.3. Процедура обработки события onkeypress

Если нужно ввести массив дробных чисел (a: array[1. .5] of real), то процедура обработки события onkeypress несколько усложнится, т. к. помимо цифр допустимыми символами являются символ-разделитель (запятая или точка — зависит от настройки Windows) и минус. С целью обеспечения некоторой дружественности программы по отношению к пользователю можно применить трюк: подменить вводимый пользователем неверный разделитель верным. Определить, какой символ-разделитель допустим в текущей настройке Windows, можно, обратившись к глобальной переменной Decimal separator. В листинге 5.4 приведен текст модуля приложения ввода и обработки массива дробных чисел. Процедура обработки события onkeypress обеспечивает ввод в ячейку таблицы только допустимых при записи дробного числа символов.
 

Листинг 5.4. Ввод и обработка массива дробных чисел 

 
 
dle

Помоги проекту! Расскажи друзьям об этом сайте: