ИНФОРМАТИКА И ОСНОВЫ ПРОГРАММИРОВАНИЯ
1-53 01 01 «Автоматизация технологических процессов и производств»
ЛАБОРАТОРНАЯ РАБОТА №2
ИЗУЧЕНИЕ ОСНОВНЫХ ПРИЕМОВ РАБОТЫ С МАССИВАМИ В DELPHI
1-53 01 01 «Автоматизация технологических процессов и производств»
Проверила Выполнила
студентка группы АТПП-101
«» 2012г. «» 2012г.
Могилев 2012
Цель работы: изучить на практических примерах основные приемы работы с массивами в среде программирования Delphi.
Массив − это структура данных, представляющая собой набор переменных одинакового типа, имеющих общее имя. Массивы удобно использовать для хранения однородной по своей природе информации, например, таблиц и списков.
Типичными операциями при работе с массивами являются:вывод массива, ввод массива, поиск максимального или минимального элемента массива, поиск заданного элемента массива, сортировка массива.
1.Вывод массива на экран.
В программе необходимо вывести значения всех элементов массива, для этого использовали инструкцию for, при этом переменную-счетчик инструкции for использовали в качестве индекса элемента массива.
Рисунок 1- Форма и диалоговое окно приложения Вывод массива
Программа
unitoutar_;
interface
uses
Windows, Messages, SysUtils, Variants,
Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedureButtonlClick(Sender: TObject);
private
{ Private declarations } public
{ Public declarations } end;
var
Form1: TForm1;
implementation
($R *.dfm}
const
NT = 5;
var
team: array[1..NT] of string[10] = ('Зенит','Динамо','Ротор','Спартак','СКА');
procedureTForml.ButtonlClick(Sender: TObject);
var
st:string; // список команд
i:integer; // индекс, номер элемента массива
begin
// формирование списка для отображения в форме
for i:=l to NT do st:= st + IntToStr(i)+ ' '+ team[i] + #13; // выводсписка Label1.Caption:= st;
end;
end.
Ввод массива
Ввод массива – это процесс получения от пользователя во время работы программы значений элементов массива. Организовали ввод массива с использованием компонента StringGrid.
Значок компонента StringGrid находится на вкладке Additional (рисунок 2).
Рисунок 2- Компонент StringGrid
Компонент StringGrid представляет собой таблицу, ячейки которой содержат строки символов. В примере использовали компонентStringGrid для ввода массива программы, которая вычисляет среднее арифметическое значение элементов массива.
Компонент StringGrid использовали для ввода массива, компоненты Label1 и Label2 − для вывода пояснительного текста и результата расчета, Button− для запуска процесса расчета.
Рисунок 3- Диалоговое окно программы Ввод и обработка массива
После того ка добавили компонент к форме,выполнили его настройку в соответствии с таблицей 1.
Таблица1-Значения свойств компонента StringGrid1
Свойство | Значение |
ColCount | |
FixedCols | |
RowCount | |
DefaultRowHeight | |
Height | |
DefaultColWidth | |
Width | |
Options. goEditing | True |
Options. AlwaysShowEditing | True |
Options.goTabs | True |
Программа
Ввод и обработка массива целых чисел
unitgetar;
interface
Windows, Messages, SysUtils, Variants,
Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
StringGridl: TStringGrid;
Button1: TButton;
Label2: TLabel;
procedureButtonlClick(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForml;
implementation
{$R *.dfm}
procedureTForml.ButtonlClick(Sender: TObject);
var
a:array[1..5] of integer; // массив
summ: integer; // сумма элементов
sr: real; // среднее арифметическое
i: integer; // индекс
begin
// вводмассива
// считаем, что если ячейка пустая, то соответствующий
// ей элемент массива равен нулю
fori:= 1 to 5 do
if Length(StringGridl.Cells[i-1, 0]) <>0 then a[i]:= StrToInt(StringGridl.Cells[i-1,0])
else a[i]:= 0;
// обработкамассива
summ:= 0;
for i:=1 to 5 do
summ:= summ + a[i]; sr:= summ/5;
//выводрезультата
Label2.Caption:= 'Суммаэлементов: ' + IntToStr(summ)+ #13+ 'Среднееарифметическое: ' + FloatToStr(sr);
end;
procedure TForm1.StringGridlKeyPress(Sender: TObject;
var
Key: Char;
begin
case Key of #8,'0'..'9':; // цифрыиклавиша<Backspace>
#13: // клавиша<Enter>
ifStringGridl.Col<StringGridl.ColCount — 1 then StringGridl.Col:= StringGridl.Col + 1;
elsekey:= Chr(0); // остальные символы запрещены
end;
end;
end.
Использование компонента Memo
Для ввода массива можно использовать также компонент Memo. Компонент Memo позволяет вводить текст, состоящий из достаточно большого количества строк. Компонент Memo добавляется в форму обычным образом. Значок компонента находится на вкладке Standard
Рисунке 4- Компонент Memo
При использовании компонента Memo значение каждого элемента массива вводили в отдельной строке и после ввода каждого элемента массива нажимали клавишу <Enter>.
Рисунок 5-Диалоговое окно приложения Ввод массива
Программа
unitfr_memo_;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs, Menus, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Label1: TLabel;
procedureButtonlClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Forml: TForm1;
implementation
($R *.DFM}
procedureTForml.ButtonlClick(Sender: TObject);
const
SIZE=5; // размермассива
var
a:array[l..SIZE]of string[30]; //массив
n: integer; // количество строк, введенных в поле Memo
i:integer; // индекс элемента массива
st:string;
begin
n:=Memo1.Lines.Count;
ifn = 0 then
begin
ShowMessage('Исходные данные не введены!');
Exit; // выход из процедуры обработки события
end;
// в поле Memo есть текст
if n > SIZE then
begin
ShowMessage('Количество строк превышает размер массива.');
n:=SIZE; // будем вводить только первые SIZE строк
end;
for i:=1 to n do
a[i]:=Form1.Memol.Lines[i-1]; // строки Memo пронумерованыснуля
// вывод массива в окно сообщения
if n > 0 thenbegin
st:='Введенныймассив:'+#13;
for i: =1 to n do
st:=st+IntToStr(i)+' '+ a[i]+#13;
ShowMessage(st);
end;
end;
end.
Список рекомендуемой литературы
1 Фаронов, В.В. Delphi 2005. Язык, среда, разработка приложений/ В.В. Фаронов. −Питер, 2005.−560 с.
2 Архангельский, А.Я. Программирование в Delphi для Windows. 2006, 2007, TurboDelphy / А. Я. Архангельский. М.: БИНОМ, 2007. −1239 с.