Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по Паскалю.docx
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
83.87 Кб
Скачать

29. Записи. Описание. Задание записей константой. Доступ к полям записи.

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

В разделе var переменную типа запись описывают так:

var <имя_записи>: record <имя_поля1>: <тип_поля1>;

[<имя_поля2>: <тип_поля2>;]

[...]

end;

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

type <имя_типа> = record <имя_поля1>: <тип_поля1>;

[<имя_поля2>: <тип_поля2>;]

[...]

end;

const <имя_константы>: <имя_типа> = <начальное_значение>;

Обратиться к полю записи можно следующим способом:

<имя_записи>.<имя_поля>

Например:

month:= my_birthday.month +1;

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

<имя_таблицы>[<индекс>].<имя_поля>

Эту запись можно трактовать так:

(<имя_таблицы>[<индекс>]).<имя_поля>

Например:

birthdays[mother].day := 9;

30. Записи. Оператор with.

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

my_birthday.day:= 17;

my_birthday.month:= 3;

my_birthday.year:= 2004;

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

with <имя_записи> do

begin <операторы>

{имена полей здесь используются как <имя_поля>,

а не как <имя_записи>.<имя_поля>}

end;

Например:

with my_birthday do

begin day:= 17;

month:= 3;

year:= 2004;

end;

Вложенные операторы with

Если возникает необходимость расположить один оператор with внутри другого, то любую переменную (если перед ней явно не указано имя записи), находящуюся под внутренним оператором with, компилятор пытается интерпретировать в такой последовательности:

  1. если во внутренней записи есть поле с искомым именем, то поиск заканчивается;

  2. если во внутренней записи поля с таким именем нет, то поиск производится среди полей внешней записи (если вложенных операторов with больше, чем два, то поиск ведется последовательно во всех задействованных записях в направлении "изнутри наружу");

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

31. Файлы. Разновидность файлов. Описание файлов.

Файл - это самостоятельная последовательность символов, записанная в постоянную память компьютера.

В языке Pascal имеется возможность работы с тремя видами файлов:

  • текстовыми;

  • типизированными;

  • нетипизированными.

Последние два типа объединяются под названием бинарные: информация в них записывается по байтам и потому не доступна для просмотра или редактирования в удобных для человека текстовых редакторах, зато такие файлы более компактны, чем текстовые.

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

Описание файлов

В разделе var переменные, используемые для работы с файлами (файловые переменные), описываются следующим образом:

var f1,f2: text; {текстовые файлы}

g: file of <тип_элементов_файла>; {типизированные файлы}

in, out: file; {нетипизированные файлы}

Файловая переменная не может быть задана константой.