Структурные (структурированные) типы данных.
К структурированным типам данных относятся тип массива, тип записи, тип множества, тип файла.
Массивы. Массивы представляют собой регулярную совокупность элементов одного и того же типа. Пример: Описание массива вещественных чисел. 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|