Лабораторная работа № 20.
Работа с массивами в среде программирования Borland Delphi

Время выполнения

4 часа

Цель работы

Научиться разрабатывать программы, использующие данные, организованные в виде массивов.

Задачи лабораторной работы

После выполнения работы студент должен:
  1. Знать основы работы с массивами данных в среде Delphi.
  2. Уметь самостоятельно написать программу, работающую с массивами данных.

Перечень обеспечивающих средств

Для обеспечения выполнения работы необходимо иметь компьютер со следующим математическим обеспечением: операционная система Windows 2003 и выше и система визуального программирования Delphi на основе 6-ой версии.

Общие теоретические сведения

Для работы с массивами удобно использовать компоненты StringGrid и Memo.
Основные свойства  StringGrid:
Name – Имя компонента;
Colcount – Количество столбцов;
RowCount – Количество строк;
Cells – Ячейка таблицы;
FixedCols – Количество зафиксированных столбцов;
Options.goEditing – Признак допустимости редактирования содержимого ячеек (true, false);
Options.goTab – Разрешает (true) или запрещает (false) использование клавиши TAB для перемещения курсора в следующую ячейку таблицы;
Options.goAlways – Признак нахождения компонента в режиме редактирования;
DefaultColWidth – Ширина колонок таблицы;
DefaultRowHeight – Высота строк таблицы;
GridLineWidth – Расстояние от левой границы поля таблицы до левой границы формы;
Left – Расстояние от верхней границы поля таблицы до верхней;
Top – Границы формы;
Height – Высота поля таблицы;
Width – Ширина поля таблицы; 
Font – Шрифт для отображения содержимого таблицы;
ParentFont – Признак наследования характеристик шрифта формы.

Пример 1
Задать массив из 5-ти элементов. Найти произведение элементов массива, превышающих значение 1-го элемента. Переставить местами 1-ый и последний элементы массива. Вывести элементы массива в строку компоненты Memo.
Для выполнения задания необходимо поместить на форму компоненты:
  • панели Panel1 (в верхней части экрана для ввода информации) и Panel2 (в нижней части для вывода информации) (страница Standard).
Для панелей задать Caption – пустое (очистить место для вывода результата).
Разместить метки для панелей Label1 и Label2 (страница Standard).
Задать Caption для следующих объектов:
  • Label1 – Ввод массива (панель Panel1)
  • Label2 – Результаты ( вывод результата в панель Panel2)
Разместить кнопку Button1 (страница Standard).
Установить для кнопки следующее свойство: Caption – Вычислить.
Добавить компонент StringGrid1 и задать следующие свойства:
ColCount – 5 (количество столбцов)
FixedCols – 0 (количество фиксированных столбцов)
RowCount – 1 (количество строк)
DefaultRowHeight – 24 (высота строки)
DefaultColWidth – 64 (ширина столбца)
Задать опции для редактирования информации (Options):
Options.go.Editing – true
Options.goTabs – true
Options.go.Always – true
Для вывода массива на экран будем использовать компоненту Memo1 (Многострочный редактор).
Управлять вычислением будет кнопка Button1.

Полученная форма будет иметь вид (рис. 1):
 Рисунок 1. Форма с размещенными объектами

Для кнопки Button1 необходимо создать обработчик события OnClick (нажатие кнопки).
Двойной щелчок на этой кнопке и на экране окно кода программы.
Курсор устанавливается в процедуру-обработчика события, которая должна иметь следующий вид:
procedure Tform1.Button1Click(Sender:Tobject);
Var
a:array[1..5] of integer; // описание массива а 
pr,I,с:integer; // pr – переменная для вычисления произведения элементов массива, i – индекс элементов массива, с-переменная для перестановки местами 1-го и 5-го элементов массива
stroka:string;
begin
// ввод массива
// считаем, если ячейка пустая, то соответствующий элемент массива равен 0
for i:=1 to 5 do
 if Length (StringGrid1.Cells[i-1,0])<>0
 then a[I]:= StrToInt(StringGrid1.Cells[i-1,0])
else  a[I]:=0; // проверка наличия значения элемента массива в ячейке компоненты StringGrid1
// Обработка массива
Pr:=1;
for i:=1 to 5 do 
if a[i]>a[1] then pr:=pr*a[i];  
// вычисление произведения элементов массива
// вывод произведения элементов массива в заголовок панели Panel2
Panel2.Caption:=’Произведение элементов=’ +IntToStr(pr) ;
// перестановка местами 1-го и 5-го элементов массива
c:=a[1];  a[1]:=a[5];  a[5]:=c;
// вывод массива в строку
Stroka:=’      ’; 
// в строку помещаем пробелы
Memo1.Lines.Add(‘Массив после обработки’);
for i:=1 to 5 do
stroka:=stroka+ IntToStr(a[i]);
Memo1.Lines.Add(stroka);
end;

При нажатии клавиш Ctrl+F9 выполняется компиляция кода программы.
Если компиляция выполнена успешно (ошибок нет) то можно выполнить Project1 с помощью клавиши F9. Преобразование значений элементов массива из формы выполняется в соответствии с описанием в тип Integer (StrToInt), а результат – произведение элементов массива при выводе в форму преобразуется в тип String (IntToStr).

Видеоурок по выполнению заданий лабораторной работы

Варианты заданий

Содержание отчета
  1. Задание и цель работы
  2. Описание формы.
  3. Текст процедуры обработки процесса

Технология выполнения работы

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

Вопросы для защиты

  1. Какие компоненты используются при работе с массивами?
  2. Как описывается массив в Object Pascal?
  3. С помощью какой функции работы со строками проверяется наличие значения в ячейке компоненты StringGrid?
  4. Можно ли вывести элементы массива в компоненту StringGrid?
  5. Как вывести элементы массива в компоненту Memo в столбец?