28615

Структурные типы данных (массивы, записи, множества)

Доклад

Информатика, кибернетика и программирование

Массив - это структура данных, доступ к элементам которой осуществляется по номеру (илииндексу). Все элементы массива имеют одинаковый тип.

Русский

2015-01-18

21.26 KB

7 чел.

Структурные типы данных используются практически в любой программе. Это такие типы, как

  1.  массивы
  2.  записи
  3.  множества


   Массив - это структура данных, доступ к элементам которой осуществляется по номеру (илииндексу). Все элементы массива имеют одинаковый тип.
Описание массива имеет вид:

   
type имя_типа_массива = array [диапазон] of тип_элемента;

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

   
type TMyArray = array [1 .. 100] of Integer;

Теперь можно описать переменные типа TMyArray:

   
var A, B: TMyArray;

Вместо присвоения типа можно явно описать переменные как массивы:

   
var A, B : array [1..100] of Integer;

Для доступа к элементу массива нужно указать имя массива и индекс элемента в квадратных скобках. В качестве индекса может выступать число, идентификатор или выражение, значение которых должно укладываться в диапазон, заданный при описании массива:

var N: Integer;
begin
   
N := 65;
   
A[5] := 101;
   
A[N] := 165;
   
A[N+3] := 200;
   
B := A;
end;

Иногда требуется 
узнать верхнюю границу массива. Встроенная функция High() вернёт число, являющееся верхней границей массива. В скобки нужно подставить массив, верхнюю границу которого требуется узнать.

Выражение 
B := A означает, что каждый элемент массива B равен элементу с таким же индексом массива A. Такое присвоение возможно только если переменные объявлены через некий поименованный тип, или перечислены в одном списке. И в случае:

   
var A: array[1..100] of String;
           
B: array[1..100] of String;

его использовать невозможно (но возможно поэлементное присвоение 
B[1] := A[2]; и т.д.).

Массивы могут иметь несколько измерений, перечисляемых через запятую. Например, таблицу из четырёх столбцов и трёх строк:

1

2

3

4

5

6

7

8

9

10

11

12

можно описать в виде массива с двумя измерениями:

   
type MyTable = array[1..4, 1..3] of Integer;
   
var X : MyTable;
           
Y : Integer;
   
begin
       
Y:=X[3, 2];   
   
end;

Теперь в результате операции присвоения 
Y будет равен 7.
Многомерный, например, двумерный массив можно описать как массив массивов:

   
type TMyArray = array [1 .. 4] of array [1 .. 3] of Integer;

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

   
type TDinArray = array of Integer;
   
var A : TDinArray;

После создания в динамическом массиве нет ни одного элемента. Необходимый размер задаётся в программе специальной процедурой 
SetLength. Массив из ста элементов:

   
begin
    
SetLength(A, 100);
   
end;

Нижняя граница динамического массива всегда равна нулю. Поэтому индекс массива 
A может изменяться от 0 до 99.
Многомерные динамические массивы описываются именно как массивы массивов. Например, двумерный:

   
type T3DinArray = array of array of Integer;
   
var A : T3DinArray;

В программе сначала задаётся размер по первому измерению (количество столбцов):

   SetLength(A, 3);

Затем задаётся размер второго измерения 
для каждого из трёх столбцов, например:

   
SetLength(A[0], 3);
   
SetLength(A[1], 2);
   
SetLength(A[2], 1);

   Таким образом создаётся треугольная матрица:   

A00 A10 A20
A
01 A12
A
02

Чтобы освободить память, выделенную динамическому массиву, нужно массиву как целому присвоить значение nil:
    A:=
nil;
Ключевое слово 
nil в Delphi означает отсутствие значения.

   Записи очень важный и удобный инструмент. Даже не применяя специальные технологии, с его помощью можно создавать собственные базы данных. Записи - это структура данных, каждый элемент которой имеет собственное имя и тип данных. Элемент записи иначе называют поле. Описание записи имеет вид:
   
type имя_типа_записи = record
      название_поля : тип_поля ;
      
. . .
      название_поля : тип_поля ;
   
end;
Названия полей, имеющих одинаковый тип, можно, как и в случае описания переменных, указывать в одну строку через запятую. Для обращения к полю записи сначала указывают имя записи, затем точку, затем имя поля. Например, данные о персонале предприятия могут быть организованы таким типом записи:

   
type TPers = record
     
Fam, Name, Par : String;
     
Year : Integer;
     
Dep : String;
   
end;
   
var Pers : TPers;
   
begin
    
Pers.Fam:='Иванов';
    
Pers.Name:='Иван';
    
Pers.Par:='Иванович';
    
Pers.Year:=1966;
    
Pers.Dep:='Цех №1';
   
end;

Теперь осталось записать эти данные в файл, предварительно объявив и его тип как TPers, и база данных готова. С файлом в Delphi также ассоциируется переменная, называемая файловой переменной, которая описывается так:
   VFile 
: file of тип_файла;
В качестве типа может использоваться любой ограниченный тип Delphi. При этом не допускается тип
String, так как он допускает переменный размер до 2 ГБайт. Его необходимо ограничивать: String[N], где N - количество символов. Тип TPers из предыдущего примера должен быть описан, например, так:

   
type TPers = record
     
Fam, Name, Par : String[20];
     
Year : Integer;
     
Dep : String[10];
   
end;

Теперь переменная такого типа занимает строго определённое место в памяти, и может быть записана в файл. Как это сделать, рассказывается во 
2-й части Урока №7. 

   
Множество - это группа элементов, объединённая под одним именем, и с которой можно сравнивать другие величины, чтобы определить, принадлежат ли они этому множеству. Количество элементов в одном множестве не может превышать 256. Множество описывается так:

   
type имя_множества = set of диапазон_значений_множества ;

В качестве диапазона может указываться любой тип, количество элементов в котором не больше 256. Например:

   
type TMySet = set of  0 .. 255;
   
type TMySet = set of  Byte;

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

   
var MySet : TMySet;
   
begin
    MySet:=[1, 3 .. 7, 9];
   
end;

Чтобы проверить, является ли некое значение элементом множества, применяется оператор 
in в сочетании с условным оператором:

   
var Key : Char;
           
Str : String;
   
begin
    
if Key in ['0' .. '9', '+', '-'] then Str:='Math';
   
end;

   Чтобы добавить элемент во множество, используется операция сложения, удалить - вычитания:

var Digit: set of Char=['1'..'9'];
var Math: Set of Char;
begin
  Math:=Digit+['+', '-', DecimalSeparator
*];
end;


 

А также другие работы, которые могут Вас заинтересовать

46598. Неологізми, архаїзми, історизми в українській літературній мові 21.5 KB
  За вживанням вона поділяється на активну слова що регулярно вживаються в певній сфері діяльності тобто щоденні слова та професіоналізми пасивну застарілі слова та неологізми. Застарілі слова слова що перестали активно вживатися носіями мови. До них відносять архаїзми слова які називають поняття які існують і в наш час пїїт поет спудей студент загально повільно; історизми слова які позначають поняття які зникли комсорг волость хорунжий Існує багато причин чому слова відходять до пасивного вжитку зокрема і...
46599. Синтаксична норма. Порядок слів у реченні 21.5 KB
  Порядок слів у реченні. Розрізняють типи норм: орфоепічні правильна вимова акцентуаційні наголошення слів лексичні слововживання граматичні морфологічні та синтаксичні стилістичні орфографічні правила написання пунктуаційні. Вони передбачають правильне вживання граматичних форм слів узгодження керування прилягання морфологічні та правильне утворення словосполучень і речень синтаксичні. В українській мові вільний порядок слів у реченні тобто немає чітких правил розташування у певному порядку тих чи інших членів речення.
46600. BELARUSIAN CUISINE 21.5 KB
  Belarusian cuisines have influences from its neighboring countries like Russia, Lithuania, Ukrainian and Polfnd among others. A variety of dishes made of potato form an important part of most cuisines in Belarus. Some of the popular potato dishes in Belarusian cuisines include Belarusian Draniki, Belarusian Draniki with Pork, Kolduni, Babka and Belarusian Kartoflyaniki among others
46601. Кодификация советского права 1920-х годов 21.53 KB
  Гражданский кодекс РСФСР был принят четвертой сессией ВЦИК девятого созыва 31 октября 1922 г. Отличительными чертами ГК РСФСР 1922 г. ГК гарантировал всем гражданам РСФСР охрану гражданских прав независимо от пола расы национальности вероисповедания и происхождения но в то же время ограничивал свободу предпринимательской деятельности и частной инициативы если осуществление гражданских прав противоречит их социальнохозяйственному назначению наносит явный ущерб государству. Право на пользование землей для ведения сельского хозяйства при...
46602. Планирование учебно-воспитательной работы по изобразительному искусству 21.55 KB
  Проблемы психического развития личности в онтогенезе факторы движущие силы закономерности. Филогенез развития вида онтогенез развитие индивида.Декарт и ЖанЖак Руссо представители природного биологизаторского направления идея которого состоит в том что наибольшее значение для развития личности имеет наследственность генетические факторы влияние среды минимально.Непосредственными движущими силами психического развития ребенка являются противоречия которые возникают и преодолеваются в процессе обучения и воспитания.
46603. РОССИЙСКАЯ ФЕДЕРАЦИЯ. ЗАКОН ОБ АВТОРСКОМ ПРАВЕ И СМЕЖНЫХ ПРАВАХ 21.55 KB
  Основные понятия Для целей настоящего Закона указанные ниже термины имеют следующее значение: автор физическое лицо творческим трудом которого создано произведение; аудиовизуальное произведение произведение состоящее из зафиксированной серии связанных между собой кадров с сопровождением или без сопровождения их звуком предназначенное для зрительного и слухового в случае сопровождения звуком восприятия с помощью соответствующих технических устройств; аудиовизуальные произведения включают кинематографические произведения и все...
46604. Виды трения. Износ при сухом, граничном, полужидкостном и жидкостном трении. Роль смазки 21.6 KB
  Трение сопротивление возникающее при взаимном перемещении соприкасающихся поверхностей тел. В зависимости от кинематических признаков относительного перемещения тел чаще всего встречаются два вида трения: трение скольжения и трение качения. В зависимости от состояния трущихся поверхностей различают: трение без смазки трение двух твердых тел при отсутствии на поверхности трения введенного смазочного материала всех видов; граничное трение трение двух твердых тел при наличии на поверхности трения слоя жидкости обладающего...
46605. Понятие государственной региональной политики 21.61 KB
  Применительно к системе государственного управления сформировалось следующее понимание государственной региональной политики. Под государственной региональной политикой можно понимать систему целей и задач органов центральной и местной государственной власти а также систему мер предпринимаемых ими в сфере управления политическим экономическим и социальным развитием регионов которая направлена на реализацию стратегии территориального развития государства. Региональной политикой можно считать лишь такую систему намерений и действий которая...
46606. Понятие и система источников экологического права 21.75 KB
  Применение пестицидов и агрохимикатов связано прежде всего с экономическими интересами получения высоких урожаев. Мерами по охране окружающей среды при обращении с этими веществами служат: регистрационные испытания пестицидов и агрохимикатов; экспертиза результатов регистрационных испытаний пестицидов и агрохимикатов; государственная регистрация пестицидов и агрохимикатов; лицензирование деятельности в области безопасного обращения с пестицидами и агрохимикатами; стандартизация и сертификация пестицидов и агрохимикатов; ...