Записи.

 

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

<имя типа >= Record <список полей > End

Список полей содержит описания полей с указанием их имен и типов. Тип определяется от имени двоеточием, описания полей определяются друг от друга точкой с запятой. Описания нескольких полей одного типа можно объединить, перечислив через запятую их имена и затем указав их общий тип.
Пример:
Type
birthday = Record
day : 1..31;
month : 1..12;
year: Integer;
end;
Var a,b: birthday;
.......
В этом примере тип birthday (день рождения) содержит три поля с именами day, month, year (день месяц и год), переменные a и b содержат записи типа birthday.
К каждому из компонентов записи можно получить доступ, если использовать составное имя, т.е. указать имя переменной, затем точку и имя поля:
a.day := 27; b.year := 1984;

Поля могут быть любого типа (кроме файла), в том числе и типа запись
Var c : Record
name : String;
bd : birthday;
End;
.........
If c.bd.year=1984 Then . . .

Имена полей должны быть уникальными в пределах той записи, где они объявлены, однако, если записи содержат поля-записи, то имена могут повторяться на разных уровнях вложенности.

 

C.11.9. Лекция 9 Понятие указателей, динамических и статических переменных. Операции над указателями и динамическими переменными. Создание и уничтожение динамических переменных (NEW( ) и DISPOSE( )).Понятие динамических структур данных (списков, деревьев, графов) в программировании. Разновидности списков, деревьев, графов. Построение динамических структур данных и типовые задачи и алгоритмы их обработки.

 

C.11.10. Лекция 10 (4 часа) Понятие файлов в программировании. Процедуры для работы с файлами. Двоичные файлы. Их создание и обработка. Текстовые файлы. Их создание и обработка. Типизированные и нетипизированные файлы. Работа с нетипизированными файлами.

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

< имя > = File Of < тип > ;
< имя > = Text ;
Первые называются типизированными файлами, а вторые -текстовыми.

В Турбо-Паскале описанные выше файлы называются логическими (кроме того, в системе Турбо-Паскаль есть логические файлы третьего вида - не типизированные). Основное назначение логического файла - обеспечить программе средства для обмена данными с периферийными устройствами компьютера. В связи с этом вводится понятие физического файла, как совокупности данных во внешней памяти (дискета, жесткий диск, магнитная лента и др.) Кроме того, в качестве физического файла могут использоваться и сами периферийные устройства, например, принтер).
Средством установления связи между логическими и физическими файлами в Турбо-Паскале является процедура Assign.

Assign (< ф.п. >, < имя файла >);
< ф.п. > - файловая переменная (переменная файлового типа), описанная в программе (имя логического файла).
< имя файла > - текстовое выражение, значением которого является записанное по правилам операционной системы MS DOS имя файла (имя физического файла). Типы компонент логического и физического файла должны совпадать. Затем необходимо инициализировать файл, указав для него направление передачи данных, т.е. открыть файл для записи или чтения.
Для чтения файл открывается стандартной процедурой Reset (< ф.п. >); при этом специальная переменная-указатель устанавливается на начало файла.
Стандартная процедура Rewrite (< ф.п. >) открывает файл для записи, при этом файл всегда создается заново, с потерей информации в данном физическом файле, если она была туда ранее записана.
Стандартная процедура Append(< ф.п. >) открывает для записи существующий текстовой файл с целью его расширения, при этом переменная-указатель ставится в конец файла.
Чтение и запись происходят при помощи уже знакомых нам процедур ввода-вывода Read и Write, с тем лишь отличием, что в них необходимо указать в качестве первого параметра файловую переменную. После каждой операции переменная-указатель перемещается на одну компоненту.
После завершения в программе операций по обмену данными с файлом его необходимо закрыть стандартной процедурой. Close(< ф.п. >).
При работе с файлами используется функция Eof(< ф.п. >), которая возвращает значение True, если переменная-указатель стоит в конце файла, и False - в противном случае.

Пример 13.
Дан файл f компоненты которого являются целыми числами. Получить в файле g все четные компоненты файла f, а в файле h все нечетные.

Program Dfile;
Var f,h,g: File Of Integer;
i: Integer;
Begin {Установка связи между файловыми переменными и соответствующими именами файлов}
Assign( f ,’Data.dat’);
Assign(g , ‘Chet.dat’);
Assign(h , ‘Nechet.dat’);
{Открытие файлов для чтения и записи}
Reset(f); Rewrite(h); Rewrite(g);
While Not(Eof(f)) Do
Begin
Read( f, i); {чтение из файла f}
If Odd(i)
Then Write(h,i) {запись в файл h}
Else Write(g, i) {запись в файл g}
End; {Закрытие файлов}
Close(f); Close(g); Close(h);
End.

Пример 14.
Дан текстовой файл. Получить копию файла.

Program CopyFile;
Var f,g: Text;
s: String;
Begin
{установка связи файловых переменных с именами файлов}
Assign(f, ‘data1.txt’);
Assign(g, ‘data2.txt’);
{открытие файлов для чтения и записи}
Reset(f); Rewrite(g);
While Not(Eof(f)) Do
Begin
Readln(f,s); {чтение из файла в строку}
Writeln(g,s) {запись в файл из строки}
End;
{закрытие файлов}
Close(f); Close(g)
End.

Процедуры и функции для текстовых файлов

Обращение Действие
Append(f) Открывает файл для добавления в конец файла
Read(f, СписокВвода) Считывает из файла одно или более значений в одну или более переменных
ReadLn(f, СписокВвода) То же с переходом к следующей строке файла
Write(f, СписокВывода) Записывает одно или несколько значений в файл, заранее открытый для вывода
WriteLn(f, СписокВывода) То же с выводом маркера – признака конца строки
SetTextBuf(f, Буфер [, Размер]) Назначает буфер ввода/вывода для файла (по умолчанию размер буфера – 128 байт)
Flash(f) Выталкивает буфер файла вывода
Eoln(f) Возвращает признак конца строки
SeekEoln(f) Возвращает признак конца строки, предварительно пропустив все пробелы и символы табуляции
SeekEof(f) Возвращает признак конца файла, предварительно пропустив все пробелы, символы табуляции и признаки конца строки








Дата добавления: 2014-12-24; просмотров: 1423;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.