Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






СТРУКТУРИРОВАННЫЕ ТИПЫ




Любой из структурированных типов характеризуется множественностью образующих этот тип элементов, т.е. переменная или сонстанта структурированного типа всегда имеет несколько компонентов. Каждый компонент, в свою очередь, может принадлежать структурированному типу, что позволяет говорить о возможной вложености типов. В Турбо Паскале допускается произвольная глубина вложености типов, однако суммарная длина любого из них во внутреннем представлении не должна превышать 65520 байт.

МАССИВЫ

Массиывы в Турбо Паскале во многом схожи с аналогичными типами данных в других языках програмирования. Отличительная особенность массивов заключается в том, что все их компоненты суть данные одного типа (возможно структурированного). Эти компоненты можно легко упорядочить и обеспечить доступ к любому из них простым указанием порядкового номера.

Описание массива задаётся следующим образом:

<имя типа> = array [<сп.инд.типов>] of <тип>

Здесь <имя типа> - правильный индификатор;

Array, of – зарезирвированые слова (массив, из);

<спюиндютипов> - список из одного или нескольких индексных типов, разделённых запятыми; квадратные скобки, обрамляющие список, - требование синтаксиса;

<тип> - любой тип Турбо Паскаля.

В качестве индексных типов в Турбо Паскале можно использовать любые порядковые типы, кроме LongInt и типов-диапазонов с базовым типом LongInt.

Глубина вложенности структурированных типов вообще, а следовательно, и массивов – произвольная, поэтому количество элементов в списке индексов типов (размерность массива) не ограничено, однако суммарная длина внутреннего представления любого массива не может быть больше 65520 байт.

 

Типы данных(VB)

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

Каждый массив наследуется от класса System.Array, и можно объявить переменную типа Array, но не нельзя создать массив типа Array. Кроме того, Оператор ReDim (Visual Basic) не может работать с переменной, объявленной как тип Array. По этой причине и для строгой типизации рекомендуется объявить каждый массив как конкретный тип, например Integer, как в предыдущем примере.

Можно выяснить тип данных массива или его элементов несколькими способами.

Можно вызвать метод Object.GetType для переменной для получения объекта Type типа переменной времени выполнения. Объект Type содержит подробные сведения в своих свойствах и методах.

Можно передать переменную функции TypeName, чтобы получить объект String, содержащий имя типа времени выполнения.

Можно передать переменную функции VarType для получения значения VariantType, представляющего классификацию типа переменной.

В следующем примере вызывается функция TypeName для определения типа массива и типа элементов в массиве. Массив имеет тип Integer(,), а элементы массива относятся к типу Integer.

VB

Dim thisTwoDimArray(,) As Integer = New Integer(9, 9) {}

MsgBox("Type of thisTwoDimArray is " & TypeName(thisTwoDimArray))

MsgBox("Type of thisTwoDimArray(0, 0) is " & TypeName(thisTwoDimArray(0, 0)))

 

6. TP,VB.Обработка структурированных типов данных:записи и множества ЗАПИСИ

Запись – это структура данных, состоящая из фиксированного числа компонентов, называемыхполями записи. В отличие от массива, компоненты (поля) записи могут быть различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.

 

Структура объявления типа записи такова:

<имя типа> = RECORD <спюполей> END

Здесь <имя типа> - правильный индификатор;

RECORD, END – зарезервированые слова (запись, конец);

<сп.полей> - список полей; представляет собой последовательность разделов записи, между которыми ставится точка с запятой.

например:

type

BirthDay = record

day,month: Byte;

year: Word

end;

var

a,b: Birthday;

.......

В этом примере тип BIRTHDAY (день рождения) есть запись с полями DAY, MONTH и YEAR (день, месяц и год); переменные А и В содержат записи типа BIRTHDAY.

МНОЖЕСТВА

Множества – это набор однотипных логическх связанных друг с другом объектов. Характер связей между объектами лишь подразумевается програмистом и никак не контролируется Турбо Паскалем.количество элементов, входящих в множество, может менятся в пределах от 0до 256 (множество, не содержащее элементов, называется пустым).именно непостоянством количества своих элементов множества отличаются от массивов и записей.

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

Описание типа множества имеет вид:

<имя типа> = SET OF <баз.тип>

Здесь <имя типа> - правильный индификатор;

SET, OF – зарезирвированные слова (множество, из);

<баз.тип> - базовый тип элементов множества, в качестве которого может использоваться любой порядковый тип, кроме WORD,INTEGER и LONGINT.

Для задания множества используется так называемый конструктор множества: список спецификаций элементов множества, отделяемых друг от друга запятыми; список обрамляется квадратными скобками. Спецификациями элементов могут быть константы или выражения базового типа, а также – тип-диапазон того же базового типа.

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

type

digitChar= set of '0'..'9';

digit = set of 0..9;

var

sl,s2,s3:digitChar;

s4,s5,s6:digit;

begin

.....

s1:=['1','2','3'];

s2:=['3','2','1'];

s3:=['2','3'];

s4:=[0..3,6];

s5:=[4,5];

s6:=[3..9];

.....

end.

В этом примере множества S1 и S2 эквивалентны, а множество S3 включено в S2, но не эквивалентно ему.

(VB)

На элементарном уровне наиболее полезными типами данных являются те, в которых содержится численная и строковая (символьная) информация. Объединив несколько образцов этих элементарных типов, можно создавать более сложные типы данных.
Структурные типы данных предоставляют возможность создавать новые типы, расширяя определения уже существующих таким образом, чтобы данные новых типов могли содержать более одного значения. Элементами данных структурных типов можно манипулировать как поодиночке, так и вместе, и эти элементы сами могут быть структурными. Никаких ограничений на подобное вложение одной структуры в другую не существует.
Ниже перечислены структурные типы, определенные в Delphi.
Перечисленные типы сами по себе обычно являются не типами, а структурными методами дополнения существующих типов.

Записи
С помощью зарезервированного слова record (запись) в одном типе можно объединять данные разных типов. Общий синтаксис объявления этого типа выглядит следующим образом:

record
fieldnamel: fieldtypel;
fieldname2, fieldname3: fieldtype2;
case optional tagfield: required ordinal type of
1: variantnamel: varianttype3;
2, 3: variantname2: varianttype4;
end;

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

Множества
Зарезервированное слово set (множество) определяет множество не более чем из 256 порядковых значений: Set of ordinal type

Минимальный и максимальный порядковые номера исходного типа (на основе которого определяется множественный тип) должны быть в пределах между 0 и 255. Переменная множественного типа содержит (или не содержит) любое значение исходного порядкового типа. Каждое значение из заданного диапазона может принадлежать или не принадлежать множеству. Рассмотрим следующий пример.

Type CharSet = set of AnsiChar; // Тип множества символов. ANSI.
var MyAlphaSet: CharSet; // Переменная типа CharSet.

Переменная set может содержать все элементы множества или не содержать ни одного. При присвоении значения переменной множественного типа элементы множества (порядковые значения) указываются в квадратных скобках:

MyAlphaSet:= ['А', 'Е', 'Г, 'О', 'U', 'Y']; // Все прописные гласные.

Пустые квадратные скобки задают пустое множество, не содержащее ни одного элемента. Это относится ко всем множественными типам.

Совет: Во многих языках структурный множественный тип отсутствует. Вместо него можно применять что-либо наподобие битовых образов или битовых полей.

 

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных