150 likes | 262 Vues
Работа с массивами. Массив. — это структура данных, представляющая собой набор переменных одинакового типа, имеющих общее имя. Массивы удобно использовать для хранения однородной по своей природе информации, например, таблиц и списков. Объявление массива.
E N D
Массив — это структура данных, представляющая собой набор переменных • одинакового типа, • имеющих общее имя. Массивы удобно использовать для хранения однородной по своей природе информации, например, таблиц и списков.
Объявление массива Имя: array [нижний_индекс. .верхний_индекс] of тип имя— имя массива;array— зарезервированное слово, обозначающее, что объявляемое имя является именем массива;нижний_индекси верхний_индекс— целые константы, определяющие диапазон изменения индекса элементов массива и, неявно, количество элементов (размер) массива;тип — тип элементов массива. Примерыобъявлениямассивов: temper:array[1..31] of real; коef:array[0. .2] of integer; :name:array[1..30] ofstring[25];
Именованныеконстанты • Удобно использовать при объявлении массива. • Именованная константа объявляется в разделе объявления констант, • Раздел объявления констант начинается словом const. • В инструкции объявления именованной константы указывают имя константы и ее значение, которое отделяется от имени символом "равно". Примерыобъявлениямассивов: constNT = 18; // число команд SN = 25; // предельная длина названия команды varteam: array[1..NT] ofstring [SN];
Для того чтобы в программе использовать элемент массива надо указать имя массива и номер элемента (индекс), заключив индекс в квадратные скобки. В качестве индекса можно использоватьконстанту или выражение целого типа, например: team [ 1] := 'Зенит'; d := koef[1]*koef[1]-4*koef[2]*koef[1]; ShowMessage(name[n+1]); temper[i] := StrToFloat(Edit1.text);
Массивможноинициализировать(задать элементам начальные значения) Если массив объявлен глобально Имя: array [нижний_индекс..верхний_индекс] of тип = (список); список — разделенные запятыми значения элементов массива количество элементов списка должно соответствоватьразмерности массива. a: array[10] of integer = (0,0,0,0,0,0,0,0,0,0); Team: array[1..5] of String[10]= ('Зенит','Динамо','Спартак','Ротор','СКА');
Операции с массивами • вывод массива; • ввод массива; • поиск максимального или минимального элемента массива; • поиск заданного элемента массива; • сортировка массива.
implementation($R *.dfm} constNT = 5;varteam: array[1..NT] of string[10] =('Зенит','Динамо','Ротор','Спартак','СКА‘) procedureTForml.ButtonlClick(Sender: TObject); varst:string;// список команд i:integer; // индекс, номер элемента массива begin// формирование списка для отображения в форме for i:=1to NT do st:= st + IntToStr(i)+ ‘‘+ team[i] + #13; // вывод списка Label1.Caption := st; end; end. Выводмассива
Вводмассива Под вводом массива понимается процесс получения от пользователя (или из файла) во время работы программы значений элементов массива. Очевидно, что последовательность чисел удобно вводить в строку таблицы, где каждое число находится в отдельной ячейке. Два варианта организации ввода массива с использованием компонентов StringGrid Memo
Использование компонента Memo • В некоторых случаях для ввода массива можно использовать компонент Memo. • Компонент Memo позволяет вводить текст, состоящий из достаточно большого количества строк, поэтому его удобно использовать для ввода символьного массива.
Свойства Memo Для ввода массива значение каждого элемента массива следует вводить в отдельной строке и после ввода каждого элемента массива нажимать клавишу <Enter>. Получить доступ к находящейся в поле Memo строке текста можно при помощи свойства Lines, указав в квадратных скобках номер нужной строки
Использование компонента Memo для ввода символьного массива Основной цикл процедуры ввода символьного массива из компонента Memo может выглядеть так: Fori:=1toSIZEdo a [ i ]:= Memo1.Lines[i]; где: SIZE — именованная константа, определяющая размер массива; а — массив; Memol — имя Memo-компонента; Lines — свойство компонента Memo, представляющее собой массив, каждый элемент которого содержит одну строку находящегося в поле Memo текста.
procedure TForm1.ButtonlClick(Sender: TObject); constSIZE=5; // размер массива Vara:array[1..SIZE]of string[30]; //массив n: integer; // количество строк, введенных в поле Memo i:integer; // индекс элемента массива st:string; beginn:=Memo1.Lines.Count; ifn = 0 then beginShowMessage('Исходные данные не введены!'); Exit; // выход из процедуры обработки события end;// в поле Memo есть текст if n > SIZE then beginShowMessage('Количество строк превышает размер массива.'); n:=SIZE; // будем вводить только первые SIZE строк end; for i:=1 to ndoa[i]:=Form1.Memo1.Lines[i-1]; // строки Memo пронумерованы с нуля // вывод массива в окно сообщения if n > 0 then beginst:='Введенный массив:'+#13; for i: =1 to n dost:=st+IntToStr(i)+' '+ a[i]+#13; ShowMessage(st); end;end; end. Процедура TForm1.Button1Click, сначала проверяет, есть ли в поле Memo1 текст. Если текст есть (в этом случае значение свойства Lines.Countбольше нуля), то процедура сравнивает количество введенных строк и размер массива. Если это количество превышает размер массива, то программа изменяет значение п, тем самым подготавливает ввод только первых SIZE строк.
Использование компонента StringGrid(вкладка Additional) • Компонент StringGrid представляет собой таблицу, ячейки которой содержат строки символов.