28615

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

Доклад

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

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

Русский

2015-01-18

21.26 KB

10 чел.

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

  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;


 

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

24468. Эмоции и их функции. Психологические теории эмоций 32 KB
  Психологические теории эмоций. Эмоции выполняют следующие функции: Сигнальная функция эмоций выражается в том что переживания возникают и изменяются в связи с происходящими изменениями в окружающей среде или в организме человека. Регулирующая функция эмоций выражается в том что стойкие переживания направляют поведение человека поддерживают его заставляют преодолевать встречающиеся на пути преграды или мешают протеканию деятельности блокируют ее. Дифференцирующая и синтезирующая функция эмоций проявляется в таких феноменах как...
24469. Классификация эмоций. Эмоции и чувства 29.5 KB
  Эмоции и чувства. Виды эмоциональных явлений: эмоциональные реакции настроение аффект чувства эмоциональный стресс. Чувства еще более чем эмоции устойчивые психические состояния имеющие четко выраженный предметный характер: они выражают устойчивое отношение к какимлибо объектам реальным или воображаемым. Эмоции и чувства.
24470. Психические состояния их классификация 45 KB
  Психические состояния их классификация. Психическое состояние это целостная характеристика психической деятельности за определенный период времени показывающая своеобразие протекания психических процессов в зависимости от отражаемых предметов и явлений действительности предшествующего состояния и психических свойств личности. По параметру динамичности лабильности временной протяжённости состояния занимают промежуточное значение между процессами и свойствами. Функции психических состояний: Регулятивная состояния позволяют адаптироваться...
24471. Интеллект и креативность 45 KB
  intellectus понимание познание способность к осуществлению процесса познания и к эффективному решению проблем в частности при овладении новым кругом жизненных задач. Он выделил семь таких потенций: 1 счетную способность т. способность оперировать числами и выполнять арифметические действия; 2 вербальную словесную гибкость т. способность понимать устную и письменную речь; 4 пространственную ориентацию или способность представлять себе различные предметы и формы в пространстве; 5 память; 6 способность к рассуждению; 7...
24472. Темперамент: его свойства и типология 46.5 KB
  Тип темперамента тесно связан с врожденными анатомофизиологическими особенностями высшей нервной деятельности. К свойствам темперамента можно отнести те отличительные индивидуальные признаки человека которые определяют собой динамические аспекты всех его видов деятельности характеризуют особенности протекания психических процессов имеют более или менее устойчивый характер сохраняются в течение длительного времени проявляясь вскоре после рождения. Небылицин выделяет три ведущих свойства темперамента относящихся к сферам общей активности...
24473. Характер: его формирование и детерминанты 53 KB
  Последний представляет собой динамическую сторону характера. В состав характера человека входят следующие свойства личности: Свойства личности которые определяют поступки человека в выборе целей деятельности. Черты которые относятся к действиям направленным на достижение поставленных целей: настойчивость целеустремленность последовательность и другие а также альтернативные им как свидетельство отсутствия характера. Формирование характера и его детерминанты.
24474. Задатки, способности, одаренность 41.5 KB
  Способности индивидуальнопсихологические особенности личности являющиеся условием успешного выполнения той или иной деятельности. Теплова способности это индивидуальнопсихологические особенности отличающие одного человека от другого и имеющие отношение к успешности выполнения деятельности. Теплов считает индивидуальное своеобразие продуктивной деятельности оригинальность и самобытность приемов используемых в деятельности. 2 Способности служат успешному выполнению деятельности.
24475. Потребности и мотивы. Направленность личности 54.5 KB
  Возникновение потребности является механизмом запускающим активность человека на поиск и достижение цели которая может удовлетворить эту потребность. Существуют различные классификации потребностей человека которые чаще всего строятся на основе таких критериев как зависимость организма или личности от какихто объектов а также по нуждам которые он испытывает. Деятельность человека направляется не одним мотивом а их совокупностью т. В основе внутренних мотивов лежат потребности человека его эмоции интересы.
24476. Стратегия и этапы индивидуальной психологической помощи клиентам с проблемами нарко/алко-зависимости 55.5 KB
  Важнейшими мотивами воздержания являются: стремление быть социально полезным способствовать изменениям в обществе самореализация поиск единомышленников из чувства долга за полученную в прошлом помощь интересно провести досуг решить собственные проблемы. Предлагается поэтапное продвижение к открытому рассмотрению проблемы а затем к намерению изменить ситуацию. Потенциальные ресурсы преодоления проблемы. В качестве потенциальных ресурсов преодоления проблемы важно оценить следующие области: 1.