Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Массивы. Сложные типы данных характеризуются типами их компонентов и методом их объединенияСтр 1 из 2Следующая ⇒
Лекция Сложные типы данных
Сложные типы данных характеризуются типами их компонентов и методом их объединения. К сложным (структурированным, составным) типам данных (агрегатам) относят массивы, записи, множества и файлы. 1. Массивы 2. Записи 3. Множества
Массивы Массив - это n-мерная совокупность однотипных элементов. В массивы можно объединить данные любого типа. Данные объединяют в массивы в случае, если надо выполнить одни и те же действия над определенным количеством однотипных значений. Массивы отображают следующие математические понятия: 1) вектор с элементами ai для i = 1¸ n; на языке Паскаль это одномерный массив; 2) матрица с элементами a i, j; на языке Паскаль - это двумерный массив; 3) пространство Ai, j, k...; на языке Паскаль - это n-мерный массив, где n - Массивы часто используют для: 1) численных методов решения систем алгебраических и дифференциальных 2) формирования совокупностей однотипных значений: исходных данных, Объявление массивов определяет атрибуты, характерные только для массивов, размерность и размер: 1) размерность (количество измерений) массива определяет количество ин 2) размер массива - это количество его элементов с учетом всех его измере Размерность массива на языке Паскаль не ограничена. Однако общий объем ОП массива должен быть не более 65520 байт. В Паскале массивы называют также регулярными типами данных. Массив - это совокупность фиксированного количества компонентов (элементов) одного и того же типа. Тип элементов массива называется базовым типом. Он может быть любым: простым или сложным. Каждый элемент массива имеет индекс, который определяет его местоположение в ОП. Элементы массива упорядочены по индексам. Мощность индекса определяется количеством элементов массива по данному измерению. Тип индексов может быть любым простым порядковым (ординальным) типом данных, кроме стандартного типа LONGINT и его диапазона. В том числе он может быть перечисляемым или диапазонным типом. Массивы можно определить в разделах TYPE или VAR. Форма объявления массива: ТYРЕ Т = ARRAY [ T1 ] OF T2; где Т - имя типа массива; Т1 - тип индексов в виде списка типов, по одному для каждого измерения; обычно тип индексов диапазонный; Т2 - базовый тип: тип элементов массива. Примеры объявления массивов данных различных типов: TYPE ТА = ARRAY [1.. 10] OF INTEGER; { Тип массива А } MN = SET OF 2..100; { Тип множества } VAR А: ТА; { Массивы данных: А - целого типа } В: ARRAY [1.. 20] OF REAL; { В - вещественного } С: ARRAY [1..10, 1..20] OF REAL; {С - двумерный, веществ.} D: ARRAY [-10.. 10] OF BOOLEAN; { D - логического } E: ARRAY [0.. 30] OF CHAR; { E - символьного } F: ARRAY [1.. 15] OF STRING[30]; {F- строковых данных} G: ARRAY [1.. 20] OF MN; { G - множеств } Тип массива А и множества MN в примере определен в разделе TYPE. Остальных массивов - в разделе VAR. Объявление массивов отвечает на следующие вопросы транслятора: 1) какие переменные могут быть с индексами; 2) сколько должно быть индексов при обращении к элементу массива; 3) какие допустимы значения индексов в соответствии с определенными для 4) какой объем ОП нужен массиву. Объем ОП, необходимой для размещения массива, определяется из объема ОП, требующегося для размещения одного элемента, и из размера массива, т. е. общего количества его элементов. Например, для 20 элементов типа REAL надо 20 * 6 = 120 байт ОП. Так как тип элементов массива может быть любой, компонентами массива могут быть структурированные данные: массивы, записи, множества или файлы. Например: TYPE В = ARRAY [ 1.. 20 ] OF REAL; VAR A: ARRAY [ 1.. 30 ] OF В; To же объявление можно выполнить по-другому: VAR A: ARRAY [ 1.. 30 ] OF ARRAY [ 1.. 20 ] OF REAL; VAR A: ARRAY [ 1.. 30, 1.. 20 ] OF REAL; Последний вариант объявления можно считать наиболее компактным. Пример. Объявить массив целых чисел, содержащий количество дней любого месяца года: TYPE MES = (YAN, FEB, MAR, APR, MAI, IUN, IUL, AUG, SEN, OKT, NOV, DEC); X = ARRAY [ MES ] OF BYTE; VAR А, В: X; С: BYTE; BEGIN В [YAN]: = 31; A [FEB]: = 28; С: = A [FEB];... END. В примере тип индексов массивов А и В определен как перечисляемый тип MES. В ОП элементы массива располагаются так, что при переходе от элемента к элементу наиболее быстро меняется самый правый индекс массива. Таким образом, матрица располагается в ОП по строкам. Например: VAR A: ARRAY [1..4] OF REAL; В: ARRAY [1..2, 1..3] OF REAL; В ОП элементы этих массивов располагаются в последовательности: A1 A2 A3 A4 B1, 1 B1, 2 B1, 3 B2, 1 B2, 2 B2, 3 Обращение к элементу массива формируется в виде имени массива и списка индексов в квадратных скобках. Например: A[i] - для обращения к ai элементу одномерного массива; B[i, j] - для обращения к bi, j элементу двумерного массива; c[i, j, k] - для обращения к Ci, j, k элементу трехмерного массива. При обращении к элементам массивов индексами могут быть выражения соответствующего типа. Значение выражения индекса вычисляется перед обращением к элементу массива, и полученный результат используется в качестве индекса. Записи В задачах экономики и управления часто используются данные в виде таблиц, каждая строка которых может содержать разнотипные элементы. Такие данные представляют в виде совокупностей (структур) данных. На языке Паскаль их называют записями. В составе записи (например, с данными одной строки таблицы) могут быть скалярные типы, массивы и записи такого же или другого типа. Кроме того, на языке Паскаль можно использовать массивы записей. Запись - это структура данных, состоящая из фиксированного количества элементов, называемых полями. Поля могут быть различных типов. Записи -наиболее общий и гибкий тип данных Паскаля. Они могут быть постоянной (фиксированной) и переменной структуры (вариантные записи). Ввод-вывод и обработка записей в Паскале может производиться только поэлементно. Допускается копирование записей одного типа из одной переменной в другую с помощью оператора присваивания.
|