МИНИСТЕРСТВО ПУТЕЙ СООБЩЕНИЯ РФ
ИРКУТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ
КАФЕДРА «ИНФОРМАТИКА»
Методические указания для выполнения лабораторных работ по дисциплине «Информатика»
Для студентов 1-го курса специальности «ИС»
ИРКУТСК-2004
ЛАБОРАТОРНАЯ РАБОТА № 12
Тема: Работа с внешними типизированными файлами.
Цель работы: Освоить приемы записи, чтения и обработки данных, находящихся в типизированном файле на внешних носителях.
Задание к лабораторной работе
Данная работа в соответствии с индивидуальным заданием выполняется в двух программах в следующей последовательности:
Записи
Запись – это структура данных, относящаяся к группе структурированных типов и состоящая из фиксированного числа компонентов, называемых полями записи. По структуре запись подобна массиву, так как записи упорядочены и выбираются по имени записи. В отличие от массива компоненты (поля) записи именуются и, кроме того, поля в записи могут быть различного типа. Чтобы можно было обратиться к компоненту записи, поля именуются.
Порядок объявления типа записи следующий:
<имя типа> = RECORD <список полей> END;
где RECORD, END – зарезервированные слова TURBOPASCAL;
- <имя типа> - идентификатор типа записи;
- <список полей> - список полей, представляющий собой последовательность разделов записи, между которыми ставится символ ; (точка с запятой).
Каждый раздел записи состоит из одного или нескольких идентификаторов полей, отделяемых друг от друга запятыми. За идентификатором или идентификаторами ставится двоеточие и описание типа поля или полей.
Записи используются для описания объекта характеризующегося информацией, представляемой различными типами данных.
Например, объект «студент» может характеризоваться следующими данными:
1. Фамилия и имя (переменные FAM и NAME строкового типа)
2. Пол (переменная POL перечисляемого типа состоящего из двух значений men, women).
3. Год рождения (переменная BDAY целого типа).
4. Год поступления в институт (переменная DINP целого типа).
5. Факультет (переменная FAC строкового типа) и т.д.
Информацию такого типа можно объединить в одном типе – запись. Для данного примера описание типа будет иметь вид:
Type
Student = Record
Fam, name: STRING [20];
Pol: (men, women);
Bday, dinp: integer;
Fac: string [15];
End;
Объявленный в разделе Type тип Record в разделе Var необходимо связать с переменными этого типа, например:
Var
a1, a2, a3: Student.
Для записей, как и для массивов возможно использование оператора присвоения а:= b, однако его можно использовать только для записей одинаковой структуры. К каждому из компонентов записи можно получить доступ, если использовать составное имя. В составном имени должно быть указано имя переменной типа Record и через точку – имя поля, например
a1.bday: = 1975
a2.dinp: = 1999
Такая конструкция называется селектором записи, и она имеет вид:
R.F,
где R – имя переменной типа запись
F– индикатор поля.
Доступ к полям записи можно осуществить, используя оператор присоединения With.
Его формат:
WITH <переменная> DO <оператор>
где WITH, DO – зарезервированные слова TURBOPASCAL
<переменная> - имя переменной типа запись, за которым может стоять список вложенных полей
<оператор> - любой оператор TURBOPASCAL.
Например,
With a3 do FAC: = ‘ЭМ’
With a1 do FAM: = ‘ИВАНОВ’
Записи можно использовать для построения комбинированных типов, например массивов, состоящих из других записей.
Например, для группы студентов можно использовать массив, состоящий из записей STUDENT:
Type
Group = ARRAY [1..25] Of Student;
при этом тип Student должен быть предварительно объявлен.
Поле, связанное с датой рождения можно представить в виде отдельного типа, введя полную дату: год, месяц, число:
Type
Date = Record
year: 1975..1985;
day: 1..31;
month: (Jan, Feb, Mar, Apr, May, June, July, Aug, Sept, Oct, Nov, Dec);
End;
Теперь, введенный таким образом тип можно использовать в записи STUDENT:
Type
Student = Record
Fam, name: STRING [20];
Pol: (men, women);
Bday: date;
Dinp: integer;
Fac: (UPP, EM,E,ETF, S, IITM);
End;
Var;
Group: ARRAY [1..25] Of Student
Доступ к полям в этом случае осуществляется по общим правилам:
Group[5].Fam: ‘ГРИГОРЬЕВ’;
или
With Student Group [10] do Bday: = 1980;
Понятие записи предусматривает возможность в пределах одной записи иметь различную информацию в зависимости от конкретного значения некоторого поля.
Если опять рассматривать тип STUDENT, то в поле факультет должна быть дополнительная информация о специальности. При этом на факультете ЭМ специальностей три (ЭПС, В, МР), на УПП две (Д, БП), на факультете Э четыре (Э, Ф, М, Б) и т.д.
При работе с записями TURBOPASCAL разрешает использовать записи с вариантными полями, которые задаются предложением CASEOF.
Вариантная часть состоит из нескольких вариантов. Каждый вариант определяется константой выбора, за которой следует двоеточие и список полей, заключенный в круглые скобки. В любой записи может быть только одна вариантная часть, и она должна располагаться за всеми фиксированными полями.
Type
Fac: (UPP, EM, E, S, IITM);
Student = Record
Fam, name: STRING;
Pol: (men, women);
Bday: date;
Dinp: integer;
CASE Fac of
UPP: (SPEC: (D, BP));
EM: (SPEC: (ENS, V, MR));
E: (SPEC: (E, F, M, B));
S: ( )
IITM: (SPEC: (IS, PO, ZI));
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.