Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Структурные (структурированные) типы данных.




К структурированным типам данных относятся тип массива, тип записи, тип множества, тип файла.

 

Массивы.

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

Пример: Описание массива вещественных чисел.

VAR T: ARRAY (1..10) OF REAL;

 

В качестве типа индекса может быть использован перечисляемый тип, либо отрезок, использование типов INTEGER и REAL недопустимо. Массивы в ПАСКАЛЕ считаются упорядоченными, кроме массивов, состоящих из символьных строк. Сравнение массивов производится следующим образом: если два массива X и Y имеют одинаковое описание, то X считается меньше Y, если существует такой индекс К, что X(K) < Y(K) и X(I) = Y(I) при I < K

Индекс в индексированной переменной должен иметь тот же тип, что и в ее описании. Тип составляющих элементов массива может быть любым, кроме файлов.

Пример: Описание массивов.

TYPE

MEST = (LEV, SREDN,PRAV);

VAR

M1: ARRAY (1..20) OF MEST;

M2: ARRAY (MEST) OF REAL;

M3: ARRAY (LEV..SREDN) OF INTEGER;

M4: ARRAY (1..20) OF ARRAY (1900..2000)

OF ARRAY (NEST) OF REAL;

Массив М1 - одномерный, содержит 20 элементов перечисляемого типа.

Массив М2 - одномерный, содержит 3 элемента вещественного типа.

Массив М3 - одномерный содержит 2 элемента целого типа.

Массив М4 - трехмерный, содержит 20*101*3 элемента вещественного типа, приведенное выше его описание эквивалентно следующему:

M4: ARRAY(1..20,1900..2000, MEST) OF REAL;

Суммарный размер любого массива не должен превышать сегмента памяти, то есть 65535 байт.

 

Строки.

Строка - это последовательность символов, заключенных в апострофы (до 255 символов). Строки объявляются оператором STRING[n], где n – длина строки. Строки, состоящие из одного символа, являются константами стандартного типа CHAR. Можно использовать также и ASCIIZ-строки при условии включения расширенного синтаксиса {$X+} и объявления типа pchar. Эти строки заканчиваются символом с кодом 0, а их длина может достигать размеров сегмента. Для использования символов, не имеющих графического представления, надо использовать их код с символом # впереди.

Пример: Var Str1: Pchar; {ASCIIZ-строка}

Const Heading: String[10] = ’Задача’;

 

Записи.

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

Пример: Описание данных типа запись.

TYPE ZAP = RECORD

A: REAL;

B: INTEGER;

C: CHAR;

END;

SLZAP = RECORD

M:INTEGER;

N:REAL;

R:ZAP;

END;

Для того, чтобы обратиться к компоненте записи используются сложно составные имена, например, обращение к переменной А с приведенным выше описанием:

ZAP.A:= 5E-03;

При описании данных типа записи, содержащих переменные части,следует придерживаться следующих правил:

1.Все идентификаторы полей в записи должны быть различными(даже если они используются в разных вариантах);

2.В описании записи может быть одна изменяемая часть, причем она всегда идет после фиксированной части;

3.В изменяемой части может, в свою очередь, быть изменяемая часть(изменяемые части могут быть вложенными).

 

 

Множества.

Множество - это набор различных объектов одинакого типа. Объект внутри множества называется элементом множества. Множество целиком определяется своими элементами. Считается что два множества равны, если они содержат одни и те же элементы. Элементы множества не упорядочены, поэтому множество, состоящее из

цифр 3,1,5, одинаковы.

 

Над множествами существует ряд операций:

+ - объединение, результатом объединения двух множеств

является множество, которое включает элементы обоих

множеств;

* - пересечение, результатом пересечения двух множеств

является множество, содержащее элементы, которые

одновременно входят в оба множества;

>= - содержит, например,А >= В - множество А содержит

множество В, если каждый элемент В является также

элементом А;

<= - содержится в,например, В <= А - множество В

содержится в множестве А;

IN - принадлежит, проверка присутствия элемента в

Множестве

(..)- пустое множество;

- - разность,результатом разности двух множеств

является множество, содержащее те элементы первого

множества, которые не являются элементами второго.

Элементы множества имеют тот же тип, что и базовый простой тип, указанный при описании. Базовый тип не может быть структурированным и типа REAL.

Пример. Описание множеств и присвоение значений.

TYPE

INTSET = SET OF 0..30;

ALFSET = SET OF 'A'..'Z';

VAR

P:= (1,11)

P1:= ('A','B','D');

 

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

 

Пример.

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

TYPE

LANG = (FORTRAN,С++,ASSEMBLER,PASCAL);

ZNAN = SET OF LANG;

GRUPPA = (IVANOV,PETROV,SIDOROV);

VAR

T: ARRAY (GRUPPA) OF ZNAN;

 

Для студента IVANOV присвоить знание языков программирования PASCAL и PL с помощью оператора присваивания:

T(IVANOV):= (PL,PASCAL);

 

Файлы.

В ПАСКАЛЕ под файлом понимается либо именованная область памяти, либо логическое устpойство. Файловый тип можно объявить в следующих ваpиантах:

<имя>= file of <тип> - для типизиpованных файлов,

<имя>= text - для текстовых файлов,

<имя>= file - для нетипизиpованных файлов.

В качестве имени файла может пpименяться название, допустимое в ОС MS DOS, включая путь и pасшиpение.

Файлы и логические устpойства должны быть откpыты, для чего пpоизводится связывание специальной файловой пеpеменной с pеальным файлом с помощью опеpатоpа:

ASSIGN(f,'имя файла.тип'), где f - файловая пеpеменная;

Для чтения файл инициируется командой RESET(f).

Новый файл инициируется командой REWRITE(f).

Добавление информации требует использования команды APPEND(f) для открытия файла.

После работы с файлом его необходимо закрыть командой CLOSE(f).

Стирание файла производится командой ERASE(f).

Проверка конца файла производится функцией EOF(f), а проверка правильности последней операции ввода-вывода функцией IOResult.

 

Текстовые файлы.

Текстовый файл в ПАСКАЛЕ представляет собой совокупность строк переменной длины. Доступ к каждой строке последовательный. В конце каждой строки имеется признак конца строки EOLN – ASCII(13),(10). В конце файла имеется признак конца файла ASCII(26).

Читать и записывать информацию в текстовом файле можно командами (процедурами) READ(f, <список>), READLN (f, <список>), WRITE(f, <список>), WRITELN(f, <список>). Проверять на конец строки функцией EOLN(f).

При каждой операции указатель положения смещается и можно делать проверки положения указателя функциями SeekEOF(f) и SeekEOLN(f).

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...