Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
WITH - оператор присоединения
Лекция Сложные типы данных
Сложные типы данных характеризуются типами их компонентов и методом их объединения. К сложным (структурированным, составным) типам данных (агрегатам) относят массивы, записи, множества и файлы. 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 элементу трехмерного массива. При обращении к элементам массивов индексами могут быть выражения соответствующего типа. Значение выражения индекса вычисляется перед обращением к элементу массива, и полученный результат используется в качестве индекса. Записи В задачах экономики и управления часто используются данные в виде таблиц, каждая строка которых может содержать разнотипные элементы. Такие данные представляют в виде совокупностей (структур) данных. На языке Паскаль их называют записями. В составе записи (например, с данными одной строки таблицы) могут быть скалярные типы, массивы и записи такого же или другого типа. Кроме того, на языке Паскаль можно использовать массивы записей. Запись - это структура данных, состоящая из фиксированного количества элементов, называемых полями. Поля могут быть различных типов. Записи -наиболее общий и гибкий тип данных Паскаля. Они могут быть постоянной (фиксированной) и переменной структуры (вариантные записи). Ввод-вывод и обработка записей в Паскале может производиться только поэлементно. Допускается копирование записей одного типа из одной переменной в другую с помощью оператора присваивания. Фиксированные записи Фиксированная запись - это структура постоянного строения, состоящая из фиксированного количества элементов (компонентов, полей). Элементы записи в ней могут быть любых типов, в том числе скаляры, множества, файлы, другие записи. Описатель типа записи RECORD. Объявление записи заканчивается словом END и может быть в разделах TYPE или VAR. Форма объявления записи: TYPE Т = RECORD список-полей END ; где список-полей - это последовательность определений элементов записи; определение полей может быть в виде идентификатора или списка идентификаторов полей, разделенных запятыми; за идентификаторами ставится двоеточие и имя или определение типа. Например: TYPE TAB = RECORD { - объявление записи в разделе TYPE } А,В : REAL; { А и В - поля одинакового типа } END; VAR С : TAB; D : RECORD{ - объявление записи в разделе VAR } Е, F : INTEGER; END; Пример таблицы с данными различного типа: СВЕДЕНИЯ О СТУДЕНТАХ
Данные таблицы могут быть объявлены в виде: TYPE STR = RECORD { STR - имя типа записи } NZ : 93100. .93500; FIO : STRING[20]; RS : REAL; VAR STUD : STR; { STUD - переменная типа STR } MST : ARRAY [1..20] OF STR; { MST - массив данных типа STR } Обращение к полям записи производится с помощью составных имен: имен переменных типа запись и имен полей, разделенных точкой. Например: STUD.NZ, STUD.FIO, MST[I].FIO, MST[I].RS. Для вложенных полей (подструктур) уточнений имени может быть несколько. Например: А.В.С. Пример копирования записи с помощью одного оператора присваивания: STUD := MST[I]; MST[I] := MST[J]; MST[J] := STUD; Пример таблицы с элементом (полем) записи в виде массива: СВЕДЕНИЯ О РЕЗУЛЬТАТАХ ЭКЗАМЕНОВ
Данные таблицы могут быть объявлены в виде: TYPE ST = RECORD { Определение типа записи } NZ : 93100..93500; FIO : STRING[20]; ОС : ARRAY [1..4] OF BYTE; { - поле - массив из четырех оценок } END; VAR EKZ : ARRAY [1..25] OF ST; { - массив записей типа ST } WITH - оператор присоединения Оператор присоединения предназначен для упрощения обращения к элементам записи, а именно для обеспечения возможности обращения к элементам записи без составных имен, с помощью простых имен элементов записи. Форма оператора WITH: WITH список-имен-записей DO S ; где S - один оператор, простой или составной (блок). WITH обычно используется в тех случаях, когда надо выполнить несколько действий над одним или несколькими полями записи. Например: WITH Y[I] DO IF DEN > 15 THEN WRITE (' Вторая половина месяца'); Это эквивалентно записи: IF Y[I].DEN > 15 THEN WRITE (' Вторая половина месяца');. Вариантные записи В Паскале можно использовать вариантные записи - записи переменной структуры с вариантными (переменными) полями. В списке полей такой записи могут быть фиксированные поля и только одно переменное (вариантное) поле. Вариантная часть записи должна быть в конце описания, т. е. в качестве, последнего ее элемента. В описании записи перечисляются все возможные варианты переменного поля записи. При работе с записью в зависимости от значения селектора записи (ключа) выбирается один из вариантов переменного поля записи. Переменная часть записи может быть представлена в одной из двух форм. Форма 1 переменной (вариантной) части записи: TYPE SEL = тип ; ... описание фиксированной части записи CASE SEL OF Метка-1 : ( список-полей ); Метка-2 : ( список-полей ); ... END ;
Форма 2 переменной (вариантной) части записи: TYPE SEL = тип ; ... описание фиксированной части записи CASE PR : SEL OF Метка-1 : ( список-полей ) ; Метка-2 : ( список-полей ) ; ... END ; где SEL - имя типа ключа PR и меток для выбора варианта; PR - имя переменной - селектора (ключа) выбора варианта; оно должно получить значение до использования вариантной части записи; элемент списка-полей - это список-идентификаторов-полей : тип. Ограничения: 1) в описании записи может быть только одна вариантная часть; 2) все идентификаторы в списках полей одной записи должны быть различны; 3) вариантная часть записи должна быть последним ее элементом. Множества Множество в математике - это произвольный набор объектов любой природы, понимаемый как единое целое. На языке Паскаль множество - это ограниченная совокупность различных элементов базового типа множества. Количество элементов, входящих в множество, может быть в пределах от 0 до 255. Данные переменной типа множества могут быть в виде множества-переменной и множества-константы (конструктора). Описатель переменной типа множества - SET. Объявление переменной типа множества определяет базовый тип, т. е. состав элементов, из значений которых создаются конкретные значения множественного типа, и мощность множества (максимальное количество его элементов). В качестве базового типа может быть любой ординальный (порядковый) тип данных, кроме типов WORD, INTEGER и LONGINT. В том числе в качестве базового типа может быть тип BYTE, SHORTINT, логический (BOOLEAN), символьный (CHAR), перечисляемый и диапазонный тип (для целых 0 .. 255). В качестве значения переменной типа множества может быть набор всех элементов базового типа, любое их подмножество, а также пустое множество. Если базовый тип содержит n элементов, то количество различных подмножеств, которые могут быть значением множества данного типа, равно 2n. Тип переменной-множества может быть определен в разделе TYPE или VAR. Форма определения множественного типа: TYPE имя-типа-множества = SET OF базовый-тип ; Примеры объявления данных переменной типа множества: TYPE MN = SET OF 2..100; { Диапазонный тип } VRGODA = (VESNA,LETO,OSEN,ZIMA);{Перечисляемый тип } VAR А,В : MN ; { Переменные типа: MN } С : SET OF '0'..'9'; {диапазон символьных данных} SIM : SET OF 'A'..'Z'; { " " } SEZON : SET OF VRGODA;{перечисляемого типа } SEZ : SET OF VESNA..OSEN;{диапазон перечисл. типа} INTEG : SET OF 0..255;{диапазон целого типа} где MN, VRGODA - имена типов: множества и перечисляемого типа; А, В, С, SIM, SEZON, SEZ, INTEG - имена переменных типа SET. Множества-константы строятся в виде конструктора: списка значений элементов множества, заключенных в квадратные скобки. Значения элементов списка разделяются запятыми. В списке значений может быть выражение, результат которого равен элементу базового типа множества, и константы диапазонного типа. Частным случаем выражения может быть имя переменной, константа базового типа или пустой список значений. Примеры множеств-констант: [], [ VESNA, OSEN ], ['А', 'С'..'К', D + Е, F ]
где VESNA, OSEN, 'А', 'С', 'К' - константы базового типа; 'С' .. 'К' - диапазон значений базового типа; D + E- выражение; F - имя переменной типа, совместимого с базовым типом множества; [ ] - пустое множество. Множество регистрирует наличие или отсутствие элемента, порядок перечисления элементов несуществен. При этом следующие множества равны (эквивалентны): [ 'А', 'Е', 'I' ] и [ 'Е' , 'I', 'А' ].
|
||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-05-10; просмотров: 150. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |